2018-07-12 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / ChangeLog
blobd8a65861e5ac42b7723d2b72d0b5f491b4463d8f
1 2018-07-12  Richard Biener  <rguenther@suse.de>
3         * tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
4         (vn_lookup_simplify_result): Remove recursion limit applied
5         here.
6         (vn_nary_build_or_lookup_1): Adjust.
7         (try_to_simplify): Likewise.
8         * gimple-match-head.c (gimple_resimplify1): Instead apply one
9         here.
10         (gimple_resimplify2): Likewise.
11         (gimple_resimplify3): Likewise.
12         (gimple_resimplify4): Likewise.
14 2018-07-11  Jakub Jelinek  <jakub@redhat.com>
16         * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
17         Use __mmask64 type instead of __mmask8 for __M argument.
18         * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
19         _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
20         __U argument.
21         (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
22         __mmask16 for __M argument.
23         (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
24         _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
25         to __mmask16 instead of __mmask8.
26         * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
27         _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
28         _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
29         _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
30         instead of __mmask16 for __U argument.
31         * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
32         __mmask16 instead of __mmask8 for __U argument.
33         (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
34         __U argument.
35         (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
36         __mmask16.
37         (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
38         argument.
39         (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
40         __U argument.
41         (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
42         __mmask16.
43         (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
44         of __mmask16.
45         (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
46         __U argument.
47         (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
48         __U argument.
49         (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
50         __U argument.
51         (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
52         __U argument.
53         (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
54         _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
55         return type as well as __M argument type and all casts from __mmask8
56         to __mmask32.
57         (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
58         _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
59         return type as well as __M argument type and all casts from __mmask8
60         to __mmask16.
61         (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
62         _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
63         return type as well as __M argument type and all casts from __mmask8
64         to __mmask32.
65         (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
66         _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
67         return type as well as __M argument type and all casts from __mmask8
68         to __mmask16.
69         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
70         _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
71         __mmask16.
73 2018-07-11  Grazvydas Ignotas  <notasas@gmail.com>
75         * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
76         _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
77         for __U argument.
79 2018-07-11  Paul Koning  <ni1d@arrl.net>
81         * doc/md.texi (define_subst): Document how multiple occurrences of
82         the same argument in the replacement pattern are handled.
84 2018-07-11  Paul Koning  <ni1d@arrl.net>
86         * doc/extend.texi (Common Variable Attributes): Move "mode" into
87         alphabetical order.
88         (Common Type Attributes): Add "mode" attribute.
90 2018-07-11  Jan Hubicka  <hubicka@ucw.cz>
92         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
93         stream DECL_ORIGINAL_TYPE.
94         (DFS::DFS_write_tree_body): Drop hack handling local external decls.
95         (hash_tree): Do not walk DECL_ORIGINAL_TYPE.
96         * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
97         Do not walk original type.
98         * tree-streamer-out.c (streamer_write_chain): Drop hack handling
99         external decls.
100         (write_ts_decl_non_common_tree_pointers): Do not stream
101         DECL_ORIGINAL_TYPE
102         * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
103         (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.
105 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
107         * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
108         thread twice from the same starting edge.
110 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
112         * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
113         * gimple.c (gimple_call_nonnull_result_p): ...here...
114         (gimple_call_nonnull_arg): ...and here.
115         * gimple.h (gimple_call_nonnull_result_p): New.
116         (gimple_call_nonnull_arg): New.
118 2018-07-11  Richard Earnshaw  <rearnsha@arm.com>
120         * config/arm/arm-cpus.in: Move information from fpu field of each
121         cpu definition to the isa field.
122         * config/arm/parsecpu.awk (fpu): Delete match rule.
123         (gen_comm_data): Don't add bits from the CPU's FPU entry.
125 2018-07-11  Richard Biener  <rguenther@suse.de>
127         PR debug/86457
128         * dwarf2out.c (init_sections_and_labels): Use
129         output_asm_line_debug_info consistently.
130         (dwarf2out_early_finish): Likewise.
131         (dwarf2out_finish): Remove DW_AT_stmt_list from early generated
132         type units.
134 2018-07-11  Richard Biener  <rguenther@suse.de>
136         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
137         Rework father_bb setting in a way to avoid propagating constants
138         multiple times on a loop body.
140 2018-07-10  Mark Wielaard  <mark@klomp.org>
142         PR debug/86459
143         * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.
145 2018-07-10  Richard Biener  <rguenther@suse.de>
147         * hash-map.h (hash_map::iterator::operator*): Return
148         references to key and value.
150 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
152         PR c++/86443
153         * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
154         to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
155         BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
156         (gimplify_omp_for): For composite loops, move outer
157         OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
158         OMP_FOR/OMP_SIMD if there are any non-trivial wrappers.  For class
159         iterators add any needed clauses.  Allow OMP_FOR_ORIG_DECLS to contain
160         TREE_LIST for both the original class iterator and the "last" helper
161         var.  Gimplify OMP_FOR_PRE_BODY before the outermost composite
162         loop, remember has_decl_expr from outer composite loops for the
163         innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
165 2018-07-09  Martin Sebor  <msebor@redhat.com>
167         PR middle-end/77357
168         PR middle-end/86428
169         * builtins.c (c_strlen): Avoid out-of-bounds warnings when
170         accessing implicitly initialized array elements.
171         * expr.c (string_constant): Handle string initializers of
172         character arrays within aggregates.
173         * gimple-fold.c (fold_array_ctor_reference): Add argument.
174         Store element offset.  As a special case, handle zero size.
175         (fold_nonarray_ctor_reference): Same.
176         (fold_ctor_reference): Add argument.  Store subobject offset.
177         * gimple-fold.h (fold_ctor_reference): Add argument.
179 2018-07-09  Paul Koning  <ni1d@arrl.net>
181         * config/pdp11/pdp11.c (pdp11_addr_cost): New function.
182         (pdp11_insn_cost): New function.
183         (pdp11_md_asm_adjust): New function.
184         (TARGET_INVALID_WITHIN_DOLOOP): Define.
185         (pdp11_rtx_costs): Update to match machine better.
186         (output_addr_const_pdp11): Correct format mismatch warnings.
187         * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
188         * config/pdp11/pdp11.md: General change to add base_cost and/or
189         length attributes for use by new pdp11_insn_cost function.
190         (MIN_BRANCH): Correct definition.
191         (MIN_SOB): Ditto.
192         (doloop_end): Use standard pattern name for looping pattern.
193         (doloop_end_nocc): New.
194         (movsf): Add another constraint alternative.
195         (zero_extendqihi2): Add constraint alternatives for not in place
196         extend.
197         (zero_extendhisi2): Remove.
198         (shift patterns): Add CC handling variants.
199         (bswaphi2): New.
200         (bswapsi2): New.
201         (rothi3): New.
202         (define_peephole2): New peephole to recognize mov that sets CC for
203         subsequent test.
205 2018-07-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
207         * config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
208         SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
209         wi::add.
211 2018-07-09  Jakub Jelinek  <jakub@redhat.com>
213         PR c/86420
214         * real.c (real_nextafter): Return true if result is denormal.
216 2018-07-09  Martin Liska  <mliska@suse.cz>
218         * common.opt: Add back wrongly removed attribute.
220 2018-07-09  Richard Biener  <rguenther@suse.de>
222         PR debug/86413
223         * dwarf2out.c (gen_block_die): For an early generated DIE
224         always output high/low PC attributes.
226 2018-07-09  Tom de Vries  <tdevries@suse.de>
228         * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
229         * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
230         onto VAR_DECL with abstract origin.
232 2018-07-07  Jim Wilson  <jimw@sifive.com>
234         * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.
236 2018-07-07  Tom de Vries  <tdevries@suse.de>
238         * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
240 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
242         * tree-vrp.c (vrp_int_const_binop): Change overflow type to
243         overflow_type.
244         (combine_bound): Use wide-int overflow calculation instead of
245         rolling our own.
246         * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
247         overflow_type.
248         * fold-const.c (int_const_binop_2): Same.
249         (extract_muldiv_1): Same.
250         (fold_div_compare): Same.
251         (fold_abs_const): Same.
252         * match.pd: Same.
253         * poly-int.h (add): Same.
254         (sub): Same.
255         (neg): Same.
256         (mul): Same.
257         * predict.c (predict_iv_comparison): Same.
258         * profile-count.c (slow_safe_scale_64bit): Same.
259         * simplify-rtx.c (simplify_const_binary_operation): Same.
260         * tree-chrec.c (tree_fold_binomial): Same.
261         * tree-data-ref.c (split_constant_offset_1): Same.
262         * tree-if-conv.c (idx_within_array_bound): Same.
263         * tree-scalar-evolution.c (iv_can_overflow_p): Same.
264         * tree-ssa-phiopt.c (minmax_replacement): Same.
265         * tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
266         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
267         * vr-values.c (vr_values::adjust_range_with_scev): Same.
268         * wide-int.cc (wi::add_large): Same.
269         (wi::mul_internal): Same.
270         (wi::sub_large): Same.
271         (wi::divmod_internal): Same.
272         * wide-int.h: Change overflow type to overflow_type for neg, add,
273         mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
274         mod_trunc, mod_ceil, mod_round, add_large, sub_large,
275         mul_internal, divmod_internal.
276         (overflow_type): New enum.
277         (accumulate_overflow): New.
279 2018-07-06  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
281         * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
282         (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.
284 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
286         * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
287         argument is checked for zero before entering loop, avoid checking again.
289 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
291         * gimplify.h (generic_expr_could_trap_p): Set as global function.
292         * gimplify.h (generic_expr_could_trap_p): Likwise.
293         * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
295 2018-07-06  Jakub Jelinek  <jakub@redhat.com>
297         PR tree-optimization/86401
298         * fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
299         ((A & N) + B) & M -> (A + B) & M etc. optimization into ...
300         (fold_bit_and_mask): ... here.  New helper function for match.pd.
301         * fold-const.h (fold_bit_and_mask): Declare.
302         * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.
304 2018-07-06  Peter Bergner  <bergner@linux.ibm.com>
306         PR target/86324
307         * target.def (translate_mode_attribute): New hook.
308         * targhooks.h (default_translate_mode_attribute): Declare.
309         * targhooks.c (default_translate_mode_attribute): New function.
310         * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
311         * doc/tm.texi: Regenerate.
312         * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
313         (rs6000_translate_mode_attribute): New function.
315 2018-07-06  Paul Koning  <ni1d@arrl.net>
317         * doc/md.texi (define_split): Document DONE and FAIL.
318         (define_peephole2): Ditto.
320 2018-07-05  Jeff Law  <law@redhat.com>
322         PR tree-optimization/86010
323         * tree-ssa-dse.c (compute_trims): More aggressively trim at
324         both the head and tail of mem* and str* calls.
326 2018-07-05  Jim Wilson  <jimw@sifive.com>
328         * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
330 2018-07-05  Indu Bhagat  <indu.bhagat@oracle.com> 
332         * config/aarch64/aarch64-simd.md: correct flags text for 
333         MIN_EXPR replacement.
335 2018-07-05  James Clarke  <jrtc27@jrtc27.com>
337         * configure: Regenerated.
339 2018-07-05  Carl Love  <cel@us.ibm.com>
341         * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
342         float argument to VSX_BUILTIN_DOUBLEH_V4SF.
343         Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
344         VSX_BUILTIN_DOUBLEL_V4SF.
346 2018-07-05  Martin Sebor  <msebor@redhat.com>
348         PR c++/86400
349         * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
350         than its domain to compute its the upper bound of a char array.
352 2018-07-05  Nathan Sidwell  <nathan@acm.org>
354         Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
355         * doc/cpp.texi: Update comment.
356         * doc/tm.texi: Rebuilt.
357         * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
358         (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
359         * doc/extend.texi (Backwards Compatibility): Clarify it is system
360         headers affected by extern "C".
361         * system.h: Poison NO_IMPLICIT_EXTERN_C.
362         * config/alpha/alpha.h, config/arm/uclinux-elf.h,
363         config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
364         config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
365         config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
366         config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
367         config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
368         config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
369         config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
370         config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
371         config/sparc/openbsd64.h, config/sparc/sp-elf.h,
372         config/sparc/sp64-elf.h, config/spu/spu.h,
373         config/stormy16/stormy16.h, config/v850/v850.h,
374         config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
375         define NO_IMPLICIT_EXTERN_C.
376         * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.
378 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
380         PR target/84711
381         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
382         instead of GET_MODE_SIZE when comparing Units.
384 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
386         PR target/84711
387         * rtlanal.c (set_noop_p): Constrain on mode change,
388         include hard-reg-set.h
390 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
392         * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size.
394 2018-07-05  Jakub Jelinek  <jakub@redhat.com>
396         Revert
397         2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
399         PR sanitizer/84250
400         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
401         libasan.
402         * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
404 2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
406         PR sanitizer/84250
407         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
408         libasan.
409         * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
411 2018-07-04  Eric Botcazou  <ebotcazou@adacore.com>
413         PR middle-end/86380
414         * expmed.c (choose_multiplier): Fix incorrect comparison with mask.
416 2018-07-04  Aldy Hernandez  <aldyh@redhat.com>
418         * tree-vrp.c (extract_range_from_binary_expr_1): Initialize
419         neg_*_op* variables.
421 2018-07-04  Martin Liska  <mliska@suse.cz>
423         * tree-switch-conversion.c: Define
424         max_ratio_for_speed and max_ratio_for_size constants.
426 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
427             Martin Liska  <mliska@suse.cz>
429         PR middle-end/66240
430         PR target/45996
431         PR c/84100
432         * common.opt: Rename align options with 'str_' prefix.
433         * common/config/i386/i386-common.c (set_malign_value): New
434         function.
435         (ix86_handle_option): Use it to set -falign-* options/
436         * config/aarch64/aarch64-protos.h (struct tune_params): Change
437         type from int to string.
438         * config/aarch64/aarch64.c: Update default values from int
439         to string.
440         * config/alpha/alpha.c (alpha_override_options_after_change):
441         Likewise.
442         * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
443         * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
444         max skip conditionally.
445         * config/i386/freebsd.h (SUBALIGN_LOG): New.
446         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
447         max skip conditionally.
448         * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
449         max skip conditionally.
450         * config/i386/gnu-user.h (SUBALIGN_LOG): New.
451         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
452         max skip conditionally.
453         * config/i386/i386.c (struct ptt): Change type from int to
454         string.
455         (ix86_default_align): Set default values.
456         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
457         max skip conditionally.
458         * config/i386/iamcu.h (SUBALIGN_LOG): New.
459         (ASM_OUTPUT_MAX_SKIP_ALIGN):
460         * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
461         * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
462         max skip conditionally.
463         * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
464         (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
465         * config/i386/x86-64.h (SUBALIGN_LOG): New.
466         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
467         max skip conditionally.
468         (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
469         * config/ia64/ia64.c (ia64_option_override): Set default values
470         for alignment options.
471         * config/m68k/m68k.c: Handle new str_align_* options.
472         * config/mips/mips.c (mips_set_compression_mode): Change
473         type of constants.
474         (mips_option_override): Set default values for options.
475         * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
476         Likewise.
477         * config/rs6000/rs6000.c (rs6000_option_override_internal):
478         Likewise.
479         * config/rx/rx.c (rx_option_override): Likewise.
480         * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
481         (LABEL_ALIGN): Use align_labels_log.
482         (LOOP_ALIGN): Use align_loops_align.
483         * config/s390/s390.c (s390_asm_output_function_label): Use new
484         macros.
485         * config/sh/sh.c (sh_override_options_after_change):
486         Change type of constants.
487         * config/spu/spu.c (spu_sched_init): Likewise.
488         * config/sparc/sparc.c (sparc_option_override): Set default
489         values for options.
490         * config/visium/visium.c (visium_option_override): Likewise.
491         * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
492         emit p2align format with last argument if it's not needed.
493         * doc/invoke.texi: Document extended format of -falign-*.
494         * final.c: Use align_labels alignment.
495         * flags.h (struct target_flag_state): Change type to use
496         align_flags.
497         (struct align_flags_tuple): New.
498         (struct align_flags): Likewise.
499         (align_loops_log): Redefine macro to use new types.
500         (align_loops_max_skip): Redefine macro to use new types.
501         (align_jumps_log): Redefine macro to use new types.
502         (align_jumps_max_skip): Redefine macro to use new types.
503         (align_labels_log): Redefine macro to use new types.
504         (align_labels_max_skip): Redefine macro to use new types.
505         (align_functions_log): Redefine macro to use new types.
506         (align_loops): Redefine macro to use new types.
507         (align_jumps): Redefine macro to use new types.
508         (align_labels): Redefine macro to use new types.
509         (align_functions): Redefine macro to use new types.
510         (align_functions_max_skip): Redefine macro to use new types.
511         (align_loops_value): New macro.
512         (align_jumps_value): New macro.
513         (align_labels_value): New macro.
514         (align_functions_value): New macro.
515         * function.c (invoke_set_current_function_hook): Propagate
516         alignment values from flags to global variables default in
517         topleev.h.
518         * ipa-icf.c (sem_function::equals_wpa): Use
519         cl_optimization_option_eq instead of memcmp.
520         * lto-streamer.h (cl_optimization_stream_out): Support streaming
521         of string types.
522         (cl_optimization_stream_in): Likewise.
523         * optc-save-gen.awk: Support strings in cl_optimization.
524         * opth-gen.awk: Likewise.
525         * opts.c (finish_options): Remove error checking of invalid
526         value ranges.
527         (MAX_CODE_ALIGN): Remove.
528         (MAX_CODE_ALIGN_VALUE): Likewise.
529         (parse_and_check_align_values): New function.
530         (check_alignment_argument): Likewise.
531         (common_handle_option): Use check_alignment_argument.
532         * opts.h (parse_and_check_align_values): Declare.
533         * toplev.c (init_alignments): Remove.
534         (read_log_maxskip): New.
535         (parse_N_M): Likewise.
536         (parse_alignment_opts): Likewise.
537         (backend_init_target): Remove usage of init_alignments.
538         * toplev.h (parse_alignment_opts): Declare.
539         * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
540         argument.
541         * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
542         * tree.c (cl_option_hasher::equal): New.
543         * varasm.c: Use new global macros.
545 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
547         * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
548         Use a simpler align directive also if MAXSKIP = ALIGN-1.
549         * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
550         * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
551         * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
552         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
553         * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
554         is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
555         define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
556         * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
557         * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
558         * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
559         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
561 2018-07-04  Martin Liska  <mliska@suse.cz>
562             Jonathan Wakely  <jwakely@redhat.com>
564         * coverage.c: Use correct type.
565         * doc/invoke.texi: Language correction.
567 2018-07-03  H.J. Lu  <hongjiu.lu@intel.com>
569         PR target/85620
570         * config/i386/i386.c (rest_of_insert_endbranch): Also generate
571         ENDBRANCH for non-tail call which may return via indirect branch.
572         * doc/extend.texi: Document indirect_return attribute.
574 2018-07-03  Martin Sebor  <msebor@redhat.com>
576         PR tree-optimization/86274
577         * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
578         precondition.
579         (format_floating): Correct handling of infinities and NaNs.
581 2018-07-03  Martin Sebor  <msebor@redhat.com>
583         * print-tree.c (print_real_cst): New function.
584         (print_node_brief): Call it.
585         (print_node): Ditto.
587 2018-07-03  Jeff Law  <law@redhat.com>
589         * config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
590         into a single pattern.
592         * config/h8300/h8300.md (ors code_iterator): New.
593         (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
594         a single pattern and single splitter.
595         (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
596         (iorqi3_1, xorqi3_1): Likewise.
597         (iorqi3, xorqi3 expanders): Similarly.
599         * config/h8300/h8300.md (movmd_internal_normal): Consolidated with
600         (movmd_internal) into a single pattern using the P mode iterator.
601         (movmd splitters): Similarly.
602         (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
603         (movsd splitters): Similarly.
605         * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
606         ADDB, ADDW and ADDL into a single ADD attribute which selects the
607         right table based on the size of the operand.
608         * config/h8300/h8300.md (length_table): Corresponding changes. All
609         references to "addb", "addw" and "addl" changed to "add".
610         (btst patterns): Merge two variants into a single pattern.
611         (tstqi, tsthi): Likewise.
612         (addhi3_incdec, addsi3_incdec): Likewise.
613         (subhi3_h8300hs, subsi3_h8300hs): Likewise.
614         (mulhi3, mulsi3): Likewise.
615         (udivhi3, udivsi3): Likewise.
616         (divhi3, divsi3): Likewise.
617         (andorqi3, andorhi3, andorsi3): Likewise.
619 2018-07-03  Uros Bizjak  <ubizjak@gmail.com>
621         PR target/85694
622         * config/i386/sse.md (uavg<mode>3_ceil): New expander.
623         (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.
625 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
627         PR tree-optimization/85694
628         * config/aarch64/iterators.md (HADD, RHADD): New int iterators.
629         (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and
630         UNSPEC_URHADD.
631         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor)
632         (<u>avg<mode>3_ceil): New patterns.
634 2018-07-03  David Malcolm  <dmalcolm@redhat.com>
636         * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from
637         scan-tree-dump directive.
638         * gcc.dg/vect/slp-perm-2.c: Likewise.
639         * gcc.dg/vect/slp-perm-3.c: Likewise.
640         * gcc.dg/vect/slp-perm-5.c: Likewise.
641         * gcc.dg/vect/slp-perm-6.c: Likewise.
642         * gcc.dg/vect/slp-perm-7.c: Likewise.
643         * gcc.dg/vect/slp-perm-8.c: Likewise.
645 2018-07-03  Marek Polacek  <polacek@redhat.com>
647         PR middle-end/86202
648         * gimple-fold.c (size_must_be_zero_p): Check the type of the size.
650 2018-07-03  Richard Biener  <rguenther@suse.de>
652         PR ipa/86389
653         * tree-ssa-structalias.c (find_func_clobbers): Properly
654         handle indirect calls.
656 2018-07-03  Jeff Law  <law@redhat.com>
658         * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators.
659         (shifts): New code iterator.
660         (movqi, movhi, movsi, movsf expanders): Consolidate into a single
661         expander.  Fix HImode handling on H8/SX.
662         (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander.
663         (subqi3, subhi3, subsi3 expanders): Likewise.
664         (andqi3, andhi3, andsi3 expanders): Likewise.
665         (iorqi3, iorhi3, iorsi3 expanders): Likewise.
666         (xorqi3, xorhi3, xorsi3 expanders): Likewise.
667         (negqi2, neghi2, negsi2, negsf2 expanders): Likewise.
668         (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
669         (zero_extendqihi2, zero_extendqisi2): Likewise.
670         (extendqihi2, extendqisi2): Likewise.
671         (rotlqi3, rotlhi3, rotlsi3): Likewise.
672         (neghi2_h8300, negsi2_h8300): Likewise for these patterns.
673         (rotlqi3_1, rotlhi3_1): Likewise.
674         (logicalhi3_sn, logicalsi3_sn): Likewise.
675         (logicalhi3, logicalsi3): Likewise.
677 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
679         * tree-vect-patterns.c (vect_recog_rotate_pattern)
680         (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
681         (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast)
682         (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector
683         type to append_pattern_def_seq instead of creating a stmt_vec_info
684         directly.
685         (build_mask_conversion): Likewise.  Remove vinfo argument.
686         (vect_add_conversion_to_patterm): Likewise, renaming to...
687         (vect_add_conversion_to_pattern): ...this.
688         (vect_recog_mask_conversion_pattern): Update call to
689         build_mask_conversion.  Pass the vector type to
690         append_pattern_def_seq here too.
691         (vect_recog_gather_scatter_pattern): Update call to
692         vect_add_conversion_to_pattern.
694 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
696         * tree-vect-patterns.c (new_pattern_def_seq): Delete.
697         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
698         (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern)
699         (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set
700         STMT_VINFO_PATTERN_DEF_SEQ to null here.
701         (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern)
702         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use
703         append_pattern_def_seq instead of new_pattern_def_seq.
704         (vect_recog_divmod_pattern): Do both of the above.
705         (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ
706         is null.
708 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
710         * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
711         (vect_recog_sad_pattern, vect_recog_widen_op_pattern)
712         (vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
713         (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
714         (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
715         (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
716         (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
717         (vect_recog_mult_pattern, vect_recog_divmod_pattern)
718         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
719         (vect_recog_mask_conversion_pattern): Replace vec<gimple *>
720         parameter with a single stmt_vec_info.
721         (vect_recog_func_ptr): Likewise.
722         (vect_recog_gather_scatter_pattern): Likewise, folding in...
723         (vect_try_gather_scatter_pattern): ...this.
724         (vect_pattern_recog_1): Remove stmts_to_replace and just pass
725         the stmt_vec_info of the statement to be matched.  Don't clear
726         STMT_VINFO_RELATED_STMT.
727         (vect_pattern_recog): Update call accordingly.
729 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
731         PR tree-optimization/85694
732         * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
733         (uavgM3_ceil): Document new optabs.
734         * doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
735         * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
736         functions.
737         * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
738         (savg_ceil_optab): New optabs.
739         * tree-vect-patterns.c (vect_recog_average_pattern): New function.
740         (vect_vect_recog_func_ptrs): Add it.
741         * tree-vect-stmts.c (vectorizable_call): Get the type of the zero
742         constant directly from the associated lhs.
744 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
746         * tree-vect-patterns.c (vect_split_statement): New function.
747         (vect_convert_input): Use it to try to split an existing cast.
749 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
751         * poly-int.h (print_hex): New function.
752         * dumpfile.h (dump_dec, dump_hex): Declare.
753         * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
754         * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
755         min_input_precision, operation_precision and operation_sign.
756         * tree-vect-patterns.c (vect_get_range_info): New function.
757         (vect_same_loop_or_bb_p, vect_single_imm_use)
758         (vect_operation_fits_smaller_type): Delete.
759         (vect_look_through_possible_promotion): Add an optional
760         single_use_p parameter.
761         (vect_recog_over_widening_pattern): Rewrite to use new
762         stmt_vec_info infomration.  Handle one operation at a time.
763         (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
764         (vect_truncatable_operation_p, vect_set_operation_type)
765         (vect_set_min_input_precision): New functions.
766         (vect_determine_min_output_precision_1): Likewise.
767         (vect_determine_min_output_precision): Likewise.
768         (vect_determine_precisions_from_range): Likewise.
769         (vect_determine_precisions_from_users): Likewise.
770         (vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
771         (vect_vect_recog_func_ptrs): Put over_widening first.
772         Add cast_forwprop.
773         (vect_pattern_recog): Call vect_determine_precisions.
775 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
777         * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
778         statements that have been replaced by further pattern statements.
779         (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
781 2018-07-03  Richard Biener  <rguenther@suse.de>
783         * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
784         always set *dt.  Dump vectype in vectype overload.
785         * dumpfile.h (dump_gimple_expr): New function.
786         (dump_gimple_expr_loc): Likewise.
787         * dumpfile.c (dump_gimple_expr): New function.
788         (dump_gimple_expr_loc): Likewise.
790 2018-07-02  Jeff Law  <law@redhat.com>
792         * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
793         the H8/300, H8/300H and H8/S variants into a single pattern.
794         (movhi_h8300, movqi_h8300hs): Similarly.
795         (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
796         (QHI mode iterator): New.
798         * config/h8300/h8300.md: Remove trailing whitespace.
800 2018-07-02  Jim Wilson  <jimw@sifive.com>
802         * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
803         instead of emit_insn for interrupt returns.
804         * config/riscv/riscv.md (riscv_met): Add (return) to rtl.
805         (riscv_sret, riscv_uret): Likewise.
807 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
809         * pretty-print.c (selftest::test_pp_format): Move save and restore
810         of quotes to class auto_fix_quotes, and add an instance.
811         * selftest.c: Include "intl.h".
812         (selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
813         (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
814         * selftest.h (selftest::auto_fix_quotes): New class.
816 2018-07-02  Richard Henderson  <richard.henderson@linaro.org>
818         * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
819         (aarch64_sve_prepare_conditional_op): Remove.
820         * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
821         Allow aarch64_simd_reg_or_zero as select operand; remove
822         the aarch64_sve_prepare_conditional_op call.
823         (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
824         (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
825         (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
826         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
827         (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
828         (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
829         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
830         (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
831         and a splitters to match all of the *_any patterns.
832         * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
834         * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
835         (SVE_COND_FP_BINARY_REV): Remove.
836         (sve_int_op_rev, sve_fp_op_rev): New.
837         * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
838         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
839         (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
840         (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
841         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
842         (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
843         (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
844         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
845         (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
847         * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
848         Remove match_dup 1 from the inner unspec.
849         (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
851         * config/aarch64/aarch64.md (movprfx): New attr.
852         (length): Default movprfx to 8.
853         * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
854         (*madd<SVE_I>, *msub<SVE_I): Likewise.
855         (*<su>mul<SVE_I>3_highpart): Likewise.
856         (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
857         (*v<ASHIFT><SVE_I>3): Likewise.
858         (*<su><MAXMIN><SVE_I>3): Likewise.
859         (*<su><MAXMIN><SVE_F>3): Likewise.
860         (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
861         (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
862         (*div<SVE_F>4): Likewise.
864 2018-07-02  Richard Sandiford  <richard.sandiford@arm.com>
866         * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
867         in dump string.
869 2018-07-02  Richard Biener  <rguenther@suse.de>
871         PR tree-optimization/86363
872         * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
873         memset argument refers to a non-variable address.
875 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
877         * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the
878         {PLUS,MINUS}_EXPR code to...
879         (adjust_symbolic_bound): ...here,
880         (combine_bound): ...here,
881         (set_value_range_with_overflow): ...and here.
883 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
885         * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
886         code...
887         (extract_range_from_abs_expr): ...here.
889 2018-07-02  Eric Botcazou  <ebotcazou@adacore.com>
891         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
892         -fno-omit-frame-pointer when not optimizing.
894 2018-07-02  Martin Liska  <mliska@suse.cz>
896         PR ipa/86279
897         * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
898         (propagate_nothrow): Likewise.
900 2018-07-02  Martin Liska  <mliska@suse.cz>
902         PR ipa/86323
903         * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
905 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
907         * dumpfile.c (dump_generic_expr_loc): Undo removal of this
908         function in r262149, changing "loc" param from source_location to
909         const dump_location_t &.
910         * dumpfile.h (dump_generic_expr_loc): Undo removal of this
911         declaration, as above.
913 2018-07-01  Paul Koning  <ni1d@arrl.net>
915         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
916         -munit-asm, -mgnu-asm, -mdec-asm.
917         * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
918         (pdp11_output_labelref): New.
919         (pdp11_output_def): New.
920         (pdp11_output_addr_vec_elt): New.
921         * config/pdp11/pdp11.c: Use tab between opcode and operands.  Use
922         %# and %@ format codes.
923         (pdp11_option_override): New.
924         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
925         (pdp11_output_ident): New.
926         (pdp11_asm_named_section): New.
927         (pdp11_asm_init_sections): New.
928         (pdp11_file_start): New.
929         (pdp11_file_end): New.
930         (output_ascii): Use .ascii/.asciz for -mdec-asm.
931         (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm.  Add
932         %o, like %c but octal.
933         (pdp11_option_override): New.
934         * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
935         -mdec-asm.
936         (DATA_SECTION_ASM_OP): Ditto.
937         (READONLY_DATA_SECTION_ASM_OP): New.
938         (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
939         (ASM_GENERATE_INTERNAL_LABEL): Use new function.
940         (ASM_OUTPUT_LABELREF): Ditto.
941         (ASM_OUTPUT_DEF): Ditto.
942         (ASM_OUTPUT_EXTERNAL): New.
943         (ASM_OUTPUT_SOURCE_FILENAME): New.
944         (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
945         (ASM_OUTPUT_SKIP): Update for -mdec-asm.
946         * config/pdp11/pdp11.md: Use tab between opcode and operands.  Use
947         %# and %@ format codes.
948         * config/pdp11/pdp11.opt (mgnu-asm): New.
949         (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
950         (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
951         * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
953 2018-07-01  Aldy Hernandez  <aldyh@redhat.com>
955         * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
956         dereferencing path[] beyond its length.
957         (debug_path): New.
958         (debug_all_paths): New.
959         (rewire_first_differing_edge): New.
960         (adjust_paths_after_duplication): New.
961         (duplicate_thread_path): Call adjust_paths_after_duplication.
962         Add new argument.
963         (thread_through_all_blocks): Add new argument to
964         duplicate_thread_path.
966 2018-06-30  Jim Wilson  <jimw@sifive.com>
968         * config/riscv/predicates.md (p2m1_shift_operand): New.
969         (high_mask_shift_operand): New.
970         * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
971         pattern using p2m1_shift_operand.
972         (lshsi3_zero_extend_3+2): New combiner pattern using
973         high_mask_shift_operand.
975 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
977         * tree-vect-patterns.c (vect_get_external_def_edge): New function,
978         split out from...
979         (vect_recog_rotate_pattern): ...here.
980         (vect_convert_input): Try to insert casts of invariants in the
981         preheader.
982         * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
983         preheader to be empty.
985 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
987         * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
988         vector type.  If given, install it in the new statement's
989         STMT_VINFO_VECTYPE.
990         (vect_element_precision): New function.
991         (vect_unpromoted_value): New struct.
992         (vect_unpromoted_value::vect_unpromoted_value): New function.
993         (vect_unpromoted_value::set_op): Likewise.
994         (vect_look_through_possible_promotion): Likewise.
995         (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
996         (vect_widened_op_tree, vect_convert_input): Likewise.
997         (vect_convert_inputs, vect_convert_output): Likewise.
998         (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
999         to handle the optional cast of the multiplication result and
1000         vect_widened_op_tree to detect the widened multiplication itself.
1001         Do not require the input and output of promotion casts to have
1002         the same sign, but base the signedness of the operation on the
1003         input rather than the result.  If the pattern includes two
1004         promotions, check that those promotions have the same sign.
1005         Do not restrict the MULT_EXPR handling to a double-width result;
1006         handle quadruple-width results and wider.  Use vect_convert_inputs
1007         to convert the inputs to the common type.
1008         (vect_recog_sad_pattern):  Use vect_look_through_possible_promotion
1009         to handle the optional cast of the ABS result.  Also allow a sign
1010         change or a sign extension between the ABS and MINUS.
1011         Use vect_widened_op_tree to detect the widened subtraction and use
1012         vect_convert_inputs to convert the inputs to the common type.
1013         (vect_handle_widen_op_by_const): Delete.
1014         (vect_recog_widen_op_pattern): New function.
1015         (vect_recog_widen_mult_pattern): Use it.
1016         (vect_recog_widen_shift_pattern): Likewise.
1017         (vect_recog_widen_sum_pattern): Use
1018         vect_look_through_possible_promotion to handle the promoted
1019         PLUS_EXPR operand.
1021 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
1023         * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
1024         the containing gimple_seq *.
1025         * gimple-iterator.h (gsi_for_stmt): Declare it.
1026         * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
1027         (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
1028         (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
1029         (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
1030         (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
1031         checks.
1032         (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
1033         split out from...
1034         (vect_mark_pattern_stmts): ...here.  Handle cases in which the
1035         statement being replaced is part of an existing pattern
1036         definition sequence, inserting the new pattern statements before
1037         the original one.
1038         (vect_pattern_recog_1): Don't return a bool.  If the statement
1039         is already part of a pattern, instead apply pattern matching
1040         to the pattern definition statements.  Don't clear the
1041         STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
1042         (vect_pattern_recog): Don't break after the first match;
1043         continue processing the pattern definition statements instead.
1044         Don't bail out for STMT_VINFO_IN_PATTERN_P here.
1046 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
1048         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
1049         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
1050         (vect_recog_widen_sum_pattern): Use it.
1052 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
1054         * tree-vect-loop.c (vectorizable_reduction): Assert that the
1055         phi is not a pattern statement and has not been replaced by
1056         a pattern statement.
1057         * tree-vect-patterns.c (type_conversion_p): Don't check
1058         STMT_VINFO_IN_PATTERN_P.
1059         (vect_recog_vector_vector_shift_pattern): Likewise.
1060         (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
1061         the pattern statement rather than the original statement; check
1062         directly for a WIDEN_MULT_EXPR here.
1063         * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
1064         vect_is_simple_use to return the pattern statement rather
1065         than the original statement; use is_pattern_stmt_p to check
1066         for such a pattern statement.
1067         * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
1068         to return the pattern statement rather than the original statement;
1069         don't do the same transformation here.
1070         (vect_is_simple_use): If the defining statement has been replaced
1071         by a pattern statement, return the pattern statement instead.
1072         Remove the corresponding (local) transformation from the vectype
1073         overload.
1075 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
1077         * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
1078         end and default to null.
1079         * tree-vect-loop.c (vect_create_epilog_for_reduction)
1080         (vectorizable_reduction): Update calls accordingly, dropping the
1081         gimple ** argument if the passed-back statement isn't needed.
1082         * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
1083         (vect_recog_rotate_pattern): Likewise.
1084         (vect_recog_mask_conversion_pattern): Likewise.
1085         * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
1086         (vect_mask_constant_operand_p): Likewise.
1087         * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
1088         (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
1089         (get_group_load_store_type, get_load_store_type): Likewise.
1090         (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
1091         (vectorizable_call, vectorizable_simd_clone_call): Likewise.
1092         (vectorizable_conversion, vectorizable_assignment): Likewise.
1093         (vectorizable_shift, vectorizable_operation): Likewise.
1094         (vectorizable_store, vect_is_simple_cond): Likewise.
1095         (vectorizable_condition, vectorizable_comparison): Likewise.
1096         (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
1097         (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
1098         and move it to the end.  Cope with null def_stmt_outs.
1100 2018-06-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1102         * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
1104 2018-06-29  Jeff Law  <law@redhat.com>
1106         * config/v850/v850.c (v850_legitimate_address_p): Handle large
1107         displacements for TARGET_V850E2V3 and newer.
1108         (TARGET_LRA_P): Remove.  Defaults to LRA now.
1109         * config/v850/v850.md (sign23byte_load): Remove.
1110         (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
1111         (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
1113 2018-06-29  Martin Liska  <mliska@suse.cz>
1115         PR lto/85759
1116         * coverage.c (coverage_init): Mangle full path name.
1117         * doc/invoke.texi: Document the change.
1118         * gcov-io.c (mangle_path): New.
1119         * gcov-io.h (mangle_path): Likewise.
1120         * gcov.c (mangle_name): Use mangle_path for path mangling.
1122 2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1124         * config/arm/arm.c (output_move_double): Don't allow STRD instructions
1125         if starting source register is not even.
1127 2018-06-29  Martin Liska  <mliska@suse.cz>
1129         PR tree-optimization/86263
1130         * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
1131         Make edge redirection.
1133 2018-06-29  David Malcolm  <dmalcolm@redhat.com>
1135         * dumpfile.c (dump_loc): Add indentation based on scope depth.
1136         (dump_scope_depth): New variable.
1137         (get_dump_scope_depth): New function.
1138         (dump_begin_scope): New function.
1139         (dump_end_scope): New function.
1140         * dumpfile.h (get_dump_scope_depth): New declaration.
1141         (dump_begin_scope): New declaration.
1142         (dump_end_scope): New declaration.
1143         (class auto_dump_scope): New class.
1144         (AUTO_DUMP_SCOPE): New macro.
1145         * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
1146         AUTO_DUMP_SCOPE.
1148 2018-06-29  Richard Biener  <rguenther@suse.de>
1150         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
1151         compute_all_dependences succeeds.
1152         * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
1153         exceed --param loop-max-datarefs-for-datadeps.
1155 2018-06-29  Jakub Jelinek  <jakub@redhat.com>
1157         * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
1159 2018-06-28  Uros Bizjak  <ubizjak@gmail.com>
1161         PR target/86348
1162         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
1163         alternative 0 in preferred_for_speed attribute.
1165 2018-06-28  Paul Koning  <ni1d@arrl.net>
1167         * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
1168         * config/pdp11/pdp11.c (pdp11_shift_length): New function.
1169         * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
1170         * config/pdp11/pdp11.md: Correct "length" attribute calculation
1171         for shift insn patterns.
1173 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
1175         * cgraph.c (cgraph_node::get_body): Replace assignments to
1176         "dump_file" with calls to set_dump_file.
1177         * dumpfile.c (alt_dump_file): Make static, and group with...
1178         (alt_flags): ...this definition.
1179         (dumps_are_enabled): New variable.
1180         (refresh_dumps_are_enabled): New function.
1181         (set_dump_file): New function.
1182         (set_alt_dump_file): New function.
1183         (gcc::dump_manager::dump_start): Replace assignments to
1184         "dump_file" and "alt_dump_file" with calls to set_dump_file and
1185         set_alt_dump_file.
1186         (gcc::dump_manager::dump_finish): Likewise.
1187         * dumpfile.h (alt_dump_file): Delete decl.
1188         (dumps_are_enabled): New variable decl.
1189         (set_dump_file): New function decl.
1190         (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
1191         global.
1192         * tree-nested.c (lower_nested_functions): Replace assignments to
1193         "dump_file" with calls to set_dump_file.
1195 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1197         * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
1198         goto_locus of each outgoing edge of each basic block.
1200 2018-06-28  Richard Biener  <rguenther@suse.de>
1202         * dwarf2out.c (decl_scope_table): Remove.
1203         (push_decl_scope): Likewise.
1204         (pop_decl_scope): Likewise.
1205         (gen_type_die_for_member): Do not call push/pop_decl_scope.
1206         (gen_struct_or_union_type_die): Likewise.
1207         (gen_tagged_type_die): Likewise.
1208         (dwarf2out_init): Do not initialize decl_scope_table.
1209         (dwarf2out_c_finalize): Do not free it.
1211 2018-06-28  Richard Biener  <rguenther@suse.de>
1213         * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
1214         deciding whether to not re-use a DIE.
1216 2018-06-28  Richard Biener  <rguenther@suse.de>
1218         * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
1219         DW_AT_abstract_origin attribute.
1221 2018-06-28  Martin Liska  <mliska@suse.cz>
1223         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
1224         Use newly introduced constants.
1225         * tree-switch-conversion.h (struct jump_table_cluster):
1226         Define max_ratio_for_size and max_ratio_for_speed.
1228 2018-06-28  Martin Liska  <mliska@suse.cz>
1230         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
1231         Add new checking assert to catch invalid state.
1232         (jump_table_cluster::can_be_handled): Handle single case
1233         clusters.
1234         (jump_table_cluster::is_beneficial): Bail out for such case.
1235         (bit_test_cluster::find_bit_tests):
1236         Add new checking assert to catch invalid state.
1237         (bit_test_cluster::can_be_handled): Handle single case
1238         clusters.
1239         (bit_test_cluster::is_beneficial): Bail out for such case.
1240         (switch_decision_tree::analyze_switch_statement):
1241         Fix comment.
1243 2018-06-28  Martin Liska  <mliska@suse.cz>
1245         * common.opt: Introduce -completion option.
1246         * gcc.c (driver_handle_option): Handle it.
1247         (driver::main): Print completions if completion
1248         is set.
1249         * opt-suggestions.c (option_proposer::get_completions):
1250         New function.
1251         (option_proposer::suggest_completion): Likewise.
1252         (option_proposer::find_param_completions): Likewise.
1253         (verify_autocompletions): Likewise.
1254         (test_completion_valid_options): Likewise.
1255         (test_completion_valid_params): Likewise.
1256         (in_completion_p): Likewise.
1257         (empty_completion_p): Likewise.
1258         (test_completion_partial_match): Likewise.
1259         (test_completion_garbage): Likewise.
1260         (opt_proposer_c_tests): Likewise.
1261         * opt-suggestions.h: Declare new functions.
1262         * opts.c (common_handle_option): Handle OPT__completion_.
1263         * selftest-run-tests.c (selftest::run_tests): Add
1264         opt_proposer_c_tests.
1265         * selftest.c (assert_str_startswith): New.
1266         * selftest.h (assert_str_startswith): Likewise.
1267         (opt_proposer_c_tests): New.
1268         (ASSERT_STR_STARTSWITH): Likewise.
1270 2018-06-28  Martin Liska  <mliska@suse.cz>
1272         * Makefile.in: Add opt-suggestions.o.
1273         * gcc-main.c: Include opt-suggestions.h.
1274         * gcc.c (driver::driver): Likewise.
1275         (driver::~driver): Remove m_option_suggestions.
1276         (driver::build_option_suggestions): Moved to option_proposer.
1277         (driver::suggest_option): Likewise.
1278         (driver::handle_unrecognized_options): Use option_proposer.
1279         * gcc.h (class driver): Add new memver m_option_proposer.
1280         * opt-suggestions.c: New file.
1281         * opt-suggestions.h: New file.
1283 2018-06-28  Martin Liska  <mliska@suse.cz>
1285         * vec.h (class auto_string_vec): New (moved from auto_argvec).
1286         (auto_string_vec::~auto_string_vec): Likewise.
1288 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1290         * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
1291         prevent_decl_creation_for_types fields up and add reset_location field.
1292         * tree-inline.c (remap_gimple_stmt): Force input_location on the new
1293         statement if id->reset_location is true.
1294         (copy_edges_for_bb): Do not set goto_locus on the new edges if
1295         id->reset_location is true.
1296         (copy_phis_for_bb): Force input_location on the arguments if
1297         id->reset_location is true.
1298         (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
1299         is set on the function to be inlined.
1301 2018-06-27  Stephan Bergmann  <sbergman@redhat.com>
1303         * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
1305 2018-06-27  Dimitar Dimitrov  <dimitar@dinux.eu>
1307         * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
1308         registers for Pmode.
1309         * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
1310         hard registers for the clobbered pseudo.
1312 2018-06-27  Paul Koning  <ni1d@arrl.net>
1314         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
1315         mutually exclusive options.
1316         * config/pdp11/constraints.md (h): New constraint.
1317         (O): Update definition to match shift code generation.
1318         (D): New constraint.
1319         * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
1320         (CCFP): Remove.
1321         * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
1322         function.
1323         (output_jump): Change arguments.
1324         (pdp11_fixed_cc_regs): New function.
1325         (pdp11_cc_mode): Ditto.
1326         (pdp11_expand_shift): Ditto.
1327         (pdp11_assemble_shift): Ditto.
1328         (pdp11_small_shift): Ditto.
1329         (pdp11_branch_cost): Remove.
1330         * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
1331         from output.
1332         (pdp11_register_move_cost): Update for CC registers.
1333         (pdp11_rtx_costs): Add case for LSHIFTRT.
1334         (pdp11_output_jump): Add CCNZ mode conditional branches.
1335         (notice_update_cc_on_set): Remove.
1336         (pdp11_cc_mode): New function.
1337         (simple_memory_operand): Correct pre/post decrement case.
1338         (no_side_effect_operand): New function.
1339         (pdp11_regno_reg_class): Add CC_REGS class.
1340         (pdp11_fixed_cc_regs): New function.
1341         (pdp11_small_shift): New function.
1342         (pdp11_expand_shift): New function to expand shift insns.
1343         (pdp11_assemble_shift): New function to output shifts.
1344         (pdp11_branch_cost): Remove.
1345         (pdp11_modes_tieable_p): Make QI/HI modes tieable.
1346         * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
1347         (WCHAR_TYPE): Ditto.
1348         (PTRDIFF_TYPE): Ditto.
1349         (ADJUST_INSN_LENGTH): New macro.
1350         (FIXED_REGISTERS): Add CC registers.
1351         (CALL_USED_REGISTERS): Ditto.
1352         (reg_class): Ditto.
1353         (REG_CLASS_NAMES): Ditto.
1354         (REG_CLASS_CONTENTS): Ditto.
1355         (SELECT_CC_MODE): Use new function.
1356         (TARGET_FLAGS_REGNUM): New macro.
1357         (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
1358         (cc0_reg_rtx): Remove.
1359         (CC_STATUS_MDEP): Remove.
1360         (CC_STATUS_MDEFP_INIT): Remove.
1361         (CC_IN_FPU): Remove.
1362         (NOTICE_UPDATE_CC): Remove.
1363         (REGISTER_NAMES): Add CC registers.
1364         (BRANCH_COST): Change to constant 1.
1365         * config/pdp11/pdp11.md: Rewrite for CCmode condition code
1366         handling.
1367         * config/pdp11/pdp11.opt (mbcopy): Remove.
1368         (mbcopy-builtin): Remove.
1369         (mbranch-cheap): Remove.
1370         (mbranch-expensive): Remove.
1371         * config/pdp11/predicates.md (expand_shift_operand): Update to
1372         match shift code generation.
1373         (ccnz_operator): New predicate.
1374         * doc/invoke.texi (PDP-11 Options): Remove deleted options
1375         -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
1376         Remove non-existent option -mabshi, -mno-abshi.  Document mutually
1377         exclusive options.
1378         * doc/md.texi (PDP-11): Document new D and h constraints.  Update
1379         description of O constraint.
1381 2018-06-27  Jeff Law  <law@redhat.com>
1382             Austin Law  <austinklaw@gmail.com>
1384         * config/v850/v850.md (addsi3_set_flags): New pattern.
1385         (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
1386         (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
1387         (zero_extendhisi2_v850_set_flags): Likewise.
1388         (zero_extendqisi2_v850_set_flags): Likewise.
1389         (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
1390         (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
1391         (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
1393         * config/v850/v850-protos.h (notice_update_cc): Remove.
1394         * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
1395         (v850_print_operand): Handle 'D' and "d".
1396         (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
1397         Add handling of arithmetic/logical operations compared against zero.
1398         (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
1399         Do not look at v850_compare_op, instead get mode from last argument.
1400         (v850_gen_compare): Remove
1401         (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
1402         after reload for prologue insns.
1403         (expand_prologue): Account for CLOBBER of CC_REGNUM in various
1404         patterns.
1405         (construct_save_jarl): Likewise.
1406         (TARGET_FLAGS_REGNUM): Define.
1407         * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
1408         (NOTICE_UPDATE_CC): Remove.
1409         * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
1410         than cc0.  Conditionalize on reload_completed.
1411         (cmpsi_insn, setfcc_insn): Likewise.
1412         (tst1 splitter): Turn into define_and_split which sets the flags
1413         after reload.
1414         (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
1415         (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
1416         (cstoresf4, cstoredf4): Clobber the flags.
1417         (cmpsi, cmpsf, cmpdf): Remove expanders.
1418         (setf_insn): Remove pattern.
1419         (addsi3): Turn into define_and_split which clobbers the flags after
1420         reload and a suitable pattern (addsi3_clobber_flags) for use after
1421         reload.
1422         (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
1423         (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
1424         (ashrsi3, ashrsi3_v850e2): Likewise.
1425         (bins): Clobber the flags.
1426         (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
1427         (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
1428         (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
1429         (call_value_internal_short, call_value_internal_long): Likewise.
1430         (callt_save_interrupt, callt_return_interrupt): Likewise.
1431         (save_interrupt, return_interrupt): Likewise.
1432         (callt_save_all_interrupt, save_all_interrupt): Likewise.
1433         (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
1434         (restore_all_interrupt, _restore_all_interrupt): Likewise.
1435         (All FP comparisons): Only allow after reload has completed.
1436         (trfsr): Likewise.
1437         (divh, divhu): Tweak output template.
1438         (branch_z_normal, branch_z_invert): Remove
1439         (branch_nz_normal, branch_nz_invert): Likewise.
1440         (extendhisi_insn, extendqisi_insn): Do not clobber flags.
1442         * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
1443         * config/v850/v850.c (notice_update_cc): Remove.
1444         * config/v850/v850.h  (CC_OVERFLOW_UNUSABLE): Remove
1445         (CC_NO_CARRY): Likewise.
1446         (NOTICE_UPDATE_CC): Define to nothing.
1447         * config/v850/v850.md: Remove block comment on cc0 handling
1448         Remove "cc" attribute from all patterns.  Remove cc_status handling
1449         from all patterns.  Minor formatting fixes.
1451 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1453         * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
1454         (cortex-a76.cortex-a55): Likewise.
1455         * config/aarch64/aarch64-tune.md: Regenerate.
1456         * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
1457         cortex-a76.cortex-a55.
1459 2018-06-27  Jeff Law  <law@redhat.com>
1461         * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
1462         (MULTILIB_DIRNAMES): Similarly.
1464 2018-06-27  Eric Botcazou  <ebotcazou@adacore.com>
1466         * gimple.h (gimple_return_retbnd): Delete.
1467         (gimple_return_set_retbnd): Likewise.
1468         * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
1469         gimple_return_set_retbnd.
1470         * gimple-pretty-print.c (dump_gimple_return): Remove call to
1471         gimple_return_retbnd and adjust.
1472         * tree-inline.h (struct copy_body_data): Remove retbnd field.
1473         * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
1474         Explicitly return NULL in a couple more cases.  Move assertion
1475         on debug statements and remove unreachable code.
1476         (reset_debug_binding): Do not test id->retbnd.
1477         (expand_call_inline): Do not set it.
1479 2018-06-27  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
1481         * configure.ac: Add --disable-gcov option.
1482         * configure: Regenerate.
1483         * Makefile.in: Honour @enable_gcov@.
1484         * doc/install.texi: Document --disable-gcov.
1486 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1488         * config/arm/arm-cpus.in (cortex-a76): New entry.
1489         (cortex-a76.cortex-a55): Likewise.
1490         * config/arm/arm-tables.opt: Regenerate.
1491         * config/arm/arm-tune.md: Likewise.
1492         * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
1493         * doc/invoke.texi (ARM Options): Document cortex-a76 and
1494         cortex-a76.cortex-a55.
1496 2018-06-27 Tamar Christina  <tamar.christina@arm.com>
1498         PR target/85769
1499         * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
1501 2018-06-27  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1503         * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
1504         comment.
1505         (EPILOGUE_USES): Likewise.
1507 2018-06-26  Eric Botcazou  <ebotcazou@adacore.com>
1509         * tree-inline.c (remap_location): New function extracted from...
1510         (copy_edges_for_bb): Add ID parameter.  Remap goto_locus.
1511         (copy_phis_for_bb): ...here.  Call remap_location.
1512         (copy_cfg_body): Adjust call to copy_edges_for_bb.
1514 2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
1516         * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
1517         unaligned vsx for 16B memset.
1519 2018-06-26  Segher Boessenkool  <segher@kernel.crashing.org>
1521         PR target/86285
1522         * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
1523         ieee128_float_type_node to long_double_type_node unless
1524         TARGET_LONG_DOUBLE_128 is set.
1526 2018-06-26  David Malcolm  <dmalcolm@redhat.com>
1528         * cfgloop.c (get_loop_location): Convert return type from
1529         location_t to dump_user_location_t, replacing INSN_LOCATION lookups
1530         by implicit construction from rtx_insn *, and using
1531         dump_user_location_t::from_function_decl for the fallback case.
1532         * cfgloop.h (get_loop_location): Convert return type from
1533         location_t to dump_user_location_t.
1534         * cgraphunit.c (walk_polymorphic_call_targets): Update call to
1535         dump_printf_loc to pass in a dump_location_t rather than a
1536         location_t, via the gimple stmt.
1537         * coverage.c (get_coverage_counts): Update calls to
1538         dump_printf_loc to pass in dump_location_t rather than a
1539         location_t.
1540         * doc/optinfo.texi (Dump types): Convert example of
1541         dump_printf_loc from taking "locus" to taking "insn".  Update
1542         description of the "_loc" calls to cover dump_location_t.
1543         * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
1544         "selftest.h".
1545         (dump_user_location_t::dump_user_location_t): New constructors,
1546         from gimple *stmt and rtx_insn *.
1547         (dump_user_location_t::from_function_decl): New function.
1548         (dump_loc): Make static.
1549         (dump_gimple_stmt_loc): Convert param "loc" from location_t to
1550         const dump_location_t &.
1551         (dump_generic_expr_loc): Delete.
1552         (dump_printf_loc): Convert param "loc" from location_t to
1553         const dump_location_t &.
1554         (selftest::test_impl_location): New function.
1555         (selftest::dumpfile_c_tests): New function.
1556         * dumpfile.h: Include "profile-count.h".
1557         (class dump_user_location_t): New class.
1558         (struct dump_impl_location_t): New struct.
1559         (class dump_location_t): New class.
1560         (dump_printf_loc): Convert 2nd param from source_location to
1561         const dump_location_t &.
1562         (dump_generic_expr_loc): Delete.
1563         (dump_gimple_stmt_loc): Convert 2nd param from source_location to
1564         const dump_location_t &.
1565         * gimple-fold.c (fold_gimple_assign): Update call to
1566         dump_printf_loc to pass in a dump_location_t rather than a
1567         location_t, via the gimple stmt.
1568         (gimple_fold_call): Likewise.
1569         * gimple-loop-interchange.cc
1570         (loop_cand::analyze_iloop_reduction_var): Update for change to
1571         check_reduction_path.
1572         (tree_loop_interchange::interchange): Update for change to
1573         find_loop_location.
1574         * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
1575         change in return-type of find_loop_location.
1576         (graphite_regenerate_ast_isl): Likewise.
1577         * graphite-optimize-isl.c (optimize_isl): Likewise.
1578         * graphite.c (graphite_transform_loops): Likewise.
1579         * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
1580         pass in a dump_location_t rather than a location_t, via the
1581         gimple stmt.
1582         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1583         * ipa.c (walk_polymorphic_call_targets): Likewise.
1584         * loop-unroll.c (report_unroll): Convert "locus" param from
1585         location_t to dump_location_t.
1586         (decide_unrolling): Update for change to get_loop_location's
1587         return type.
1588         * omp-grid.c (struct grid_prop): Convert field "target_loc" from
1589         location_t to dump_user_location_t.
1590         (grid_find_single_omp_among_assignments_1): Updates calls to
1591         dump_printf_loc to pass in a dump_location_t rather than a
1592         location_t, via the gimple stmt.
1593         (grid_parallel_clauses_gridifiable): Convert "tloc" from
1594         location_t to dump_location_t.  Updates calls to dump_printf_loc
1595         to pass in a dump_location_t rather than a location_t, via the
1596         gimple stmt.
1597         (grid_inner_loop_gridifiable_p): Likewise.
1598         (grid_dist_follows_simple_pattern): Likewise.
1599         (grid_gfor_follows_tiling_pattern): Likewise.
1600         (grid_target_follows_gridifiable_pattern): Likewise.
1601         (grid_attempt_target_gridification): Convert initialization
1602         of local "grid" from memset to zero-initialization; FIXME: does
1603         this require C++11?  Update call to dump_printf_loc to pass in a
1604         optinfo_location rather than a location_t, via the gimple stmt.
1605         * profile.c (read_profile_edge_counts): Updates call to
1606         dump_printf_loc to pass in a dump_location_t rather than a
1607         location_t
1608         (compute_branch_probabilities): Likewise.
1609         * selftest-run-tests.c (selftest::run_tests): Call
1610         dumpfile_c_tests.
1611         * selftest.h (dumpfile_c_tests): New decl.
1612         * tree-loop-distribution.c (pass_loop_distribution::execute):
1613         Update for change in return type of find_loop_location.
1614         * tree-parloops.c (parallelize_loops): Likewise.
1615         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
1616         "locus" from location_t to dump_user_location_t.
1617         (canonicalize_loop_induction_variables): Likewise.
1618         * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
1619         for change in return type of find_loop_location.
1620         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
1621         to dump_printf_loc to pass in a dump_location_t rather than a
1622         location_t, via the stmt.
1623         * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
1624         Likewise.
1625         * tree-vect-loop-manip.c (find_loop_location): Convert return
1626         type from source_location to dump_user_location_t.
1627         (vect_do_peeling): Update for above change.
1628         (vect_loop_versioning): Update for change in type of
1629         vect_location.
1630         * tree-vect-loop.c (check_reduction_path): Convert "loc" param
1631         from location_t to dump_user_location_t.
1632         (vect_estimate_min_profitable_iters): Update for change in type
1633         of vect_location.
1634         * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
1635         location_t to dump_location_t.
1636         (vect_slp_bb): Update for change in type of vect_location.
1637         * tree-vectorizer.c (vect_location): Convert from source_location
1638         to dump_user_location_t.
1639         (try_vectorize_loop_1): Update for change in vect_location's type.
1640         (vectorize_loops): Likewise.
1641         (increase_alignment): Likewise.
1642         * tree-vectorizer.h (vect_location): Convert from source_location
1643         to dump_user_location_t.
1644         (find_loop_location): Convert return type from source_location to
1645         dump_user_location_t.
1646         (check_reduction_path): Convert 1st param from location_t to
1647         dump_user_location_t.
1648         * value-prof.c (check_counter): Update call to dump_printf_loc to
1649         pass in a dump_user_location_t rather than a location_t; update
1650         call to error_at for change in type of "locus".
1651         (check_ic_target): Update call to dump_printf_loc to
1652         pass in a dump_user_location_t rather than a location_t, via the
1653         call_stmt.
1655 2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>
1657         * config/s390/s390.h (enum processor_flags): Do not use
1658         default tune parameter when -march was specified.
1660 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
1662         PR target/86314
1663         * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
1664         Check reg_overlap_mentioned_p in addition to reg_set_p with the same
1665         operands.
1667 2018-06-26  Richard Biener  <rguenther@suse.de>
1669         PR tree-optimization/86287
1670         PR bootstrap/86316
1671         * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
1672         (vect_analyze_loop): Initialize n_stmts.
1674 2018-06-26  Richard Biener  <rguenther@suse.de>
1676         PR middle-end/86271
1677         * fold-const.c (fold_convertible_p): Pointer extension
1678         isn't valid.
1680 2018-06-26  Alexandre Oliva <aoliva@redhat.com>
1682         PR debug/86064
1683         * dwarf2out.c (loc_list_has_views): Adjust comments.
1684         (dw_loc_list): Split single cross-partition range with
1685         nonzero locview.
1687 2018-06-25  Jeff Law  <law@redhat.com>
1689         * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
1690         on -mbig-switch by default.
1692         * config/v850/predicates.md (const_float_1_operand): Fix match_code
1693         test.
1694         (const_float_0_operand): Remove unused predicate.
1695         * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
1696         (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
1697         (recipsf2): New expander.  Original pattern now called
1698         (recipsf2_insn).
1699         (recipdf2, recipdf2_insn): Similarly.
1700         (rsqrtsf2, rsqrtsf2_insn): Similarly
1701         (rsqrtdf2, rsqrtdf2_insn): Similarly
1703 2018-06-26  Gerald Pfeifer  <gerald@pfeifer.com>
1705         * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
1706         Simplify logic for FreeBSD (twice).
1708 2018-06-25  Martin Sebor  <msebor@redhat.com>
1710         PR tree-optimization/86204
1711         * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
1712         a strnlen result if it's less than the length of the string.
1714 2018-06-25  Martin Sebor  <msebor@redhat.com>
1716         PR tree-optimization/85700
1717         * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
1718         * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
1719         (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
1721 2018-06-25  Martin Sebor  <msebor@redhat.com>
1723         * doc/extend.texi (Zero-length arrays): Update and clarify.
1725 2018-06-25  Michael Meissner  <meissner@linux.ibm.com>
1727         * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
1728         added IEEE/IBM long double multilib support on PowerPC little
1729         endian Linux systems.
1730         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
1731         (MULTILIB_DEFAULTS): Likewise.
1732         * config/rs6000/rs6000.c (rs6000_option_override_internal):
1733         Likewise.
1734         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
1735         * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
1736         * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
1738 2018-06-25  Alexander Monakov  <amonakov@ispras.ru>
1740         PR middle-end/86311
1741         * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
1742         (REORDER_45): Likewise.
1744 2018-06-25  Jeff Law  <law@redhat.com>
1746         * config/v850/v850.md (divmodhi4): Make sure to sign extend the
1747         dividend to 32 bits.  Adjust length.
1748         (udivmodhi4): Cleanup output template.  Fix length.
1750 2018-06-25  Carl Love  <cel@us.ibm.com>
1752         * config/rs6000/vsx.md: Change word selector to prefered location.
1754 2018-06-25  Richard Biener  <rguenther@suse.de>
1756         PR tree-optimization/86304
1757         * tree-vectorizer.c (vectorize_loops): Walk over new possibly
1758         epilogue-if-converted loops as well.
1760 2018-06-25  Jan Hubicka  <hubicka@ucw.cz>
1762         * lto-section-out.c (lto_begin_section): Do not print section
1763         name for noaddr and unnumbered dumps.
1765 2018-06-25  Richard Biener  <rguenther@suse.de>
1767         * tree-vectorizer.h (struct vec_info_shared): New structure
1768         with parts split out from struct vec_info and loop_nest from
1769         struct _loop_vec_info.
1770         (struct vec_info): Adjust accordingly.
1771         (struct _loop_vec_info): Likewise.
1772         (LOOP_VINFO_LOOP_NEST): Adjust.
1773         (LOOP_VINFO_DATAREFS): Likewise.
1774         (LOOP_VINFO_DDRS): Likewise.
1775         (struct _bb_vec_info): Likewise.
1776         (BB_VINFO_DATAREFS): Likewise.
1777         (BB_VINFO_DDRS): Likewise.
1778         (struct _stmt_vec_info): Add dr_aux member.
1779         (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
1780         (DR_MISALIGNMENT_UNINITIALIZED): New.
1781         (set_dr_misalignment): Adjust.
1782         (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
1783         (vect_analyze_loop): Adjust prototype.
1784         (vect_analyze_loop_form): Likewise.
1785         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
1786         Compute dependences lazily.
1787         (vect_record_base_alignments): Use shared datarefs/ddrs.
1788         (vect_verify_datarefs_alignment): Likewise.
1789         (vect_analyze_data_refs_alignment): Likewise.
1790         (vect_analyze_data_ref_accesses): Likewise.
1791         (vect_analyze_data_refs): Likewise.
1792         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
1793         constructor parameter for shared part.
1794         (vect_analyze_loop_form): Pass in shared part and adjust.
1795         (vect_analyze_loop_2): Pass in storage for the number of
1796         stmts.  Move loop nest finding to the caller.  Compute
1797         datarefs lazily.
1798         (vect_analyze_loop): Pass in shared part.
1799         (vect_transform_loop): Verify shared datarefs are unchanged.
1800         * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
1801         constructor parameter for shared part.
1802         (vect_slp_analyze_bb_1): Pass in shared part and adjust.
1803         (vect_slp_bb): Verify shared datarefs are unchanged before
1804         transform.
1805         * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
1806         change.
1807         (new_stmt_vec_info): Initialize DR_AUX misalignment to
1808         DR_MISALIGNMENT_UNINITIALIZED.
1809         * tree-vectorizer.c (vec_info::vec_info): Add constructor
1810         parameter for shared part.
1811         (vec_info::~vec_info): Adjust.
1812         (vec_info_shared::vec_info_shared): New.
1813         (vec_info_shared::~vec_info_shared): Likewise.
1814         (vec_info_shared::save_datarefs): Likewise.
1815         (vec_info_shared::check_datarefs): Likewise.
1816         (try_vectorize_loop_1): Construct shared part live for analyses
1817         of a single loop for multiple vector sizes.
1818         * tree-parloops.c (gather_scalar_reductions): Adjust.
1820 2018-06-25  Richard Biener  <rguenther@suse.de>
1822         * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
1823         DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
1824         (vect_analyze_data_refs): Remove similar code from here and
1825         simplify accordingly.
1827 2018-06-25  Richard Biener  <rguenther@suse.de>
1829         * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
1830         for reverse storage order accesses rather than asserting
1831         they cannot happen here.
1833 2018-06-25  Tom de Vries  <tdevries@suse.de>
1835         PR debug/86257
1836         * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
1837         Use data16 instead of .byte for insn prefix.
1839 2018-06-25  Andreas Krebbel  <krebbel@linux.ibm.com>
1841         PR C++/86082
1842         * parser.c (make_char_string_pack): Pass this literal chars
1843         through cpp_interpret_string.
1844         (cp_parser_userdef_numeric_literal): Check the result of
1845         make_char_string_pack.
1847 2018-06-24  Maya Rashish  <coypu@sdf.org>
1849         * ginclude/stddef.h: Simplify conditions around avoiding
1850         re-definition of __size_t.
1852 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1854         * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
1855         unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
1857 2018-06-22  Maya Rashish  <coypu@sdf.org>
1859         * doc/invoke.texi (mno-fancy-math-387): Update for changes
1860         made to OpenBSD and NetBSD through the years.
1862 2018-06-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1864         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
1865         behavior of vec_pack (vector double, vector double) to match
1866         behavior of vec_float2 (vector double, vector double).
1868 2018-06-22  Olivier Hainque  <hainque@adacore.com>
1870         * gimplify.c (gimplify_function_tree): Prevent creation
1871         of a trampoline for the address of the current function
1872         passed to entry/exit instrumentation hooks.
1874 2018-06-22  Aaron Sawdey  <acsawdey@linux.ibm.com>
1876         PR target/86222
1877         * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
1878         correctly.
1880 2018-06-22  Martin Liska  <mliska@suse.cz>
1882         PR tree-optimization/86263
1883         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
1884         Bail out if is_enabled is false.
1885         * tree-switch-conversion.h (jump_table_cluster::is_enabled):
1886         New declaration.
1887         (jump_table_cluster::is_enabled): New function.
1889 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1891         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
1892         BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
1893         * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
1894         (lto_input_ts_binfo_tree_pointers): Likewise.
1895         * tree-streamer-out.c (streamer_write_tree_bitfields,
1896         write_ts_binfo_tree_pointers): Likewise.
1897         * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
1899 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1901         * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
1903 2018-06-22  Martin Liska  <mliska@suse.cz>
1905         * symbol-summary.h (get): Make it pure and inline move
1906         functionality from ::get function.
1907         (get): Remove and inline into ::get and ::get_create.
1908         (get_create): Move code from ::get function.
1910 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1912         PR target/85994
1913         * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
1914         -x assembler-with-cpp.
1916 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1918         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
1919         _FILE_OFFSET_BITS=64 for C++.
1921 2018-06-21  Michael Meissner  <meissner@linux.ibm.com>
1923         * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
1924         conversion insn that shows up when pr85657-3.c is compiled using
1925         IEEE 128-bit long double.
1926         (neg<mode>2_internal): Use the correct mode to check whether the
1927         mode is IBM extended.
1928         * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
1929         multiply and divide external functions from being created more
1930         than once.
1932 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1934         * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
1935         functions.
1936         (rtl_merge_blocks): Likewise.  Do not emit a NOP if the location of
1937         the edge can be forwarded.
1938         (cfg_layout_merge_blocks): Likewise.
1940 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1942         * except.c (finish_eh_generation): Commit edge insertions only after
1943         the EH edges have been redirected from post-landing to landing pads.
1945 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1947         * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
1948         create_tmp_var_for to create the FRAME decl.
1949         (finalize_nesting_tree_1): Do not unchain the FRAME decl.
1951 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1953         * tree-inline.c (copy_edges_for_bb): Minor tweak.
1954         (maybe_move_debug_stmts_to_successors): Also reset the locus of the
1955         debug statement when resetting its value.
1956         (expand_call_inline): Copy the locus of the call onto the assignment
1957         of the return value, if any.  Use local variable in more cases.
1959 2018-06-21  Martin Liska  <mliska@suse.cz>
1961         * ipa-pure-const.c (propagate_nothrow): Use
1962         funct_state_summaries->get.
1963         (dump_malloc_lattice): Likewise.
1964         (propagate_malloc): Likewise.
1966 2018-06-21  Richard Biener  <rguenther@suse.de>
1968         * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
1969         comment.  Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
1970         * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
1971         comment.
1972         * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
1973         BLOCK_ABSTRACT_ORIGIN unconditionally.
1975 2018-06-21  David Malcolm  <dmalcolm@redhat.com>
1977         * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
1978         deleting it.
1979         * ipa-reference.c (ipa_reference_c_finalize): Delete
1980         ipa_ref_opt_sum_summaries and set it to NULL.
1982 2018-06-21  Tom de Vries  <tdevries@suse.de>
1984         PR tree-optimization/85859
1985         * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
1986         test with comment from bb_no_side_effects_p.
1988 2018-06-21  Richard Biener  <rguenther@suse.de>
1990         PR tree-optimization/86232
1991         * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
1992         max for constant niter.
1994 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1996         * config/aarch64/aarch64-simd.md
1997         (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
1999 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
2001         * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
2002         Make opernads of the unspec commutative.
2004 2018-06-21  Richard Biener  <rguenther@suse.de>
2006         * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
2007         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
2008         Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
2009         (vect_analyze_data_ref_dependence): Re-order checks to deal with
2010         NULL DR_STEP.
2011         (vect_record_base_alignments): Do not record base alignment
2012         for gathers or scatters.
2013         (vect_compute_data_ref_alignment): Drop return value that is always
2014         true.  Bail out early for gathers or scatters.
2015         (vect_enhance_data_refs_alignment): Bail out early for gathers
2016         or scatters.
2017         (vect_find_same_alignment_drs): Likewise.
2018         (vect_analyze_data_refs_alignment): Remove dead code.
2019         (vect_slp_analyze_and_verify_node_alignment): Likewise.
2020         (vect_analyze_data_refs): For possible gathers or scatters do
2021         not create an alternate DR, just check their possible validity
2022         and mark them.  Adjust DECL_NONALIASED handling to not rely
2023         on DR_BASE_ADDRESS.
2024         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
2025         update inits of gathers or scatters.
2026         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
2027         Also copy gather/scatter flag to pattern vinfo.
2029 2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2031         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
2032         behavior of vec_packsu (vector unsigned long long, vector unsigned
2033         long long) to match behavior of vec_packs with same signature.
2035 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
2036             Thomas Schwinge <thomas@codesourcery.com>
2037             Cesar Philippidis  <cesar@codesourcery.com>
2039         * gimplify.c (gimplify_scan_omp_clauses): Add support for
2040         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
2041         (gimplify_adjust_omp_clauses): Likewise.
2042         (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
2043         support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
2044         (gimplify_omp_target_update): Update handling of acc update and
2045         enter/exit data.
2046         * omp-low.c (install_var_field): Remove unused parameter
2047         base_pointers_restrict.
2048         (scan_sharing_clauses): Remove base_pointers_restrict parameter.
2049         Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
2050         FINALIZE}
2051         (omp_target_base_pointers_restrict_p): Delete.
2052         (scan_omp_target): Update call to scan_sharing_clauses.
2053         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
2054         FINALIZE}.
2055         * tree-nested.c (convert_nonlocal_omp_clauses): Handle
2056         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
2057         (convert_local_omp_clauses): Likewise.
2058         * tree-pretty-print.c (dump_omp_clause): Likewise.
2059         * tree.c (omp_clause_num_ops): Add entries for  OMP_CLAUSE_{IF_PRESENT,
2060         FINALIZE}.
2061         (omp_clause_code_name): Likewise.
2063 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
2065         PR debug/86194
2066         * var-tracking.c (use_narrower_mode_test): Check if shift amount can
2067         be narrowed.
2069         PR tree-optimization/86231
2070         * tree-vrp.c (union_ranges): For (  [  )  ] or (   )[   ] range and
2071         anti-range don't overwrite *vr0min before using it to compute *vr0max.
2073 2018-06-20  Tom de Vries  <tdevries@suse.de>
2075         PR tree-optimization/86097
2076         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
2077         iv type if signedness of iv type is not the same as that of *nit.
2079 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
2081         * cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
2082         EDGE_EH edges, verify they are all EDGE_EH.
2084 2018-06-20  Maya Rashish  <coypu@sdf.org>
2086         * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
2088 2018-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2090         * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
2091         * config/aarch64/aarch64.c (xgene1_tunings): Add
2092         AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
2093         (aarch64_mode_valid_for_sched_fusion_p):
2094         Allow 16-byte modes.
2095         (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
2096         * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
2097         128-bit modes.
2098         * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
2099         New pattern.
2100         (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
2101         * config/aarch64/iterators.md (VQ2): New mode iterator.
2103 2018-06-20  Martin Liska  <mliska@suse.cz>
2105         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
2106         Change default ratio from 10 to 8.
2108 2018-06-20  Martin Liska  <mliska@suse.cz>
2110         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
2111         New.
2112         (bit_test_cluster::find_bit_tests): Likewise.
2113         (switch_decision_tree::analyze_switch_statement): Find clusters.
2114         * tree-switch-conversion.h (struct jump_table_cluster): Document
2115         hierarchy.
2117 2018-06-20  Martin Liska  <mliska@suse.cz>
2119         * tree-switch-conversion.c (switch_conversion::collect):
2120         Record m_uniq property.
2121         (switch_conversion::expand): Bail out for special conditions.
2122         (group_cluster::~group_cluster): New.
2123         (group_cluster::group_cluster): Likewise.
2124         (group_cluster::dump): Likewise.
2125         (jump_table_cluster::emit): New.
2126         (switch_decision_tree::fix_phi_operands_for_edges): New.
2127         (struct case_node): Remove struct.
2128         (jump_table_cluster::can_be_handled): New.
2129         (case_values_threshold): Moved to header.
2130         (reset_out_edges_aux): Likewise.
2131         (jump_table_cluster::is_beneficial): New.
2132         (bit_test_cluster::can_be_handled): Likewise.
2133         (add_case_node): Remove.
2134         (bit_test_cluster::is_beneficial): New.
2135         (case_bit_test::cmp): New.
2136         (bit_test_cluster::emit): New.
2137         (expand_switch_as_decision_tree_p): Remove.
2138         (bit_test_cluster::hoist_edge_and_branch_if_true): New.
2139         (fix_phi_operands_for_edge): Likewise.
2140         (switch_decision_tree::analyze_switch_statement): New.
2141         (compute_cases_per_edge): Move ...
2142         (switch_decision_tree::compute_cases_per_edge): ... here.
2143         (try_switch_expansion): Likewise.
2144         (switch_decision_tree::try_switch_expansion): Likewise.
2145         (record_phi_operand_mapping): Likewise.
2146         (switch_decision_tree::record_phi_operand_mapping): Likewise.
2147         (emit_case_decision_tree): Likewise.
2148         (switch_decision_tree::emit): Likewise.
2149         (balance_case_nodes): Likewise.
2150         (switch_decision_tree::balance_case_nodes): Likewise.
2151         (dump_case_nodes): Likewise.
2152         (switch_decision_tree::dump_case_nodes): Likewise.
2153         (emit_jump): Likewise.
2154         (switch_decision_tree::emit_jump): Likewise.
2155         (emit_cmp_and_jump_insns): Likewise.
2156         (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
2157         (emit_case_nodes): Likewise.
2158         (switch_decision_tree::emit_case_nodes): Likewise.
2159         (conditional_probability): Remove.
2160         * tree-switch-conversion.h (enum cluster_type): New.
2161         (PRINT_CASE): New.
2162         (struct cluster): Likewise.
2163         (cluster::cluster): Likewise.
2164         (struct simple_cluster): Likewise.
2165         (simple_cluster::simple_cluster): Likewise.
2166         (struct group_cluster): Likewise.
2167         (struct jump_table_cluster): Likewise.
2168         (struct bit_test_cluster): Likewise.
2169         (struct min_cluster_item): Likewise.
2170         (struct case_tree_node): Likewise.
2171         (case_tree_node::case_tree_node): Likewise.
2172         (jump_table_cluster::case_values_threshold): Likewise.
2173         (struct case_bit_test): Likewise.
2174         (struct switch_decision_tree): Likewise.
2175         (struct switch_conversion): Likewise.
2176         (switch_decision_tree::reset_out_edges_aux): Likewise.
2178 2018-06-20  Martin Liska  <mliska@suse.cz>
2180         * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
2181         (hoist_edge_and_branch_if_true): Likewise.
2182         (expand_switch_using_bit_tests_p): Likewise.
2183         (struct case_bit_test): Likewise.
2184         (case_bit_test_cmp): Likewise.
2185         (emit_case_bit_tests): Likewise.
2186         (switch_conversion::switch_conversion): New class.
2187         (struct switch_conv_info): Remove old struct.
2188         (collect_switch_conv_info): More to ...
2189         (switch_conversion::collect): ... this.
2190         (check_range): Likewise.
2191         (switch_conversion::check_range): Likewise.
2192         (check_all_empty_except_final): Likewise.
2193         (switch_conversion::check_all_empty_except_final): Likewise.
2194         (check_final_bb): Likewise.
2195         (switch_conversion::check_final_bb): Likewise.
2196         (create_temp_arrays): Likewise.
2197         (switch_conversion::create_temp_arrays): Likewise.
2198         (free_temp_arrays): Likewise.
2199         (gather_default_values): Likewise.
2200         (switch_conversion::gather_default_values): Likewise.
2201         (build_constructors): Likewise.
2202         (switch_conversion::build_constructors): Likewise.
2203         (constructor_contains_same_values_p): Likewise.
2204         (switch_conversion::contains_same_values_p): Likewise.
2205         (array_value_type): Likewise.
2206         (switch_conversion::array_value_type): Likewise.
2207         (build_one_array): Likewise.
2208         (switch_conversion::build_one_array): Likewise.
2209         (build_arrays): Likewise.
2210         (switch_conversion::build_arrays): Likewise.
2211         (gen_def_assigns): Likewise.
2212         (switch_conversion::gen_def_assigns): Likewise.
2213         (prune_bbs): Likewise.
2214         (switch_conversion::prune_bbs): Likewise.
2215         (fix_phi_nodes): Likewise.
2216         (switch_conversion::fix_phi_nodes): Likewise.
2217         (gen_inbound_check): Likewise.
2218         (switch_conversion::gen_inbound_check): Likewise.
2219         (process_switch): Use the newly created class.
2220         (switch_conversion::expand): New.
2221         (switch_conversion::~switch_conversion): New.
2222         * tree-switch-conversion.h: New file.
2224 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2226         * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
2227         tree-vect-patterns.c.
2228         * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
2229         (vect_recog_dot_prod_pattern): Use it.  Remove the type_in argument.
2230         (vect_recog_sad_pattern): Likewise.
2231         (vect_recog_widen_sum_pattern): Likewise.
2232         (vect_recog_pow_pattern): Likewise.  Check for a null vectype.
2233         (vect_recog_widen_shift_pattern): Remove the type_in argument.
2234         (vect_recog_rotate_pattern): Likewise.
2235         (vect_recog_mult_pattern): Likewise.
2236         (vect_recog_vector_vector_shift_pattern): Likewise.
2237         (vect_recog_divmod_pattern): Likewise.
2238         (vect_recog_mixed_size_cond_pattern): Likewise.
2239         (vect_recog_bool_pattern): Likewise.
2240         (vect_recog_mask_conversion_pattern): Likewise.
2241         (vect_try_gather_scatter_pattern): Likewise.
2242         (vect_recog_widen_mult_pattern): Likewise.  Check for a null vectype.
2243         (vect_recog_over_widening_pattern): Likewise.
2244         (vect_recog_gather_scatter_pattern): Likewise.
2245         (vect_recog_func_ptr): Move from tree-vectorizer.h
2246         (vect_vect_recog_func_ptrs): Move further down the file.
2247         (vect_recog_func): Likewise.  Remove the third argument.
2248         (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
2249         (vect_pattern_recog_1): Expect the pattern function to do any
2250         necessary target tests.  Also expect it to provide a vector type.
2251         Remove the type_in handling.
2253 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2255         * tree-vect-patterns.c (vect_pattern_detected): New function.
2256         (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
2257         (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
2258         (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
2259         (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
2260         (vect_recog_mult_pattern, vect_recog_divmod_pattern)
2261         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
2262         (vect_recog_mask_conversion_pattern)
2263         (vect_try_gather_scatter_pattern): Likewise.
2265 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2267         * tree-vect-patterns.c (vect_get_internal_def): New function.
2268         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
2269         (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
2270         (search_type_for_mask_1): Use it.
2272 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2274         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
2275         redundant WIDEN_SUM_EXPR handling.
2276         (vect_recog_sad_pattern): Likewise.
2278 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2280         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
2281         redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
2282         (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
2283         (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
2284         (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
2286 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2288         * tree-vect-stmts.c (vectorizable_call): Make sure that we
2289         use the stmt_vec_info of the original bb statement for the
2290         new zero assignment, even if the call is part of a pattern.
2292 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2294         * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
2295         that the sequence is attached to the original statement rather
2296         than the pattern statement.
2297         * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
2298         PATTERN_DEF_SEQ from the original statement rather than
2299         the main pattern statement.
2300         * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
2301         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
2302         (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
2304 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2306         * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
2307         definition statements before the early exit for statements that aren't
2308         live or relevant.
2309         * tree-vect-loop.c (vect_transform_loop_stmt): New function,
2310         split out from...
2311         (vect_transform_loop): ...here.  Process pattern definition
2312         statements without first checking whether the main pattern
2313         statement is live or relevant.
2315 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2317         * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
2318         -O0 if the locus represent UNKNOWN_LOCATION but have different values.
2320 2018-06-19  Aaron Sawdey  <acsawdey@linux.ibm.com>
2322         * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
2323         TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
2324         (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
2325         (expand_block_compare): Change select_block_compare_mode call.
2326         (expand_strncmp_align_check): Use new functions, fix comment.
2327         (emit_final_str_compare_gpr): New function.
2328         (expand_strn_compare): Refactor and clean up code.
2329         * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
2331 2018-06-19  Tony Reix  <tony.reix@atos.com>
2332             Damien Bergamini  <damien.bergamini@atos.com>
2333             David Edelsohn  <dje.gcc@gmail.com>
2335         * collect2.c (static_obj): New variable.
2336         (static_libs): New variable.
2337         (is_in_list): Uncomment declaration.
2338         (main): Track AIX libraries linked statically.
2339         (is_in_list): Uncomment definition.
2340         (scan_prog_file): Don't add AIX shared libraries initializer
2341         to constructor list if linking statically.
2343 2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
2345         * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
2346         constant.
2347         (allocate_stack, frame_blockage, *frame_blockage): New patterns.
2349 2018-06-19  Jan Hubicka  <hubicka@ucw.cz>
2351         * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
2352         blocks.
2354 2018-06-19  Martin Liska  <mliska@suse.cz>
2356         * config/i386/i386.c (ix86_can_inline_p): Do not use
2357         ipa_fn_summaries::get_create.
2358         * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
2359         get.
2360         (devirtualization_time_bonus): Likewise.
2361         (ipcp_propagate_stage): Likewise.
2362         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
2363         (edge_set_predicate): Likewise.
2364         (evaluate_conditions_for_known_args): Likewise.
2365         (evaluate_properties_for_edge): Likewise.
2366         (ipa_call_summary::reset): Tranform to ...
2367         (ipa_call_summary::~ipa_call_summary): ... this.
2368         (ipa_fn_summary::reset): Transform to ...
2369         (ipa_fn_summary::~ipa_fn_summary): ... this.
2370         (ipa_fn_summary_t::remove): Rename to ...
2371         (ipa_fn_summary_t::remove_callees): ... this.
2372         (ipa_fn_summary_t::duplicate): Use placement new
2373         instead of memory copy.
2374         (ipa_call_summary_t::duplicate): Likewise.
2375         (ipa_call_summary_t::remove): Remove.
2376         (dump_ipa_call_summary): Change get_create to get.
2377         (ipa_dump_fn_summary): Dump only when summary exists.
2378         (analyze_function_body): Use symbol_summary::get instead
2379         of get_create.
2380         (compute_fn_summary): Likewise.
2381         (estimate_edge_devirt_benefit): Likewise.
2382         (estimate_edge_size_and_time): Likewise.
2383         (inline_update_callee_summaries): Likewise.
2384         (remap_edge_change_prob): Likewise.
2385         (remap_edge_summaries): Likewise.
2386         (ipa_merge_fn_summary_after_inlining): Likewise.
2387         (write_ipa_call_summary): Likewise.
2388         (ipa_fn_summary_write): Likewise.
2389         (ipa_free_fn_summary): Likewise.
2390         * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
2391         (struct ipa_call_summary): Likewise.
2392         * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
2393         of get_create.
2394         * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
2395         (estimate_size_after_inlining): Likewise.
2396         (estimate_growth): Likewise.
2397         (growth_likely_positive): Likewise.
2398         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
2399         (inline_call): Likewise.
2400         * ipa-inline.c (caller_growth_limits): Likewise.
2401         (can_inline_edge_p): Likewise.
2402         (can_inline_edge_by_limits_p): Likewise.
2403         (compute_uninlined_call_time): Likewise.
2404         (compute_inlined_call_time): Likewise.
2405         (want_inline_small_function_p): Likewise.
2406         (edge_badness): Likewise.
2407         (update_caller_keys): Likewise.
2408         (update_callee_keys): Likewise.
2409         (inline_small_functions): Likewise.
2410         (inline_to_all_callers_1): Likewise.
2411         (dump_overall_stats): Likewise.
2412         (early_inline_small_functions): Likewise.
2413         (early_inliner): Likewise.
2414         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
2415         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
2416         * ipa-pure-const.c (malloc_candidate_p): Likewise.
2417         * ipa-split.c (execute_split_functions): Likewise.
2418         * symbol-summary.h: Likewise.
2419         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
2421 2018-06-19  Richard Biener  <rguenther@suse.de>
2423         * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
2424         (vectorize_loops): ... here.  Fix dbgcnt handling.
2425         (try_vectorize_loop): Wrap try_vectorize_loop_1.
2427 2018-06-19  Segher Boessenkool  <segher@kernel.crashing.org>
2429         PR target/86197
2430         * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
2431         ieee128 argument takes up only one (vector) register, not two (floating
2432         point) registers.
2434 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2436         * gimplify.c (gimplify_init_constructor): Really never clear for an
2437         incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
2439 2018-06-19  Richard Biener  <rguenther@suse.de>
2441         PR tree-optimization/86179
2442         * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
2443         after failed recognition.
2445 2018-06-18  Martin Sebor  <msebor@redhat.com>
2447         PR middle-end/85602
2448         * calls.c (maybe_warn_nonstring_arg): Handle strncat.
2449         * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
2450         Handle integer subtraction.
2451         (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
2452         * tree-ssa-strlen.h (is_strlen_related_p): Declare.
2454 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
2456         * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
2457         param from rtx to rtx_insn *.
2458         * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
2459         param.
2460         (frv_ifcvt_modify_insn): Likwise.
2461         (frv_ifcvt_modify_final): Likwise for local "existing_insn",
2462         adding an as_a <rtx_insn *> cast.  Likewise for local "insn".
2463         * config/mips/mips.c (r10k_insert_cache_barriers): Add an
2464         as_a <rtx_insn *> cast to local "unprotected_region" once
2465         it's been established that it's not NULL or pc_rtx.
2466         * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
2467         param "sethi" from rtx to rtx_insn *.
2468         (nds32_group_float_insns): Likewise for param "insn".
2469         * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
2470         param.
2471         (vax_output_int_subtract): Likewise.
2472         * config/vax/vax.c (vax_output_int_add): Likewise for param
2473         "insn".
2474         (vax_output_int_subtract): Likewise.
2475         * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
2476         (emit_pattern_after): Likewise for param "after".
2477         (emit_insn_after): Likewise.
2478         (emit_jump_insn_after): Likewise.
2479         (emit_call_insn_after): Likewise.
2480         (emit_debug_insn_after): Likewise.
2481         (emit_pattern_before): Likewise for param "before".
2482         (emit_insn_before): Likewise.
2483         (emit_jump_insn_before): Likewise.
2484         * final.c (get_insn_template): Likewise for param "insn", removing
2485         a cast.
2486         * output.h (get_insn_template): Likewise for 2nd param.
2487         * rtl.h (emit_insn_before): Likewise.
2488         (emit_jump_insn_before): Likewise.
2489         (emit_debug_insn_before_noloc): Likewise.
2490         (emit_insn_after): Likewise.
2491         (emit_jump_insn_after): Likewise.
2492         (emit_call_insn_after): Likewise.
2493         (emit_debug_insn_after): Likewise.
2494         (set_insn_deleted): Likewise for param.
2496 2018-06-18  Michael Meissner  <meissner@linux.ibm.com>
2498         PR target/85358
2499         * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
2500         floating point modes, so that IFmode is numerically greater than
2501         TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
2502         to declare the ordering.  This prevents IFmode from being
2503         converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
2504         machine.  Include rs6000-modes.h to share the fractional values
2505         between genmodes* and the rest of the compiler.
2506         (IFmode): Likewise.
2507         (KFmode): Likewise.
2508         (TFmode): Likewise.
2509         * config/rs6000/rs6000-modes.h: New file.
2510         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
2511         meaning of rs6000_long_double_size so that 126..128 selects an
2512         appropriate 128-bit floating point type.
2513         (rs6000_option_override_internal): Likewise.
2514         * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
2515         (TARGET_LONG_DOUBLE_128): Change the meaning of
2516         rs6000_long_double_size so that 126..128 selects an appropriate
2517         128-bit floating point type.
2518         (LONG_DOUBLE_TYPE_SIZE): Update comment.
2519         * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
2520         source and destination to match the standard usage.
2521         (truncifkf2): Likewise.
2522         (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
2523         ISA 2.07 to use an explicit clobber, instead of passing in a
2524         temporary.
2525         (copysign<mode>3_soft): Likewise.
2527 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
2529         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
2530         Replace dump_printf_loc call with DUMP_VECT_SCOPE.
2531         (vect_slp_analyze_instance_dependence): Likewise.
2532         (vect_enhance_data_refs_alignment): Likewise.
2533         (vect_analyze_data_refs_alignment): Likewise.
2534         (vect_slp_analyze_and_verify_instance_alignment
2535         (vect_analyze_data_ref_accesses): Likewise.
2536         (vect_prune_runtime_alias_test_list): Likewise.
2537         (vect_analyze_data_refs): Likewise.
2538         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
2539         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
2540         (vect_analyze_scalar_cycles_1): Likewise.
2541         (vect_get_loop_niters): Likewise.
2542         (vect_analyze_loop_form_1): Likewise.
2543         (vect_update_vf_for_slp): Likewise.
2544         (vect_analyze_loop_operations): Likewise.
2545         (vect_analyze_loop): Likewise.
2546         (vectorizable_induction): Likewise.
2547         (vect_transform_loop): Likewise.
2548         * tree-vect-patterns.c (vect_pattern_recog): Likewise.
2549         * tree-vect-slp.c (vect_analyze_slp): Likewise.
2550         (vect_make_slp_decision): Likewise.
2551         (vect_detect_hybrid_slp): Likewise.
2552         (vect_slp_analyze_operations): Likewise.
2553         (vect_slp_bb): Likewise.
2554         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
2555         (vectorizable_bswap): Likewise.
2556         (vectorizable_call): Likewise.
2557         (vectorizable_simd_clone_call): Likewise.
2558         (vectorizable_conversion): Likewise.
2559         (vectorizable_assignment): Likewise.
2560         (vectorizable_shift): Likewise.
2561         (vectorizable_operation): Likewise.
2562         * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
2564 2018-06-18  Martin Sebor  <msebor@redhat.com>
2566         PR tree-optimization/81384
2567         * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
2568         * builtins.c (expand_builtin_strnlen): New function.
2569         (expand_builtin): Call it.
2570         (fold_builtin_n): Avoid setting TREE_NO_WARNING.
2571         * builtins.def (BUILT_IN_STRNLEN): New.
2572         * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
2573         Warn for bounds in excess of maximum object size.
2574         * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
2575         single-value ranges.  Handle strnlen.
2576         (handle_builtin_strlen): Handle strnlen.
2577         (strlen_check_and_optimize_stmt): Same.
2578         * doc/extend.texi (Other Builtins): Document strnlen.
2580 2018-06-18  Maya Rashish  <coypu@sdf.org>
2582         * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
2583         (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
2584         (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
2586         * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
2587         here to ...
2588         * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
2590 2018-06-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2592         * tree.c (escaped_string::escape): Replace cast to char * by
2593         const_cast<char *> (unescaped).
2595 2018-06-18  Nick Clifton  <nickc@redhat.com>
2597         PR 84195
2598         * tree.c (escaped_string): New class.  Converts an unescaped
2599         string into its escaped equivalent.
2600         (warn_deprecated_use): Use the new class to convert the
2601         deprecation message, if present.
2602         (test_escaped_strings): New self test.
2603         (test_c_tests): Add test_escaped_strings.
2604         * doc/extend.texi (deprecated): Add a note that the
2605         deprecation message is affected by the -fmessage-length
2606         option, and that control characters will be escaped.
2607         (#pragma GCC error): Document this pragma.
2608         (#pragma GCC warning): Likewise.
2609         * doc/invoke.texi (-fmessage-length): Document this option's
2610         effect on the #warning and #error preprocessor directives and
2611         the deprecated attribute.
2613 2018-06-18  Eric Botcazou  <ebotcazou@adacore.com>
2615         * tree.c (decl_value_expr_lookup): Revert latest change.
2616         (decl_value_expr_insert): Likewise.
2618 2018-06-17  Eric Botcazou  <ebotcazou@adacore.com>
2620         * gimplify.c (nonlocal_vlas): Delete.
2621         (nonlocal_vla_vars): Likewise.
2622         (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
2623         referenced VLAs.
2624         (gimplify_body): Do not create and destroy nonlocal_vlas.
2625         * tree-nested.c: Include diagnostic.h.
2626         (use_pointer_in_frame): Tweak.
2627         (lookup_field_for_decl): Add assertion and declare the transformation.
2628         (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
2629         internal error when the reference is in a wrong context.  Do not
2630         create a debug decl by default.
2631         (note_nonlocal_block_vlas): Delete.
2632         (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
2633         (convert_local_reference_op) <PARM_DECL>: Skip the frame decl.  Do not
2634         create a debug decl by default.
2635         (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
2636         call is in a wrong context.
2637         (fixup_vla_decls): New function.
2638         (finalize_nesting_tree_1): Adjust comment.  Call fixup_vla_decls if no
2639         debug variables were created.
2640         * tree.c (decl_value_expr_lookup): Add checking assertion.
2641         (decl_value_expr_insert): Likewise.
2643 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
2645         PR middle-end/82479
2646         * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
2647         * tree-scalar-evolution.c (interpret_expr): Likewise.
2648         (expression_expensive_p): Likewise.
2649         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
2650         * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
2651         (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
2652         (ssa_defined_by_minus_one_stmt_p): New.
2654 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
2656         PR middle-end/64946
2657         * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
2658         * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
2659         * dojump.c (do_jump): Likewise.
2660         * expr.c (expand_expr_real_2): Check operand type's sign.
2661         * fold-const.c (const_unop): Handle ABSU_EXPR.
2662         (fold_abs_const): Likewise.
2663         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2664         * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
2665         (strip_sign_op_1): Likesise.
2666         * match.pd: Add new pattern to generate ABSU_EXPR.
2667         * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
2668         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2669         * tree-eh.c (operation_could_trap_helper_p): Likewise.
2670         * tree-inline.c (estimate_operator_cost): Likewise.
2671         * tree-pretty-print.c (dump_generic_node): Likewise.
2672         * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
2673         * tree.def (ABSU_EXPR): New.
2675 2018-06-16  Jakub Jelinek  <jakub@redhat.com>
2677         PR middle-end/86095
2678         * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
2679         documented as preserved for backward compatibility only.
2680         * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
2682         PR rtl-optimization/86108
2683         * bb-reorder.c (create_forwarder_block): Renamed to ...
2684         (create_eh_forwarder_block): ... this.  Split OLD_BB after labels and
2685         jump from new landing pad to the second part.
2686         (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
2687         Adjust callers.
2689 2018-06-15  Jakub Jelinek  <jakub@redhat.com>
2691         PR middle-end/85878
2692         * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
2693         check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
2694         Only call store_expr for halves if the mode is the same.
2696         PR middle-end/86123
2697         * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
2698         Fix up comment formatting.
2700 2018-06-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2702         * typed-splay-tree.h (typed_splay_tree::remove): New function.
2703         (typed_splay_tree::closure,
2704         typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
2705         (typed_splay_tree::typed_splay_tree,
2706         typed_splay_tree::operator =): Declared private.
2707         (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
2708         typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
2709         typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
2710         typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
2711         typed_splay_tree::splay_tree_splay,
2712         typed_splay_tree::splay_tree_foreach_helper,
2713         typed_splay_tree::splay_tree_insert,
2714         typed_splay_tree::splay_tree_remove,
2715         typed_splay_tree::splay_tree_lookup,
2716         typed_splay_tree::splay_tree_predecessor,
2717         typed_splay_tree::splay_tree_successor,
2718         typed_splay_tree::splay_tree_min,
2719         typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
2720         (typed_splay_tree::root, typed_splay_tree::comp,
2721         typed_splay_tree::delete_key,
2722         typed_splay_tree::delete_value): New data members.
2723         * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
2724         typed_splay_tree::remove.
2726 2018-06-15  Matthew Fortune  <matthew.fortune@mips.com>
2728         * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
2729         -mginv and -mno-ginv to the assembler.
2730         * config/mips/mips.opt (-mcrc): New option.
2731         (-mginv): Likewise.
2732         * doc/invoke.text (-mcrc): Document.
2733         (-mginv): Likewise.
2735 2018-06-15  Nick Clifton  <nickc@redhat.com>
2737         PR 84195
2738         * tree.c (escaped_string): New class.  Converts an unescaped
2739         string into its escaped equivalent.
2740         (warn_deprecated_use): Use the new class to convert the
2741         deprecation message, if present.
2742         (test_escaped_strings): New self test.
2743         (test_c_tests): Add test_escaped_strings.
2744         * doc/extend.texi (deprecated): Add a note that the
2745         deprecation message is affected by the -fmessage-length
2746         option, and that control characters will be escaped.
2747         (#pragma GCC error): Document this pragma.
2748         (#pragma GCC warning): Likewise.
2749         * doc/invoke.texi (-fmessage-length): Document this option's
2750         effect on the #warning and #error preprocessor directives and
2751         the deprecated attribute.
2753 2018-06-15  Richard Biener  <rguenther@suse.de>
2755         * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
2756         here, also noting vector size used.
2757         * tree-vectorizer.c (vectorize_loops): Adjust.  Note vector
2758         size used in MSG_OPTIMIZED_LOCATIONS dump.
2759         (pass_slp_vectorize::execute): Adjust.
2761 2018-06-15  Claudiu Zissulescu  <claziss@synopsys.com>
2763         PR target/85968
2764         * config/arc/arc.c (arc_return_address_register): Fix
2765         if-condition.
2767 2018-06-15  Richard Biener  <rguenther@suse.de>
2769         PR middle-end/86159
2770         * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
2771         leave useless conversion stripping to force_gimple_operand_gsi.
2772         (gimplify_build2): Likewise.
2773         (gimplify_build1): Likewise.
2775 2018-06-15  Richard Biener  <rguenther@suse.de>
2777         PR middle-end/86076
2778         * tree-cfg.c (move_stmt_op): unshare invariant addresses
2779         before adjusting their block.
2781 2018-06-15  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2783         * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
2784         multilibs for *-*-rtems*.
2785         * config/riscv/t-rtems: New file.
2787 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
2789         PR middle-end/86122
2790         * match.pd ((A +- CST1) +- CST2): Punt if last resort
2791         unsigned_type_for returns NULL.
2793         PR target/85945
2794         * lower-subreg.c (find_decomposable_subregs): Don't decompose float
2795         subregs of multi-word pseudos unless the float mode has word size.
2797 2018-06-14  Richard Biener  <rguenther@suse.de>
2799         PR middle-end/86139
2800         * tree-vect-generic.c (build_word_mode_vector_type): Remove
2801         duplicate and harmful type_hash_canon.
2802         * tree.c (type_hash_canon): Assert we didn't find ourselves.
2804 2018-06-14  Richard Biener  <rguenther@suse.de>
2806         PR ipa/86124
2807         * tree-ssa-struct-alias.c (create_variable_info_for): Handle
2808         NULL cgraph_node.
2810 2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2812         * config/rtems.h (STDINT_LONG32): Define.
2814 2018-06-13  Matthew Fortune  <matthew.fortune@mips.com>
2815             Prachi Godbole  <prachi.godbole@imgtec.com>
2817         * config/mips/mips-cpus.def: Define P6600.
2818         * config/mips/mips-tables.opt: Regenerate.
2819         * config/mips/mips.c (mips_ucbranch_type): New enum.
2820         (mips_rtx_cost_data): Add support for P6600.
2821         (mips_issue_rate): Likewise.
2822         (mips_multipass_dfa_lookahead): Likewise.
2823         (mips_avoid_hazard): Likewise.
2824         (mips_reorg_process_insns): Likewise.
2825         (mips_classify_branch_p6600): New function.
2826         * config/mips/mips.h (TUNE_P6600): New define.
2827         (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
2828         (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
2829         * config/mips/mips.md: Include p6600.md.
2830         (processor): Add p6600.
2831         * config/mips/p6600.md: New file.
2832         * doc/invoke.texi: Add p6600 to supported architectures.
2834 2018-06-13  Martin Sebor  <msebor@redhat.com>
2836         PR tree-optimization/86114
2837         * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
2838         of integer types.
2839         * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
2841 2018-06-13  Richard Biener  <rguenther@suse.de>
2843         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
2844         Properly set vector type of the intermediate stmt.
2845         * tree-vect-stmts.c (vectorizable_operation): The destination
2846         var always has vectype_out type.
2848 2018-06-13  Jeff Law  <law@redhat.com>
2850         * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
2851         integer 0 for argument to print_rtl_with_bb.
2852         (rl78_reorg): Likewise.
2854 2018-06-13  David Malcolm  <dmalcolm@redhat.com>
2856         * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
2857         from rtx to rtx_insn *.
2858         * config/bfin/bfin.c (hwloop_optimize): Likewise for local
2859         "label".
2860         (add_sched_insns_for_speculation): Likewise for local "target",
2861         converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
2862         * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
2863         from rtx_insn ** to rtx_code_label **.
2864         (reorg_emit_nops): Likewise.
2865         (c6x_reorg): Likewise for local "call_labels".
2866         * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
2867         rtx to rtx_insn *.
2868         * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
2869         rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
2870         the loops over LABEL_REFS.
2871         (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
2872         braf_label.
2873         (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
2874         (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
2875         (split_branches): Strengthen local "olabel" from rtx to
2876         rtx_insn *, adding a safe_as_a cast.
2877         * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
2878         to "rtx_insn *".
2879         (add_insn_after): Likewise for first two params.
2880         (add_insn_before): Likewise.
2881         (remove_insn): Likewise for param.
2882         (emit_pattern_before_noloc): Likewise for second and third params.
2883         (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
2884         (emit_call_insn_before_noloc): Likewise.
2885         (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
2886         to "rtx_insn *".
2887         (emit_barrier_before): Likewise.
2888         (emit_label_before): Strengthen "label" param from "rtx" to
2889         "rtx_code_label *".  Strengthen "before" param from "rtx" to
2890         "rtx_insn *".
2891         (emit_insn_after_1): Strengthen "after" param from "rtx" to
2892         "rtx_insn *".
2893         (emit_pattern_after_noloc): Likewise.
2894         (emit_insn_after_noloc): Likewise.
2895         (emit_jump_insn_after_noloc): Likewise.
2896         (emit_call_insn_after_noloc): Likewise.
2897         (emit_debug_insn_after_noloc): Likewise.
2898         (emit_barrier_after): Likewise.
2899         (emit_label_after): Likewise for both params.
2900         (emit_pattern_after_setloc): Likewise for "after" param.  Convert
2901         "loc" param from "int" to "location_t".
2902         (emit_insn_after_setloc): Likewise.
2903         (emit_jump_insn_after_setloc): Likewise.
2904         (emit_call_insn_after_setloc): Likewise.
2905         (emit_debug_insn_after_setloc): Likewise.
2906         (emit_pattern_before_setloc): Likewise for "before" param.  Convert
2907         "loc" param from "int" to "location_t".
2908         (emit_pattern_before): Convert NULL_RTX to NULL.
2909         (emit_insn_before_setloc): Convert "loc" param from "int" to
2910         "location_t".
2911         (emit_jump_insn_before_setloc): Likewise.
2912         (emit_call_insn_before_setloc): Likewise.
2913         (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
2914         rtx_insn *.  Convert "loc" param from "int" to "location_t".
2915         * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
2916         emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
2917         Convert 3rd param from "int" to "location_t".
2918         (emit_barrier_before, emit_barrier_after, next_real_insn):
2919         Strengthen param from rtx to rtx_insn *.
2920         (emit_label_before): Strengthen 1st param from "rtx" to
2921         "rtx_code_label *".  Strengthen 2nd param from "rtx" to
2922         "rtx_insn *".
2923         (emit_insn_after_noloc, emit_jump_insn_after_noloc,
2924         emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
2925         Strengthen 2nd param from "rtx" to "rtx_insn *".
2926         (emit_insn_after_setloc, emit_jump_insn_after_setloc)
2927         emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
2928         Likewise. Convert 3rd param from "int" to "location_t".
2929         (emit_label_after): Strengthen 1st param from "rtx" to
2930         "rtx_code_label *".
2931         (next_real_insn, remove_insn): Strengthen param from "rtx" to
2932         "rtx_insn *".
2933         (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
2934         from "rtx" to "rtx_insn *".
2936 2018-06-13  Jan Hubicka  <hubicka@gcc.gnu.org>
2938         * cgraph.c (cgraph_node::get_untransformed_body): Dump function
2939         bodies streamed in with -Q.
2940         * dumpfile.c (dump_files): Add lto-stream-out dump file.
2941         * dumpfile.h (tree_dump_index): Add lto_stream_out.
2942         * gimple-streamer-out.c: Include gimple-pretty-print.h
2943         (output_bb): Dump stmts streamed.
2944         * lto-section-out.c: Include print-tree.h
2945         (lto_begin_section): Dump sections created.
2946         (lto_output_decl_index): Dump decl encoded.
2947         * lto-streamer-out.c: Include print-tree.h
2948         (create_output_block): Dump output block created.
2949         (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
2950         (output_function): Dump function output.
2951         (output_constructor): Dump constructor streamed.
2952         (write_global_stream): Output indexes encoded.
2953         (produce_asm_for_decls): Dump streams encoded.
2954         * lto-streamer.c (streamer_dump_file): New global var.
2955         * lto-streamer.h (streamer_dump_file): Declare.
2956         * passes.c (ipa_write_summaries): Initialize streamer dump.
2957         * varpool.c (varpool_node::get_constructor): Dump constructors streamed
2958         in.
2960 2018-06-13  Eric Botcazou  <ebotcazou@adacore.com>
2962         PR target/86048
2963         * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
2964         offsets for register save directives.  Emit a second batch of save
2965         directives, if need be, when the function accesses prior frames.
2967 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2969         * config/arc/fpu.md (fmasf4): Force operand to register.
2970         (fnmasf4): Likewise.
2972 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2974         * config/arc/arc-protos.h (arc_pad_return): Remove.
2975         * config/arc/arc.c (machine_function): Remove force_short_suffix
2976         and size_reason.
2977         (arc_print_operand): Adjust printing of '&'.
2978         (arc_verify_short): Remove conditional printing of short suffix.
2979         (arc_final_prescan_insn): Remove reference to size_reason.
2980         (pad_return): New function.
2981         (arc_reorg): Call pad_return.
2982         (arc_pad_return): Remove.
2983         (arc_init_machine_status): Remove reference to force_short_suffix.
2984         * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
2985         (attr length): When attribute iscompact is true force to 2
2986         regardless; in the case of maybe check if we want to force the
2987         instruction to have 4 bytes length.
2988         (nopv): Change it to generate 4 byte long nop as well.
2989         (blockage): New pattern.
2990         (simple_return): Remove call to arc_pad_return.
2991         (p_return_i): Likewise.
2993 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2995         * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
2997 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2999         * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
3000         ARC cores.
3002 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
3004         * config/arc/arc.c (atomic_exchangesi): EX instruction is default
3005         for ARC700 and ARCv2.
3007 2018-06-13  Chenghua Xu <paul.hua.gm@gmail.com>
3009         PR target/86076
3010         * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
3011         operands[2] instead of operands[1].
3014 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
3016         * lra-constraints.c (simplify_operand_subreg): In the paradoxical
3017         case, check whether the outer register overlaps an unallocatable
3018         register, not just whether it fits the required class.
3020 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
3022         * poly-int.h (can_div_trunc_p): Add new overload in which all values
3023         are poly_ints.
3024         * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
3025         (memrefs_conflict_p): Likewise.
3026         (init_alias_analysis): Likewise.
3027         * cfgexpand.c (expand_debug_expr): Likewise.
3028         * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
3029         * cse.c (fold_rtx): Likewise.
3030         * explow.c (adjust_stack, anti_adjust_stack): Likewise.
3031         * expr.c (emit_block_move_hints): Likewise.
3032         (clear_storage_hints, push_block, emit_push_insn): Likewise.
3033         (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
3034         (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
3035         (emit_group_store): Likewise.
3036         (find_args_size_adjust): Use strip_offset.  Use rtx_to_poly_int64
3037         to read the PRE/POST_MODIFY increment.
3038         * calls.c (store_one_arg): Use strip_offset.
3039         * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
3040         poly_int_rtx_p.
3041         (set_noop_p): Use rtx_to_poly_int64 for the elements selected
3042         by a VEC_SELECT.
3043         * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
3044         (simplify_binary_operation_1): Extend CONST_INT handling to
3045         poly_int_rtx_p.
3046         * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
3047         than a HOST_WIDE_INT.
3048         (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
3049         poly_int64.
3050         (adjust_mems, add_stores): Update accodingly.
3051         (vt_canonicalize_addr): Track polynomial offsets.
3052         (emit_note_insn_var_location): Likewise.
3053         (vt_add_function_parameter): Likewise.
3054         (vt_initialize): Likewise.
3056 2018-06-12  Jeff Law  <law@redhat.com>
3058         * config.gcc (alpha*-*-freebsd*): Remove.
3059         * config/alpha/freebsd.h: Remove.
3061 2018-06-12  David Malcolm  <dmalcolm@redhat.com>
3063         PR other/69968
3064         * spellcheck-tree.c (levenshtein_distance): Rename to...
3065         (get_edit_distance): ...this, and update for underlying renaming.
3066         * spellcheck-tree.h (levenshtein_distance): Rename to...
3067         (get_edit_distance): ...this.
3068         * spellcheck.c (levenshtein_distance): Rename to...
3069         (get_edit_distance): ...this.  Convert from Levenshtein distance
3070         to Damerau-Levenshtein distance by supporting transpositions of
3071         adjacent characters.  Rename "v1" to "v_next" and "v0" to
3072         "v_one_ago".
3073         (selftest::levenshtein_distance_unit_test_oneway): Rename to...
3074         (selftest::test_edit_distance_unit_test_oneway): ...this, and
3075         update for underlying renaming.
3076         (selftest::levenshtein_distance_unit_test): Rename to...
3077         (selftest::test_get_edit_distance_unit): ...this, and update for
3078         underlying renaming.
3079         (selftest::test_find_closest_string): Add example from PR 69968
3080         where transposition helps
3081         (selftest::test_metric_conditions): Update for renaming.
3082         (selftest::test_metric_conditions): Likewise.
3083         (selftest::spellcheck_c_tests): Likewise.
3084         * spellcheck.h (levenshtein_distance): Rename both overloads to...
3085         (get_edit_distance): ...this.
3086         (best_match::consider): Update for renaming.
3088 2018-06-12  Martin Sebor  <msebor@redhat.com>
3090         PR tree-optimization/85259
3091         * builtins.c (compute_objsize): Handle constant offsets.
3092         * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
3093         true iff a warning has been issued.
3094         * gimple.h (gimple_nonartificial_location): New function.
3095         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
3096         gimple_nonartificial_location and handle -Wno-system-headers.
3097         (handle_builtin_stxncpy): Same.
3099 2018-06-12  Martin Sebor  <msebor@redhat.com>
3101         PR c/85931
3102         * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
3104 2018-06-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
3106         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
3107         BUILTIN_VEC_XST entries for pointer to double and long long.
3109 2018-06-12  H.J. Lu  <hongjiu.lu@intel.com>
3111         PR target/85990
3112         * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
3113         Update comments.
3114         * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
3115         Likewise.
3117 2018-06-12  Martin Liska  <mliska@suse.cz>
3119         * doc/options.texi: Document IntegerRange.
3121 2018-06-12  Martin Liska  <mliska@suse.cz>
3123         * config/i386/i386.opt: Make MPX-related options as Deprecated.
3124         * opt-functions.awk: Handle Deprecated flag.
3125         * opts-common.c (decode_cmdline_option): Handle cl_deprecated
3126         and report error.
3127         (read_cmdline_option): Report warning for a deprecated option.
3128         * opts.h (struct cl_option): Add new field cl_deprecated.
3129         (CL_ERR_DEPRECATED): New.
3131 2018-06-12  Martin Liska  <mliska@suse.cz>
3133         * doc/options.texi: Document Deprecated option flag.
3135 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
3137         * config/arc/arc-arch.h (arc_extras): New enum.
3138         (arc_cpu_t):Add field extra.
3139         (arc_cpu_types): Consider the extras.
3140         * config/arc/arc-cpus.def: Add extras info.
3141         * config/arc/arc-opts.h (processor_type): Consider extra field.
3142         * config/arc/arc.c (arc_override_options): Handle extra field.
3144 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
3146         * config/arc/arc-arch.h: Update ARC_OPTX macro.
3147         * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
3148         field.
3149         * config/arc/arc.c (arc_init): Update pic warning.
3150         (irq_range): Update irq range parsing warnings.
3151         (arc_override_options): Update various warning messages.
3152         (arc_handle_aux_attribute): Likewise.
3154 2018-06-12  Robert Suchanek  <robert.suchanek@mips.com>
3156         * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
3158 2018-06-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3160         * doc/sourcebuild.texi: Document usage of line number 0 in verify
3161         compiler messages directives.
3163 2018-06-12  Matthew Fortune  <mfortune@gmail.com>
3165         * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
3166         * config/mips/mips-tables.opt: Regenerate.
3167         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
3168         mips64r6.
3169         * doc/invoke.texi: Document -march=i6500.
3171 2018-06-12  Prachi Godbole  <prachi.godbole@imgtec.com>
3173         * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
3174         (i6400_gpmul): Add cpu_unit.
3175         (i6400_gpdiv): Likewise.
3176         (i6400_msa_add_d): Update reservations.
3177         (i6400_msa_int_add) Likewise.
3178         (i6400_msa_short_logic3) Likewise.
3179         (i6400_msa_short_logic2) Likewise.
3180         (i6400_msa_short_logic) Likewise.
3181         (i6400_msa_move) Likewise.
3182         (i6400_msa_cmp) Likewise.
3183         (i6400_msa_short_float2) Likewise.
3184         (i6400_msa_div_d) Likewise.
3185         (i6400_msa_long_logic1) Likewise.
3186         (i6400_msa_long_logic2) Likewise.
3187         (i6400_msa_mult) Likewise.
3188         (i6400_msa_long_float2) Likewise.
3189         (i6400_msa_long_float4) Likewise.
3190         (i6400_msa_long_float5) Likewise.
3191         (i6400_msa_long_float8) Likewise.
3192         (i6400_fpu_fadd): Include frint type.
3193         (i6400_fpu_store): New define_insn_reservation.
3194         (i6400_fpu_load): Likewise.
3195         (i6400_fpu_move): Likewise.
3196         (i6400_fpu_fcmp): Likewise.
3197         (i6400_fpu_fmadd): Likewise.
3198         (i6400_int_mult): Include imul3nc type and update reservation.
3199         (i6400_int_div): Include idiv3 type and update reservation.
3200         (i6400_int_load): Update to check type not move_type.
3201         (i6400_int_store): Likewise.
3202         (i6400_int_prefetch): Set zero latency.
3204 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
3206         * gcc.c: Document new %@{...} sequence.
3207         (LINK_COMMAND_SPEC): Use it for the -L switches.
3208         (cpp_unique_options): Use it for the -I switches.
3209         (at_file_argbuf): New global variable.
3210         (in_at_file): Likewise.
3211         (alloc_args): Create at_file_argbuf.
3212         (clear_args): Truncate at_file_argbuf.
3213         (store_arg): If in_at_file, push the argument onto at_file_argbuf.
3214         (open_at_file): New function.
3215         (close_at_file): Likewise.
3216         (create_at_file): Delete.
3217         (do_spec_1) <'i'>: Use open_at_file/close_at_file.
3218         <'o'>: Likewise.
3219         <'@'>: New case.
3220         (validate_switches_from_spec): Deal with %@{...} sequence.
3221         (validate_switches): Likewise.
3222         (driver::finalize): Call clear_args.
3224 2018-06-11  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
3226         * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
3228 2018-06-11  Martin Sebor  <msebor@redhat.com>
3230         * doc/invoke.texi (-Wall): List -Wc++17-compat.
3231         (Wno-class-memaccess): Add @opindex.
3232         (Wno-templates, Wno-multiple-inheritance): Same.
3233         (Wno-virtual-inheritance, Wno-namespaces): Same.
3234         (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
3235         (Wno-format-overflow, Wno-format-truncation): Same.
3236         (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
3237         (Wno-alloc-size-larger-than, Wframe-larger-than): Same
3238         (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
3239         (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
3240         (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
3241         (Wno-misspelled-isr): Same.
3243 2018-06-11  Martin Sebor  <msebor@redhat.com>
3245         * PR tree-optimization/86083
3246         * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
3248 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
3250         * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
3252 2018-06-11  Segher Boessenkool  <segher@kernel.crashing.org>
3254         PR target/85755
3255         * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
3256         on the correct operand.
3257         (*movdi_internal64): Ditto.
3259 2018-06-11  Martin Liska  <mliska@suse.cz>
3261         PR tree-optimization/86089
3262         * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
3264 2018-06-11  Julia Koval  <julia.koval@intel.com>
3266         * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
3267         _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
3268         * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
3270 2018-06-11  Olivier Hainque  <hainque@adacore.com>
3272         * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
3273         for Ada with strict dwarf2.
3275 2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
3277         PR target/85755
3278         * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
3279         addresses.
3281 2018-06-08  Jan Hubicka  <hubicka@ucw.cz>
3283         * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
3285 2018-06-08  David Edelsohn  <dje.gcc@gmail.com>
3287         * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
3288         TARGET_ELF.
3290 2018-06-08  Martin Liska  <mliska@suse.cz>
3292         * tree-cfg.h (debug_function): Fix argument type to match
3293         implementation.
3295 2018-06-08  Martin Liska  <mliska@suse.cz>
3297         * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
3298         Remove usage of MPX-related (and removed) fields.
3299         * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
3301 2018-06-08  David Malcolm  <dmalcolm@redhat.com>
3303         * cfg.c (debug): Use TDF_NONE rather than 0.
3304         * cfghooks.c (debug): Likewise.
3305         * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
3306         (struct dump_option_value_info): Convert to...
3307         (struct kv_pair): ...this template type.
3308         (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
3309         rather than 0.
3310         (optinfo_verbosity_options): Likewise.
3311         (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
3312         OPTGROUP_NONE.
3313         (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
3314         than int for "optgroup_flags" param.
3315         (dump_generic_expr_loc): Use dump_flags_t rather than int for
3316         "dump_kind" param.
3317         (dump_dec): Likewise.
3318         (dump_finish): Use TDF_NONE rather than 0.
3319         (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
3320         rather than int for "optgroup_flags" param.  Use TDF_NONE rather
3321         than 0.  Update for change to option_ptr.
3322         (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
3323         to optgroup_flags_t *.  Use TDF_NONE and OPTGROUP_NONE rather than
3324         0.  Update for changes to optinfo_verbosity_options and
3325         optgroup_options.
3326         (opt_info_switch_p): Convert optgroup_flags from int to
3327         optgroup_flags_t.
3328         (dump_basic_block): Use dump_flags_t rather than int
3329         for "dump_kind" param.
3330         * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
3331         TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
3332         TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
3333         TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
3334         TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
3335         MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
3336         TDF_NONE): Convert from macros to...
3337         (enum dump_flag): ...this new enum.
3338         (dump_flags_t): Update to use enum.
3339         (operator|, operator&, operator~, operator|=, operator&=):
3340         Implement for dump_flags_t.
3341         (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
3342         OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
3343         Convert from macros to...
3344         (enum optgroup_flag): ...this new enum.
3345         (optgroup_flags_t): New typedef.
3346         (operator|, operator|=): Implement for optgroup_flags_t.
3347         (struct dump_file_info): Convert field "alt_flags" to
3348         dump_flags_t.  Convert field "optgroup_flags" to
3349         optgroup_flags_t.
3350         (dump_basic_block): Use dump_flags_t rather than int for param.
3351         (dump_generic_expr_loc): Likewise.
3352         (dump_dec): Likewise.
3353         (dump_register): Convert param "optgroup_flags" to
3354         optgroup_flags_t.
3355         (opt_info_enable_passes): Likewise.
3356         * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
3357         than 0.
3358         * gimple-pretty-print.c (debug): Likewise.
3359         * gimple-ssa-store-merging.c (bswap_replace): Likewise.
3360         (merged_store_group::apply_stores): Likewise.
3361         * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
3362         * gimple.c (verify_gimple_pp): Likewise.
3363         * graphite-poly.c (print_pbb_body): Likewise.
3364         * passes.c (pass_manager::register_one_dump_file): Convert
3365         local "optgroup_flags" to optgroup_flags_t.
3366         * print-tree.c (print_node): Use TDF_NONE rather than 0.
3367         (debug): Likewise.
3368         (debug_body): Likewise.
3369         * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
3370         to optgroup_flags_t.
3371         * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
3372         than 0.
3373         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
3374         (convert_mult_to_fma): Likewise.
3375         * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
3376         * tree-ssa-sccvn.c (vn_eliminate): Likewise.
3377         * tree-vect-data-refs.c (dump_lower_bound): Convert param
3378         "dump_kind" to dump_flags_t.
3380 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
3382         * config/rs6000/rs6000.c (min, max): Delete.
3384 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
3386         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
3387         -mabi=spe and -mabi=no-spe.
3389 2018-06-08  Martin Liska  <mliska@suse.cz>
3391         * ipa-pure-const.c (propagate_pure_const): Use ::get at places
3392         where we expect an existing summary.
3394 2018-06-08  Martin Liska  <mliska@suse.cz>
3396         * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
3397         * ipa-inline.h (estimate_edge_growth): Likewise.
3399 2018-06-08  Martin Liska  <mliska@suse.cz>
3401         * cgraph.c (function_version_hasher::hash): Use
3402         cgraph_node::get_uid ().
3403         (function_version_hasher::equal):
3404         * cgraph.h (cgraph_node::get_uid): New method.
3405         * ipa-inline.c (update_caller_keys): Use
3406         cgraph_node::get_uid ().
3407         (update_callee_keys): Likewise.
3408         * ipa-utils.c (searchc): Likewise.
3409         (ipa_reduced_postorder): Likewise.
3410         * lto-cgraph.c (input_node): Likewise.
3411         * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
3412         * symbol-summary.h (symtab_insertion): Likewise.
3413         (symtab_removal): Likewise.
3414         (symtab_duplication): Likewise.
3415         * tree-pretty-print.c (dump_function_header): Likewise.
3416         * tree-sra.c (convert_callers_for_node): Likewise.
3418 2018-06-08  Martin Liska  <mliska@suse.cz>
3420         * cgraph.c (symbol_table::create_edge): Always assign a new
3421         unique number.
3422         (symbol_table::free_edge): Do not recycle numbers.
3423         * cgraph.h (cgraph_edge::get): New method.
3424         * symbol-summary.h (symtab_removal): Use it.
3425         (symtab_duplication): Likewise.
3426         (call_summary::hashable_uid): Remove.
3428 2018-06-08  Martin Liska  <mliska@suse.cz>
3430         * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
3431         (initialize_growth_caches): Remove.
3432         (free_growth_caches): Likewise.
3433         (do_estimate_edge_time): Use edge_growth_cache.
3434         (do_estimate_edge_size): Likewise.
3435         (do_estimate_edge_hints): Likewise.
3436         * ipa-inline.c (reset_edge_caches): Likewise.
3437         (recursive_inlining): Likewise.
3438         (inline_small_functions): Likewise.
3439         * ipa-inline.h (initialize_growth_caches): Remove.
3440         (estimate_edge_size): Likewise.
3441         (estimate_edge_time): Likewise.
3442         (estimate_edge_hints): Likewise.
3443         (reset_edge_growth_cache): Likewise.
3444         * symbol-summary.h (call_summary::remove): New method.
3446 2018-06-08  Martin Liska  <mliska@suse.cz>
3448         * ipa-cp.c (class edge_clone_summary): New summary.
3449         (grow_edge_clone_vectors): Remove.
3450         (ipcp_edge_duplication_hook): Remove.
3451         (class edge_clone_summary_t): New call_summary class.
3452         (ipcp_edge_removal_hook): Remove.
3453         (edge_clone_summary_t::duplicate): New function.
3454         (get_next_cgraph_edge_clone): Use edge_clone_summaries.
3455         (create_specialized_node): Likewise.
3456         (ipcp_driver): Initialize edge_clone_summaries and do not
3457         register hooks.
3459 2018-06-08  Martin Liska  <mliska@suse.cz>
3461         * symbol-summary.h (get): New function.
3462         (call_summary::m_initialize_when_cloning): New class member.
3464 2018-06-08  Martin Liska  <mliska@suse.cz>
3466         * cgraph.c (cgraph_node::remove): Do not recycle uid.
3467         * cgraph.h (symbol_table::release_symbol): Do not pass uid.
3468         (symbol_table::allocate_cgraph_symbol): Do not set uid.
3469         * passes.c (uid_hash_t): Record removed_nodes by their uids.
3470         (remove_cgraph_node_from_order): Use the removed_nodes set.
3471         (do_per_function_toporder): Likwise.
3472         * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
3473         instead of summary_uid.
3474         (symtab_removal): Likewise.
3475         (symtab_duplication): Likewise.
3477 2018-06-08  Martin Liska  <mliska@suse.cz>
3479         * ipa-cp.c (ipcp_store_bits_results): Use
3480         ipcp_transformation_sum.
3481         (ipcp_store_vr_results): Likewise.
3482         * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
3483         to ...
3484         (ipcp_transformation_initialize): ... this.
3485         (ipa_set_node_agg_value_chain):
3486         (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
3487         (write_ipcp_transformation_info): Likewise.
3488         (read_ipcp_transformation_info): Likewise.
3489         (ipcp_update_bits): Likewise.
3490         (ipcp_update_vr): Likewise.
3491         (ipcp_transform_function): Likewise.
3492         * ipa-prop.h: Rename ipcp_transformation_summary to
3493         ipcp_transformation.
3494         (class ipcp_transformation_t): New function summary.
3495         (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
3496         (ipa_get_agg_replacements_for_node): Likewise.
3498 2018-06-08  Martin Liska  <mliska@suse.cz>
3500         * ipa-pure-const.c (struct funct_state_d): Do it class instead
3501         of struct.
3502         (class funct_state_summary_t): New function_summary class.
3503         (has_function_state): Remove.
3504         (get_function_state): Likewise.
3505         (set_function_state): Likewise.
3506         (add_new_function): Likewise.
3507         (funct_state_summary_t::insert): New function.
3508         (duplicate_node_data): Remove.
3509         (remove_node_data): Remove.
3510         (funct_state_summary_t::duplicate): New function.
3511         (register_hooks): Create new funct_state_summaries.
3512         (pure_const_generate_summary): Use it.
3513         (pure_const_write_summary): Likewise.
3514         (pure_const_read_summary): Likewise.
3515         (propagate_pure_const): Likewise.
3516         (propagate_nothrow): Likewise.
3517         (dump_malloc_lattice): Likewise.
3518         (propagate_malloc): Likewise.
3519         (execute): Do not register hooks, just remove summary
3520         instead.
3521         (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
3522         constructor.
3524 2018-06-08  Martin Liska  <mliska@suse.cz>
3526         * ipa-reference.c (remove_node_data): Remove.
3527         (duplicate_node_data): Likewise.
3528         (class ipa_ref_var_info_summary_t): New class.
3529         (class ipa_ref_opt_summary_t): Likewise.
3530         (get_reference_vars_info): Use ipa_ref_var_info_summaries.
3531         (get_reference_optimization_summary): Use
3532         ipa_ref_opt_sum_summaries.
3533         (set_reference_vars_info): Remove.
3534         (set_reference_optimization_summary): Likewise.
3535         (ipa_init): Create summaries.
3536         (init_function_info): Use function summary.
3537         (ipa_ref_opt_summary_t::duplicate): New function.
3538         (ipa_ref_opt_summary_t::remove): New function.
3539         (get_read_write_all_from_node): Fix GNU coding style.
3540         (propagate): Use function summary.
3541         (write_node_summary_p): Fix GNU coding style.
3542         (stream_out_bitmap): Likewise.
3543         (ipa_reference_read_optimization_summary): Use function summary.
3544         (ipa_reference_c_finalize): Do not release hooks.
3546 2018-06-08  Martin Liska  <mliska@suse.cz>
3548         * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
3549         (analyze_function_body): Extract multiple calls of get_create.
3550         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
3551         * ipa-inline.c (recursive_inlining): Use ::get method.
3552         * ipa-inline.h (estimate_edge_growth): Likewise.
3554 2018-06-08  Martin Liska  <mliska@suse.cz>
3556         * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
3557         HSA_INVALID.
3558         (hsa_function_summary::hsa_function_summary): Use the new enum
3559         value.
3560         (hsa_gpu_implementation_p): Use hsa_summaries::get.
3561         * hsa-gen.c (hsa_get_host_function): Likewise.
3562         (get_brig_function_name): Likewise.
3563         * ipa-hsa.c (process_hsa_functions): Likewise.
3564         (ipa_hsa_write_summary): Likewise.
3565         * symbol-summary.h (symtab_duplication): Use ::get function/
3566         (get): New function.
3568 2018-06-08  Martin Liska  <mliska@suse.cz>
3570         * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
3571         of get.
3572         * hsa-common.c (hsa_summary_t::link_functions): Likewise.
3573         (hsa_register_kernel): Likewise.
3574         * hsa-common.h (hsa_gpu_implementation_p): Likewise.
3575         * hsa-gen.c (hsa_get_host_function): Likewise.
3576         (get_brig_function_name): Likewise.
3577         (generate_hsa): Likewise.
3578         (pass_gen_hsail::execute): Likewise.
3579         * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
3580         (devirtualization_time_bonus): Likewise.
3581         (ipcp_propagate_stage): Likewise.
3582         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
3583         (edge_set_predicate): Likewise.
3584         (evaluate_conditions_for_known_args): Likewise.
3585         (evaluate_properties_for_edge): Likewise.
3586         (ipa_fn_summary::reset): Likewise.
3587         (ipa_fn_summary_t::duplicate): Likewise.
3588         (dump_ipa_call_summary): Likewise.
3589         (ipa_dump_fn_summary): Likewise.
3590         (analyze_function_body): Likewise.
3591         (compute_fn_summary): Likewise.
3592         (estimate_edge_devirt_benefit): Likewise.
3593         (estimate_edge_size_and_time): Likewise.
3594         (estimate_calls_size_and_time): Likewise.
3595         (estimate_node_size_and_time): Likewise.
3596         (inline_update_callee_summaries): Likewise.
3597         (remap_edge_change_prob): Likewise.
3598         (remap_edge_summaries): Likewise.
3599         (ipa_merge_fn_summary_after_inlining): Likewise.
3600         (ipa_update_overall_fn_summary): Likewise.
3601         (read_ipa_call_summary): Likewise.
3602         (inline_read_section): Likewise.
3603         (write_ipa_call_summary): Likewise.
3604         (ipa_fn_summary_write): Likewise.
3605         (ipa_free_fn_summary): Likewise.
3606         * ipa-hsa.c (process_hsa_functions): Likewise.
3607         (ipa_hsa_write_summary): Likewise.
3608         (ipa_hsa_read_section): Likewise.
3609         * ipa-icf.c (sem_function::merge): Likewise.
3610         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
3611         (do_estimate_edge_time): Likewise.
3612         (estimate_size_after_inlining): Likewise.
3613         (estimate_growth): Likewise.
3614         (growth_likely_positive): Likewise.
3615         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
3616         (inline_call): Likewise.
3617         * ipa-inline.c (caller_growth_limits): Likewise.
3618         (can_inline_edge_p): Likewise.
3619         (can_inline_edge_by_limits_p): Likewise.
3620         (compute_uninlined_call_time): Likewise.
3621         (compute_inlined_call_time): Likewise.
3622         (want_inline_small_function_p): Likewise.
3623         (edge_badness): Likewise.
3624         (update_caller_keys): Likewise.
3625         (update_callee_keys): Likewise.
3626         (recursive_inlining): Likewise.
3627         (inline_small_functions): Likewise.
3628         (inline_to_all_callers_1): Likewise.
3629         (dump_overall_stats): Likewise.
3630         (early_inline_small_functions): Likewise.
3631         (early_inliner): Likewise.
3632         * ipa-inline.h (estimate_edge_growth): Likewise.
3633         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
3634         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
3635         * ipa-prop.h (IPA_NODE_REF): Likewise.
3636         (IPA_EDGE_REF): Likewise.
3637         * ipa-pure-const.c (malloc_candidate_p): Likewise.
3638         (propagate_malloc): Likewise.
3639         * ipa-split.c (execute_split_functions): Likewise.
3640         * symbol-summary.h: Rename get to get_create.
3641         (get): Likewise.
3642         (get_create): Likewise.
3643         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
3645 2018-06-08  Martin Liska  <mliska@suse.cz>
3647         * symbol-summary.h (release): Move definition out of class
3648         declaration.
3649         (symtab_removal): Likewise.
3650         (symtab_duplication): Likewise.
3652 2018-06-08  Martin Liska  <mliska@suse.cz>
3654         * symbol-summary.h (function_summary): Move constructor
3655         implementation out of class declaration.
3656         (release): Likewise.
3657         (symtab_insertion): Likewise.
3658         (symtab_removal): Likewise.
3659         (symtab_duplication): Likewise.
3660         (get): Likewise.
3662 2018-06-08  Martin Liska  <mliska@suse.cz>
3664         * Makefile.in: Remove support for MPX (macros, related functions,
3665         fields in cgraph_node, ...).
3666         * builtin-types.def (BT_BND): Likewise.
3667         (BT_FN_BND_CONST_PTR): Likewise.
3668         (BT_FN_CONST_PTR_BND): Likewise.
3669         (BT_FN_VOID_PTR_BND): Likewise.
3670         (BT_FN_BND_CONST_PTR_SIZE): Likewise.
3671         (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
3672         * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
3673         (expand_builtin_mempcpy_with_bounds): Likewise.
3674         (expand_builtin_memset_with_bounds): Likewise.
3675         (expand_builtin_memset_args): Likewise.
3676         (std_expand_builtin_va_start): Likewise.
3677         (expand_builtin): Likewise.
3678         (expand_builtin_with_bounds): Likewise.
3679         * builtins.def (DEF_BUILTIN_CHKP): Likewise.
3680         (DEF_LIB_BUILTIN_CHKP): Likewise.
3681         (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
3682         (DEF_CHKP_BUILTIN): Likewise.
3683         (BUILT_IN_MEMCPY): Likewise.
3684         (BUILT_IN_MEMMOVE): Likewise.
3685         (BUILT_IN_MEMPCPY): Likewise.
3686         (BUILT_IN_MEMSET): Likewise.
3687         (BUILT_IN_STPCPY): Likewise.
3688         (BUILT_IN_STRCAT): Likewise.
3689         (BUILT_IN_STRCHR): Likewise.
3690         (BUILT_IN_STRCPY): Likewise.
3691         (BUILT_IN_STRLEN): Likewise.
3692         (BUILT_IN_MEMCPY_CHK): Likewise.
3693         (BUILT_IN_MEMMOVE_CHK): Likewise.
3694         (BUILT_IN_MEMPCPY_CHK): Likewise.
3695         (BUILT_IN_MEMSET_CHK): Likewise.
3696         (BUILT_IN_STPCPY_CHK): Likewise.
3697         (BUILT_IN_STRCAT_CHK): Likewise.
3698         (BUILT_IN_STRCPY_CHK): Likewise.
3699         * calls.c (store_bounds): Likewise.
3700         (emit_call_1): Likewise.
3701         (special_function_p): Likewise.
3702         (maybe_warn_nonstring_arg): Likewise.
3703         (initialize_argument_information): Likewise.
3704         (finalize_must_preallocate): Likewise.
3705         (compute_argument_addresses): Likewise.
3706         (expand_call): Likewise.
3707         * cfgexpand.c (expand_call_stmt): Likewise.
3708         (expand_return): Likewise.
3709         (expand_gimple_stmt_1): Likewise.
3710         (pass_expand::execute): Likewise.
3711         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
3712         (cgraph_node::remove): Likewise.
3713         (cgraph_node::dump): Likewise.
3714         (cgraph_node::verify_node): Likewise.
3715         * cgraph.h (chkp_function_instrumented_p): Likewise.
3716         (symtab_node::get_alias_target): Likewise.
3717         (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
3718         (cgraph_local_p): Likewise.
3719         * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
3720         (cgraph_edge::rebuild_references): Likewise.
3721         * cgraphunit.c (varpool_node::finalize_decl): Likewise.
3722         (walk_polymorphic_call_targets): Likewise.
3723         (cgraph_node::expand_thunk): Likewise.
3724         (symbol_table::output_weakrefs): Likewise.
3725         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
3726         (ix86_handle_option): Likewise.
3727         * config/i386/constraints.md: Likewise.
3728         * config/i386/i386-builtin-types.def (BND): Likewise.
3729         (VOID): Likewise.
3730         (PVOID): Likewise.
3731         (ULONG): Likewise.
3732         * config/i386/i386-builtin.def (BDESC_END): Likewise.
3733         (BDESC_FIRST): Likewise.
3734         (BDESC): Likewise.
3735         * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
3736         * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
3737         * config/i386/i386.c (enum reg_class): Likewise.
3738         (ix86_target_string): Likewise.
3739         (ix86_option_override_internal): Likewise.
3740         (ix86_conditional_register_usage): Likewise.
3741         (ix86_valid_target_attribute_inner_p): Likewise.
3742         (ix86_set_indirect_branch_type): Likewise.
3743         (ix86_set_current_function): Likewise.
3744         (ix86_function_arg_regno_p): Likewise.
3745         (init_cumulative_args): Likewise.
3746         (ix86_function_arg_advance): Likewise.
3747         (ix86_function_arg): Likewise.
3748         (ix86_pass_by_reference): Likewise.
3749         (ix86_function_value_regno_p): Likewise.
3750         (ix86_function_value_1): Likewise.
3751         (ix86_function_value_bounds): Likewise.
3752         (ix86_return_in_memory): Likewise.
3753         (ix86_setup_incoming_vararg_bounds): Likewise.
3754         (ix86_va_start): Likewise.
3755         (indirect_thunk_need_prefix): Likewise.
3756         (print_reg): Likewise.
3757         (ix86_print_operand): Likewise.
3758         (ix86_expand_call): Likewise.
3759         (ix86_output_function_return): Likewise.
3760         (reg_encoded_number): Likewise.
3761         (BDESC_VERIFYS): Likewise.
3762         (ix86_init_mpx_builtins): Likewise.
3763         (ix86_init_builtins): Likewise.
3764         (ix86_emit_cmove): Likewise.
3765         (ix86_emit_move_max): Likewise.
3766         (ix86_expand_builtin): Likewise.
3767         (ix86_builtin_mpx_function): Likewise.
3768         (ix86_get_arg_address_for_bt): Likewise.
3769         (ix86_load_bounds): Likewise.
3770         (ix86_store_bounds): Likewise.
3771         (ix86_load_returned_bounds): Likewise.
3772         (ix86_store_returned_bounds): Likewise.
3773         (ix86_class_likely_spilled_p): Likewise.
3774         (ix86_hard_regno_mode_ok): Likewise.
3775         (x86_order_regs_for_local_alloc): Likewise.
3776         (ix86_mitigate_rop): Likewise.
3777         (ix86_bnd_prefixed_insn_p): Likewise.
3778         (ix86_mpx_bound_mode): Likewise.
3779         (ix86_make_bounds_constant): Likewise.
3780         (ix86_initialize_bounds): Likewise.
3781         (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
3782         (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
3783         (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
3784         (TARGET_STORE_RETURNED_BOUNDS): Likewise.
3785         (TARGET_CHKP_BOUND_MODE): Likewise.
3786         (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
3787         (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
3788         (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
3789         (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
3790         * config/i386/i386.h (TARGET_MPX): Likewise.
3791         (TARGET_MPX_P): Likewise.
3792         (VALID_BND_REG_MODE): Likewise.
3793         (FIRST_BND_REG): Likewise.
3794         (LAST_BND_REG): Likewise.
3795         (enum reg_class): Likewise.
3796         (BND_REG_P): Likewise.
3797         (BND_REGNO_P): Likewise.
3798         (BNDmode): Likewise.
3799         (ADJUST_INSN_LENGTH): Likewise.
3800         * config/i386/i386.md: Likewise.
3801         * config/i386/i386.opt: Likewise.
3802         * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
3803         (defined): Likewise.
3804         (LINK_MPX): Likewise.
3805         (MPX_SPEC): Likewise.
3806         (LIBMPX_SPEC): Likewise.
3807         (LIBMPXWRAPPERS_SPEC): Likewise.
3808         (CHKP_SPEC): Likewise.
3809         * config/i386/predicates.md: Likewise.
3810         * dbxout.c (dbxout_type): Likewise.
3811         * doc/extend.texi: Likewise.
3812         * doc/invoke.texi: Likewise.
3813         * doc/md.texi: Likewise.
3814         * doc/tm.texi: Likewise.
3815         * doc/tm.texi.in: Likewise.
3816         * dwarf2out.c (is_base_type): Likewise.
3817         (gen_formal_types_die): Likewise.
3818         (gen_subprogram_die): Likewise.
3819         (gen_type_die_with_usage): Likewise.
3820         (gen_decl_die): Likewise.
3821         (dwarf2out_late_global_decl): Likewise.
3822         * expr.c (expand_assignment): Likewise.
3823         (emit_storent_insn): Likewise.
3824         (store_expr_with_bounds): Likewise.
3825         (store_expr): Likewise.
3826         (expand_expr_real_1): Likewise.
3827         * expr.h (store_expr_with_bounds): Likewise.
3828         * function.c (use_register_for_decl): Likewise.
3829         (struct bounds_parm_data): Likewise.
3830         (assign_parms_augmented_arg_list): Likewise.
3831         (assign_parm_find_entry_rtl): Likewise.
3832         (assign_parm_is_stack_parm): Likewise.
3833         (assign_parm_load_bounds): Likewise.
3834         (assign_bounds): Likewise.
3835         (assign_parms): Likewise.
3836         (expand_function_start): Likewise.
3837         * gcc.c (CHKP_SPEC): Likewise.
3838         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
3839         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
3840         (wrestrict_dom_walker::check_call): Likewise.
3841         * gimple.c (gimple_build_call_from_tree): Likewise.
3842         * gimple.h (enum gf_mask): Likewise.
3843         (gimple_call_with_bounds_p): Likewise.
3844         (gimple_call_set_with_bounds): Likewise.
3845         * gimplify.c (gimplify_init_constructor): Likewise.
3846         * ipa-cp.c (initialize_node_lattices): Likewise.
3847         (propagate_constants_across_call): Likewise.
3848         (find_more_scalar_values_for_callers_subset): Likewise.
3849         * ipa-hsa.c (process_hsa_functions): Likewise.
3850         * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
3851         * ipa-icf.c (sem_function::merge): Likewise.
3852         * ipa-inline.c (early_inliner): Likewise.
3853         * ipa-pure-const.c (warn_function_noreturn): Likewise.
3854         (warn_function_cold): Likewise.
3855         (propagate_pure_const): Likewise.
3856         * ipa-ref.h (enum GTY): Likewise.
3857         * ipa-split.c (find_retbnd): Likewise.
3858         (consider_split): Likewise.
3859         (split_function): Likewise.
3860         * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
3861         * ipa.c (walk_polymorphic_call_targets): Likewise.
3862         (symbol_table::remove_unreachable_nodes): Likewise.
3863         (process_references): Likewise.
3864         (cgraph_build_static_cdtor_1): Likewise.
3865         * lto-cgraph.c (lto_output_node): Likewise.
3866         (output_refs): Likewise.
3867         (compute_ltrans_boundary): Likewise.
3868         (input_overwrite_node): Likewise.
3869         (input_node): Likewise.
3870         (input_cgraph_1): Likewise.
3871         * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
3872         * passes.c (pass_manager::execute_early_local_passes): Likewise.
3873         (class pass_chkp_instrumentation_passes): Likewise.
3874         (make_pass_chkp_instrumentation_passes): Likewise.
3875         * passes.def: Likewise.
3876         * rtl.h (struct GTY): Likewise.
3877         (CALL_EXPR_WITH_BOUNDS_P): Likewise.
3878         * stor-layout.c (layout_type): Likewise.
3879         * symtab.c: Likewise.
3880         * target.def: Likewise.
3881         * targhooks.c (default_chkp_bound_type): Likewise.
3882         (default_chkp_bound_mode): Likewise.
3883         (default_builtin_chkp_function): Likewise.
3884         (default_chkp_function_value_bounds): Likewise.
3885         (default_chkp_make_bounds_constant): Likewise.
3886         (default_chkp_initialize_bounds): Likewise.
3887         * targhooks.h (default_chkp_bound_type): Likewise.
3888         (default_chkp_bound_mode): Likewise.
3889         (default_builtin_chkp_function): Likewise.
3890         (default_chkp_function_value_bounds): Likewise.
3891         (default_chkp_make_bounds_constant): Likewise.
3892         (default_chkp_initialize_bounds): Likewise.
3893         * toplev.c (compile_file): Likewise.
3894         (process_options): Likewise.
3895         * tree-core.h (DEF_BUILTIN): Likewise.
3896         (DEF_BUILTIN_CHKP): Likewise.
3897         * tree-inline.c (declare_return_variable): Likewise.
3898         (remap_gimple_stmt): Likewise.
3899         (copy_bb): Likewise.
3900         (initialize_inlined_parameters): Likewise.
3901         (expand_call_inline): Likewise.
3902         * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
3903         (make_pass_ipa_chkp_early_produce_thunks): Likewise.
3904         (make_pass_ipa_chkp_produce_thunks): Likewise.
3905         (make_pass_chkp): Likewise.
3906         (make_pass_chkp_opt): Likewise.
3907         (make_pass_chkp_instrumentation_passes): Likewise.
3908         * tree-pretty-print.c (dump_generic_node): Likewise.
3909         * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
3910         * tree-ssa-dce.c (propagate_necessity): Likewise.
3911         (eliminate_unnecessary_stmts): Likewise.
3912         * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
3913         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
3914         * tree-ssa-sccvn.h: Likewise.
3915         * tree-ssa-strlen.c (get_string_length): Likewise.
3916         (valid_builtin_call): Likewise.
3917         (adjust_last_stmt): Likewise.
3918         (handle_builtin_strchr): Likewise.
3919         (handle_builtin_strcpy): Likewise.
3920         (handle_builtin_stxncpy): Likewise.
3921         (handle_builtin_memcpy): Likewise.
3922         (handle_builtin_strcat): Likewise.
3923         (strlen_check_and_optimize_stmt): Likewise.
3924         * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
3925         * tree-streamer-in.c: Likewise.
3926         * tree-streamer.c (record_common_node): Likewise.
3927         * tree.c (tree_code_size): Likewise.
3928         (wide_int_to_tree_1): Likewise.
3929         (type_contains_placeholder_1): Likewise.
3930         (build_common_tree_nodes): Likewise.
3931         * tree.def (POINTER_BOUNDS_TYPE): Likewise.
3932         * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
3933         (POINTER_BOUNDS_P): Likewise.
3934         (BOUNDED_TYPE_P): Likewise.
3935         (BOUNDED_P): Likewise.
3936         (CALL_WITH_BOUNDS_P): Likewise.
3937         (pointer_bounds_type_node): Likewise.
3938         * value-prof.c (gimple_ic): Likewise.
3939         * var-tracking.c (vt_add_function_parameters): Likewise.
3940         * varasm.c (make_decl_rtl): Likewise.
3941         (assemble_start_function): Likewise.
3942         (output_constant): Likewise.
3943         (maybe_assemble_visibility): Likewise.
3944         * varpool.c (ctor_for_folding): Likewise.
3945         * chkp-builtins.def: Remove.
3946         * ipa-chkp.c: Remove.
3947         * ipa-chkp.h: Remove.
3948         * rtl-chkp.c: Remove.
3949         * rtl-chkp.h: Remove.
3950         * tree-chkp-opt.c: Remove.
3951         * tree-chkp.c: Remove.
3952         * tree-chkp.h: Remove.
3954 2018-06-07  Carl Love  <cel@us.ibm.com>
3956         * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
3957         vextract_fp_from_shortl): Add BE support.
3959 2018-06-07  Paul Koning  <ni1d@arrl.net>
3961         * compare-elim.c (try_merge_compare): Don't merge compare if
3962         address contains a side effect.
3963         (try_eliminate_compare): Likewise.
3965 2018-06-07  Olga Makhotina  <olga.makhotina@intel.com>
3967         * config.gcc: Support "tremont".
3968         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
3969         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3970         PROCESSOR_TREMONT.
3971         * config/i386/i386.c (m_TREMONT): Define.
3972         (processor_target_table): Add "tremont".
3973         (PTA_TREMONT): Define.
3974         (ix86_lea_outperforms): Add TARGET_TREMONT.
3975         (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
3976         (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
3977         and M_INTEL_GOLDMONT_PLUS.
3978         (fold_builtin_cpu): Add "tremont".
3979         (ix86_add_stmt_cost): Add TARGET_TREMONT.
3980         (ix86_option_override_internal): Add "tremont".
3981         * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
3982         (processor_type): Add PROCESSOR_TREMONT.
3983         * config/i386/x86-tune.def: Add m_TREMONT.
3984         * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
3986 2018-06-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3988         * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
3989         symbol defined for msp430i* devices to be lower case.
3991         gcc/testsuite/gcc.target/msp430/
3992         * msp430i-device-symbol.c: New test.
3993         * msp430f-device-symbol.c: New test.
3994         * msp430.h: New test header file.
3996 2018-06-07  Richard Biener  <rguenther@suse.de>
3998         * graphite-sese-to-poly.c (extract_affine): Avoid unneded
3999         wrapping.  Properly wrap the result of a BIT_NOT_EXPR.
4000         Properly wrap signed arithmetic if overflow wraps.
4002 2018-06-07  Jakub Jelinek  <jakub@redhat.com>
4004         PR tree-optimization/69615
4005         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
4006         of a cast from a same precision integral SSA_NAME in a bb dominated
4007         by first_bb, retry with rhs2 set to the rhs1 of the cast.  Don't emit
4008         cast to utype if rhs2 has already a compatible type.
4010 2018-06-07  Richard Biener  <rguenther@suse.de>
4012         PR tree-optimization/85935
4013         * graphite-scop-detection.c (find_params_in_bb): Analyze
4014         condition operands with respect to the correct loop.  Assert
4015         the analysis doesn't fail.
4017 2018-06-04  Carl Love  <cel@us.ibm.com>
4019         * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
4020         using natural element order.  Use gen_lshrsi3 instead of gen_ashrsi3
4021         as it is slightly cheaper.
4022         (first_match_or_eos_index_<mode>):
4023         Calculate index using natural element order.
4024         (first_match_index_<mode>):
4025         Calculate index using natural element order.
4026         (first_match_or_eos_index_<mode>):
4027         Calculate index using natural order.
4028         (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
4029         for BE and LE modes.
4030         * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
4031         P9V_BUILTIN_VCLZLSBB_V16QI.
4032         * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
4033         specific.
4035 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4037         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
4038         indentation and line wrap for many prototypes.  Add missing
4039         @smallexample directives around block of prototypes for vec_xl and
4040         vec_xst.
4042 2018-06-05  Michael Meissner  <meissner@linux.ibm.com>
4044         * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
4045         track if we pass or return IEEE 128-bit floating point.
4046         (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
4047         C++ mangling that is compatible with GCC 8.1.
4048         (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
4049         (init_cumulative_args): Note if we pass or return IEEE 128-bit
4050         floating point types.
4051         (rs6000_function_arg_advance_1): Likewise.
4052         (rs6000_mangle_type): Optionally generate mangled names that match
4053         what GCC 8.1 generated for IEEE 128-bit floating point types.
4054         (rs6000_globalize_decl_name): If we have an external function that
4055         passes or returns IEEE 128-bit types, generate a weak reference
4056         from the mangled name used in GCC 8.1 to the current mangled
4057         name.
4058         (rs6000_init_builtins): Make __ibm128 use the long double type if
4059         long double is IBM extended double.  Make __float128 use the long
4060         double type if long double is IEEE 128-bit.
4062         PR target/85657
4063         * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
4064         macro for __ibm128 built-in functions.
4065         (PACK_IF): Add __ibm128 pack/unpack functions.
4066         (UNPACK_IF): Likewise.
4067         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
4068         enable long double built-in functions if long double is IEEE
4069         128-bit floating point.
4070         (rs6000_invalid_builtin): Update long double built-in function
4071         error message.
4072         (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
4073         functions, adjust the built-in function to use the long double
4074         built-in function if __ibm128 and long double are the same type.
4075         * doc/extend.texi (PowerPC builtins): Update documention for
4076         __builtin_{,un}pack_longdouble.  Add documentation for
4077         __builtin_{,un}pack_ibm128.
4079 2018-06-06  Jim Wilson  <jimw@sifive.com>
4081         * config/riscv/riscv.c (enum riscv_privilege_levels): New.
4082         (struct machine_function): New field interrupt_mode.
4083         (riscv_handle_type_attribute): New function.  Add forward declaration.
4084         (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
4085         (riscv_expand_epilogue): Check interrupt_mode field.
4086         (riscv_set_current_function): Check interrupt attribute args and
4087         set interrupt_mode field.
4088         * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
4089         (riscv_sret, riscv_uret): New.
4090         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
4091         new arguments to interrupt attribute.
4093 2018-06-06  Peter Bergner  <bergner@vnet.ibm.com>
4095         PR target/63177
4096         * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
4097         Don't handle -mcpu=power8 if -mpower9-vector is also used.
4099 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4101         * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
4102         VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
4103         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4104         several redundant entries.
4106 2018-06-06  David Malcolm  <dmalcolm@redhat.com>
4108         * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
4109         type from "rtx" to "rtx_insn *".
4110         * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
4111         for local "call_insn", removing cast.
4112         (ix86_expand_call): Likewise, introducing a "call_insn" local.
4114 2018-06-06  Eric Botcazou  <ebotcazou@adacore.com>
4116         PR tree-optimization/86066
4117         * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
4118         for BIT_INSERT_EXPR stores.
4120 2018-06-06  Richard Biener  <rguenther@suse.de>
4122         PR tree-optimization/86062
4123         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
4124         component refs ontop
4125         of to be offsetted base.
4127 2018-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4129         * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
4130         to be static and remove check on interrupt attribute name.
4132         gcc/testsuite/gcc.target/msp430/
4133         * function-attributes-4.c: New test.
4134         * static-interrupts.c: New test.
4136 2018-06-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4138         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
4139         volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
4141 2018-06-05  Steve Ellcey  <sellcey@cavium.com>
4143         PR target/79924
4144         * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
4145         second argument.
4146         * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
4147         Remove second argument, change how error is called.
4148         (aarch64_layout_arg): Remove second argument from
4149         aarch64_err_no_fpadvsimd call.
4150         (aarch64_init_cumulative_args): Ditto.
4151         (aarch64_gimplify_va_arg_expr): Ditto.
4152         * config/aarch64/aarch64.md (mov<mode>): Ditto.
4154 2018-06-05  Uros Bizjak  <ubizjak@gmail.com>
4156         * config/i386/i386.md (simple_return_indirect_internal): New expander.
4157         (*simple_return_indirect_internal<mode>): Rename from
4158         simple_return_indirect_internal.  Use W mode iterator.
4159         (rstorssp): New expander.
4160         (*rstorssp<mode>): Rename from rstorssp.  Use P mode iterator.
4161         (clrssbsy): New expander.
4162         (*clrssbsy<mode>): Rename from clrssbsy.  Use P mode iterator.
4164 2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4166         * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
4167         __typeof__.
4168         (cmse_check_pointed_object): Likewise.
4170 2018-06-05  Martin Liska  <mliska@suse.cz>
4172         PR gcov-profile/47618
4173         * doc/invoke.texi: Document how -fprofile-dir format
4174         is extended.
4176 2018-06-05  Richard Biener  <rguenther@suse.de>
4178         * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
4179         removal pretend DOM info isn't available so we do not update
4180         it and only remove edges, not dominated blocks.  Actually free
4181         DOM info in case we removed something.  Remove unreachable blocks.
4182         (mfb_keep_latches): Work with either DOM info or marked backedges.
4183         (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
4184         first.  Mark backedges if DOM info isn't available.
4185         (Re-)compute DOM info after cleanup_control_flow_pre.
4187 2018-06-05  Richard Biener  <rguenther@suse.de>
4189         * tree-cfg.c (struct locus_discrim_map): Store line, not location.
4190         (locus_discrim_hasher::hash): Adjust.
4191         (locus_discrim_hasher::equal): Likewise.
4192         (next_discriminator_for_locus): Work on line directly.
4193         (same_line_p): Pass in expanded locus1 as well.
4194         (assign_discriminators): Avoid redundant location expansions.
4196 2018-06-05  Richard Biener  <rguenther@suse.de>
4198         PR tree-optimization/86046
4199         * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
4200         if required after clearing TREE_ADDRESSABLE.
4202 2018-06-05  Richard Biener  <rguenther@suse.de>
4204         PR tree-optimization/86047
4205         * tree-ssa-loop.c (for_each_index): Glob handling of all
4206         decls and constants and really handle all of them.
4208 2018-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4210         PR target/81497
4211         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
4212         qualifier_void_pointer and qualifier_const_void_pointer.
4213         (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
4214         (arm_init_builtins): Handle the above.
4215         * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
4216         __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
4217         __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
4218         void intrinsics.
4220 2018-06-05  Martin Liska  <mliska@suse.cz>
4222         * auto-profile.c (read_autofdo_file): Do not use
4223         gcov_ctr_summary struct.
4224         (afdo_callsite_hot_enough_for_early_inline): Likewise.
4225         * coverage.c (struct counts_entry): Likewise.
4226         (read_counts_file): Read just single summary entry.
4227         (get_coverage_counts): Use gcov_summary struct.
4228         * coverage.h (get_coverage_counts): Likewise.
4229         * gcov-dump.c (dump_working_sets): Likewise.
4230         (tag_summary): Dump just single summary.
4231         * gcov-io.c (gcov_write_summary): Write just histogram
4232         summary.
4233         (gcov_read_summary): Read just single summary.
4234         (compute_working_sets): Use gcov_summary struct.
4235         * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
4236         of GCOV_COUNTERS_SUMMABLE.
4237         (GCOV_COUNTERS_SUMMABLE): Remove.
4238         (GCOV_FIRST_VALUE_COUNTER): Replace with
4239         GCOV_COUNTER_V_INTERVAL.
4240         (struct gcov_ctr_summary): Remove.
4241         (struct gcov_summary): Directly use fields of former
4242         gcov_ctr_summary.
4243         (compute_working_sets): Use gcov_summary struct.
4244         * gcov.c (read_count_file): Do not use ctrs fields.
4245         * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
4246         struct.
4247         * lto-streamer.h (struct GTY): Make profile_info gcov_summary
4248         struct.
4249         * profile.c: Likewise.
4250         * profile.h: Likewise.
4252 2018-06-05  Martin Liska  <mliska@suse.cz>
4254         PR gcov-profile/84846
4255         * gcov.c (output_lines): Print working directory only
4256         in intermediate format.
4258 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
4260         * config/s390/s390-builtin-types.def: Add void function type.
4261         * config/s390/s390-builtins.def: Use the function type for the
4262         tbeginc builtin.
4264 2018-06-04  Jim Wilson  <jimw@sifive.com>
4266         * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
4267         to int.
4268         * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
4269         and maybe_eh_return.  Change regno to unsigned int.  Use new args to
4270         handle EH_RETURN_DATA_REGNO registers properly.
4271         (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
4272         (riscv_expand_epilogue): Update comment.  Change argument name and
4273         type.  Update code to use new name and type.  Pass new args to
4274         riscv_for_each_saved_reg.  Only use EH_RETURN_STACKADJ_RTX when
4275         EXCEPTION_RETURN.
4276         * config/riscv/riscv.md (NORMAL_RETURN): New.
4277         (SIBCALL_RETURN, EXCEPTION_RETURN): New.
4278         (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
4279         (eh_return): Call gen_eh_return_internal and emit barrier.
4280         (eh_return_internal): Call riscv_expand_epilogue.
4282 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
4284         * gimple-ssa-store-merging.c (struct merged_store_group): Move up
4285         bit_insertion field and declare can_be_merged_into method.
4286         (merged_store_group::can_be_merged_into): New method.
4287         (imm_store_chain_info::coalesce_immediate): Call it to decide whether
4288         consecutive non-overlapping stores can be merged.  Turn MEM_REF stores
4289         into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
4291 2018-06-04  Richard Biener  <rguenther@suse.de>
4293         PR tree-optimization/85955
4294         * builtins.c (fold_builtin_sincos): Convert pointers to
4295         destination to appropriate type before dereferencing.
4297 2018-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
4299         * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
4301 2018-06-04  Richard Sandiford  <richard.sandiford@linaro.org>
4303         * expr.c (expand_expr_real_1): Force the operand into memory if
4304         its TYPE_MODE is BLKmode and if there is no integer mode for
4305         the number of bits being extracted.
4307 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
4309         PR target/85832
4310         PR target/86036
4311         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
4312         Use vptestnm rather than vptestm in (=Yc,v,C) variant.
4314 2018-06-04  Richard Biener  <rguenther@suse.de>
4316         * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
4317         (cleanup_tree_cfg_noloop): ... single caller.  Do
4318         start_recording_case_labels later.
4320 2018-06-04  Sebastian Peryt  <sebastian.peryt@intel.com>
4322         * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
4323         to _IMMINTRIN_H_INCLUDED.
4324         * config/i386/pconfigintrin.h: Ditto.
4325         * config/i386/waitpkgintrin.h: Ditto.
4326         * config/i386/immintrin.h: Add includes for sgxintrin.h,
4327         pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
4328         * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
4329         emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
4330         bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
4331         waitpkgintrin.h and cldemoteintrin.h.
4333 2018-06-04  Richard Biener  <rguenther@suse.de>
4335         PR tree-optimization/86038
4336         * tracer.c (find_best_successor): Check probability for
4337         being initialized, bail out if not.
4339 2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
4341         PR target/86003
4342         * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
4343         of bits to ignore when comparing architectures.
4345 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
4347         PR tree-optimization/69615
4348         * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
4349         maximum or minimum of the type, try to merge it also as if
4350         range1 is + [-, x - 1] or + [x + 1, -].
4352         PR c++/86025
4353         * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
4355 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
4357         PR tree-optimization/86034
4358         * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
4359         the unsigned bitfield type in a bit insertion sequence if it does not
4360         have a larger precision than the bitfield size.
4361         (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
4363 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
4365         * config/nds32/nds32-peephole2.md: Add new patterns for code size.
4367 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
4369         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
4370         * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
4371         * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
4372         * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
4374 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
4376         * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
4377         Disable -fdelete-null-pointer-checks for ELF toolchain.
4379 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4380             Kito Cheng  <kito.cheng@gmail.com>
4382         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
4383         (nds32le-*-*, nds32be-*-*): Integrate checking process.
4384         (nds32*-*-*): Add glibc and uclibc conditions.
4385         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
4386         (TARGET_EXCEPT_UNWIND_INFO): Define.
4387         * config/nds32/elf.h: New file.
4388         * config/nds32/linux.h: New file.
4389         * config/nds32/nds32-elf.opt: New file.
4390         * config/nds32/nds32-linux.opt: New file.
4391         * config/nds32/nds32-fp-as-gp.c
4392         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
4393         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
4394         TARGET_LINUX_ABI.
4395         (nds32_asm_file_end): Ditto.
4396         (nds32_print_operand): Ditto.
4397         (nds32_insert_attributes): Ditto.
4398         (nds32_init_libfuncs): New function.
4399         (TARGET_HAVE_TLS): Define.
4400         (TARGET_INIT_LIBFUNCS): Define.
4401         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
4402         spec content.
4403         (TARGET_ELF): Apply different mcmodel setting.
4404         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
4405         been migrated into elf.h and linux.h files.
4406         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
4407         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
4408         (mcmodel): The content has been migrated into nds32-elf.opt and
4409         nds32-linux.opt files.
4410         * config/nds32/t-elf: New file.
4411         * config/nds32/t-linux: New file.
4413 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4414             Shiva Chen  <shiva0217@gmail.com>
4416         * config/nds32/constants.md (unspec_volatile_element): Add
4417         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
4418         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
4419         optimization.
4420         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
4421         (make_pass_nds32_fp_as_gp): Declare.
4422         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
4423         optmization pass.
4424         (nds32_asm_function_end_prologue): Remove unused asm output.
4425         (nds32_asm_function_begin_epilogue): Remove unused asm output.
4426         (nds32_asm_file_start): Output necessary fp_as_gp information.
4427         (nds32_option_override): Adjust register usage.
4428         (nds32_expand_prologue): Consider fp_as_gp situation.
4429         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
4430         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
4431         (epilogue): Ditto.
4432         (return): Ditto.
4433         (simple_return): Ditto.
4434         (omit_fp_begin): Output special directive for fp_as_gp.
4435         (omit_fp_end): Output special directive for fp_as_gp.
4436         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
4437         mforbid-fp-as-gp): New options.
4439 2018-06-01  Mark Wielaard  <mark@klomp.org>
4441         * dwarf2out.c (dwarf2out_finish): Remove generation of
4442         DW_AT_loclists_base.
4444 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
4446         * gimple-ssa-store-merging.c: Include gimple-fold.h.
4447         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
4448         (struct merged_store_group): Add bit_insertion field.
4449         (dump_char_array): Use standard hexadecimal format.
4450         (merged_store_group::merged_store_group): Set bit_insertion to false.
4451         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
4452         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
4453         also print the mask in the dump file.
4454         (pass_store_merging::gate): Minor tweak.
4455         (imm_store_chain_info::coalesce_immediate): Fix wrong association
4456         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
4457         stores with INTEGER_CST stores.
4458         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
4459         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
4460         and use it throughout.  Generate bit insertion sequences if need be.
4461         (pass_store_merging::process_store): Remove redundant condition.
4462         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
4464 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
4466         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
4467         the 128-bit floating point types.  Fix function comment.
4469 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4471         * config/aarch64/aarch64-simd.md
4472         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
4473         mnemonics.
4474         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
4475         mnemonics.
4477 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
4479         PR tree-optimization/85989
4480         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
4481         variable.
4482         (backprop::intersect_uses): Check it when deciding whether this
4483         is a backedge reference.
4484         (backprop::process_block): Add each phi to m_visited_phis
4485         after visiting it, then clear it at the end.
4487 2018-06-01  Richard Biener  <rguenther@suse.de>
4489         * tree-vectorizer.h (vect_dr_stmt): New function.
4490         (vect_get_load_cost): Adjust.
4491         (vect_get_store_cost): Likewise.
4492         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
4493         Use vect_dr_stmt instead of DR_SMTT.
4494         (vect_record_base_alignments): Likewise.
4495         (vect_calculate_target_alignment): Likewise.
4496         (vect_compute_data_ref_alignment): Likewise and make static.
4497         (vect_update_misalignment_for_peel): Likewise.
4498         (vect_verify_datarefs_alignment): Likewise.
4499         (vector_alignment_reachable_p): Likewise.
4500         (vect_get_data_access_cost): Likewise.  Pass down
4501         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
4502         (vect_get_peeling_costs_all_drs): Likewise.
4503         (vect_peeling_hash_get_lowest_cost): Likewise.
4504         (vect_enhance_data_refs_alignment): Likewise.
4505         (vect_find_same_alignment_drs): Likewise.
4506         (vect_analyze_data_refs_alignment): Likewise.
4507         (vect_analyze_group_access_1): Likewise.
4508         (vect_analyze_group_access): Likewise.
4509         (vect_analyze_data_ref_access): Likewise.
4510         (vect_analyze_data_ref_accesses): Likewise.
4511         (vect_vfa_segment_size): Likewise.
4512         (vect_small_gap_p): Likewise.
4513         (vectorizable_with_step_bound_p): Likewise.
4514         (vect_prune_runtime_alias_test_list): Likewise.
4515         (vect_analyze_data_refs): Likewise.
4516         (vect_supportable_dr_alignment): Likewise.
4517         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
4518         (vect_gen_prolog_loop_niters): Likewise.
4519         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
4520         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
4521         modify DR_STMT.
4522         (vect_recog_mask_conversion_pattern): Likewise.
4523         (vect_try_gather_scatter_pattern): Likewise.
4524         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
4525         to vect_get_store_cost.
4526         (vect_get_store_cost): Get stmt_info instead of DR.
4527         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
4528         (vect_get_load_cost): Get stmt_info instead of DR.
4530 2018-06-01  Richard Biener  <rguenther@suse.de>
4532         PR middle-end/86017
4533         * gimple-fold.c (var_decl_component_p): Also allow offsetted
4534         vars wrapped in MEM_REFs.
4536 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
4538         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
4539         Fix subreg tests so that we only return a choice between
4540         GENERAL_REGS and FP_REGS if the original classes included both.
4542 2018-06-01  Richard Biener  <rguenther@suse.de>
4544         PR ipa/85960
4545         * tree-ssa-structalias.c (get_function_part_constraint):
4546         Handle NULL fi->decl.
4547         (find_func_aliases_for_call): Properly handle indirect
4548         fi from direct call.
4549         (find_func_clobbers): Likewise.
4550         (ipa_pta_execute): Likewise.
4551         (create_variable_info_for): For functions that are ifunc_resolver
4552         resolve to a varinfo that contains the result of the resolver call.
4553         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
4554         aliases.
4556 2018-05-31  Michael Collison  <michael.collison@arm.com>
4558         * config/aarch64/aarch64.md:
4559         (*fix_to_zero_extenddfdi2): New pattern.
4560         * gcc.target/aarch64/fix_extend1.c: New testcase.
4562 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
4564         PR middle-end/78809
4565         PR middle-end/83026
4566         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
4567         and BUILT_IN_STRNCMP_EQ.
4568         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
4569         BUILT_IN_STRNCMP_EQ.
4570         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
4571         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
4572         (gimple_fold_builtin): Likewise.
4573         * tree-ssa-strlen.c (compute_string_length): New function.
4574         (determine_min_obsize): New function.
4575         (handle_builtin_string_cmp): New function to handle calls to
4576         string compare functions.
4577         (strlen_optimize_stmt): Add handling to builtin string compare
4578         calls.
4579         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
4580         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
4581         * tree.c (build_common_builtin_nodes): Add new defines of
4582         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
4584 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
4586         PR target/85984
4587         * bb-reorder.c (pass_partition_blocks::gate): Return false for
4588         functions with naked attribute.
4590 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
4592         * config/i386/sse.md (avx_vec_concat<mode>):
4593         Substitute concat_tg_mode mode attribute with xtg_mode.
4594         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
4595         (concat_tg_mode): Remove mode attribute.
4597 2018-05-31  Martin Sebor  <msebor@redhat.com>
4599         PR c/82063
4600         * calls.c (alloc_max_size): Correct a logic error/typo.
4601         Treat excessive arguments as infinite.  Warn for invalid arguments.
4602         * doc/invoke.texi (-Walloc-size-larger-than): Update.
4604 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
4606         PR target/85829
4607         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
4608         and movx for Haswell.
4610 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
4611             Cesar Philippidis  <cesar@codesourcery.com>
4613         PR middle-end/85879
4614         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
4615         when emitting error on private/firstprivate reductions.
4616         * omp-low.c (lower_omp_target): Avoid reference-type processing
4617         on pointers for firstprivate clause.
4619 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
4621         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
4622         (st1x2): Likewise.
4623         (st1x3): Likewise.
4624         * config/aarch64/aarch64-simd.md
4625         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
4626         (aarch64_ld1_x3_<mode>): Likewise
4627         (aarch64_st1x2<VALLDIF:mode>): Likewise
4628         (aarch64_st1_x2_<mode>): Likewise
4629         (aarch64_st1x3<VALLDIF:mode>): Likewise
4630         (aarch64_st1_x3_<mode>): Likewise
4631         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
4632         (vld1_s8_x3): Likewise.
4633         (vld1_u16_x3): Likewise.
4634         (vld1_s16_x3): Likewise.
4635         (vld1_u32_x3): Likewise.
4636         (vld1_s32_x3): Likewise.
4637         (vld1_u64_x3): Likewise.
4638         (vld1_s64_x3): Likewise.
4639         (vld1_f16_x3): Likewise.
4640         (vld1_f32_x3): Likewise.
4641         (vld1_f64_x3): Likewise.
4642         (vld1_p8_x3): Likewise.
4643         (vld1_p16_x3): Likewise.
4644         (vld1_p64_x3): Likewise.
4645         (vld1q_u8_x3): Likewise.
4646         (vld1q_s8_x3): Likewise.
4647         (vld1q_u16_x3): Likewise.
4648         (vld1q_s16_x3): Likewise.
4649         (vld1q_u32_x3): Likewise.
4650         (vld1q_s32_x3): Likewise.
4651         (vld1q_u64_x3): Likewise.
4652         (vld1q_s64_x3): Likewise.
4653         (vld1q_f16_x3): Likewise.
4654         (vld1q_f32_x3): Likewise.
4655         (vld1q_f64_x3): Likewise.
4656         (vld1q_p8_x3): Likewise.
4657         (vld1q_p16_x3): Likewise.
4658         (vld1q_p64_x3): Likewise.
4659         (vst1_s64_x2): Likewise.
4660         (vst1_u64_x2): Likewise.
4661         (vst1_f64_x2): Likewise.
4662         (vst1_s8_x2): Likewise.
4663         (vst1_p8_x2): Likewise.
4664         (vst1_s16_x2): Likewise.
4665         (vst1_p16_x2): Likewise.
4666         (vst1_s32_x2): Likewise.
4667         (vst1_u8_x2): Likewise.
4668         (vst1_u16_x2): Likewise.
4669         (vst1_u32_x2): Likewise.
4670         (vst1_f16_x2): Likewise.
4671         (vst1_f32_x2): Likewise.
4672         (vst1_p64_x2): Likewise.
4673         (vst1q_s8_x2): Likewise.
4674         (vst1q_p8_x2): Likewise.
4675         (vst1q_s16_x2): Likewise.
4676         (vst1q_p16_x2): Likewise.
4677         (vst1q_s32_x2): Likewise.
4678         (vst1q_s64_x2): Likewise.
4679         (vst1q_u8_x2): Likewise.
4680         (vst1q_u16_x2): Likewise.
4681         (vst1q_u32_x2): Likewise.
4682         (vst1q_u64_x2): Likewise.
4683         (vst1q_f16_x2): Likewise.
4684         (vst1q_f32_x2): Likewise.
4685         (vst1q_f64_x2): Likewise.
4686         (vst1q_p64_x2): Likewise.
4687         (vst1_s64_x3): Likewise.
4688         (vst1_u64_x3): Likewise.
4689         (vst1_f64_x3): Likewise.
4690         (vst1_s8_x3): Likewise.
4691         (vst1_p8_x3): Likewise.
4692         (vst1_s16_x3): Likewise.
4693         (vst1_p16_x3): Likewise.
4694         (vst1_s32_x3): Likewise.
4695         (vst1_u8_x3): Likewise.
4696         (vst1_u16_x3): Likewise.
4697         (vst1_u32_x3): Likewise.
4698         (vst1_f16_x3): Likewise.
4699         (vst1_f32_x3): Likewise.
4700         (vst1_p64_x3): Likewise.
4701         (vst1q_s8_x3): Likewise.
4702         (vst1q_p8_x3): Likewise.
4703         (vst1q_s16_x3): Likewise.
4704         (vst1q_p16_x3): Likewise.
4705         (vst1q_s32_x3): Likewise.
4706         (vst1q_s64_x3): Likewise.
4707         (vst1q_u8_x3): Likewise.
4708         (vst1q_u16_x3): Likewise.
4709         (vst1q_u32_x3): Likewise.
4710         (vst1q_u64_x3): Likewise.
4711         (vst1q_f16_x3): Likewise.
4712         (vst1q_f32_x3): Likewise.
4713         (vst1q_f64_x3): Likewise.
4714         (vst1q_p64_x3): Likewise.
4716 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4718         * config/msp430/msp430.c (msp430_output_labelref): Prepend
4719         user_label_prefix to name.
4721         * tree-core.h: Update comment about the format of NAME string
4722         passed to handler in attribute_spec.
4724         * config/msp430/msp430.md: Remove erroneous subreg expression from
4725         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
4726         zero_extend{q,h}isi2.
4728 2018-05-30  Borislav Petkov  <bp@suse.de>
4730         * doc/extend.texi: Document some architecture specific
4731         constraints and sort entries.
4733 2018-05-30  Martin Sebor  <msebor@redhat.com>
4735         PR middle-end/85369
4736         * builtins.c (expand_builtin_stpcpy_1): New function.
4737         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
4738         only if the former succeeds.
4740 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
4742         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
4743         in saphira.
4745 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4747         * doc/invoke.texi (-flinker-output): Document
4749 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4751         * passes.c (ipa_write_summaries): Only modify statements if body
4752         is in memory.
4753         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
4754         incrementally linking.
4755         (ipa_passes): Likewise.
4756         * lto-cgraph.c (lto_output_node): When incrementally linking do not
4757         pass down resolution info.
4758         * common.opt (flag_incremental_link): Update info.
4759         * gcc.c (plugin specs): Turn flinker-output=* to
4760         -plugin-opt=-linker-output-known
4761         * toplev.c (compile_file): Also cut compilation when doing incremental
4762         link.
4763         * flag-types. (enum lto_partition_model): Add
4764         LTO_LINKER_OUTPUT_NOLTOREL.
4765         (invoke.texi): Add -flinker-output docs.
4766         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
4767         link same way as WPA; do not stream in dead initializers.
4769         * dwarf2out.c (dwarf2out_die_ref_for_decl,
4770         darf2out_register_external_decl): Support incremental link.
4772 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4774         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
4776 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4778         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
4779         it down to simple_object_copy_lto_debug_sections.
4780         (run_gcc): Determine incremental LTO link time and configure
4781         lto1 into non-wpa mode, disable renaming of debug sections.
4783 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4785         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
4786         descriptions of various incorrectly documented functions.
4788 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4790         Revert:
4791         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
4792         address check not strict.
4794 2018-05-30  Richard Biener  <rguenther@suse.de>
4796         PR tree-optimization/85964
4797         * tracer.c (better_p): Drop initialized count check, we only
4798         call the function with initialized counts now.
4799         (find_best_successor): Do find a best edge if one
4800         has uninitialized count.
4801         (find_best_predecessor): Likewise.  Do BB frequency check only
4802         if count is initialized.
4804 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
4806         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
4807         (aarch64_ldrstr_offset_compare): New.
4808         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
4809         load/store orderings.
4810         (aarch64_gen_adjusted_ldpstp): Likewise.
4812 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
4814         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
4815         Check for subset of GENERAL_REGS and FP_REGS.
4816         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
4817         r=w alternative.
4819 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
4821         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
4822         and wi::to_poly_offset.  Add the current offset and then check
4823         whether the sum fits, rather than using an unchecked addition of
4824         a checked term.  Check for a shwi rather than a uhwi.
4825         * expr.c (get_bit_range): Use tree_to_poly_uint64.
4826         (store_constructor): Use poly_int_tree_p.
4827         (expand_expr_real_1): Likewise.
4828         * function.c (assign_temp): Likewise.
4829         * fold-const.c (const_binop): Use poly_int_tree_p and
4830         wi::to_poly_offset.
4831         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
4832         division.
4833         * ipa-icf-gimple.c (func_checker::compare_operand): Use
4834         to_poly_offset for MEM offsets.
4835         * ipa-icf.c (sem_variable::equals): Likewise.
4836         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
4837         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
4838         wi::to_poly_offset for BIT_FIELD_REF offsets.
4839         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
4840         wi::to_poly_offset.
4841         * var-tracking.c (emit_note_insn_var_location): Use
4842         tree_to_poly_uint64.
4844 2018-05-29  Jim Wilson  <jimw@sifive.com>
4846         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
4848 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
4850         PR target/85950
4851         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
4852         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
4853         sequence.
4854         (sse4_1_round<mode>2): Use nonimmediate_operand
4855         for operand 1 predicate.
4857 2018-05-29  Martin Sebor  <msebor@redhat.com>
4858             Richard Biener  <rguenther@suse.de>
4860         PR testsuite/85888
4861         * calls.c (get_size_range): Call determine_value_range instead
4862         of get_value_range..
4863         * tree-vrp.h (determine_value_range): Declared new function.
4864         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
4866 2018-05-29  Richard Biener  <rguenther@suse.de>
4868         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
4869         sure to use non-pattern stmts for get_earlier_stmt arguments.
4870         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
4871         called on pattern stmts.
4872         (get_later_stmt): Likewise.
4874 2018-05-29  Martin Liska  <mliska@suse.cz>
4876         PR gcov-profile/85759
4877         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
4878         env variables.
4880 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
4882         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
4883         VEC_UNPACK_*_EXPR.
4884         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
4885         VEC_PACK_*_EXPR.
4887         PR target/85918
4888         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
4889         VEC_PACK_FLOAT_EXPR): New tree codes.
4890         * tree-pretty-print.c (op_code_prio): Handle
4891         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
4892         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4893         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4894         * tree-inline.c (estimate_operator_cost): Likewise.
4895         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
4896         * fold-const.c (const_binop): Likewise.
4897         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
4898         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
4899         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4900         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
4901         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4902         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4903         * expr.c (expand_expr_real_2): Likewise.
4904         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
4905         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
4906         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
4907         optabs.
4908         * optabs.c (expand_widen_pattern_expr): For
4909         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
4910         sign from result type rather than operand's type.
4911         (expand_binop_directly): For vec_packu_float_optab and
4912         vec_packs_float_optab allow result type to be different from operand's
4913         type.
4914         * optabs-tree.c (optab_for_tree_code): Handle
4915         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4916         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
4917         * tree-vect-generic.c (expand_vector_operations_1):  Handle
4918         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4919         VEC_PACK_FLOAT_EXPR.
4920         * tree-vect-stmts.c (supportable_widening_operation): Handle
4921         FIX_TRUNC_EXPR.
4922         (supportable_narrowing_operation): Handle FLOAT_EXPR.
4923         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
4924         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
4925         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
4926         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
4927         mode attributes.
4928         (vec_pack<floatprefix>_float_<mode>): New expander.
4929         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
4930         attributes.
4931         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
4932         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
4933         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
4934         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
4935         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
4936         Document.
4937         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
4938         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
4939         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
4940         VEC_PACK_FLOAT_EXPR): Document.
4942 2018-05-29  Richard Biener  <rguenther@suse.de>
4944         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
4945         member.
4946         (stmt_vec_info_vec): Make pointer.
4947         (init_stmt_vec_info_vec): Remove.
4948         (free_stmt_vec_info_vec): Likewise.
4949         (set_stmt_vec_info_vec): New function.
4950         (free_stmt_vec_infos): Likewise.
4951         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
4952         (set_vinfo_for_stmt): Likewise.
4953         (get_earlier_stmt): Likewise.
4954         (get_later_stmt): Likewise.
4955         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
4956         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
4957         (vec_info::~vec_info): Free stmt_vec_infos.
4958         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
4959         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
4960         (pass_slp_vectorize::execute): Likewise.
4961         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
4962         (free_stmt_vec_info_vec): Likewise.
4963         (set_stmt_vec_info_vec): New function.
4964         (free_stmt_vec_infos): Likewise.
4965         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
4966         the global stmt_vec_info_vec.
4967         * tree-parloops.c (gather_scalar_reductions): Use
4968         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
4969         vector.
4971 2018-05-29  Richard Biener  <rguenther@suse.de>
4973         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
4975 2018-05-29  Martin Liska  <mliska@suse.cz>
4976             David Malcolm  <dmalcolm@redhat.com>
4978         * vec.c (test_reverse): New.
4979         (vec_c_tests): Add new test.
4980         * vec.h (vl_ptr>::reverse): New function.
4982 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
4984         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
4986         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
4987         and later.
4989 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
4991         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
4993 2018-05-28  Richard Biener  <rguenther@suse.de>
4995         PR tree-optimization/85933
4996         * tree-vect-data-refs.c (vect_record_base_alignments): Only
4997         look at stmts marked as vectorizable.
4999 2018-05-28  Richard Biener  <rguenther@suse.de>
5001         PR tree-optimization/85934
5002         * tree-vect-generic.c (expand_vector_operations_1): Hoist
5003         vector boolean check before scalar optimization.
5005 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
5007         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
5008         for armv5te.
5010 2018-05-28  Mark Wielaard  <mark@klomp.org>
5012         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
5013         if it is an expression containing a minus sign.
5015 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
5017         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
5019 2018-05-27  Paul Koning  <ni1d@arrl.net>
5021         * config/pdp11/pdp11.md (truncsihi2): Remove.
5023 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
5024             Chung-Ju Wu  <jasonwucj@gmail.com>
5026         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
5027         implementation.
5028         (unaligned_store_dw): Ditto.
5029         * config/nds32/nds32-memory-manipulation.c
5030         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
5031         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
5032         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
5033         (emit_setmem_word_loop): Rename to ...
5034         (emit_setmem_doubleword_loop): ... this.
5035         (nds32_gen_dup_4_byte_to_word_value): New function.
5036         (nds32_gen_dup_8_byte_to_double_word_value): New function.
5037         (nds32_expand_setmem_loop): Refine implementation.
5038         (nds32_expand_setmem_loop_v3m): Ditto.
5039         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
5040         pattern.
5042 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5044         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
5046 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5048         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
5049         (nds32_init_machine_status): Initialize machine->attr_naked_p and
5050         machine->attr_no_prologue_p.
5051         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
5052         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
5053         (nds32_expand_epilogue): Consider attr_naked_p.
5054         (nds32_expand_epilogue_v3pop): Likewise.
5055         (nds32_can_use_return_insn): Likewise.
5056         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
5057         attr_no_prologue_p fields.
5058         * config/nds32/nds32.opt (mret-in-naked-func): New option.
5060 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
5062         PR target/85918
5063         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
5064         attributes.
5065         * config/i386/sse.md
5066         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
5067         Rename to ...
5068         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
5069         ... this.
5070         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
5071         Rename to ...
5072         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
5073         ... this.
5074         (*<floatsuffix>floatv2div2sf2): Rename to ...
5075         (*float<floatunssuffix>v2div2sf2): ... this.
5076         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
5077         (float<floatunssuffix>v2div2sf2_mask): ... this.
5078         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
5079         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
5080         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
5081         to ...
5082         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
5083         ... this.
5084         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
5085         Rename to ...
5086         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
5087         ... this.
5088         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
5089         Rename to ...
5090         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
5091         ... this.
5092         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
5093         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
5094         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
5095         gen_ufix_truncv8dfv8si2.
5096         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
5097         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
5098         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
5099         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
5100         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
5101         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
5102         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
5103         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
5105 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5107         PR target/85900
5108         PR target/85345
5109         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
5111 2018-05-25  Jim Wilson  <jimw@sifive.com>
5113         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
5114         * config/riscv/riscv.c (struct machine_function): Add
5115         interrupt_handler_p and attribute_checked_p fields.
5116         (riscv_attribute_table): Add interrupt.
5117         (riscv_interrupt_type_p): New.
5118         (riscv_save_reg_p): Save extra regs for interrupt handler.
5119         (riscv_use_save_libcall): Return false  for interrupt handler.
5120         (riscv_first_stack_step): Add forward declaration.
5121         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
5122         for interrupt handler with large frame.  Use it for saved reg list.
5123         (riscv_expand_prologue): Move flag_stack_usage_info support to
5124         eliminate duplication.
5125         (riscv_expand_epilogue): Generate mret for interrupt handler.
5126         (riscv_epilogue_uses): New.
5127         (riscv_can_use_return_insn): Return false for interrupt handler.
5128         (riscv_function_ok_for_sibcall): Likewise.
5129         (riscv_set_current_function): Add interrupt handler support.
5130         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
5131         * config/riscv/riscv.md (UNSPECV_MRET): New.
5132         (GP_REGNUM): New.
5133         (riscv_frflags, riscv_fsflags): Use tab after opcode.
5134         (riscv_mret): New.
5135         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
5137 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
5139         PR tree-optimization/85712
5140         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
5141         this candidate has already been replaced in-situ by a copy.
5143 2018-05-25  Jason Merrill  <jason@redhat.com>
5145         PR c++/80485 - inline function non-zero address.
5146         * symtab.c (nonzero_address): Check DECL_COMDAT.
5148 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
5150         PR target/83628
5151         * config/alpha/alpha.md (ashlsi3): New insn pattern.
5152         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
5153         extension of SImode operation.  Use const123_operand predicate.
5154         (*saddsi_1): Remove.
5155         (*saddl_se_1): Ditto.
5156         (*ssubsi_1): Ditto.
5157         (*ssubl_se_1): Ditto.
5158         * config/alpha/predicates.md (const123_operand): New predicate.
5159         * config/alpha/constraints.md (P): Use IN_RANGE.
5161 2018-05-25  Richard Biener  <rguenther@suse.de>
5163         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
5164         defaulted to true.
5165         (ref_maybe_used_by_stmt_p): Likewise.
5166         (stmt_may_clobber_ref_p): Likewise.
5167         (stmt_may_clobber_ref_p_1): Likewise.
5168         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
5169         and pass it along.
5170         (ref_maybe_used_by_stmt_p): Likewise.
5171         (stmt_may_clobber_ref_p): Likewise.
5172         (stmt_may_clobber_ref_p_1): Likewise.
5173         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
5174         the alias oracle to disambiguate DRs with stmts DR analysis
5175         couldn't handle.
5176         (vect_analyze_data_refs): Do not give up on not analyzable
5177         DRs for BB vectorization.  Remove code truncating the dataref
5178         vector.
5180 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
5182         PR target/85832
5183         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
5184         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
5185         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
5187 2018-05-25  Richard Biener  <rguenther@suse.de>
5189         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
5190         function, combining stmt data ref gathering and fatal analysis
5191         parts.
5192         (vect_analyze_data_refs): Remove now redudnant code and simplify.
5193         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
5194         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
5195         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
5196         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
5198 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5200         PR tree-optimization/85720
5201         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
5202         SCC if all partitions are builtins.
5203         (version_loop_by_alias_check): New parameter.  Generate cancelable
5204         runtime alias check if all partitions are builtins.
5205         (distribute_loop): Update call to above function.
5207 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5209         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
5210         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
5211         (parm_default_def_partition_arg): Ditto.
5212         (set_parm_default_def_partition): Ditto.
5213         (get_parm_default_def_partitions): Ditto and make it static.
5214         (get_undefined_value_partitions): Ditto and make it static.
5215         (remove_ssa_form): Refactor call to init_var_map here.
5216         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
5217         computation for loop region.
5218         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
5219         (register_default_def): Delete.
5220         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
5221         (parm_default_def_partition_arg): Ditto.
5222         (set_parm_default_def_partition): Ditto.
5223         (get_parm_default_def_partitions): Ditto and make it static.
5224         (get_undefined_value_partitions): Ditto and make it static.
5225         (coalesce_with_default, coalesce_with_default): Update comment.
5226         (create_coalesce_list_for_region): New func factored out from
5227         create_outofssa_var_map.
5228         (populate_coalesce_list_for_outofssa): New func factored out from
5229         create_outofssa_var_map and coalesce_ssa_name.
5230         (create_outofssa_var_map): Delete.
5231         (coalesce_ssa_name): Refactor to support live range computation.
5232         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
5233         (get_parm_default_def_partitions): Delete.
5234         (get_undefined_value_partitions): Ditto.
5235         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
5236         computation for loop region.
5237         (new_tree_live_info, loe_visit_block): Ditto.
5238         (live_worklist, set_var_live_on_entry): Ditto.
5239         (calculate_live_on_exit, verify_live_on_entry): Ditto.
5240         * tree-ssa-live.h (struct _var_map): New fields.
5241         (init_var_map): Change decl.
5242         (region_contains_p): New.
5244 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5246         * tree-ssa-live.h (live_merge_and_clear): Delete.
5248 2018-05-25  Richard Biener  <rguenther@suse.de>
5250         PR c++/85912
5251         * tree-dump.c (dequeue_and_dump): Remove access to removed
5252         operand 2 of a SWITCH_EXPR.
5254 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5256         * doc/sourcebuild.texi (vect_double_cond_arith): Include
5257         multiplication and division.
5258         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
5259         (cond_udiv@var{m}, cond_umod@var{m}): Document.
5260         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
5261         (cond_udiv_optab, cond_umod_optab): New optabs.
5262         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
5263         (IFN_COND_RDIV): New internal functions.
5264         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
5265         TRUNC_MOD_EXPR and RDIV_EXPR.
5266         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
5267         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
5268         New unspecs.
5269         (SVE_INT_BINARY): Include mult.
5270         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
5271         (optab, sve_int_op): Handle mult.
5272         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
5273         UNSPEC_COND_DIV.
5274         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
5275         for SVE_INT_BINARY_SD.
5277 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5279         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
5280         (optab, sve_int_op): Handle div and udiv.
5281         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
5282         for SVE_INT_BINARY_SD.
5283         (*<optab><mode>3): New insn for the same.
5285 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5287         * tree-vect-patterns.c: Include predict.h.
5288         (vect_recog_divmod_pattern): Restrict check for division support
5289         to when optimizing for size.
5291 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5293         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
5294         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
5295         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
5296         (gimple_match_op::set_op): Likewise.
5297         (gimple_resimplify4): Declare.
5298         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
5299         (expr::gen_transform): Likewise.
5300         (decision_tree::gen): Generate a simplification routine for 4 operands.
5301         * gimple-match-head.c (gimple_simplify): Add an overload for
5302         4 operands.  In the top-level function, handle up to 4 call
5303         arguments and call gimple_resimplify4.
5304         (gimple_resimplify4): New function.
5305         (build_call_internal): Pass a fourth operand.
5306         (maybe_push_to_seq): Likewise.
5307         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
5308         Fold VEC_COND_EXPRs of an operation and a default value into
5309         an IFN_COND_* function if possible.
5310         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
5311         New unspecs.
5312         (SVE_COND_FP_BINARY): Include them.
5313         (optab, sve_fp_op): Handle them.
5314         (SVE_INT_BINARY_REV): New code iterator.
5315         (SVE_COND_FP_BINARY_REV): New int iterator.
5316         (commutative): New int attribute.
5317         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
5318         Declare.
5319         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
5320         function.
5321         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
5322         (*cond_<optab><mode>): New patterns for reversed operands.
5324 2018-05-25  Richard Biener  <rguenther@suse.de>
5326         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
5327         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
5328         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
5329         (STMT_VINFO_GROUPED_ACCESS): Adjust.
5330         * tree-vect-data-refs.c (everywhere): Adjust users.
5331         * tree-vect-loop.c (everywhere): Likewise.
5332         * tree-vect-slp.c (everywhere): Likewise.
5333         * tree-vect-stmts.c (everywhere): Likewise.
5334         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
5336 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5338         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
5339         Rename to...
5340         (gcc_cv_as_section_exclude): ... this.
5341         Try Solaris as #exclude syntax.
5342         * configure: Regenerate.
5343         * config.in: Regenerate.
5344         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
5345         SECTION_EXCLUDE.
5346         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
5347         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
5349         * varasm.c (default_elf_asm_named_section): Don't check if
5350         HAVE_GAS_SECTION_EXCLUDE is defined.
5352 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5354         * doc/md.texi: Update the documentation of the cond_* optabs
5355         to mention the new final operand.  Fix GET_MODE_NUNITS call.
5356         Describe the scalar case too.
5357         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
5358         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
5359         instead of 2.
5360         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
5361         (get_conditional_internal_fn): Update comment.
5362         * tree-vect-loop.c (vectorizable_reduction): Pass the original
5363         accumulator value as a final argument to conditional functions.
5364         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
5365         a define_expand and add an "else" operand.  Assert for now that
5366         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
5367         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
5368         (*cond_<optab><mode>): New patterns.
5369         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
5370         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
5371         (UNSPEC_COND_EOR): Delete.
5372         (optab): Remove associated mappings.
5373         (SVE_INT_BINARY): New code iterator.
5374         (sve_int_op): Remove int attribute and add "minus" to the code
5375         attribute.
5376         (SVE_COND_INT_OP): Delete.
5377         (SVE_COND_FP_OP): Rename to...
5378         (SVE_COND_FP_BINARY): ...this.
5380 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5382         * optabs.c (can_reuse_operands_p): New function.
5383         (maybe_legitimize_operands): Try to reuse the results for
5384         earlier operands.
5386 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
5388         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
5389         Add {q} suffix to insn mnemonic.
5391 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
5393         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
5394         (msp430_warn_func_return): New.
5396 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
5398         * fold-const.c (tree_nonzero_bits): New function.
5399         * fold-const.h (tree_nonzero_bits): Likewise.
5400         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
5401         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
5403 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5405         PR target/85900
5406         PR target/85345
5407         * varasm.c (assemble_alias): Check ifunc_resolver only on
5408         FUNCTION_DECL.
5410 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
5412         PR target/85903
5413         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
5414         when memory input operand is handled.
5416 2018-05-24  Luis Machado  <luis.machado@linaro.org>
5418         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
5419         global.
5420         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
5422 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
5424         * match.pd: Delay FMA folds until after vectorization.
5426 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5428         PR target/83009
5429         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
5430         address check not strict.
5432 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
5434         * gimple-match.h (gimple_match_op): New class.
5435         (mprts_hook): Replace parameters with a gimple_match_op *.
5436         (maybe_build_generic_op): Likewise.
5437         (gimple_simplified_result_is_gimple_val): Replace parameters with
5438         a const gimple_match_op *.
5439         (gimple_simplify): Replace code_helper * and tree * parameters with
5440         a gimple_match_op * parameter.
5441         (gimple_resimplify1): Replace code_helper *, tree and tree *
5442         parameters with a gimple_match_op * parameter.
5443         (gimple_resimplify2): Likewise.
5444         (gimple_resimplify3): Likewise.
5445         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
5446         parameters with a gimple_match_op * parameter.
5447         * gimple-match-head.c (gimple_simplify): Change prototypes of
5448         auto-generated functions to take a gimple_match_op * instead of
5449         separate code_helper * and tree * parameters.  Make the same
5450         change in the top-level overload and update calls to the
5451         gimple_resimplify routines.  Update calls to the auto-generated
5452         functions and to maybe_push_res_to_seq in the publicly-facing
5453         operation-specific gimple_simplify overloads.
5454         (gimple_match_op::MAX_NUM_OPS): Define.
5455         (gimple_resimplify1): Replace rcode and ops with a single res_op
5456         parameter.  Update call to gimple_simplify.
5457         (gimple_resimplify2): Likewise.
5458         (gimple_resimplify3): Likewise.
5459         (mprts_hook): Replace parameters with a gimple_match_op *.
5460         (maybe_build_generic_op): Likewise.
5461         (build_call_internal): Replace type, nargs and ops with
5462         a gimple_match_op *.
5463         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
5464         with a single gimple_match_op *.  Update calls to mprts_hook,
5465         build_call_internal and gimple_simplified_result_is_gimple_val.
5466         Factor out code that is common to the tree_code and combined_fn cases.
5467         * genmatch.c (expr::gen_transform): Replace tem_code and
5468         tem_ops with a gimple_match_op called tem_op.  Update calls
5469         to the gimple_resimplify functions and maybe_push_res_to_seq.
5470         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
5471         res_ops.  Update call to the gimple_resimplify functions.
5472         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
5473         (decision_tree::gen): Make the functions take a gimple_match_op *
5474         called res_op instead of separate res_code and res_ops parameters.
5475         Update call accordingly.
5476         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
5477         and ops with a single res_op parameter.  Update calls to
5478         maybe_build_generic_op and maybe_push_res_to_seq.
5479         (fold_stmt_1): Update calls to gimple_simplify and
5480         replace_stmt_with_simplification.
5481         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
5482         and gimple_simplified_result_is_gimple_val.
5483         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
5484         gimple_simplify.
5485         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
5486         with a gimple_match_op *.
5487         (vn_nary_build_or_lookup): Likewise.  Update call to
5488         vn_nary_build_or_lookup_1.
5489         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
5490         gimple_match_op *.  Update calls to the gimple_resimplify routines
5491         and to gimple_simplified_result_is_gimple_val.
5492         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
5493         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
5494         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
5495         (visit_nary_op): Likewise.
5496         (visit_reference_op_load): Likewise.
5498 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5500         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
5501         modifier for printing the step amount.
5503 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
5505         PR target/78849
5506         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
5507         types.
5509 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
5511         * doc/sourcebuild.texi (Endianness): New subsubsection.
5513 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5515         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
5516         <prefetch_dynamic_strides>: New const bool field.
5517         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
5518         prefetch_dynamic_strides.
5519         (exynosm1_prefetch_tune): Likewise.
5520         (thunderxt88_prefetch_tune): Likewise.
5521         (thunderx_prefetch_tune): Likewise.
5522         (thunderx2t99_prefetch_tune): Likewise.
5523         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
5524         false.
5525         (aarch64_override_options_internal): Update to set
5526         PARAM_PREFETCH_DYNAMIC_STRIDES.
5527         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
5528         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
5529         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
5530         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
5531         prefetch-dynamic-strides setting.
5533 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5535         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
5536         <minimum_stride>: New const int field.
5537         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
5538         minimum_stride field defaulting to -1.
5539         (exynosm1_prefetch_tune): Likewise.
5540         (thunderxt88_prefetch_tune): Likewise.
5541         (thunderx_prefetch_tune): Likewise.
5542         (thunderx2t99_prefetch_tune): Likewise.
5543         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
5544         <default_opt_level>: Set to 3.
5545         (aarch64_override_options_internal): Update to set
5546         PARAM_PREFETCH_MINIMUM_STRIDE.
5547         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
5548         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
5549         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
5550         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
5551         stride is constant and is below the minimum stride threshold.
5553 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5555         * config/arm/arm-cpus.in (mode26): Delete.
5556         (armv4): Delete mode26 reference.
5557         * config/arm/arm.c (arm_configure_build_target): Delete use of
5558         isa_bit_mode26.
5560 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
5562         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
5563         New insn pattern.
5564         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
5565         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
5566         for non-SSE modes.
5567         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
5568         (floatunsdidf2): Ditto.
5570 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
5572         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
5573         (fixuns_trunc<mode>si2_avx512f): Ditto.
5574         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
5575         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
5576         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
5578 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
5580         PR rtl-optimization/79985
5581         * df-scan.c (df_insn_refs_collect): Remove special case for
5582         global registers and asm statements.
5584 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
5586         * extend.texi (Global Register Variables): Rewrite the bullet list.
5587         Note that the register is available for allocation. Note that access
5588         via inline asm must use constraints. Add note about async-signal
5589         handlers. Remove paragraph about automagic register selection.
5591 2018-05-23  Richard Biener  <rguenther@suse.de>
5593         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
5594         of fixed offset from memset VN.
5596 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
5598         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
5599         first_interp field.
5600         (alloc_cand_and_find_basis): Initialize first_interp field.
5601         (slsr_process_mul): Modify first_interp field.
5602         (slsr_process_add): Likewise.
5603         (slsr_process_cast): Modify first_interp field for each new
5604         interpretation.
5605         (slsr_process_copy): Likewise.
5606         (dump_candidate): Dump first_interp field.
5607         (replace_mult_candidate): Process all interpretations, not just
5608         subsequent ones.
5609         (replace_rhs_if_not_dup): Likewise.
5610         (replace_one_candidate): Likewise.
5612 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
5614         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
5615         Add new boolean.
5616         (aarch64_needs_frame_chain): New function.
5617         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
5619 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
5621         PR target/84882
5622         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
5623         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
5624         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
5625         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
5626         as true for strict-align.
5627         (aarch64_can_inline_p): Perform checks even when callee has no
5628         attributes to check for strict alignment.
5629         * doc/extend.texi (AArch64 Function Attributes): Document
5630         no-strict-align.
5631         * doc/invoke.texi: (AArch64 Options): Likewise.
5633 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
5635         PR tree-optimization/85853
5636         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
5637         the handling of the root of the node to...
5638         (vect_slp_analyze_node_operations_1): ...this new function,
5639         and run the whole thing with the child nodes' def types
5640         set according to their SLP node's def type.
5642 2018-05-23  Richard Biener  <rguenther@suse.de>
5644         PR middle-end/85874
5645         * tree-data-ref.c (create_runtime_alias_checks): Defer
5646         and ignore overflow warnings.
5648 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
5650         PR tree-optimization/85822
5651         * tree-vrp.c (is_masked_range_test): Fix handling of negative
5652         constants.
5654 2018-05-23  Richard Biener  <rguenther@suse.de>
5656         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
5657         memset constants via native_interpret_expr.
5659 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
5661         PR target/85345
5662         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
5663         attribute.
5664         (cgraph_node::create_alias): Likewise.
5665         (cgraph_node::get_availability): Check ifunc_resolver instead
5666         of looking up ifunc attribute.
5667         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
5668         * varasm.c (do_assemble_alias): Likewise.
5669         (assemble_alias): Likewise.
5670         (default_binds_local_p_3): Likewise.
5671         * cgraph.h (cgraph_node): Add ifunc_resolver.
5672         (cgraph_node::only_called_directly_or_aliased_p): Return false
5673         for IFUNC resolver.
5674         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
5675         attribute.
5676         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
5677         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
5678         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
5679         instead of looking up ifunc attribute.
5681 2018-05-22  Luis Machado  <luis.machado@linaro.org>
5683         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
5685 2018-05-22  Martin Sebor  <msebor@redhat.com>
5687         PR middle-end/85359
5688         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
5689         only when expasion succeeds.
5690         (expand_builtin_strcmp): Same.
5691         (expand_builtin_strncmp): Same.
5693 2018-05-22  Martin Sebor  <msebor@redhat.com>
5695         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
5697 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
5698             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5700         * config/aarch64/aarch64-ldpstp.md: Replace uses of
5701         aarch64_mem_pair_operand with memory_operand and delete operand swapping
5702         code.
5703         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
5704         Add check for legitimate_address.
5705         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
5706         (aarch64_swap_ldrstr_operands): New.
5707         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
5708         Define prototype.
5710 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
5711             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5713         * config/aarch64/aarch64.md: New patterns to generate stp
5714         and ldp.
5715         (store_pair_sw, store_pair_dw): New patterns to generate stp for
5716         single words and double words.
5717         (load_pair_sw, load_pair_dw): Likewise.
5718         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
5719         Delete.
5720         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
5721         Delete.
5722         * config/aarch64/aarch64-ldpstp.md: Modify peephole
5723         for different mode ldpstp and add peephole for merged zero stores.
5724         Likewise for loads.
5725         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
5726         Add size check.
5727         (aarch64_gen_store_pair): Rename calls to match new patterns.
5728         (aarch64_gen_load_pair): Rename calls to match new patterns.
5729         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
5730         (load_pair<DREG:mode><DREG2:mode>): ... This.
5731         (store_pair<mode>): Rename to...
5732         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
5733         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
5734         New mode iterators.
5735         (V_INT_EQUIV): Handle SImode.
5736         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
5737         New predicate.
5739 2018-05-22  Martin Sebor  <msebor@redhat.com>
5741         PR c/85623
5742         * calls.c (maybe_warn_nonstring_arg): Use string length to set
5743         or ajust the presumed bound on an operation to avoid unnecessary
5744         warnings.
5746 2018-05-22  Martin Sebor  <msebor@redhat.com>
5748         PR tree-optimization/85826
5749         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
5750         assuming that a DECL necesarily has a constant size.
5752 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
5754         PR middle-end/85862
5755         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
5757 2018-05-22  Richard Biener  <rguenther@suse.de>
5759         PR tree-optimization/85834
5760         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
5761         non-constant and non-zero memset arguments.
5763 2018-05-22  Martin Liska  <mliska@suse.cz>
5765         PR ipa/85607
5766         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
5768 2018-05-22  Richard Biener  <rguenther@suse.de>
5770         PR tree-optimization/85863
5771         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
5772         comparisons when vectype is specified.
5773         (vectorizable_condition): Do not specify vectype for
5774         vect_is_simple_cond when SLP vectorizing.
5776 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
5778         PR target/85657
5779         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
5780         define __ibm128 as long double.
5781         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
5782         as a distinct type when IEEE 128-bit support is enabled.
5783         (init_float128_ieee): Fix up conversions between IFmode and IEEE
5784         128-bit types to use the correct functions.
5785         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
5786         convert between 128-bit floating point types that have different
5787         modes but the same representation, instead of using gen_lowpart to
5788         makean alias.
5789         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
5790         KFmode.
5791         (IFKF_reg): New attributes to give the register constraints for
5792         IFmode and KFmode.
5793         (extend<mode>tf2_internal): New insns to mark an explicit
5794         conversion between 128-bit floating point types that have a
5795         different mode but share the same representation.
5797 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
5799         PR tree-optimization/85814
5800         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
5801         a null return from get_strinfo when unsharing the next
5802         strinfo in the chain.
5804 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
5806         PR gcc/84923
5807         * varasm.c (weak_finish): Clean up weak_decls.
5809 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5811         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
5812         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
5813         UNSPEC_UADALP values.
5814         * config/aarch64/iterators.md (ABAL): New int iterator.
5815         (ABDL2): Likewise.
5816         (ADALP): Likewise.
5817         (sur): Add mappings for the above.
5818         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
5819         New define_insn.
5820         (aarch64_<sur>abal<mode>_4): Likewise.
5821         (aarch64_<sur>adalp<mode>_3): Likewise.
5822         (<sur>sadv16qi): New define_expand.
5824 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
5826         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
5827         (*movdf_internal): Ditto.
5828         (*rcpsf2_sse): Ditto.
5829         (*rsqrtsf2_sse): Ditto.
5830         (*sqrt<mode>2_sse): Ditto.
5832 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
5834         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
5835         eor3q<mode>4.
5836         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
5837         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
5838         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
5839         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
5840         vbcaxq_s64): New.
5841         * config/aarch64/arm_neon.h: Likewise.
5842         * config/aarch64/iterators.md (VQ_I): New.
5844 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
5846         * config.gcc: Add arc/t-multilib-linux to tmake_file for
5847         arc*-*-linux*.
5848         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
5849         MULTILIB_DIRNAMES
5851 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
5853         * config/nds32/constraints.md (S): New constraint.
5854         * config/nds32/nds32.md (call_internal): Use constraint S.
5855         (call_value_internal): Likewise.
5856         (sibcall_internal): Likewise.
5857         (sibcall_value_internal): Likewise.
5859 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
5860             Chung-Ju Wu  <jasonwucj@gmail.com>
5862         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
5863         into consideration.
5865 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
5866             Chung-Ju Wu  <jasonwucj@gmail.com>
5868         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
5869         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
5870         (nds32_rtx_costs_impl): Simplify.
5871         (nds32_address_cost_impl): Simplify.
5872         (nds32_init_rtx_costs): New function.
5873         (nds32_rtx_costs_speed_prefer): Likewise.
5874         (nds32_rtx_costs_size_prefer): Likewise.
5875         (nds32_address_cost_speed_prefer): Likewise.
5876         (nds32_address_cost_speed_fwprop): Likewise.
5877         (nds32_address_cost_size_prefer): Likewise.
5878         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
5879         * config/nds32/nds32.c (nds32_option_override): Use
5880         nds32_init_rtx_costs function.
5882 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
5884         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
5885         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
5886         (TARGET_PIPELINE_N8): Likewise.
5887         (TARGET_PIPELINE_N10): Likewise.
5888         (TARGET_PIPELINE_N13): Likewise.
5889         (TARGET_PIPELINE_GRAYWOLF): Likewise.
5891 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
5893         * config/nds32/nds32-fpu.md: Update copyright year.
5895 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5897         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
5899 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5901         * config/nds32/nds32.c
5902         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
5903         * config/nds32/nds32.opt (minline-asm-r15): New option.
5905 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5907         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
5908         MASK_HW_ABS.
5909         * config/nds32/nds32.md (abssi2): New pattern.
5911 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
5913         * config/i386/i386.md (rex64namesuffix): New mode attribute.
5914         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
5915         Merge insn pattern from sse_cvtsi2ss<round_name> and
5916         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
5917         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
5918         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
5919         using SWI48 mode iterator.
5920         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
5921         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
5922         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
5923         pattern from sse_cvttss2si<round_saeonly_name>
5924         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
5925         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
5926         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
5927         using SWI48 mode iterator.
5928         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
5929         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
5930         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
5931         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
5932         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
5933         using SWI48 mode iterator.
5934         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
5935         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
5936         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
5937         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
5938         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
5939         SWI48 mode iterator.
5940         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
5941         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
5942         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
5943         pattern from sse_cvttsd2si<round_saeonly_name>
5944         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
5946 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5948         * config/nds32/nds32-md-auxiliary.c
5949         (nds32_valid_smw_lwm_base_p): Refine.
5950         (nds32_output_smw_single_word): Refine.
5951         (nds32_output_smw_double_word): New.
5952         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
5954 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5956         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
5957         (nds32_output_stack_pop): Refine.
5958         (nds32_expand_unaligned_load): Refine.
5959         (nds32_expand_unaligned_store): Refine.
5961 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5962             Chung-Ju Wu  <jasonwucj@gmail.com>
5964         * config/nds32/constants.md: Add TP_REGNUM constant.
5965         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
5966         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
5967         UNSPEC_ADD32.
5968         * config/nds32/nds32-doubleword.md: Consider flag_pic.
5969         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
5970         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
5971         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
5972         and PIC code generation.
5973         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
5974         code generation.
5975         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
5976         optimization.
5977         * config/nds32/nds32.md: Support TLS and PIC.
5978         * config/nds32/nds32.c: Support TLS and PIC.
5979         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
5980         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
5981         predicate.
5983 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5985         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
5986         mode with E_ prefix.
5988 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5989             Chung-Ju Wu  <jasonwucj@gmail.com>
5991         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
5992         * config/nds32/nds32-md-auxiliary.c
5993         (symbolic_reference_mentioned_p): New.
5994         (nds32_legitimize_ict_address): New.
5995         (nds32_expand_ict_move): New.
5996         (nds32_indirect_call_referenced_p): New.
5997         (nds32_symbol_binds_local_p): Delete.
5998         (nds32_long_call_p): Modify.
5999         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
6000         * config/nds32/nds32-protos.h
6001         (symbolic_reference_mentioned_p): Declare.
6002         (nds32_legitimize_ict_address): Declare.
6003         (nds32_expand_ict_move): Declare.
6004         (nds32_indirect_call_referenced_p): Declare.
6005         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
6006         (nds32_relax_group): Use nds32_ict_const_p as condition.
6007         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
6008         (nds32_asm_file_start): Output ict_model directive in asm code.
6009         (nds32_legitimate_address_p): Consider indirect call.
6010         (nds32_print_operand): Consider indirect call.
6011         (nds32_print_operand_address): Consider indirect call.
6012         (nds32_insert_attributes): Handle "indirect_call" attribute.
6013         (TARGET_LEGITIMATE_ADDRESS_P): Define.
6014         (TARGET_LEGITIMATE_CONSTANT_P): Define.
6015         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
6016         (TARGET_DELEGITIMIZE_ADDRESS): Define.
6017         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
6018         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
6019         (TARGET_ICT_MODEL_SMALL): Define.
6020         (TARGET_ICT_MODEL_LARGE): Define.
6021         * config/nds32/nds32.md (movsi): Consider ict model.
6022         (call, call_value): Consider ict model.
6023         (sibcall, sibcall_value): Consider ict model.
6024         * config/nds32/nds32.opt (mict-model): New option.
6025         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
6026         model.
6028 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
6029             Monk Chiang  <sh.chiang04@gmail.com>
6030             Jim Wilson <jimw@sifive.com>
6032         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
6033         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
6034         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
6035         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
6036         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
6037         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
6038         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
6039         compute save_libcall_adjustment properly.
6040         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
6041         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
6042         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
6043         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
6044         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
6045         (ABI_SPEC): Handle mabi=ilp32e.
6046         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
6047         (RVE): Add RVE mask.
6048         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
6049         <-march>: Add rv32e as an example.
6051 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
6053         PR c++/82899
6054         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
6055         (intra_create_variable_infos): Handle C++ constructors.
6057 2018-05-18  Martin Liska  <mliska@suse.cz>
6059         * passes.def: Remove a redundant pass.
6061 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
6063         PR bootstrap/85838
6064         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
6066 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6068         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
6069         (ARMv4): Update.
6070         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
6071         (ARMv6m): Update.
6072         (armv2, armv2a, armv3, armv3m): Delete architectures.
6073         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
6074         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
6075         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
6076         Delete cpus.
6077         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
6078         (*mulsidi3adddi): Likewise.
6079         (mulsidi3): Likewise.
6080         (*mulsidi3_nov6): Likewise.
6081         (umulsidi3): Likewise.
6082         (umulsidi3_nov6): Likewise.
6083         (umaddsidi4): Likewise.
6084         (*umulsidi3adddi): Likewise.
6085         (smulsi3_highpart): Likewise.
6086         (*smulsi3_highpart_nov6): Likewise.
6087         (umulsi3_highpart): Likewise.
6088         (*umulsi3_highpart_nov6): Likewise.
6089         * config/arm/arm.h (arm_arch3m): Delete.
6090         * config/arm/arm.c (arm_arch3m): Delete.
6091         (arm_option_override_internal): Update armv3-related comment.
6092         (arm_configure_build_target): Delete use of isa_bit_mode32.
6093         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
6094         (arm_rtx_costs_internal): Delete check of arm_arch3m.
6095         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
6096         (mulsa3): Likewise.
6097         (mulusa3): Likewise.
6098         * config/arm/arm-protos.h (arm_arch3m): Delete.
6099         * config/arm/arm-tables.opt: Regenerate.
6100         * config/arm/arm-tune.md: Likewise.
6101         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
6102         deleted architectures.
6104 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6106         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
6107         (armv5t, armv5te): New features.
6108         (ARMv5, ARMv5e): Delete fgroups.
6109         (ARMv5t, ARMv5te): Adjust for above changes.
6110         (ARMv6m): Likewise.
6111         (armv5, armv5e): Delete arches.
6112         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
6113         arm_arch5.
6114         (*call_reg_arm): Likewise.
6115         (*call_value_reg_armv5): Likewise.
6116         (*call_value_reg_arm): Likewise.
6117         (*call_symbol): Likewise.
6118         (*call_value_symbol): Likewise.
6119         (*sibcall_insn): Likewise.
6120         (*sibcall_value_insn): Likewise.
6121         (clzsi2): Likewise.
6122         (prefetch): Likewise.
6123         (define_split and define_peephole2 dependent on arm_arch5):
6124         Likewise.
6125         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
6126         arm_arch5e.
6127         (TARGET_ARM_QBIT): Likewise.
6128         (TARGET_DSP_MULTIPLY): Likewise.
6129         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
6130         (arm_arch5, arm_arch5e): Delete.
6131         (arm_arch5t, arm_arch5te): Declare.
6132         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
6133         (arm_arch5t): Declare.
6134         (arm_option_reconfigure_globals): Update for the above.
6135         (arm_options_perform_arch_sanity_checks): Update comment, replace
6136         use of arm_arch5 with arm_arch5t.
6137         (use_return_insn): Likewise.
6138         (arm_emit_call_insn): Likewise.
6139         (output_return_instruction): Likewise.
6140         (arm_final_prescan_insn): Likewise.
6141         (arm_coproc_builtin_available): Likewise.
6142         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
6143         arm_arch5e with arm_arch5t and arm_arch5te.
6144         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
6145         (arm_arch5t, arm_arch5te): Declare.
6146         * config/arm/arm-tables.opt: Regenerate.
6147         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
6148         * config/arm/t-multilib: Likewise.
6149         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
6150         instead of arm_arch5.
6151         (*call_reg_thumb1): Likewise.
6152         (*call_value_reg_thumb1_v5): Likewise.
6153         (*call_value_reg_thumb1): Likewise.
6154         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
6155         unreachable path.
6156         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
6158 2018-05-18  Martin Liska  <mliska@suse.cz>
6160         PR gcov-profile/84846
6161         * doc/gcov.texi: Document -t option of gcov tool.
6163 2018-05-18  Martin Liska  <mliska@suse.cz>
6165         PR gcov-profile/84846
6166         * gcov.c (print_usage): Add new -t option.
6167         (process_args): Handle the option.
6168         (generate_results): Use stdout as output when requested by
6169         the option.
6171 2018-05-18  Martin Liska  <mliska@suse.cz>
6173         PR gcov-profile/84846
6174         * coverage.c (coverage_init): Write PWD to .gcno file.
6175         * doc/gcov.texi: Document how working directory is printed.
6176         * gcov-dump.c (dump_gcov_file): Print PWD.
6177         * gcov.c (output_intermediate_file): Likewise.
6178         (read_graph_file): Read PWD string.
6179         (output_lines): Print PWD.
6181 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6183         PR middle-end/85817
6184         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
6185         for retval and return false if all args to phi are zero.
6187 2018-05-18  Richard Biener  <rguenther@suse.de>
6189         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
6190         method.
6191         (evrp_dom_walker::before_dom_children): Call it.
6193 2018-05-18  Richard Biener  <rguenther@suse.de>
6195         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
6196         results when processing array refs with variable index.
6198 2018-05-18  Toon Moene  <toon@moene.org>
6200         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
6201         directly after that of -floop-interchange. Indicate that both
6202         options are enabled by default when specifying -O3.
6204 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6206         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
6207         iterator.  Delete separate integer-mode vec_set<mode> expander.
6208         (aarch64_simd_vec_setv2di): Delete.
6209         (vec_setv2di): Delete.
6210         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
6211         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
6212         the "w, r" alternative.
6214 2018-05-18  Martin Liska  <mliska@suse.cz>
6216         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
6217         * tree-pass.h (make_pass_lower_switch_O0): New function.
6218         * tree-switch-conversion.c (node_has_low_bound): Remove.
6219         (node_has_high_bound): Likewise.
6220         (node_is_bounded): Likewise.
6221         (class pass_lower_switch): Make it a template type and create
6222         two instances.
6223         (pass_lower_switch::execute): Add template argument.
6224         (make_pass_lower_switch): New function.
6225         (make_pass_lower_switch_O0): New function.
6226         (do_jump_if_equal): Remove.
6227         (emit_case_nodes): Simplify to just handle all 3 cases and leave
6228         all the hard work to tree optimization passes.
6230 2018-05-18  Martin Liska  <mliska@suse.cz>
6232         * dbgcnt.c (limit_low): Renamed from limit.
6233         (limit_high): New variable.
6234         (dbg_cnt_is_enabled): Check for upper limit.
6235         (dbg_cnt): Adjust dumping.
6236         (dbg_cnt_set_limit_by_index): Add new argument for high
6237         value.
6238         (dbg_cnt_set_limit_by_name): Likewise.
6239         (dbg_cnt_process_single_pair): Parse new format.
6240         (dbg_cnt_process_opt): Use strtok.
6241         (dbg_cnt_list_all_counters): Remove 'value' and add
6242         'limit_high'.
6243         * doc/invoke.texi: Document changes.
6245 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
6247         * doc/sourcebuild.texi (scalar_all_fma): Document.
6248         * tree.def (FMA_EXPR): Delete.
6249         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
6250         * internal-fn.c (ternary_direct): New macro.
6251         (expand_ternary_optab_fn): Likewise.
6252         (direct_ternary_optab_supported_p): Likewise.
6253         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
6254         * builtins.c (fold_builtin_fma): Delete.
6255         (fold_builtin_3): Don't call it.
6256         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
6257         * expr.c (expand_expr_real_2): Likewise.
6258         * fold-const.c (operand_equal_p): Likewise.
6259         (fold_ternary_loc): Likewise.
6260         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
6261         * gimple.c (DEFTREECODE): Likewise.
6262         * gimplify.c (gimplify_expr): Likewise.
6263         * optabs-tree.c (optab_for_tree_code): Likewise.
6264         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
6265         * tree-eh.c (operation_could_trap_p): Likewise.
6266         (stmt_could_throw_1_p): Likewise.
6267         * tree-inline.c (estimate_operator_cost): Likewise.
6268         * tree-pretty-print.c (dump_generic_node): Likewise.
6269         (op_code_prio): Likewise.
6270         * tree-ssa-loop-im.c (stmt_cost): Likewise.
6271         * tree-ssa-operands.c (get_expr_operands): Likewise.
6272         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
6273         * fold-const-call.h (fold_fma): Delete.
6274         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
6275         CFN_FNMA and CFN_FNMS.
6276         (fold_fma): Delete.
6277         * genmatch.c (combined_fn): New enum.
6278         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
6279         (commutative_op): New function.
6280         (commutate): Use it.  Handle more than 2 operands.
6281         (dt_operand::gen_gimple_expr): Use commutative_op.
6282         (parser::parse_expr): Allow :c to be used with non-binary
6283         operators if the commutative operand is known.
6284         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
6285         CFN_FMS, CFN_FNMA and CFN_FNMS.
6286         (backprop::process_assign_use): Remove FMA_EXPR handling.
6287         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
6288         (gen_hsa_fma): New function.
6289         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
6290         IFN_FNMA and IFN_FNMS.
6291         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
6292         * gimple-fold.h (follow_all_ssa_edges): Declare.
6293         * gimple-fold.c (follow_all_ssa_edges): New function.
6294         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
6295         gimple_build interface and use follow_all_ssa_edges to fold the result.
6296         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
6297         instead of checking for optabs directly.
6298         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
6299         rather than FMA_EXPRs.
6300         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
6301         call to IFN_FMA instead of an FMA_EXPR.
6303 2018-05-17  Jim Wilson  <jimw@sifive.com>
6305         * expr.c (do_tablejump): When converting index to Pmode, if we have a
6306         sign extended promoted subreg, and the range does not have the sign bit
6307         set, then do a sign extend.
6309         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
6310         test, check for sign extended subreg and/or constant operands, and
6311         do a sign extend in that case.
6313 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
6315         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
6316         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
6317         Add untyped.
6318         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
6319         Change logics_shift_reg to logics_shift_imm.
6320         (thunderx2t99_fp_loadpair_basic): Delete.
6321         (thunderx2t99_fp_storepair_basic): Delete.
6322         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
6323         (thunderx2t99_asimd_polynomial): Delete.
6324         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
6325         and neon_fp_mul_d_scalar_q.
6326         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
6327         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
6328         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
6329         (thunderx2t99_asimd_lut): Add missing tbl types.
6330         (thunderx2t99_asimd_ext): Delete.
6331         (thunderx2t99_asimd_load1_1_mult): Delete.
6332         (thunderx2t99_asimd_load1_2_mult): Delete.
6333         (thunderx2t99_asimd_load1_ldp): New.
6334         (thunderx2t99_asimd_load1): New.
6335         (thunderx2t99_asimd_load2): Add missing *load2* types.
6336         (thunderx2t99_asimd_load3): New.
6337         (thunderx2t99_asimd_load4): New.
6338         (thunderx2t99_asimd_store1_1_mult): Delete.
6339         (thunderx2t99_asimd_store1_2_mult): Delete.
6340         (thunderx2t99_asimd_store2_mult): Delete.
6341         (thunderx2t99_asimd_store2_onelane): Delete.
6342         (thunderx2t99_asimd_store_stp): New.
6343         (thunderx2t99_asimd_store1): New.
6344         (thunderx2t99_asimd_store2): New.
6345         (thunderx2t99_asimd_store3): New.
6346         (thunderx2t99_asimd_store4): New.
6348 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
6350         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
6351         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
6353 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
6354             Segher Boessenkool  <segher@kernel.crashing.org>
6356         PR target/85698
6357         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
6358         operand.
6360 2018-05-17  Richard Biener  <rguenther@suse.de>
6362         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
6363         for pruning loop and prune defs feeding only already visited PHIs.
6365 2018-05-17  Richard Biener  <rguenther@suse.de>
6367         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
6369 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
6370             Richard Biener  <rguenther@suse.de>
6372         PR tree-optimization/85793
6373         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
6374         for VMAT_ELEMENTWISE.
6376 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
6378         * internal-fn.h (lookup_internal_fn): Declare
6379         * internal-fn.c (lookup_internal_fn): New function.
6380         * gimple.c (gimple_build_call_from_tree): Handle calls to
6381         internal functions.
6382         * gimple-pretty-print.c (dump_gimple_call): Print "." before
6383         internal function names.
6384         * tree-pretty-print.c (dump_generic_node): Likewise.
6385         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
6387 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
6389         * gimple-fold.h (gimple_build): Make the function forms take
6390         combined_fn rather than built_in_function.
6391         (gimple_simplify): Likewise.
6392         * gimple-match-head.c (gimple_simplify): Likewise.
6393         * gimple-fold.c (gimple_build): Likewise.
6394         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
6395         rather than gimple_build_call_internal.
6396         (get_initial_defs_for_reduction): Likewise.
6397         (vect_create_epilog_for_reduction): Likewise.
6398         (vectorizable_live_operation): Likewise.
6400 2018-05-17  Martin Liska  <mliska@suse.cz>
6402         * gimple-ssa-sprintf.c (format_directive): Do not use
6403         space in between 'G_' and '('.
6405 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
6407         PR target/85323
6408         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
6409         even if the mask is not all ones.
6411         PR target/85323
6412         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
6413         vector.
6414         (ix86_gimple_fold_builtin): Likewise.
6416         PR target/85323
6417         * config/i386/i386.c: Include tree-vector-builder.h.
6418         (ix86_vector_shift_count): New function.
6419         (ix86_fold_builtin): Fold shift builtins by scalar count.
6420         (ix86_gimple_fold_builtin): Likewise.
6422         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
6423         _mm512_setzero): New intrinsics.
6425 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
6426             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6428         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
6429         code generation for cases where splatting a value is not useful.
6430         * simplify-rtx.c (simplify_ternary_operation): Simplify
6431         vec_merge across a vec_duplicate and a paradoxical subreg forming
6432         a vector mode to a vec_concat.
6434 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
6436         * config.gcc: Support "goldmont-plus".
6437         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
6438         "goldmont-plus".
6439         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6440         PROCESSOR_GOLDMONT_PLUS.
6441         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
6442         (processor_target_table): Add "goldmont-plus".
6443         (PTA_GOLDMONT_PLUS): Define.
6444         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
6445         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
6446         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
6447         (fold_builtin_cpu): Add "goldmont-plus".
6448         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
6449         (ix86_option_override_internal): Add "goldmont-plus".
6450         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
6451         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
6452         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
6453         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
6455 2018-05-17  Richard Biener  <rguenther@suse.de>
6457         PR tree-optimization/85757
6458         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
6459         remove defs that only feed that PHI from further processing.
6461 2018-05-16  Jim Wilson  <jimw@sifive.com>
6463         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
6464         asterisk to name.
6465         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
6467 2018-05-16  Mark Wielaard  <mark@klomp.org>
6469         * dwarf2out.c (count_index_strings): New function.
6470         (output_indirect_strings): Call count_index_strings and generate
6471         header for dwarf_version >= 5.
6473 2018-05-16  Mark Wielaard  <mark@klomp.org>
6475         * dwarf2out.c (dwarf_FORM): New function.
6476         (set_indirect_string): Use dwarf_FORM.
6477         (reset_indirect_string): Likewise.
6478         (size_of_die): Likewise.
6479         (value_format): Likewise.
6480         (output_die): Likewise.
6481         (add_skeleton_AT_string): Likewise.
6482         (output_macinfo_op): Likewise.
6483         (index_string): Likewise.
6484         (output_index_string_offset): Likewise.
6485         (output_index_string): Likewise.
6486         (count_index_strings): Likewise.
6488 2018-05-16  Carl Love  <cel@us.ibm.com>
6490         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
6491         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
6493 2018-05-16  Martin Jambor  <mjambor@suse.cz>
6495         * ipa-prop.c (ipa_free_all_edge_args): Remove.
6496         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
6498 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
6500         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
6501         (fnma<mode>4): Likewise.
6502         (fms<mode>4): Likewise.
6503         (fnms<mode>4): Likewise.
6504         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
6505         (aarch64_fnma<mode>4): Likewise.
6506         (aarch64_fms<mode>4): Likewise.
6507         (aarch64_fnms<mode>4): Likewise.
6508         (aarch64_fnmadd<mode>4): Likewise.
6510 2018-05-16  Jason Merrill  <jason@redhat.com>
6512         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
6514 2018-05-16  Richard Biener  <rguenther@suse.de>
6516         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
6517         (dump_stmt_cost): Declare.
6518         (add_stmt_cost): Dump cost we add.
6519         (add_stmt_costs): New function.
6520         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
6521         No longer exported.
6522         (vect_analyze_stmt): Adjust prototype.
6523         (vectorizable_condition): Likewise.
6524         (vectorizable_live_operation): Likewise.
6525         (vectorizable_reduction): Likewise.
6526         (vectorizable_induction): Likewise.
6527         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
6528         cost vector to pass to vectorizable_ and record afterwards.
6529         (vect_model_reduction_cost): Take cost vector argument and adjust.
6530         (vect_model_induction_cost): Likewise.
6531         (vectorizable_reduction): Likewise.
6532         (vectorizable_induction): Likewise.
6533         (vectorizable_live_operation): Likewise.
6534         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
6535         SLP_TREE_NUMBER_OF_VEC_STMTS.
6536         (vect_analyze_slp_cost_1): Remove.
6537         (vect_analyze_slp_cost): Likewise.
6538         (vect_slp_analyze_node_operations): Take visited args and
6539         a target cost vector.  Avoid processing already visited stmt sets.
6540         (vect_slp_analyze_operations): Use a local cost vector to gather
6541         costs and register those of non-discarded instances.
6542         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
6543         (vect_schedule_slp_instance): Remove copying of
6544         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
6545         zero.
6546         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
6547         adding cost.  Record cost entry location.
6548         (vect_prologue_cost_for_slp_op): Function to compute cost of
6549         a constant or invariant generated for SLP vect in the prologue,
6550         split out from vect_analyze_slp_cost_1.
6551         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
6552         (vect_model_promotion_demotion_cost): Likewise.
6553         (vect_model_store_cost): Likewise, make static.
6554         (vect_model_load_cost): Likewise.
6555         (vectorizable_bswap): Add cost vector arg and adjust.
6556         (vectorizable_call): Likewise.
6557         (vectorizable_simd_clone_call): Likewise.
6558         (vectorizable_conversion): Likewise.
6559         (vectorizable_assignment): Likewise.
6560         (vectorizable_shift): Likewise.
6561         (vectorizable_operation): Likewise.
6562         (vectorizable_store): Likewise.
6563         (vectorizable_load): Likewise.
6564         (vectorizable_condition): Likewise.
6565         (vectorizable_comparison): Likewise.
6566         (can_vectorize_live_stmts): Likewise.
6567         (vect_analyze_stmt): Likewise.
6568         (vect_transform_stmt): Adjust calls to vectorizable_*.
6569         * tree-vectorizer.c: Include gimple-pretty-print.h.
6570         (dump_stmt_cost): New function.
6572 2018-05-16  Richard Biener  <rguenther@suse.de>
6574         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
6575         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
6576         * tree-ssa-dse.c: Include tree-ssa-loop.h.
6577         (check_name): New callback.
6578         (dse_classify_store): Track cycles via a visited bitmap of PHI
6579         defs and simplify handling of in-loop and across loop dead stores
6580         and properly fail for loop-variant refs.  Handle byte-tracking with
6581         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
6582         limiting the walk.
6584 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
6586         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
6587         (vect_get_mask_type_for_stmt): Likewise.
6588         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
6589         split out from...
6590         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
6591         to determine the statement's vector type and the vector type that
6592         should be used for calculating nunits.  Deal with cases in which
6593         the type has to be deferred.
6594         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
6595         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
6596         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
6597         (vect_determine_vf_for_stmt): New functions, split out from...
6598         (vect_determine_vectorization_factor): ...here.
6599         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
6600         (vect_get_mask_type_for_stmt): New functions, split out from
6601         vect_determine_vectorization_factor.
6603 2018-05-16  Richard Biener  <rguenther@suse.de>
6605         * tree-cfg.c (verify_gimple_assign_ternary): Properly
6606         verify the [VEC_]COND_EXPR embedded comparison.
6608 2018-05-15  Martin Sebor  <msebor@redhat.com>
6610         PR tree-optimization/85753
6611         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
6612         RECORD_TYPE in addition to ARRAY_TYPE.
6614 2018-05-15  Martin Sebor  <msebor@redhat.com>
6616         PR middle-end/85643
6617         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
6619 2018-05-15  Richard Biener  <rguenther@suse.de>
6621         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
6622         add by_clobber_p one.  Change algorithm to collect all defs
6623         representing uses we need to walk and try reducing them to
6624         a single one before failing.
6625         (dse_dom_walker::dse_optimize_stmt): Adjust.
6627 2018-05-13  Mark Wielaard  <mark@klomp.org>
6629         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
6630         (size_of_loc_descr): Likewise.
6631         (output_loc_operands): Likewise.
6632         (output_loc_operands_raw): Likewise.
6633         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
6634         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
6635         (hash_loc_operands): Likewise.
6636         (compare_loc_operands): Likewise.
6638 2018-05-14  Mark Wielaard  <mark@klomp.org>
6640         * dwarf2out.c (count_index_addrs): New function.
6641         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
6643 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6645         PR tree-optimization/83648
6646         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
6647         return value as malloc candidate.
6649 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6651         PR ipa/85734
6652         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
6653         param as true in call to suggest_attribute.
6655 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
6657         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
6658         -mreadonly-in-sdata.
6660 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6662         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
6663         New pattern.
6664         (aarch64_crypto_aesd_fused): Likewise.
6666 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
6668         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
6669         (movsi_aarch64): Likewise.
6670         (load_pairsi): Likewise.
6671         (load_pairdi): Likewise.
6672         (store_pairsi): Likewise.
6673         (store_pairdi): Likewise.
6674         (load_pairsf): Likewise.
6675         (load_pairdf): Likewise.
6676         (store_pairsf): Likewise.
6677         (store_pairdf): Likewise.
6678         (zero_extend): Likewise.
6679         (trunc): Swap alternatives.
6680         (fcvt_target): Add '?' to prefer w over r.
6682 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
6684         PR target/85756
6685         * config/i386/i386.md: Disallow non-commutative arithmetics in
6686         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
6687         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
6688         in the peephole2 before it.
6690 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
6692         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
6693         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
6694         (ix86_handle_option): Handle -mcldemote.
6695         * config.gcc: New header.
6696         * config/i386/cldemoteintrin.h: New file.
6697         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
6698         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
6699         -mcldemote.
6700         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6701         OPTION_MASK_ISA_CLDEMOTE.
6702         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
6703         (ix86_valid_target_attribute_inner_p): Ditto.
6704         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
6705         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
6706         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
6707         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
6708         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
6709         (cldemote): New.
6710         * config/i386/i386.opt: Add -mcldemote.
6711         * config/i386/x86intrin.h: New header.
6712         * doc/invoke.texi: Add -mcldemote.
6714 2018-05-14  Richard Biener  <rguenther@suse.de>
6716         * doc/match-and-simplify.texi: Adjust :s documentation.
6718 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
6720         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
6721         intended memcpy size.
6722         (REORDER_45): Likewise.
6724 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
6726         * sort.cc: New file.
6727         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
6728         * vec.c (qsort_chk): Use gcc_qsort.
6729         * Makefile.in (OBJS-libcommon): Add sort.o.
6730         (build/sort.o): New target.  Use it...
6731         (BUILD_RTL): ... here, and...
6732         (build/gencfn-macros): ... here, and...
6733         (build/genmatch): ... here.
6735 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6736             Chung-Ju Wu  <jasonwucj@gmail.com>
6738         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
6739         * config/nds32/nds32-graywolf.md: New file.
6740         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
6741         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
6742         pipeline.
6743         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
6744         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
6745         * config/nds32/nds32.md (pipeline_model): Add graywolf.
6746         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
6747         * config/nds32/pipelines.md: Include n15 settings.
6749 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6750             Chung-Ju Wu  <jasonwucj@gmail.com>
6752         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
6753         * config/nds32/nds32-n13.md: New file.
6754         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
6755         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
6756         pipeline.
6757         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
6758         * config/nds32/nds32.md (pipeline_model): Add n13.
6759         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
6760         * config/nds32/pipelines.md: Include n13 settings.
6762 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6763             Chung-Ju Wu  <jasonwucj@gmail.com>
6765         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
6766         * config/nds32/nds32-n10.md: New file.
6767         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
6768         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
6769         pipeline.
6770         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
6771         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
6772         * config/nds32/nds32.md (pipeline_model): Add n10.
6773         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
6774         * config/nds32/pipelines.md: Include n10 settings.
6776 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
6777             Kito Cheng  <kito.cheng@gmail.com>
6778             Chung-Ju Wu  <jasonwucj@gmail.com>
6780         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
6781         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6782         Add enum values for DSP extension instructions.
6783         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
6784         New constraints.
6785         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
6786         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
6787         New code iterators.
6788         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
6789         * config/nds32/nds32-dspext.md: New file for DSP implementation.
6790         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
6791         * config/nds32/nds32-intrinsic.md: Likewise.
6792         * config/nds32/nds32_intrinsic.h: Likewise.
6793         * config/nds32/nds32-md-auxiliary.c: Likewise.
6794         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
6795         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
6796         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
6797         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
6798         * config/nds32/nds32-protos.h: New declarations for DSP extension.
6799         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
6800         TYPE_DMAC in switch statement.
6801         * config/nds32/nds32.c: New checking and implementation for DSP
6802         extension instructions.
6803         * config/nds32/nds32.h: Likewise.
6804         * config/nds32/nds32.md: Likewise.
6805         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
6806         * config/nds32/predicates.md: Implement new predicates for DSP
6807         extension.
6809 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
6811         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
6812         Reformat alternatives and attributes so it is easier to identify
6813         which constraints/attributes go with which instruction.
6814         (mov<mode>_hardfloat32, FMOVE64): Likewise.
6815         (mov<mode>_softfloat32, FMOVE64): Likewise.
6816         (mov<mode>_hardfloat64, FMOVE64): Likewise.
6817         (mov<mode>_softfloat64, FMOVE64): Likewise.
6819 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6821         * doc/extend.texi (PowerPC Built-in Functions): Rename this
6822         subsection.
6823         (Basic PowerPC Built-in Functions): The new name of the
6824         subsection previously known as "PowerPC Built-in Functions".
6825         (Basic PowerPC Built-in Functions Available on all Configurations):
6826         New subsubsection.
6827         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
6828         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
6829         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
6830         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
6832 2018-05-11  Martin Jambor  <mjambor@suse.cz>
6834         PR ipa/85655
6835         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
6836         single const.
6838 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
6840         PR target/85733
6841         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
6843 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
6845         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
6846         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
6847         (ix86_handle_option): Handle -mwaitpkg.
6848         * config.gcc: New header.
6849         * config/i386/cpuid.h (bit_WAITPKG): New bit.
6850         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
6851         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
6852         function type.
6853         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6854         OPTION_MASK_ISA_WAITPKG.
6855         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
6856         (ix86_option_override_internal): Add PTA_WAITPKG.
6857         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
6858         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
6859         IX86_BUILTIN_TPAUSE.
6860         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
6861         __builtin_ia32_umwait and __builtin_ia32_tpause.
6862         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
6863         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
6864         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
6865         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
6866         UNSPECV_TPAUSE): New.
6867         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
6868         * config/i386/i386.opt: Add -mwaitpkg.
6869         * config/i386/waitpkgintrin.h: New file.
6870         * config/i386/x86intrin.h: New header.
6871         * doc/invoke.texi: Add -mwaitpkg.
6873 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
6875         PR target/85606
6876         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
6877         equivalent.
6878         (cortex-m0): Use armv6s-m isa.
6879         (cortex-m0plus): Likewise.
6880         (cortex-m1): Likewise.
6881         (cortex-m0.small-multiply): Likewise.
6882         (cortex-m0plus.small-multiply): Likewise.
6883         (cortex-m1.small-multiply): Likewise.
6885 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
6886             Jakub Jelinek  <jakub@redhat.com>
6888         PR tree-optimization/85692
6889         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
6890         source permute as well.
6892 2018-05-11  Martin Liska  <mliska@suse.cz>
6894         PR sanitizer/85556
6895         * doc/extend.texi: Document LLVM style format for no_sanitize
6896         attribute.
6898 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6900         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
6901         mode_supports_vsx_dform_quad to mode_supports_dq_form.
6902         (mode_supports_vsx_dform_quad): Likewise.
6903         (mode_supports_vmx_dform): Move these functions to be next to the
6904         other mode_supports functions.
6905         (mode_supports_dq_form): Likewise.
6906         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
6907         mode_supports_dq_form.
6908         (reg_offset_addressing_ok_p): Likewise.
6909         (offsettable_ok_by_alignment): Likewise.
6910         (rs6000_legitimate_offset_address_p): Likewise.
6911         (legitimate_lo_sum_address_p): Likewise.
6912         (rs6000_legitimize_address): Likewise.
6913         (rs6000_legitimize_reload_address): Likewise.
6914         (rs6000_secondary_reload_inner): Likewise.
6915         (rs6000_preferred_reload_class): Likewise.
6916         (rs6000_output_move_128bit): Likewise.
6918 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6920         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
6921         Generate SImode target register for null target.
6922         <case IX86_BUILTIN_XGETBV>: Ditto.
6923         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
6924         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
6926 2018-05-10  Carl Love  <cel@us.ibm.com>
6928         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
6929         dcbtt and dcbtstt if operands[2] is 0.
6931 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6933         PR target/85693
6934         * config/i386/sse.md (usadv64qi): New expander.
6936 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
6938         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
6939         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
6940         -maltivec=be support.
6941         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
6942         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
6943         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
6944         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
6945         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
6946         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
6947         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
6948         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
6949         altivec_vsumsws): Adjust.
6950         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
6951         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
6952         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
6953         support.
6954         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
6955         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
6956         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
6957         (altivec_lve<VI_char>x): Delete expand.
6958         (*altivec_lve<VI_char>x_internal): Rename to...
6959         (altivec_lve<VI_char>x): ... this.
6960         (altivec_lvxl_<mode>): Delete expand.
6961         (*altivec_lvxl_<mode>_internal): Rename to ...
6962         (altivec_lvxl_<mode>): ... this.
6963         (altivec_stvxl_<mode>): Delete expand.
6964         (*altivec_stvxl_<mode>_internal): Rename to ...
6965         (altivec_stvxl_<mode>): ... this.
6966         (altivec_stve<VI_char>x): Delete expand.
6967         (*altivec_stve<VI_char>x_internal): Rename to ...
6968         (altivec_stve<VI_char>x): ... this.
6969         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
6970         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
6971         reduc_plus_scal_<mode>): Adjust.
6972         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
6973         comment.
6974         (rs6000_cpu_cpp_builtins): Adjust.
6975         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
6976         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
6977         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
6978         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
6979         -maltivec=be support.
6980         (rs6000_split_vec_extract_var): Adjust.
6981         (rs6000_split_v4si_init): Adjust.
6982         (swap_selector_for_mode): Delete.
6983         (altivec_expand_lvx_be, altivec_expand_stvx_be,
6984         altivec_expand_stvex_be): Delete.
6985         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
6986         -maltivec=be support.
6987         (rs6000_gimple_fold_builtin): Ditto.
6988         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
6989         Adjust.
6990         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
6991         (TARGET_DIRECT_MOVE_64BIT): Adjust.
6992         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
6993         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
6994         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
6995         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
6996         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
6997         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
6998         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
6999         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
7000         anonymous split): Adjust.
7001         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
7002         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
7004 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
7006         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
7007         when --with-gxx-include-dir is also specified.
7008         * configure: Regenerate.
7010 2018-05-09  Jim Wilson  <jimw@sifive.com>
7012         PR target/84797
7013         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
7014         * config/riscv/t-withmultilib: New.
7015         * config/riscv/withmultilib.h: New.
7016         * doc/install.texi: Document RISC-V --with-multilib-list support.
7018 2018-05-09  Richard Biener  <rguenther@suse.de>
7020         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
7021         vector.
7022         (vect_bb_vectorization_profitable_p): Adjust.  Compute
7023         actual scalar cost using the cost vector and the add_stmt_cost
7024         machinery.
7026 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
7028         PR rtl-optimization/85645
7029         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
7030         in the REG_CFA_REGISTER note for LR, don't leave it empty.
7032 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
7034         PR rtl-optimization/85645
7035         * shrink-wrap.c (spread_components): Return a boolean saying if
7036         anything was changed.
7037         (try_shrink_wrapping_separate): Iterate spread_components until
7038         nothing changes anymore.
7040 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
7042         PR rtl-optimization/85645
7043         * regrename.c (build_def_use): Also kill the chains that include the
7044         destination of a REG_CFA_REGISTER note.
7046 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
7048         PR rtl-optimization/85645
7049         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
7050         insn that has a REG_CFA_REGISTER note.
7052 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
7054         * cfgexpand.c (expand_clobber): New function.
7055         (expand_gimple_stmt_1): Use it.
7056         * tree-vect-stmts.c (vect_clobber_variable): New function,
7057         split out from...
7058         (vectorizable_simd_clone_call): ...here.
7059         (vectorizable_store): Emit a clobber either side of an
7060         IFN_STORE_LANES sequence.
7061         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
7063 2018-05-09  Tom de Vries  <tom@codesourcery.com>
7065         PR target/85626
7066         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
7067         (define_insn "trap_if_false"): Add exit after trap.
7069 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
7071         PR rtl-optimization/85638
7072         * bb-reorder.c: Include common/common-target.h.
7073         (create_forwarder_block): New function extracted from...
7074         (fix_up_crossing_landing_pad): ...here.  Rename into...
7075         (dw2_fix_up_crossing_landing_pad): ...this.
7076         (sjlj_fix_up_crossing_landing_pad): New function.
7077         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
7078         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
7079         from both partitions and exit the loop after one iteration.
7081 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7083         Revert:
7084         * doc/extend.texi (PowerPC Built-in Functions): Rename this
7085         subsection.
7086         (Basic PowerPC Built-in Functions): The new name of the
7087         subsection previously known as "PowerPC Built-in Functions".
7088         (Basic PowerPC Built-in Functions Available on all Configurations):
7089         New subsubsection.
7090         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
7091         subsubsection.
7092         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
7093         subsubsection.
7094         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
7095         subsubsection.
7096         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
7097         subsubsection.
7099 2018-05-08  Jim Wilson  <jimw@sifive.com>
7101         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
7102         (LD_EMUL_SUFFIX): New.
7103         (LINK_SPEC): Use it.
7105 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7107         * doc/extend.texi (PowerPC Built-in Functions): Rename this
7108         subsection.
7109         (Basic PowerPC Built-in Functions): The new name of the
7110         subsection previously known as "PowerPC Built-in Functions".
7111         (Basic PowerPC Built-in Functions Available on all Configurations):
7112         New subsubsection.
7113         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
7114         subsubsection.
7115         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
7116         subsubsection.
7117         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
7118         subsubsection.
7119         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
7120         subsubsection.
7122 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
7124         PR target/85683
7125         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
7126         after cmpelim optimization.
7128 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
7130         * config.gcc: Support "goldmont".
7131         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
7132         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
7133         PROCESSOR_GOLDMONT.
7134         * config/i386/i386.c (m_GOLDMONT): Define.
7135         (processor_target_table): Add "goldmont".
7136         (PTA_GOLDMONT): Define.
7137         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
7138         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
7139         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
7140         (fold_builtin_cpu): Add "goldmont".
7141         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
7142         (ix86_option_override_internal): Add "goldmont".
7143         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
7144         (processor_type): Add PROCESSOR_GOLDMONT.
7145         * config/i386/i386.md: Add CPU "glm".
7146         * config/i386/glm.md: New file.
7147         * config/i386/x86-tune.def: Add m_GOLDMONT.
7148         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
7150 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
7152         PR target/85572
7153         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
7154         E_V4DImode.
7155         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
7156         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
7157         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
7159         PR target/85317
7160         * config/i386/i386.c (ix86_fold_builtin): Handle
7161         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
7163         PR target/85480
7164         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
7165         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
7167 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
7169         PR target/85658
7170         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
7171         (check_arch): Likewise.
7172         (check_fpu): Return the result rather than printing it.
7173         (end arch): Fix operator precedence.
7174         (end cpu): Likewise.
7175         (END): Print the result from check_fpu.
7177 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
7178             Alan Hayward  <alan.hayward@arm.com>
7179             David Sherwood  <david.sherwood@arm.com>
7181         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
7182         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
7183         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
7184         (*fcmuo<mode>_and): New patterns.
7186 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
7188         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
7189         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
7190         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
7191         (cmp_op, sve_imm_con): New code attributes.
7192         (SVE_COND_INT_CMP, imm_con): Delete.
7193         (cmp_op): Remove above unspecs from int attribute.
7194         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
7195         to...
7196         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
7197         comparison-specific unspecs.
7198         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
7199         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
7200         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
7201         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
7202         (*vec_fcm<cmp_op><mode>): Rename to...
7203         (*fcm<cmp_op><mode>): ...this and adjust likewise.
7204         (*vec_fcmuo<mode>): Rename to...
7205         (*fcmuo<mode>): ...this and adjust likewise.
7206         (*pred_fcm<cmp_op><mode>): New pattern.
7207         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
7208         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
7209         functions.
7210         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
7211         and UNORDERED.
7212         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
7213         (aarch64_emit_sve_predicated_cond): New function.
7214         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
7215         (aarch64_emit_unspec_cond_or): Replace with...
7216         (aarch64_emit_sve_or_conds): ...this new function.  Use
7217         aarch64_emit_sve_ptrue_op for the individual comparisons and
7218         aarch64_emit_binop to OR them together.
7219         (aarch64_emit_inverted_unspec_cond): Replace with...
7220         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
7221         aarch64_emit_sve_ptrue_op for the comparison and
7222         aarch64_emit_unop to invert the result.
7223         (aarch64_expand_sve_vec_cmp_float): Update after the above
7224         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
7226 2018-05-07  Nathan Sidwell  <nathan@acm.org>
7228         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
7229         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
7230         (Backwards Compatibility): Likewise.
7232 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7234         PR bootstrap/85681
7235         Revert:
7236         2018-05-07  Luis Machado  <luis.machado@linaro.org>
7238         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7239         <prefetch_dynamic_strides>: New const bool field.
7240         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7241         prefetch_dynamic_strides.
7242         (exynosm1_prefetch_tune): Likewise.
7243         (thunderxt88_prefetch_tune): Likewise.
7244         (thunderx_prefetch_tune): Likewise.
7245         (thunderx2t99_prefetch_tune): Likewise.
7246         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
7247         to false.
7248         (aarch64_override_options_internal): Update to set
7249         PARAM_PREFETCH_DYNAMIC_STRIDES.
7250         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
7251         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
7252         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
7253         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
7254         prefetch-dynamic-strides setting.
7256         2018-05-07  Luis Machado  <luis.machado@linaro.org>
7258         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7259         <minimum_stride>: New const int field.
7260         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7261         minimum_stride field.
7262         (exynosm1_prefetch_tune): Likewise.
7263         (thunderxt88_prefetch_tune): Likewise.
7264         (thunderx_prefetch_tune): Likewise.
7265         (thunderx2t99_prefetch_tune): Likewise.
7266         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
7267         (aarch64_override_options_internal): Update to set
7268         PARAM_PREFETCH_MINIMUM_STRIDE.
7269         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
7270         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
7271         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
7272         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
7273         stride is constant and is below the minimum stride threshold.
7275 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7277         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
7278         to 512.
7280 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7282         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7283         <prefetch_dynamic_strides>: New const bool field.
7284         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7285         prefetch_dynamic_strides.
7286         (exynosm1_prefetch_tune): Likewise.
7287         (thunderxt88_prefetch_tune): Likewise.
7288         (thunderx_prefetch_tune): Likewise.
7289         (thunderx2t99_prefetch_tune): Likewise.
7290         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
7291         to false.
7292         (aarch64_override_options_internal): Update to set
7293         PARAM_PREFETCH_DYNAMIC_STRIDES.
7294         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
7295         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
7296         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
7297         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
7298         prefetch-dynamic-strides setting.
7300 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7302         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7303         <minimum_stride>: New const int field.
7304         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7305         minimum_stride field.
7306         (exynosm1_prefetch_tune): Likewise.
7307         (thunderxt88_prefetch_tune): Likewise.
7308         (thunderx_prefetch_tune): Likewise.
7309         (thunderx2t99_prefetch_tune): Likewise.
7310         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
7311         (aarch64_override_options_internal): Update to set
7312         PARAM_PREFETCH_MINIMUM_STRIDE.
7313         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
7314         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
7315         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
7316         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
7317         stride is constant and is below the minimum stride threshold.
7319 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
7321         PR c++/85659
7322         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
7323         the type is addressable.  Don't force op into register if it has
7324         BLKmode.
7326 2018-05-05  Roland McGrath  <mcgrathr@google.com>
7328         PR other/77609
7329         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
7330         any section for which we don't know a specific type it should have,
7331         regardless of name.  Previously this was done only for the exact
7332         names ".init_array", ".fini_array", and ".preinit_array".
7333         (default_elf_asm_named_section): Add comment about
7334         relationship with default_section_type_flags and SECTION_NOTYPE.
7335         (get_section): Don't consider it a type conflict if one side has
7336         SECTION_NOTYPE and the other doesn't, as long as neither has the
7337         SECTION_BSS et al used in the default_section_type_flags logic.
7339 2018-05-05  Tom de Vries  <tom@codesourcery.com>
7341         PR target/85653
7342         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
7343         (workaround_barsyncs): New function.
7344         (nvptx_reorg): Use workaround_barsyncs.
7345         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
7346         (define_expand "nvptx_membar_cta"): New define_expand.
7347         (define_insn "*nvptx_membar_cta"): New insn.
7349 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
7351         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
7352         To improve optimization opportunities.
7353         * builtin-types.def: The new needed builtin types for the above.
7355 2018-05-04  Richard Biener  <rguenther@suse.de>
7357         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
7358         * gimple-ssa-store-merging.c
7359         (imm_store_chain_info::output_merged_store): Remove redundant create,
7360         release split_store vector contents on failure.
7361         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
7362         scalar stmt vector on cache hit.
7364 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
7366         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
7367         Xilinx FP support.
7368         * config.gcc (powerpc-xilinx-eabi*): Remove.
7369         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
7370         support.
7371         (fusion_addis_mem_combo_load): Ditto.
7372         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
7373         FP support.
7374         (rs6000_cpu_cpp_builtins): Ditto.
7375         * config/rs6000/rs6000-linux.c
7376         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
7377         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
7378         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
7379         support.
7380         (rs6000_setup_reg_addr_masks): Ditto.
7381         (rs6000_init_hard_regno_mode_ok): Ditto.
7382         (rs6000_option_override_internal): Ditto.
7383         (legitimate_lo_sum_address_p): Ditto.
7384         (rs6000_legitimize_address): Ditto.
7385         (rs6000_legitimize_reload_address): Ditto.
7386         (rs6000_legitimate_address_p): Ditto.
7387         (abi_v4_pass_in_fpr): Ditto.
7388         (setup_incoming_varargs): Ditto.
7389         (rs6000_gimplify_va_arg): Ditto.
7390         (rs6000_split_multireg_move): Ditto.
7391         (rs6000_savres_strategy): Ditto.
7392         (rs6000_emit_prologue_components): Ditto.
7393         (rs6000_emit_epilogue_components): Ditto.
7394         (rs6000_emit_prologue): Ditto.
7395         (rs6000_emit_epilogue): Ditto.
7396         (rs6000_elf_file_end): Ditto.
7397         (rs6000_function_value): Ditto.
7398         (rs6000_libcall_value): Ditto.
7399         * config/rs6000/rs6000.h: Ditto.
7400         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
7401         (TARGET_MINMAX): ... this.  New.
7402         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
7403         * config/rs6000/rs6000.md: Remove Xilinx FP support.
7404         (*movsi_internal1_single): Delete.
7405         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
7406         mfpu=, mxilinx-fpu): Delete.
7407         * config/rs6000/singlefp.h: Delete.
7408         * config/rs6000/sysv4.h: Remove Xilinx FP support.
7409         * config/rs6000/t-rs6000: Ditto.
7410         * config/rs6000/t-xilinx: Delete.
7411         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
7412         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
7413         (VStype_simple): Delete.
7414         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
7415         * config/rs6000/xfpu.h: Delete.
7416         * config/rs6000/xfpu.md: Delete.
7417         * config/rs6000/xilinx.h: Delete.
7418         * config/rs6000/xilinx.opt: Delete.
7419         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
7420         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
7422 2018-05-04  Tom de Vries  <tom@codesourcery.com>
7424         PR libgomp/85639
7425         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
7426         if ignore == 0.
7428 2018-05-04  Richard Biener  <rguenther@suse.de>
7430         PR middle-end/85627
7431         * tree-complex.c (update_complex_assignment): We are always in SSA form.
7432         (expand_complex_div_wide): Likewise.
7433         (expand_complex_operations_1): Likewise.
7434         (expand_complex_libcall): Preserve EH info of the original stmt.
7435         (tree_lower_complex): Handle removed blocks.
7436         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
7437         on complex multiplication and division libcall builtins.
7439 2018-05-04  Richard Biener  <rguenther@suse.de>
7441         PR middle-end/85574
7442         * fold-const.c (negate_expr_p): Restrict negation of operand
7443         zero of a division to when we know that can happen without
7444         overflow.
7445         (fold_negate_expr_1): Likewise.
7447 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
7449         PR libstdc++/85466
7450         * real.h (real_nextafter): Declare.
7451         * real.c (real_nextafter): New function.
7452         * fold-const-call.c (fold_const_nextafter): New function.
7453         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
7454         CASE_CFN_NEXTTOWARD.
7455         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
7456         even when arg1_mode is different from arg0_mode.
7458 2018-05-03  Nathan Sidwell  <nathan@acm.org>
7460         * doc/extend.texi (Deprecated Features): Remove
7461         -ffriend-injection.
7462         (Backwards Compatibility): Likewise.
7463         * doc/invoke.texi (C++ Language Options): Likewise.
7464         (C++ Dialect Options): Likewise.
7466 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
7468         PR target/85530
7469         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
7470         _mm512_mask_mullox_epi64): New intrinsics.
7472 2018-05-03  Tom de Vries  <tom@codesourcery.com>
7474         PR testsuite/85106
7475         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7476         dump files): Add offload-tree.
7478 2018-05-03  Richard Biener  <rguenther@suse.de>
7480         PR tree-optimization/85615
7481         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
7482         to loops not nested in BBs loop father to avoid creating multi-entry
7483         loops.
7485 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7487         PR tree-optimization/70291
7488         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
7489         arguments.  Change return type to tree.  Emit libcall as a new
7490         statement rather than replacing existing one when inplace_p is true.
7491         (expand_complex_multiplication_components): New function.
7492         (expand_complex_multiplication): Expand floating-point complex
7493         multiplication using the above.
7494         (expand_complex_division): Rename inner_type parameter to type.
7495         Update expand_complex_libcall call-site.
7496         (expand_complex_operations_1): Update expand_complex_multiplication
7497         and expand_complex_division call-sites.
7499 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
7501         PR target/85582
7502         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
7503         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
7504         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
7505         the highest significant bit of the shift count mask is clear.  In
7506         check whether and[sq]i3 is needed verify that all significant bits
7507         of the shift count other than the highest are set.
7509 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7511         PR libgomp/82428
7512         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
7513         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
7514         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
7515         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
7516         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
7517         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
7518         __builtin_goacc_parlevel_size.
7520 2018-05-02  Richard Biener  <rguenther@suse.de>
7522         PR tree-optimization/85597
7523         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
7524         do not use split vect_get_vec_defs call but call vect_get_slp_defs
7525         directly.
7527 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7529         PR testsuite/85106
7530         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7531         dump files): Add ltrans-tree.
7533 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7535         PR testsuite/85106
7536         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7537         dump files): Add wpa-ipa.
7539 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
7541         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
7542         powerpc*-*-linux*paired* target.
7543         * config/rs6000/750cl.h: Delete.
7544         * config/rs6000/paired.h: Delete.
7545         * config/rs6000/paired.md: Delete.
7546         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
7547         float support.
7548         * config/rs6000/rs6000-builtin.def: Remove paired float support.
7549         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
7550         comment.  Remove paired float support.
7551         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
7552         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
7553         VECTOR_PAIRED.
7554         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
7555         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
7556         declarations.
7557         * config/rs6000/rs6000.c: Remove paired float support.
7558         (paired_expand_vector_init, paired_expand_vector_move,
7559         paired_emit_vector_compare, paired_emit_vector_cond_expr,
7560         (paired_expand_lv_builtin, paired_expand_stv_builtin,
7561         paired_expand_builtin, paired_expand_predicate_builtin,
7562         paired_init_builtins): Delete.
7563         * config/rs6000/rs6000.h: Remove paired float support.
7564         * config/rs6000/rs6000.md: Remove paired float support.
7565         (move_from_CR_ov_bit): Delete.
7566         * config/rs6000/rs6000.opt (mpaired): Delete.
7567         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
7568         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
7570 2018-05-02  Richard Biener  <rguenther@suse.de>
7572         PR middle-end/85567
7573         * gimplify.c (gimplify_save_expr): When in SSA form allow
7574         SAVE_EXPRs to compute to SSA vars.
7576 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
7578         PR target/85582
7579         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
7580         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
7581         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
7582         clobber operands[2], instead use a new pseudo.  Formatting fixes.
7584 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
7586         PR tree-optimization/85586
7587         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
7588         exit early for statements in the same group if the accesses are
7589         not strided.
7591 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7593         PR lto/85451
7594         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
7595         error message.
7597 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
7599         PR tree-optimization/85143
7600         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
7602 2018-05-01  Tom de Vries  <tom@codesourcery.com>
7604         PR lto/85451
7605         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
7606         not found" error message.
7608 2018-05-01  Tom de Vries  <tom@codesourcery.com>
7610         PR other/83786
7611         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
7612         * vec.c (test_ordered_remove_if): New function.
7613         (vec_c_tests): Call test_ordered_remove_if.
7614         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
7615         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
7616         * tree-vect-patterns.c (vect_pattern_recog_1): Use
7617         VEC_ORDERED_REMOVE_IF.
7619 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
7621         PR tree-optimization/82665
7622         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
7623         pointer subtraction where arguments come from a memchr call.
7625 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
7627         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
7628         --push-state --as-needed and --pop-state instead of --as-needed and
7629         --no-as-needed if ld supports it.
7630         * configure: Regenerated.
7632         PR web/85578
7633         * doc/install.texi2html: Replace _002d with - and _002a with * in
7634         generated html files using sed.
7636 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7638         PR c++/85523
7639         * gcc-rich-location.c (blank_line_before_p): New function.
7640         (use_new_line): New function.
7641         (gcc_rich_location::add_fixit_insert_formatted): New function.
7642         * gcc-rich-location.h
7643         (gcc_rich_location::add_fixit_insert_formatted): New function.
7645 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7647         * selftest.c (assert_streq): Rename "expected" and "actual" to
7648         "val1" and "val2".  Extend NULL-handling to cover both inputs
7649         symmetrically, while still requiring both to be non-NULL for a pass.
7650         * selftest.h (assert_streq): Rename "expected" and "actual" to
7651         "val1" and "val2".
7652         (ASSERT_EQ): Likewise.
7653         (ASSERT_EQ_AT): Likewise.
7654         (ASSERT_KNOWN_EQ): Likewise.
7655         (ASSERT_KNOWN_EQ_AT): Likewise.
7656         (ASSERT_NE): Likewise.
7657         (ASSERT_MAYBE_NE): Likewise.
7658         (ASSERT_MAYBE_NE_AT): Likewise.
7659         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
7660         the assertion to pass.
7661         (ASSERT_STREQ_AT): Likewise.
7663 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
7665         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
7666         interaction with -pie.
7668 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7670         * selftest.h: Fix alphabetization of per-source-file selftest
7671         declarations.
7673 2018-04-30  Jason Merrill  <jason@redhat.com>
7675         PR c++/61982 - dead stores to destroyed objects.
7676         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
7677         of clobber.
7679 2018-04-30  Jason Merrill  <jason@redhat.com>
7681         * tree.c (build_clobber): New.
7682         * tree.h: Declare it.
7683         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
7685 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7687         * diagnostic-show-locus.c (layout::layout): Update for
7688         location_get_source_line returning a char_span.
7689         (struct char_span): Move to input.h.
7690         (struct correction): Update for fields in char_span becoming
7691         private.
7692         (struct source_line): Update for location_get_source_line
7693         returning a char_span.
7694         (layout::print_line): Likewise.
7695         * edit-context.c (edited_file::print_content): Likewise.
7696         (edited_file::print_diff_hunk): Likewise.
7697         (edited_file::print_run_of_changed_lines): Likewise.
7698         (edited_file::get_num_lines): Likewise.
7699         (edited_line::edited_line): Likewise.
7700         * final.c (asm_show_source): Likewise.
7701         * input.c (location_get_source_line): Convert return type
7702         from const char * to char_span, losing the final "line_len"
7703         param.
7704         (dump_location_info): Update for the above.
7705         (get_substring_ranges_for_loc): Likewise.  Use a char_span
7706         when handling the literal within the line.
7707         (test_reading_source_line): Update for location_get_source_line
7708         returning a char_span.
7709         * input.h (class char_span): Move here from
7710         diagnostic-show-locus.c, converting from a struct to a class.
7711         Make data members private.
7712         (char_span::operator bool): New.
7713         (char_span::length): New.
7714         (char_span::get_buffer): New.
7715         (char_span::operator[]): New.
7716         (char_span::subspan): Make const.
7717         (char_span::xstrdup): New.
7718         (location_get_source_line): Convert return type from const char *
7719         to char_span, losing the final "line_size" param.
7721 2018-04-30  Jan Hubicka  <jh@suse.cz>
7723         * lto-wrapper.c (ltrans_priorities): New static var.
7724         (cmp_priority): New.
7725         (run_gcc): Read priorities and if doing parallel build order
7726         the Makefile by them.
7728 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7730         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
7732 2018-04-30  Richard Biener  <rguenther@suse.de>
7734         * tree-cfg.c (verify_address): Remove base argument, add
7735         flag whether to check TREE_ADDRESSABLE and do that.
7736         (verify_expr): Remove.
7737         (verify_types_in_gimple_reference): Add pieces from verify_expr.
7738         (verify_gimple_assign_single): Likewise.
7739         (verify_gimple_switch): Likewise.
7740         (verify_expr_location_1): Dereference tp once.  Add (disabled)
7741         piece from verify_expr.
7742         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
7744 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7746         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
7748 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7750         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
7751         (small_data_pattern): Likewise.
7752         (arc_rewrite_small_data): Likewise.
7753         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
7754         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
7755         (get_symbol_alignment): New function.
7756         (legitimate_small_data_address_p): Likewise.
7757         (legitimate_scaled_address): Update, call
7758         legitimate_small_data_address_p.
7759         (output_sdata): New static variable.
7760         (arc_print_operand): Update how we handle small data operands.
7761         (arc_print_operand_address): Likewise.
7762         (arc_legitimate_address_p): Update, use
7763         legitimate_small_data_address_p.
7764         (arc_rewrite_small_data_p): Remove.
7765         (arc_rewrite_small_data_1): Likewise.
7766         (arc_rewrite_small_data): Likewise.
7767         (small_data_pattern): Likewise.
7768         (compact_sda_memory_operand): Update to use
7769         legitimate_small_data_address_p and get_symbol_alignment.
7770         (prepare_move_operands): Don't rewite sdata pattern.
7771         (prepare_extend_operands): Remove.
7772         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
7773         pattern.
7774         (zero_extendqisi2): Likewise.
7775         (zero_extendhisi2): Likewise.
7776         (extendqihi2): Likewise.
7777         (extendqisi2): Likewise.
7778         (extendhisi2): Likewise.
7779         (addsi3): Likewise.
7780         (subsi3): Likewise.
7781         (andsi3): Likewise.
7782         * config/arc/constraints.md (Usd): Change it to memory constraint.
7784 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7786         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
7787         as source of std instructions.
7788         * config/arc/arc.md (movsi_insn): Update pattern predicate to
7789         allow 6-bit constants as source for store instructions.
7790         (movdi_insn): Update instruction pattern to allow 6-bit constants
7791         as source for store instructions.
7793 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
7795         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
7797 2018-04-30  Nathan Sidwell  <nathan@acm.org>
7798             Sandra Loosemore <sandra@codesourcery.com>
7800         * dumpfile.c (dump_open): Allow '-' for stdout.
7801         * doc/invoke.texi (Developer Options): Document dump filename
7802         determination early.  Document stdin/stdout selection.
7804 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
7806         Microblaze Target: PIC data text relative
7808         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
7809         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
7810         Add declaration.
7811         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
7812         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
7813         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
7814         New addressing mode for data-text relative position indepenedent code.
7815         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
7816         'ADDRESS_SYMBOLIC_TXT_REL'.
7817         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
7818         (microblaze_legitimate_pic_operand): Exclude function calls from
7819         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
7820         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
7821         addresses cases.
7822         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
7823         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
7824         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
7825         for 'address + offset'.
7826         (microblaze_expand_prologue): Add new function prologue call for
7827         'r20' assignation.
7828         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
7829         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
7830         table in case of TARGET_PIC_DATA_TEXT_REL.
7831         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
7832         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
7833         Add new macros 'UNSPEC_TEXT',
7834         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
7835         + exclude function calls from 'UNSPEC_PLT' in case of data text
7836         relative mode.
7837         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
7838         new target hook for generating address diff vector tables in case of
7839         flag_pic.
7840         * doc/tm.texi : Regenerate.
7841         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
7842         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
7843         of addr diff vector generation.
7844         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
7845         target hook definition.
7846         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
7847         Add default function for generate_pic_addr_diff_vec -> flag_pic.
7848         * doc/invoke.texi (Add new pic option): Add new microblaze pic
7849         option for data text relative.
7851 2018-04-30  Richard Biener  <rguenther@suse.de>
7853         * tree-chrec.h (evolution_function_is_constant_p): Remove
7854         redundant check.
7855         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
7857 2018-04-30  Richard Biener  <rguenther@suse.de>
7859         PR bootstrap/85571
7860         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
7862 2018-04-30  Richard Biener  <rguenther@suse.de>
7864         PR tree-optimization/28364
7865         PR tree-optimization/85275
7866         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
7867         copying first exit test.
7869 2018-04-28  Mark Wielaard  <mark@klomp.org>
7871         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
7872         dwarf_version >= 5.
7873         (dwarf_AT): Handle DW_AT_addr_base.
7874         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
7876 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
7878         PR target/84431
7879         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
7880         (*ashl<dwi>3_doubleword_mask_1): Ditto.
7881         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
7882         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
7884 2018-04-28  Richard Biener  <rguenther@suse.de>
7886         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
7887         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
7888         to reflect use.  Only add interesting stmts.
7890 2018-04-27  Martin Jambor  <mjambor@suse.cz>
7892         PR ipa/85549
7893         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
7894         the jump function allows for passing through aggregate values.
7896 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
7898         * input.h (in_system_header_at): Convert from macro to inline
7899         function.
7900         (from_macro_expansion_at): Likewise.
7901         (from_macro_definition_at): Likewise.
7903 2018-04-27  Jeff Law  <law@redhat.com>
7905         * config.gcc: Mark tile* targets as deprecated/obsolete.
7907 2018-04-27  Richard Biener  <rguenther@suse.de>
7909         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
7910         fix for ILP32.
7912 2018-04-27  Richard Biener  <rguenther@suse.de>
7914         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
7916 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
7918         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
7919         with Yd constraint. Set "preferred_for_speed" attribute from
7920         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
7921         with Yd constraint.
7922         (*movdi_internal): Ditto.
7923         (movti_interunit splitters): Remove
7924         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
7925         (movdi_interunit splitters): Ditto.
7926         * config/i386/constraints.md (Ye): Remove.
7927         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
7929 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7931         PR target/85512
7932         * config/aarch64/constraints.md (Usg): Limit to 31.
7933         (Usj): Limit to 63.
7935 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
7937         PR tree-optimization/85529
7938         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
7939         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
7940         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
7941         zero extension or masking of the MSB bit.
7942         (optimize_range_tests): Add FIRST_BB argument, pass it through
7943         to optimize_range_tests_var_bound.
7944         (maybe_optimize_range_tests, reassociate_bb): Adjust
7945         optimize_range_tests callers.
7947 2018-04-26  Richard Biener  <rguenther@suse.de>
7948             Jakub Jelinek  <jakub@redhat.com>
7950         * cgraph.h (symbol_table): Just declare debug method here.
7951         * symtab.c (symbol_table::debug): Define.
7953 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
7955         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
7957 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
7959         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
7960         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
7961         (*movdi_internal): Substitute Yi and Yj constraint with x
7962         and Ym and Yn constraint with y constraint.  Update "isa"
7963         attribute and set "preferred_for_speed" attribute from
7964         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
7965         (*movsi_internal): Ditto.
7966         (*movdf_internal): Ditto.
7967         (*movsf_internal): Ditto.
7968         (*zero_extendsidi2): Ditto.
7969         * config/i386/sse.md (vec_set<mode>_0): Ditto.
7970         (sse2_loadld): Ditto.
7971         (*vec_extract<ssevecmodelower>_0): Ditto.
7972         (*vec_extractv4si_0_zext_sse4): Ditto.
7973         (vec_concatv2di): Ditto.
7974         (*vec_dup<mode>): Ditto.
7975         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
7976         * config/i386/constraints.md (Yi): Remove.
7977         (Yj): Remove.
7978         (Ym): Remove.
7979         (Yn): Remove.
7981 2018-04-26  Nathan Sidwell  <nathan@acm.org>
7983         * dumpfile.c (dump_open): New.
7984         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
7985         (dump_finish): Detect stdio/stderr by value not name.
7987 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
7989         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
7991 2018-04-26  Tom de Vries  <tom@codesourcery.com>
7993         PR target/84952
7994         * config/nvptx/nvptx.c (verify_neutering_jumps)
7995         (verify_neutering_labels): New function
7996         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
7998 2018-04-26  Tom de Vries  <tom@codesourcery.com>
8000         PR target/84025
8001         * config/nvptx/nvptx.c (needs_neutering_p): New function.
8002         (nvptx_single): Use needs_neutering_p to skip over insns that do not
8003         need neutering.
8005 2018-04-26  Richard Biener <rguenther@suse.de>
8006             Tom de Vries  <tom@codesourcery.com>
8008         PR lto/85422
8009         * lto-streamer-out.c (output_function): Fixup loops if required to match
8010         discovery done in the reader.
8012 2018-04-26  Richard Biener  <rguenther@suse.de>
8014         PR tree-optimization/85116
8015         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
8016         have a loop exit from the single latch predecessor.  Remove
8017         case of header with just condition.
8018         (ch_base::copy_headers): Exclude infinite loops from any
8019         processing.
8020         (pass_ch::execute): Record exits.
8022 2018-04-26  Richard Biener  <rguenther@suse.de>
8024         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
8025         prologue cost vector and pass it to vect_get_load_cost.
8026         (vect_get_peeling_costs_all_drs): Likewise.
8027         (vect_peeling_hash_get_lowest_cost): Likewise.
8028         (vect_enhance_data_refs_alignment): Likewise.
8030 2018-04-26  Richard Biener  <rguenther@suse.de>
8032         PR middle-end/85450
8033         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
8034         checking of integer<->pointer conversions.
8035         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
8036         sign-/zero-extending pointer types.
8037         (expand_omp_for_static_chunk): Likewise.
8039 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
8040             Jean Lee  <xiaoyur347@gmail.com>
8042         * config/mips/mips.c (mips_asan_shadow_offset): New function.
8043         (TARGET_ASAN_SHADOW_OFFSET): Define.
8044         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
8045         true for -fsanitize=address.
8047 2018-04-25  Mark Wielaard  <mark@klomp.org>
8049         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
8050         shorter ones.
8052 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
8054         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
8055         than "alu", remove explicit "memory" and "imm_disp" attributes.
8056         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
8058         PR middle-end/85414
8059         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
8060         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
8061         gen_lowpart_no_emit.
8063 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
8065         PR target/85473
8066         * config/i386/i386.c (ix86_expand_builtin): Change memory
8067         operand to XI, extend p0 to Pmode.
8068         * config/i386/i386.md: Change unspec volatile and operand
8069         1 mode to XI, change operand 0 mode to P.
8071 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8073         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
8074         GET_MODE_MASK before any checking.
8075         (nds32_can_use_bset_p): Likewise.
8076         (nds32_can_use_btgl_p): Likewise.
8078 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8080         * config/nds32/nds32-doubleword.md: New define_split pattern for
8081         illegal register number.
8083 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8085         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
8087 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8089         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
8091 2018-04-25  Richard Biener  <rguenther@suse.de>
8093         * lto-streamer.h (LTO_major_version): Bump to 8.
8095 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
8097         * BASE-VER: Set to 9.0.0.
8099 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
8101         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
8102         in __abskf2 and __powikf2.
8104 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8106         PR target/85512
8107         * config/aarch64/constraints.md (Usg, Usj): New constraints.
8108         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
8109         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
8110         Use the above on operand 2.  Reindent.
8111         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
8113 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
8115         PR target/85485
8116         * common/config/i386/i386-common.c (ix86_handle_option): Don't
8117         handle OPT_mcet.
8118         * config/i386/i386.opt (mcet): Removed.
8119         * doc/install.texi: Remove -mcet documentation.
8120         * doc/invoke.texi: Likewise.
8122 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
8124         PR target/85485
8125         * doc/install.texi: Remove -mcet from bootstrap-cet.
8127 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8129         PR target/85511
8130         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
8131         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
8132         if TARGET_64BIT.
8134         PR target/85503
8135         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
8136         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
8137         containing a CONST_VECTOR.
8139 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
8141         * doc/install.texi: Update newlib dependency for nvptx.
8143 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8145         PR target/85508
8146         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
8147         instead of INTVAL when shifting x left.
8149 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
8151         PR tree-optimization/85478
8152         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
8153         vect_grouped_store_supported for single element vectors.
8155 2018-04-24  Richard Biener  <rguenther@suse.de>
8157         PR target/85491
8158         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
8159         load cost increase to the case of non-constant step.
8161 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8163         PR target/84828
8164         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
8165         destination if any_malformed_asm.
8167 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
8169         PR middle-end/85496
8170         * expr.c (store_field): In the bitfield case, if the value comes from
8171         a function call and is returned in registers by means of a PARALLEL,
8172         do not change the mode of the temporary unless BLKmode and VOIDmode.
8174 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
8176         PR rtl-optimization/85423
8177         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
8178         dependencies to debug insns when the previous insn is non-debug.
8180 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
8182         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
8183         enums into a single definition.
8184         (fls): Fix predicates and printing.
8185         (seti): Likewise.
8187 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
8189         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
8190         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
8191         and short u6 immediate.
8192         (check_if_valid_sleep_operand): Remove.
8193         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
8195 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8197         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
8198         flag_always_save_lp condition.
8199         * config/nds32/nds32.opt (malways-save-lp): New option.
8201 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8203         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
8204         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
8205         * config/nds32/nds32.h
8206         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
8207         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
8209 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8211         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
8212         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
8214 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8215             Chung-Ju Wu  <jasonwucj@gmail.com>
8217         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
8218         Declare.
8219         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
8220         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
8222 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8224         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
8226 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8228         * config/nds32/nds32-protos.h (nds32_data_alignment,
8229         nds32_local_alignment): Declare.
8230         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
8231         nds32_local_alignment): New functions.
8232         (TARGET_CONSTANT_ALIGNMENT): Define.
8233         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
8235 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8237         * config/nds32/nds32.c
8238         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
8239         (TARGET_MODES_TIEABLE_P): Likewise.
8241 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8243         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
8244         level Ofast and Og.
8246 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
8247             Chung-Ju Wu  <jasonwucj@gmail.com>
8249         * config/nds32/constants.md (unspec_volatile_element): Add enum values
8250         for unaligned access.
8251         * config/nds32/nds32-intrinsic.c: Implementation of expanding
8252         unaligned access.
8253         * config/nds32/nds32-intrinsic.md: Likewise.
8254         * config/nds32/nds32_intrinsic.h: Likewise.
8255         * config/nds32/nds32.h (nds32_builtins): Likewise.
8256         * config/nds32/nds32.opt (munaligned-access): New option.
8257         * config/nds32/nds32.c (nds32_asm_file_start): Display
8258         flag_unaligned_access status.
8260 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
8262         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
8263         -mno-relax is present.
8264         * config/riscv/linux.h (LINK_SPEC): Ditto.
8266 2018-04-20  Martin Sebor  <msebor@redhat.com>
8268         PR c/85365
8269         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
8270         for null pointers.
8271         (gimple_fold_builtin_stxcpy_chk): Same.
8272         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
8274 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
8276         PR target/85456
8277         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
8278         __powikf2 when long double is IEEE 128-bit.
8280 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
8282         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
8283         step to make sure stack always aligned.
8285 2018-04-20  Carl Love  <cel@us.ibm.com>
8287         PR target/83402
8288         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
8289         size check for arg0.
8291 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
8292             Tom de Vries  <tom@codesourcery.com>
8294         PR target/85445
8295         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
8296         Emit insns for calls too.
8297         (nvptx_find_par): Always look for worker-level predecessor insn.
8298         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
8299         calls.
8300         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
8301         (nvptx_process_pars): Propagate frames for calls.
8303 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
8305         PR target/85469
8306         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
8307         Removed.
8308         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
8309         (ix86_handle_option): Don't handle OPT_mibt.
8310         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
8311         __SHSTK__.
8312         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
8313         has_ibt and ibt.
8314         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
8315         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
8316         (ix86_target_macros): Define __CET__ with flag_cf_protection
8317         for -fcf-protection.
8318         * config/i386/i386.c (isa2_opts): Remove -mibt.
8319         * config/i386/i386.h (TARGET_IBT): Removed.
8320         (TARGET_IBT_P): Likewise.
8321         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
8322         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
8323         * config/i386/i386.opt (mcet): Update help message.
8324         (mshstk): Likewise.
8325         (mibt): Removed.
8326         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
8327         -mcet as an alias for -mshstk.
8329 2018-04-20  Richard Biener <rguenther@suse.de>
8331         PR middle-end/85475
8332         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
8333         complexity by forcing a single use of the multiply operand.
8335 2018-04-20  Martin Jambor  <mjambor@suse.cz>
8337         ipa/85449
8338         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
8339         recursion dependency to only apply to non-clones.
8341 2018-04-20  Martin Jambor  <mjambor@suse.cz>
8343         ipa/85447
8344         * ipa-cp.c (create_specialized_node): Check that clones of
8345         self-recursive edges exist during IPA-CP.
8347 2018-04-19  Toon Moene  <toon@moene.org>
8349         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
8350         by -O3.
8352 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
8354         PR tree-optimization/85467
8355         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
8356         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
8357         VECTOR_CST element to type.
8359 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8361         PR target/85397
8362         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
8363         * config/i386/i386.md (builtin_setjmp_setup): Removed.
8364         (builtin_longjmp): Likewise.
8365         (save_stack_nonlocal): New pattern.
8366         (restore_stack_nonlocal): Likewise.
8368 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8370         PR target/85404
8371         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
8372         Replace ASM_OUTPUT_LABEL with fprintf.
8374 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8376         PR target/85417
8377         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
8378         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
8379         * config/i386/i386-c.c (ix86_target_macros_internal): Also
8380         define __IBT__ and __SHSTK__ for -fcf-protection.
8381         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
8382         TARGET_IBT.
8383         (ix86_trampoline_init): Likewise.
8384         (x86_output_mi_thunk): Likewise.
8385         (ix86_notrack_prefixed_insn_p): Likewise.
8386         (ix86_option_override_internal): Don't disallow -fcf-protection.
8387         * config/i386/i386.md (rdssp<mode>): Also enable for
8388         -fcf-protection.
8389         (incssp<mode>): Likewise.
8390         (nop_endbr): Likewise.
8391         * config/i386/i386.opt (mcet): Change help message to built-in
8392         functions only.
8393         (mibt): Likewise.
8394         (mshstk): Likewise.
8395         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
8396         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
8397         enable CET built-in functions.
8399 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
8401         * common/config/i386/i386-common.c
8402         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
8403         OPTION_MASK_ISA_MOVDIRI_UNSET,
8404         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
8405         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
8406         * config.gcc (movdirintrin.h): New header.
8407         * config/i386/cpuid.h (bit_MOVDIRI,
8408         bit_MOVDIR64B): New bits.
8409         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
8410         and -mmvodir64b.
8411         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
8412         (VOID, PVOID, PCVOID)): New function types.
8413         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
8414         __builtin_ia32_directstoreu_u64,
8415         __builtin_ia32_movdir64b): New builtins.
8416         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
8417         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
8418         and -mmovdiri.
8419         (ix86_valid_target_attribute_inner_p): Ditto.
8420         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
8421         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
8422         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
8423         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
8424         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
8425         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
8426         (movdiri<mode>, movdir64b_<mode>): New.
8427         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
8428         * config/i386/immintrin.h: Include movdirintrin.h.
8429         * config/i386/movdirintrin.h: New file.
8430         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
8432 2018-04-19  Richard Biener  <rguenther@suse.de>
8434         PR middle-end/85455
8435         * cfg.c (clear_bb_flags): When loop state says we have
8436         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
8438 2018-04-19  Richard Biener  <rguenther@suse.de>
8440         PR tree-optimization/84737
8441         * tree-vect-data-refs.c (vect_copy_ref_info): New function
8442         copying restrict info.
8443         (vect_setup_realignment): Use it.
8444         * tree-vectorizer.h (vect_copy_ref_info): Declare.
8445         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
8446         the first DR to all generated stores.
8447         (vectorizable_load): Likewise for loads.
8449 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
8451         PR tree-optimization/85446
8452         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
8453         the integral and pointer types to have the same precision.
8455         * doc/install.texi: Document --disable-cet being the default and
8456         --enable-cet=auto.
8458 2018-04-18  Martin Liska  <mliska@suse.cz>
8460         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
8461         style.
8463 2018-04-18  Martin Liska  <mliska@suse.cz>
8465         Revert
8466         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8468         PR ipa/83983
8469         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
8470         arguments if they are comparable.
8472 2018-04-18  Martin Liska  <mliska@suse.cz>
8474         Revert
8475         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
8477         PR lto/84805
8478         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
8479         incomplete types.
8481 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
8483         PR target/85388
8484         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
8485         ENDBR after calling __morestack.
8487 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
8489         PR jit/85384
8490         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
8491         by using gcc_base_ver to generate a gcc_driver_version, and use
8492         it when generating GCC_DRIVER_NAME.
8493         * configure: Regenerate.
8495 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
8497         PR target/81084
8498         * config.gcc: Obsolete powerpc*-*-*spe*.
8500 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8502         PR debug/84637
8503         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
8504         (stabstr_D): Change type of unum from unsigned int to
8505         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
8506         type.
8508 2018-04-17  Jim Wilson  <jimw@sifive.com>
8510         PR 84856
8511         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
8512         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
8513         Set arg_pointer_offset after using pretend_args_size.
8515 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8517         PR rtl-optimization/85431
8518         * dse.c (record_store): Ignore zero width stores.
8520         PR sanitizer/85230
8521         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
8522         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
8523         __builtin_stack_restore rather than after it.
8524         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
8525         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
8526         argument instead of virtual_dynamic_stack_rtx.
8528 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8530         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
8531         New prototype.
8532         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
8533         Add note to error message to explain internal mapping of overloaded
8534         built-in function name to non-overloaded built-in function name.
8535         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
8536         function.
8538 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
8540         PR target/85424
8541         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
8542         where the inputs overlap with the output.
8544 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8546         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
8547         (=v, v) alternative and explicit "memory" attribute.
8548         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
8549         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8550         attributes.
8551         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
8552         "sselog1" type instead of "sselog".
8553         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
8554         "sselog".  Remove explicit "memory" attribute.
8555         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
8556         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8557         attributes.
8558         (vec_extract_hi_v32hi): Merge all alternatives into one, use
8559         "sselog1" type instead of "sselog".  Remove explicit "memory"
8560         attribute.
8561         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
8562         use "sselog1" type instead of "sselog".  Remove explicit "memory"
8563         attribute.
8564         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
8565         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8566         attributes.
8567         (vec_extract_hi_v64qi): Merge all alternatives into one, use
8568         "sselog1" type instead of "sselog".  Remove explicit "memory"
8569         attribute.
8570         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
8571         use "sselog1" type instead of "sselog".  Remove explicit "memory"
8572         attribute.
8574         PR target/85430
8575         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
8577         PR middle-end/85414
8578         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
8579         on a SUBREG.
8581 2018-04-17  Martin Jambor  <mjambor@suse.cz>
8583         PR ipa/85421
8584         * ipa-cp.c (create_specialized_node): Call
8585         expand_all_artificial_thunks if necessary.
8587 2018-04-17  Martin Liska  <mliska@suse.cz>
8589         PR lto/85405
8590         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
8591         in message, remote space in between '_G' and '('.
8593 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8595         PR target/85281
8596         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
8597         avx512f_vmcmp<mode>3<round_saeonly_name>,
8598         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
8599         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
8600         avx512f_rndscale<mode><round_saeonly_name>,
8601         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
8602         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
8603         Use %<iptr>2 instead of %2 for -masm=intel.
8604         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
8605         avx512f_vcvttss2usi<round_saeonly_name>,
8606         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
8607         -masm=intel.
8608         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
8609         avx512f_vcvttsd2usi<round_saeonly_name>,
8610         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
8611         Use %q1 instead of %1 for -masm=intel.
8612         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
8613         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
8614         of %3 for -masm=intel.
8615         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
8616         -masm=intel.
8617         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
8618         -masm=intel.
8619         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
8620         -masm=intel.
8621         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
8622         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
8623         %g1.
8624         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
8625         -masm=intel.
8626         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
8627         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
8628         %g1 and one with %0 and %1.
8629         (avx512er_vmrcp28<mode><round_saeonly_name>,
8630         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
8631         %1 for -masm=intel.
8632         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
8633         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
8634         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
8635         of %0 and %{%4%} for -masm=intel.
8636         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
8637         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
8638         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
8639         order of %0 and %{%5%}%{z%} for -masm=intel.
8641 2018-04-17  Jan Hubicka  <jh@suse.cz>
8643         PR lto/85405
8644         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
8646 2018-04-17  Martin Liska  <mliska@suse.cz>
8648         PR ipa/85329
8649         * multiple_target.c (create_dispatcher_calls): Set apostrophes
8650         for target_clone error message.  Make default implementation
8651         clone to be a local declaration.
8652         (separate_attrs): Add new argument and check for an empty
8653         string.
8654         (expand_target_clones): Handle it.
8655         (ipa_target_clone): Make redirection just for target_clones
8656         functions.
8658 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
8659             Tom de Vries  <tom@codesourcery.com>
8661         PR middle-end/84955
8662         * omp-expand.c (expand_oacc_for): Add dummy false branch for
8663         tiled basic blocks without omp continue statements.
8665 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
8667         PR target/83660
8668         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
8669         vec_extract expression as having side effects to make sure it gets
8670         a cleanup point.
8672 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
8674         PR target/85403
8675         * config/i386/i386.c (get_builtin_code_for_version): Check
8676         error_mark_node.
8678 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
8680         PR target/84331
8681         * gcc/config.gcc: Support "skylake".
8682         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
8683         PROCESSOR_SKYLAKE.
8684         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
8685         (processor_target_table): Add "skylake".
8686         (ix86_option_override_internal): Add "skylake".
8687         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
8688         PROCESSOR_CANNONLAKE.
8689         (get_builtin_code_for_version): Fix priority for
8690         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
8691         PROCESSOR_SKYLAKE-AVX512.
8692         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
8693         (processor_type): Add PROCESSOR_SKYLAKE.
8695 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
8696             Jason Merrill  <jason@redhat.com>
8698         PR c++/85112
8699         * convert.c (convert_to_integer_1): Use direct recursion for
8700         enumeral types and types with a precision less than the number
8701         of bits in their mode.
8703 2018-04-16  Julia Koval  <julia.koval@intel.com>
8705         PR target/84413
8706         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
8707         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
8709 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
8711         PR target/85293
8712         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
8713         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
8714         and -mno-direct-move.
8716 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
8718         PR target/83402
8719         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
8720         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
8721         Ensure negative shifts result in {0}.
8723 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
8725         PR rtl-optimization/79916
8726         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
8727         regs (if any) to define how to gnerate SD moves when LRA is in
8728         progress.
8730 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
8732         PR rtl-optimization/85393
8733         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
8734         * except.c (expand_dw2_landing_pad_for_region): Make static.
8735         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
8736         a label and unconditional jump to old_bb, rather than
8737         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
8738         basic block.
8740         PR rtl-optimization/85376
8741         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
8742         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
8743         instead of a specific value.
8745 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
8746             Bin Cheng  <bin.cheng@arm.com>
8748         PR tree-optimization/82965
8749         PR tree-optimization/83991
8750         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
8751         by_profile_only parameter.
8752         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
8753         information if the loop was predicted to iterate too many times.
8754         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
8756 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
8758         PR lto/71991
8759         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
8760         always inline.
8762 2018-04-13  Martin Liska  <mliska@suse.cz>
8763             Jakub Jelinek  <jakub@redhat.com>
8765         PR middle-end/81657
8766         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
8767         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
8768         * builtins.c (expand_builtin_memory_copy_args): Use
8769         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
8770         handle dest_addr == pc_rtx.
8772 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
8774         PR target/85291
8775         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
8776         asked to not generate direct moves.
8777         (fix_trunc<mode>si2_stfiwx): Similar.
8778         (fix_trunc<mode>si2_internal): Similar.
8780 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8782         PR debug/83157
8783         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
8784         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
8785         lookup if dest in some wider mode is known to be const0_rtx and
8786         if so, record permanent equivalence for it to be ZERO_EXTEND of
8787         the narrower mode destination.
8789 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
8791         * lto-streamer-out.c (output_function): Revert 259346.
8792         * omp-expand.c (expand_oacc_for): Likewise.
8794 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
8796         PR rtl-optimization/85354
8797         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
8798         * sel-sched.c (sel_global_init): ... here.
8800 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
8802         PR target/85238
8803         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
8804         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
8805         mode for PE-COFF targets.
8806         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
8807         (i386_pe_asm_lto_end): Likewise.
8808         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
8809         (TARGET_ASM_LTO_END): Likewise.
8810         * config/i386/winnt.c (saved_debug_info_level): New static variable.
8811         (i386_pe_asm_lto_start): New function.
8812         (i386_pe_asm_lto_end): Likewise.
8814 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
8815             Richard Biener  <rguenther@suse.de>
8817         PR middle-end/84955
8818         * lto-streamer-out.c (output_function): Fix CFG loop state before
8819         streaming out.
8820         * omp-expand.c (expand_oacc_for): Handle calls to internal
8821         functions like regular functions.
8823 2018-04-12  Richard Biener  <rguenther@suse.de>
8825         PR lto/85371
8826         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
8827         for the early LTO debug to properly generate references to it
8828         during DIE emission.  Do not re-use that for the skeleton for
8829         split-dwarf.
8830         (dwarf2out_early_finish): Likewise.
8832 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8834         PR target/85328
8835         * config/i386/sse.md
8836         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
8837         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
8838         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
8839         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
8840         and output is a reg, avoid creating invalid lowpart subreg, but
8841         instead split into a 512-bit move.  Don't split if not AVX512VL,
8842         input is xmm16+ reg and output is a mem.
8843         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
8844         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
8845         xmm16+ reg and output is a mem.
8847 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8849         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
8850         also for flag_dwarf2_cfi_asm.
8852 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8854         PR rtl-optimization/85342
8855         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
8856         a bool scalar var inside of the loop instead.  Don't try to update
8857         recog_data.operand after failed apply_change_group.
8859 2018-04-12  Tom de Vries  <tom@codesourcery.com>
8861         PR target/85296
8862         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
8863         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
8864         array with flexible array member as array without given dimension.
8865         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
8866         argument for undefined param to true.
8868 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
8870         PR target/85321
8871         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
8872         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
8873         from PowerPC section.
8874         * config/rs6000/sysv4.opt (mcall-): Improve help text.
8875         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
8876         help text that is too long.
8877         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
8878         help text that is too long.
8879         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
8880         help text that is too long.
8882 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
8884         * config/alpha/alpha.md (stack_probe_internal): Rename
8885         from "probe_stack".  Update all callers.
8887 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8889         PR rtl-optimization/84566
8890         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
8891         sched_macro_fuse_insns.
8893 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8895         PR target/84301
8896         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
8897         (compute_block_dependences): ... from here.
8899 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8901         PR tree-optimization/85331
8902         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
8903         from int to HOST_WIDE_INT.
8905 2018-04-11  Martin Jambor  <mjambor@suse.cz>
8907         PR ipa/84149
8908         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
8909         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
8910         not the same as the source val.
8911         (cgraph_edge_brings_value_p): New parameter.
8912         (gather_edges_for_value): Pass destination value to
8913         cgraph_edge_brings_value_p.
8914         (perhaps_add_new_callers): Likewise.
8915         (get_info_about_necessary_edges): Likewise and exclude values brought
8916         only by self-recursive edges.
8917         (create_specialized_node): Redirect only clones of self-calling edges.
8918         (+self_recursive_pass_through_p): New function.
8919         (find_more_scalar_values_for_callers_subset): Use it.
8920         (find_aggregate_values_for_callers_subset): Likewise.
8921         (known_aggs_to_agg_replacement_list): Removed.
8922         (decide_whether_version_node): Re-calculate known constants for all
8923         remaining context clones.
8925 2018-04-11  Richard Biener  <rguenther@suse.de>
8927         PR lto/85339
8928         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
8929         from early DWARF output.
8930         (dwarf2out_early_finish): Output line info unconditionally into
8931         early DWARF and add reference to it.
8933 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8935         PR target/85281
8936         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
8937         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
8938         other than V2DFmode using iptr mode attribute.
8939         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
8941 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8943         PR rtl-optimization/84659
8944         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
8946 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8948         PR debug/85302
8949         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
8950         SIZEP is NULL.
8951         (output_loc_list): Pass address of a dummy size variable even in the
8952         locview handling loop.
8953         (index_location_lists): Add comment on why skip_loc_list_entry can't
8954         call size_of_locs.
8956 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
8958         PR target/85261
8959         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
8960         into register.
8962 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
8964         PR target/85321
8965         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
8966         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
8967         and -mstring-compare-inline-limit.
8969 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8971         PR target/85287
8972         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
8973         for stack clash protection in a register whenever we need it to be in
8974         a register.
8976 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8978         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
8979         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
8981 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8983         PR target/85321
8984         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
8985         the help text.
8986         (mlong-double-): Ditto.
8987         * config/rs6000/sysv4.opt (msdata=): Ditto.
8988         (mtls-size=): Ditto.
8990 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8992         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
8993         erroneous entries for
8994         "vector int vec_ldl (int, long int *)", and
8995         "vector unsigned int vec_ldl (int, unsigned long int *)".
8996         Add comments and entries for
8997         "vector bool char vec_ldl (int, bool char *)",
8998         "vector bool short vec_ldl (int, bool short *)",
8999         "vector bool int vec_ldl (int, bool int *)",
9000         "vector bool long long vec_ldl (int, bool long long *)",
9001         "vector pixel vec_ldl (int, pixel *)",
9002         "vector long long vec_ldl (int, long long *)",
9003         "vector unsigned long long vec_ldl (int, unsigned long long *)".
9004         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
9005         type tree bool_long_long_type_node and correct definition of
9006         bool_V2DI_type_node to make reference to this new type tree.
9007         (rs6000_mangle_type): Replace erroneous reference to
9008         bool_long_type_node with bool_long_long_type_node.
9009         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
9010         comments to emphasize sign distinctions for char and int types and
9011         replace RS6000_BTI_bool_long constant with
9012         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
9013         use of RS6000_BTI_pixel.
9014         (bool_long_type_node): Remove this macro definition.
9015         (bool_long_long_type_node): New macro definition
9017 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
9019         PR rtl-optimization/85300
9020         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
9021         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
9022         simplify_unary_operation fails.
9024 2018-04-10  Martin Liska  <mliska@suse.cz>
9026         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
9027         cgraph_edge and ipa_ref.
9029 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
9031         PR target/85177
9032         PR target/85255
9033         * config/i386/sse.md
9034         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
9035         computation of the VEC_MERGE selector from mask.
9036         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
9037         Fix decoding of the VEC_MERGE selector into mask.
9039 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
9041         PR tree-optimization/85286
9042         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
9044 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
9046         * final.c (final_1): Set insn_last_address as well as
9047         insn_current_address.
9049 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9051         PR target/85173
9052         * explow.c (emit_stack_probe): Call validize_mem on memory location
9053         before passing it to gen_probe_stack.  Create address operand and
9054         legitimize it for the probe_stack_address case.
9056 2018-04-09  Jan Hubicka  <jh@suse.cz>
9058         PR lto/85078
9059         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
9060         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
9061         * tree.c (free_lang_data_in_type): Fix handling of binfos;
9062         walk basetypes.
9063         (free_lang_data): Rebuild type inheritance graph.
9065 2018-04-09  Martin Sebor  <msebor@redhat.com>
9067         * invoke.texi (-finline-small-functions): Mention other optimization
9068         options.
9069         (-findirect-inlining, -fpartial-inlining): Same.
9070         (-finline-functions-called-once): Same.
9071         (-freorder-blocks-and-partition): Same.
9073 2018-04-09  Jan Hubicka  <jh@suse.cz>
9075         PR rtl/84058
9076         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
9077         jumps; choose last target that matches the criteria (i.e.
9078         no partition changes for non-crossing jumps).
9079         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
9080         support for redirecting crossing jumps to non-crossing.
9082 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
9084         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
9085         also for naked functions.
9087 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
9089         * config/arc/arc.md (add_shift): New pattern.
9090         (add_shift2): Likewise.
9091         (sub_shift): Likewise.
9092         (sub_shift_cmp0_noout): Likewise.
9093         (compare_si_ashiftsi): Likewise.
9094         (xbfu_cmp0_noout): New combine pattern.
9095         (xbfu_cmp0"): Likewise.
9096         (movsi_set_cc_insn): Place the predicable variant first.
9097         (commutative_binary_cmp0_noout): Remove clobber.
9098         (commutative_binary_cmp0): New pattern.
9099         (noncommutative_binary_cmp0): Likewise.
9100         (noncommutative_binary_cmp0_noout): Likewise.
9101         (noncommutative_binary_comparison_result_used): Removed.
9102         (rsub_cmp0): New pattern.
9103         (rsub_cmp0_noout): Likewise.
9104         (extzvsi): Changed, keep only meaningful variants.
9105         (SQH, SEZ): New iterators.
9106         (SQH_postfix): New mode attribute.
9107         (SEZ_prefix): New code attribute.
9108         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
9109         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
9110         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
9111         of numerical value.
9112         (noncommutative_operator): Check the availability of barrel
9113         shifter option.
9115 2018-04-09  Richard Biener  <rguenther@suse.de>
9117         PR tree-optimization/85284
9118         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
9119         Only use the niter constraining form of simple_iv when the exit
9120         is always executed.
9122 2018-04-09  Tom de Vries  <tom@codesourcery.com>
9124         PR target/84041
9125         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
9126         (define_expand "*memory_barrier"): New define_expand.
9127         (define_insn "memory_barrier"): New insn.
9129 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9131         PR rtl-optimization/80463
9132         PR rtl-optimization/83972
9133         PR rtl-optimization/83480
9135         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
9136         correct producer for the insn.
9137         (tidy_control_flow): Fixup seqnos in case of debug insns.
9139 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9141         PR rtl-optimization/83913
9143         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
9144         different sched-times when merging exprs.
9146 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9148         PR rtl-optimization/83962
9150         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
9151         tidy_fallthru_edge and tidy_control_flow.
9153 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9155         PR rtl-optimization/83530
9157         * sel-sched.c (force_next_insn): New global variable.
9158         (remove_insn_for_debug): When force_next_insn is true, also leave only
9159         next insn in the ready list.
9160         (sel_sched_region): When the region wasn't scheduled, make another pass
9161         over it with force_next_insn set to 1.
9163 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
9165         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
9166         into tm_file.
9167         * config/nds32/constants.md (unspec_volatile_element): Add enum values
9168         for interrupt control.
9169         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
9170         functions for interrupt control.
9171         * config/nds32/nds32-intrinsic.md: Likewise.
9172         * config/nds32/nds32_intrinsic.h: Likewise.
9173         * config/nds32/nds32.h (nds32_builtins): Likewise.
9175 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
9177         * config/nds32/nds32.c (nds32_init_machine_status,
9178         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
9179         strict_aligned_p field.
9180         (nds32_expand_to_rtl_hook): New function.
9181         (TARGET_EXPAND_TO_RTL_HOOK): Define.
9182         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
9184 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9185             Chung-Ju Wu  <jasonwucj@gmail.com>
9187         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
9188         * config/nds32/nds32-n7.md: New file.
9189         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
9190         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
9191         pipeline.
9192         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
9193         * config/nds32/nds32.md (pipeline_model): Add n7.
9194         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
9195         * config/nds32/pipelines.md: Include n7 settings.
9197 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9198             Chung-Ju Wu  <jasonwucj@gmail.com>
9200         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
9201         * config/nds32/nds32-e8.md: New file.
9202         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
9203         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
9204         pipeline.
9205         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
9206         * config/nds32/nds32.md (pipeline_model): Add e8.
9207         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
9208         * config/nds32/pipelines.md: Include e8 settings.
9210 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9211             Chung-Ju Wu  <jasonwucj@gmail.com>
9213         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
9214         * config/nds32/nds32-n8.md: New file.
9215         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
9216         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
9217         pipeline.
9218         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
9219         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
9220         * config/nds32/nds32.md (pipeline_model): Add n8.
9221         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
9222         * config/nds32/pipelines.md: Include n8 settings.
9224 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9225             Chung-Ju Wu  <jasonwucj@gmail.com>
9227         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
9228         * config/nds32/nds32-n9-2r1w.md: New file.
9229         * config/nds32/nds32-n9-3r2w.md: New file.
9230         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
9231         nds32_register_ports): New or modify for cpu n9.
9232         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
9233         pipeline.
9234         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
9235         * config/nds32/nds32-utils.c: New file.
9236         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
9237         TARGET_MUL_SLOW): Define.
9238         * config/nds32/nds32.md (pipeline_model): New attribute.
9239         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
9240         New options that support cpu n9.
9241         * config/nds32/pipelines.md: Include n9 settings.
9242         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
9244 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
9246         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
9247         information if necessary.
9248         (output_cond_branch_compare_zero): Likewise.
9249         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
9250         (nds32_target_alignment): Refine for alignment.
9251         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
9252         (FUNCTION_BOUNDARY): Modify.
9253         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
9254         align case.
9255         * config/nds32/nds32.opt (malways-align, malign-functions): New.
9257 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
9259         * config/nds32/constants.md (unspec_volatile_element): Add values for
9260         TLB operation and data prefetch.
9261         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
9262         functions for TLB operation and data prefetch.
9263         * config/nds32/nds32-intrinsic.md: Likewise.
9264         * config/nds32/nds32_intrinsic.h: Likewise.
9265         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
9266         (nds32_print_operand): Likewise.
9267         * config/nds32/nds32.h (nds32_builtins): Likewise.
9269 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
9270         Andrew Pinski <pinsika@gcc.gnu.org>
9272         PR middle-end/82976
9273         * match.pd: Use constant_boolean_node of correct type instead of
9274         boolean_true_node or boolean_false_node for simplifying
9275         pointer comparisons to zero.
9277 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
9279         PR tree-optimization/80021
9280         * tree.c (verify_type_variant): Make error call in verify_variant_match
9281         translatable and remove final full stop.
9283 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9285         * config/nds32/constants.md (unspec_volatile_element): Add
9286         UNSPEC_VOLATILE_EH_RETURN.
9287         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
9288         nds32_output_stack_pop): Support dwarf exception handling process.
9289         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
9290         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
9291         exception handling process.
9292         (nds32_compute_stack_frame): Likewise.
9293         (nds32_return_addr_rtx): Likewise.
9294         (nds32_initial_elimination_offset): Likewise.
9295         (nds32_expand_prologue): Likewise.
9296         (nds32_expand_epilogue): Likewise.
9297         (nds32_dynamic_chain_address): New function.
9298         * config/nds32/nds32.h (machine_function): Add fields for dwarf
9299         exception handling.
9300         (DYNAMIC_CHAIN_ADDRESS): Define.
9301         (EH_RETURN_DATA_REGNO): Define.
9302         (EH_RETURN_STACKADJ_RTX): Define.
9303         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
9304         patterns for dwarf exception handling.
9306 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9308         * config/nds32/nds32.h: Clean up obsolete macros.
9310 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9312         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
9313         Add enum values for particular instructions.
9314         * config/nds32/nds32-intrinsic.c: Implementation of expanding
9315         particular intrinsic functions.
9316         * config/nds32/nds32-intrinsic.md: Likewise.
9317         * config/nds32/nds32_intrinsic.h: Likewise.
9318         * config/nds32/nds32.h (nds32_builtins): Likewise.
9319         * config/nds32/nds32.md (type): Add pbsad and pbsada.
9320         (btst, ave): New patterns for particular instructions.
9322 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9324         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
9325         Add enum values for atomic load/store and memory sync.
9326         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
9327         and memory sync.
9328         * config/nds32/nds32-intrinsic.md: Likewise.
9329         * config/nds32/nds32_intrinsic.h: Likewise.
9330         * config/nds32/nds32.h (nds32_builtins): Likewise.
9332 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
9334         PR tree-optimization/85257
9335         * fold-const.c (native_encode_vector): If not all elts could fit
9336         and off is -1, return 0 rather than offset.
9337         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
9338         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
9339         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
9340         adjust buffer in native_interpret_expr call.
9342 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9344         * config/nds32/constants.md (unspec_volatile_element): Add cache
9345         control enum values.
9346         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
9347         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
9348         * config/nds32/nds32.c (nds32_cctl_names): New.
9349         (nds32_print_operand): Handle cache control register names.
9350         * config/nds32/nds32.h (nds32_builtins): New enum values.
9351         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
9352         macros.
9353         * config/nds32/nds32.md (type): Add mmu.
9354         * config/nds32/pipelines.md (simple_insn): Add mmu.
9356 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9358         * config/nds32/nds32.md (type): Remove call.
9359         * config/nds32/pipelines.md (simple_insn): Likewise.
9361 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9363         * config/nds32/constants.md (unspec_volatile_element): Add
9364         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
9365         UNSPEC_VOLATILE_FMFCFG.
9366         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
9367         description for fmfcfg and fmfcsr.
9368         (bdesc_1arg): Add fmtcsr.
9369         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
9370         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
9371         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
9372         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
9373         unspec_fmfcfg): New patterns.
9374         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
9375         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
9376         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
9377         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
9378         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
9379         __nds32__fmfcfg): Define.
9381 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9383         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
9384         intrinsic register names.
9385         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
9386         intrinsic register enum values and macros.
9388 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9390         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
9391         for load/store addressing form.
9392         (nds32_print_operand_address): Likewise.
9394 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
9396         PR target/85196
9397         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
9398         based on LABEL_REF.  Remove useless assertion.
9399         (pic_address_needs_scratch): Fix formatting.
9400         (sparc_legitimize_pic_address): Minor tweaks.
9401         (sparc_delegitimize_address): Adjust assertion accordingly.
9402         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
9403         into symbolic_operand.
9404         (movsi_high_pic_label_ref): Likewise.
9405         (movsi_lo_sum_pic_label_ref): Likewise.
9406         (movdi_pic_label_ref): Likewise.
9407         (movdi_high_pic_label_ref): Likewise.
9408         (movdi_lo_sum_pic_label_ref): Likewise.
9410 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
9412         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
9413         custom LIB_SPEC setup.
9415 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
9416             Kito Cheng  <kito.cheng@gmail.com>
9418         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
9419         * config/riscv/freebsd.h: New.
9421 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9423         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
9424         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
9425         file.
9427 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9428             Kito Cheng  <kito.cheng@gmail.com>
9430         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
9431         nds32_output_call, nds32_symbol_binds_local_p): New functions.
9432         * config/nds32/nds32-protos.h (nds32_output_call,
9433         nds32_output_return): Declare.
9434         * config/nds32/nds32.md: Refine all the call and return patterns.
9436 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
9438         PR debug/85252
9439         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
9440         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
9442         PR rtl-optimization/84872
9443         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
9444         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
9445         EDGE_CROSSING edge.
9447 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
9449         * expr.c (copy_blkmode_to_reg): Revert 254862.
9450         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
9452 2018-04-06  Richard Biener  <rguenther@suse.de>
9454         PR middle-end/85244
9455         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
9456         after seeing a component reference with an adjacent field.  Treat
9457         refs to arrays at struct end of external decls similar to
9458         refs to unconstrained commons.
9460 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
9462         PR sanitizer/85213
9463         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
9464         look through SAVE_EXPRs with non-side-effects argument.  Adjust
9465         recursive calls.
9466         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
9467         save_p here.
9469 2018-04-06  Richard Biener  <rguenther@suse.de>
9471         PR middle-end/85180
9472         * alias.c (find_base_term): New wrapper around find_base_term
9473         unwinding CSELIB_VAL_PTR changes.
9474         (find_base_term): Do not restore CSELIB_VAL_PTR during the
9475         recursion.
9477 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
9479         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
9480         instructions.
9481         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
9482         constant definitions.
9483         ("nop"): lr 0,0 -> nopr r0
9484         ("nop_lr0", "nop_lr1"): New insn definitions.
9486 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9488         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
9489         NDS32_V3PUSH_AVAILABLE_P macro.
9491 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
9492             Chung-Ju Wu  <jasonwucj@gmail.com>
9494         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
9495         (nds32*-*-*): Add float and fpu_config into supported_defaults.
9496         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
9497         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
9498         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
9499         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
9500         * config/nds32/constraints.md: New constraints and checking for hard
9501         float configuration.
9502         * config/nds32/iterators.md: New mode iterator and attribute for hard
9503         float configuration.
9504         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
9505         patterns.
9506         * config/nds32/nds32-fpu.md: New file.
9507         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
9508         deal with hard float code generation.
9509         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
9510         ARCH_V3S.
9511         (abi_type, float_reg_number): New enum type.
9512         * config/nds32/nds32-predicates.c: New predicates for hard float.
9513         * config/nds32/nds32-protos.h: Declare functions for hard float.
9514         * config/nds32/nds32.c: Implementation for hard float configuration.
9515         * config/nds32/nds32.h: Definitions for hard float configuration.
9516         * config/nds32/nds32.md: Include hard float machine description and
9517         modify patterns for hard float configuration.
9518         * config/nds32/nds32.opt: New options for hard float configuration.
9519         * config/nds32/predicates.md: New predicates for hard float
9520         configuration.
9522 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
9524         * common/config/nds32/nds32-common.c
9525         (nds32_option_optimization_table): Enable -mreleax-hint by default.
9527 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
9529         PR middle-end/85195
9530         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
9531         CONSTRUCTOR_ELT (ctor, ...)->value.
9533 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
9535         PR target/85193
9536         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
9538 2018-04-05  Tom de Vries  <tom@codesourcery.com>
9540         PR target/85204
9541         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
9542         cond jump.
9544 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
9545             Kito Cheng  <kito.cheng@gmail.com>
9547         * config/nds32/constraints.md (U33): Fine-tune checking condition.
9548         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
9549         * config/nds32/nds32.h (nds32_16bit_address_type): Add
9550         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
9552 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
9553             Kito Cheng  <kito.cheng@gmail.com>
9555         * config/nds32/constraints.md (Ufe): New memory constraint.
9556         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
9557         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
9558         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
9559         operands.
9560         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
9561         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
9563 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9565         * config/nds32/nds32.md: Use optimize_size in the condition for
9566         alu-shift instructions.
9568 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9570         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
9572 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9574         * config/nds32/nds32.md (negsi2): Refine pattern.
9576 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
9577             Chung-Ju Wu  <jasonwucj@gmail.com>
9579         * config/nds32/iterators.md (shift_rotate): New code iterator.
9580         (shift): New code attribute.
9581         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
9582         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
9583         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
9584         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
9585         bit-wise operations.
9586         (andsi3, *andsi3): Ditto.
9587         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
9588         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
9589         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
9590         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
9591         nds32_ior_operand, nds32_xor_operand): New predicates.
9593 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9595         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
9596         (addsi3, subsi3): ... this.
9598 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9600         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
9602 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9604         * config/nds32/nds32.md: Adjust indention.
9606 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
9608         * config/nds32/nds32.md (feature): New attribute.
9610 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9612         * config/nds32/nds32.md (subtype): New attribute.
9614 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
9616         PR target/85203
9617         * config/arm/arm-builtins.c (arm_expand_builtin): Change
9618         expansion to perform a bitwise AND of the argument followed by a
9619         boolean negation of the result.
9621 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
9623         PR rtl-optimization/84878
9624         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
9625         the basic block.  Assert the use reference is not artificial and that
9626         it has an associated insn.
9628 2018-04-04  Michael Matz  <matz@suse.de>
9630         * builtins.c (compute_objsize): Pass correct operand
9631         to array_at_struct_end_p.
9633 2018-04-04  Richard Biener  <rguenther@suse.de>
9635         PR lto/85176
9636         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
9637         from contexts for DINFO_LEVEL_TERSE and below.
9639 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9641         * config/nds32/nds32-doubleword.md (move_<mode>): Require
9642         resiter_operand condition.
9643         * config/nds32/nds32.md (*move<mode>): Ditto.
9645 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9646             Monk Chiang  <sh.chiang04@gmail.com>
9648         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
9650 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9652         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
9654 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9655             Kito Cheng  <kito.cheng@gmail.com>
9657         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
9658         nds32_cond_code_str, output_cond_branch,
9659         output_cond_branch_compare_zero, nds32_expand_cbranch,
9660         nds32_expand_cstore, nds32_expand_movcc,
9661         nds32_output_cbranchsi4_equality_zero,
9662         nds32_output_cbranchsi4_equality_reg,
9663         nds32_output_cbranchsi4_equality_reg_or_const_int,
9664         nds32_output_cbranchsi4_greater_less_zero: New functions.
9665         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
9666         nds32_expand_cstore, nds32_expand_movcc,
9667         nds32_output_cbranchsi4_equality_zero,
9668         nds32_output_cbranchsi4_equality_reg,
9669         nds32_output_cbranchsi4_equality_reg_or_const_int,
9670         nds32_output_cbranchsi4_greater_less_zero): Declare.
9671         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
9672         nds32_rimm11s_operand): New predicates.
9673         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
9674         * config/nds32/nds32.md: Rewrite all the branch and conditional move
9675         patterns.
9677 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9679         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
9680         * config/nds32/nds32.md: Ditto.
9681         * config/nds32/pipelines.md: Ditto.
9683 2018-04-04  Richard Biener  <rguenther@suse.de>
9685         PR tree-optimization/85168
9686         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
9687         propagating abnormals.
9689 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9691         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
9693 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9694             Kito Cheng  <kito.cheng@gmail.com>
9696         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
9697         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
9698         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
9699         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
9700         * config/nds32/nds32.md (sibcall_internal): New.
9701         (sibcall_register): Remove.
9702         (sibcall_immediate): Remove.
9703         (sibcall_value_internal): New.
9704         (sibcall_value_register): Remove.
9705         (sibcall_value_immediate): Remove.
9706         * config/nds32/predicates.md (nds32_general_register_operand): New.
9707         (nds32_call_address_operand): New.
9709 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
9711         PR rtl-optimization/85167
9712         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
9713         bb_defs if *split_p, instead preinitialize it to NULL.
9715         PR tree-optimization/85156
9716         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
9717         evaluating the argument multiple times.
9719 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
9721         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
9722         than vector.
9723         (_mm_cvtpd_ps): Likewise.
9724         (_mm_cvttpd_epi32): Likewise.
9725         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
9726         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
9727         vector, pixel, and bool following altivec.h include.
9729 2018-04-03  Martin Sebor  <msebor@redhat.com>
9731         * doc/extend.texi (Common Function Attributes): Clarify.
9732         (const attribute): Likewise.
9733         (pure attribute): Likewise.
9735 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
9737         PR target/85169
9738         * config/i386/i386.c (ix86_expand_vector_set): Use
9739         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
9741 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
9743         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
9744         instructions when changing rounding bits to preserve precision bits
9745         in the x87 control word.
9747 2018-04-03  Martin Liska  <mliska@suse.cz>
9749         PR tree-optimization/82491
9750         * rtl.h (strip_offset_and_add): Replace += suboffset with
9751         poly_uint64 () + suboffset.
9753 2018-03-29  Martin Liska  <mliska@suse.cz>
9754             Martin Jambor  <mjambor@suse.cz>
9756         PR ipa/84947
9757         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
9758         param_type is not an integral or pointer type.
9760 2018-04-03  Richard Biener  <rguenther@suse.de>
9762         * sese.h (recompute_all_dominators): Remove.
9764 2018-04-02  Martin Sebor  <msebor@redhat.com>
9766         * doc/invoke.texi (-Wrestrict): Fix typos.
9768 2018-04-02  Jim Wilson  <jimw@sifive.com>
9770         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
9771         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
9772         (<optab>di3, <optab>si3_extend): Likewise.
9773         (<optab>si3_mask, <optab>si3_mask_1): New.
9774         (<optab>di3_mask, <optab>di3_mask_1): New.
9775         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
9776         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
9777         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
9779 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
9781         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
9782         example.
9784 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
9786         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
9787         (nds32_canonicalize_comparison): New function.
9789 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9790             Kito Cheng  <kito.cheng@gmail.com>
9791             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
9793         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
9794         * config/nds32/constants.md (unspec_volatile_element): Add
9795         UNSPEC_VOLATILE_RELAX_GROUP.
9796         * config/nds32/nds32-relax-opt.c: New file.
9797         * config/nds32/nds32-predicates.c
9798         (nds32_symbol_load_store_p): New function.
9799         * config/nds32/nds32-protos.h
9800         (nds32_symbol_load_store_p): Declare function.
9801         (make_pass_nds32_relax_opt): Declare new rtl pass function.
9802         * config/nds32/nds32.c
9803         (nds32_register_pass): New function to register pass.
9804         (nds32_register_passes): New function to register passes.
9805         * config/nds32/nds32.md (relax_group): New pattern.
9806         * config/nds32/nds32.opt (mrelax-hint): New option.
9807         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
9809 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
9811         * config/nds32/t-nds32: Modify files dependency.
9813 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9815         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
9816         (PROFILE_HOOK): Define its implementation.
9818 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9820         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
9821         type and 32-bit size.
9823 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
9825         PR middle-end/85090
9826         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
9827         (V_128_256): New mode iterator.
9828         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
9829         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
9830         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
9831         of V.
9832         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
9833         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
9835 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
9837         PR target/83315
9838         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
9839         NaN inputs correctly.
9841 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
9843         PR target/80546
9844         * config/rs6000/vsx.md (??r): New mode attribute.
9845         (*vsx_mov<mode>_64bit): Use it.
9846         (*vsx_mov<mode>_32bit): Likewise.
9848 2018-03-30  Martin Sebor  <msebor@redhat.com>
9850         PR tree-optimization/84818
9851         * builtins.c (check_access): Use warning_n.
9853 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9855         PR target/83822
9856         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
9857         condition.
9858         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
9859         condition.
9861 2018-03-30  Julia Koval  <julia.koval@intel.com>
9863         PR target/84413
9864         * x86-tune.def (movx, partial_reg_dependency): Enable for
9865         m_SKYLAKE_AVX512.
9867 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
9869         PR inline-asm/84985
9870         * lra-constraints.c (process_alt_operands): Move setting
9871         this_alternative_matches below.
9873 2018-03-29  Martin Liska  <mliska@suse.cz>
9875         PR lto/84995.
9876         * doc/invoke.texi: Document how LTO works with debug info.
9877         Describe auto-load support of binutils.  Mention 'x86-64'
9878         as valid option value of -march option.
9880 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
9882         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
9884         PR c/85094
9885         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
9886         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
9887         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
9888         checking.
9890 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
9892         PR target/84912
9893         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
9894         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
9895         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
9896         for RS6000_BTM_POWERPC64.
9897         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
9898         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
9899         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
9900         definition.
9901         (DIVDE): Use it.
9902         (DIVDEU): Likewise.
9904 2018-03-28 Carl Love  <cel@us.ibm.com>
9906         Revert
9907         2017-09-27  Carl Love  <cel@us.ibm.com>
9909         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
9910         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
9911         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
9912         fctiw instruction.
9914 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9916         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
9917         instead of __vector bool.
9918         (_mm_max_pu8): Likewise.
9919         (_mm_min_pi16): Likewise.
9921 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
9923         PR target/84912
9924         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
9925         (DIVWEUO): Likewise.
9926         (DIVDEO): Likewise.
9927         (DIVDEUO): Likewise.
9928         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
9929         DIVWEUO and DIVDEUO.
9930         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
9931         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
9932         (div_extend): Likewise.
9933         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
9934         builtin function.
9935         (__builtin_divweuo): Likewise.
9936         (__builtin_divdeo): Likewise.
9937         (__builtin_divdeuo): Likewise.
9939 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9941         PR target/85095
9942         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
9943         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
9945         PR tree-optimization/82004
9946         * gimple-match-head.c (optimize_pow_to_exp): New function.
9947         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
9948         Don't fold to exp if optimize_pow_to_exp is false.
9950 2018-03-28  Martin Liska  <mliska@suse.cz>
9952         PR other/84819
9953         * calls.c (initialize_argument_information): Fix trailing space.
9954         * common.opt: Fix typo and provide better explanation for
9955         -fsanitize-coverage option.
9956         * config/i386/i386.opt: Fix typo.
9958 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9959             Martin Liska  <mliska@suse.cz>
9961         PR sanitizer/85081
9962         * gimplify.c (asan_poison_variable): Don't do the check for
9963         gimplify_omp_ctxp here.
9964         (gimplify_decl_expr): Do it here.
9965         (gimplify_target_expr): Likewise.
9967 2018-03-28  Martin Liska  <mliska@suse.cz>
9969         PR target/84988
9970         * config/i386/i386.c (ix86_function_arg_advance): Do not call
9971         chkp_type_bounds_count if MPX is not enabled.
9973 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
9975         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
9977 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9979         PR target/84914
9980         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
9981         function to create the function decl for complex long double
9982         multiply and divide for -mabi=ieeelongdouble.
9983         (init_float128_ieee): Call it.
9985 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
9987         PR target/85044
9988         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
9989         -fcf-protection=branch -mibt.
9990         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
9992 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9994         PR target/81863
9995         * config/arm/arm.c (arm_valid_symbolic_address): Handle
9996         arm_word_relocations.
9998 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
10000         PR target/85056
10001         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
10002         extern array declarations.
10004 2018-03-27  Richard Biener  <rguenther@suse.de>
10006         PR middle-end/84067
10007         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
10008         explicit single_use checks.
10010 2018-03-27  Richard Biener  <rguenther@suse.de>
10012         PR tree-optimization/85082
10013         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
10014         Valueize the VUSE.
10016 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10018         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
10019         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
10020         Turn on fasynchronous-unwind-tables and funwind-tables.
10022 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
10024         PR target/85073
10025         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
10026         (*bmi_blsr_<mode>_ccz): Ditto.
10028 2018-03-26  Tom de Vries  <tom@codesourcery.com>
10030         PR tree-optimization/85063
10031         * omp-general.c (offloading_function_p): New function.  Factor out
10032         of ...
10033         * omp-offload.c (pass_omp_target_link::gate): ... here.
10034         * omp-general.h (offloading_function_p): Declare.
10035         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
10036         with attribute omp declare target for offloading functions.
10038 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
10040         PR tree-optimization/84005
10041         * tree-data-ref.h (get_base_for_alignment): Declare.
10042         * tree-data-ref.c (get_base_for_alignment_1): New function.
10043         (get_base_for_alignment): Likewise.
10044         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
10045         get_base_for_alignment to find a suitable base object, instead
10046         of always using drb->base_address.
10048 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
10050         PR inline-asm/85022
10051         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
10052         known size by default.
10054 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
10056         PR inline-asm/85030
10057         * lra-constraints.c (process_alt_operands): Don't match BLKmode
10058         and non BLKmode operands.
10060 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10062         PR target/85026
10063         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
10064         Clean up attributes.
10066 2018-03-23  Richard Biener  <rguenther@suse.de>
10068         PR debug/85020
10069         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
10070         we are going to emit early debug for LTO.
10072 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
10074         PR inline-asm/85034
10075         * function.c (match_asm_constraints_1): Don't optimize if input
10076         doesn't satisfy general_operand predicate for output's mode.
10078         PR inline-asm/85022
10079         * alias.c (write_dependence_p): Don't require for x_canonicalized
10080         non-VOIDmode if x has VOIDmode.
10082         PR sanitizer/85029
10083         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
10084         just don't try to optimize it rather than assert it never happens.
10086 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10088         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
10089         macro expansions for definition of ST_INTERNAL_<mode> and
10090         LD_INTERNAL_<mode> builtins.
10091         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
10092         Remove prototype.
10093         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
10094         function.
10095         (altivec_expand_st_builtin): Likewise.
10096         (altivec_expand_builtin): Remove calls to deleted functions.
10097         (rs6000_address_for_altivec): Delete this function.
10098         * config/rs6000/vector.md: Remove expands for
10099         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
10101 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
10103         PR target/84826
10104         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
10105         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
10106         re-computing once computed.
10107         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
10108         (arm_init_machine_status): Initialize
10109         machine->static_chain_stack_bytes.
10111 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10113         PR target/84760
10114         * doc/extend.texi: Add four new prototypes for vec_ld.
10115         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
10116         definitions for more logical presentation.
10117         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
10118         entries for V1TI variants of __builtin_altivec_ld builtin.
10119         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
10120         handling of V1TI variant of LVX icode pattern.
10121         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
10122         (rs6000_gimple_fold_builtin): Likewise.
10123         (altivec_init_builtins): Add code to define
10124         __builtin_altivec_lvx_v1ti function.
10126 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
10128         PR inline-asm/84941
10129         * function.c (match_asm_constraints_1): Don't do the optimization
10130         if input isn't a REG, SUBREG, MEM or constant.
10132 2018-03-22  Tom de Vries  <tom@codesourcery.com>
10134         PR tree-optimization/84956
10135         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
10136         bb_has_abnormal_pred.
10138 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
10140         PR sanitizer/85018
10141         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
10142         DECL_INITIAL (decl) to decl at the end.
10143         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
10144         adjust the comment.
10146 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
10148         * doc/extend.texi (__builtin_tgmath): Document when complex
10149         integer types are treated as _Complex _Float64.
10151 2018-03-21  Tom de Vries  <tom@codesourcery.com>
10153         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
10155 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10157         PR tree-optimization/84960
10158         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
10159         if it is ENTRY block, move them into single succ of ENTRY in that case.
10161 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
10163         PR tree-optimization/84811
10164         * poly-int.h (poly_span_traits): Remove the T3 parameter and
10165         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
10166         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
10167         (known_subrange_p): Update accordingly.  Cast each value involved
10168         in the size comparison, rather than casting the result of the
10169         subtraction.
10171 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10173         PR tree-optimization/84982
10174         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
10175         by flipping the least significant bit rather than all bits from
10176         bitpos to bitpos + bitsize - 1.
10178 2018-03-21  Nathan Sidwell  <nathan@acm.org>
10180         * doc/extend.texi (Deprecated Features): Remove mention of
10181         long-deleted deprecations.
10183 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10185         PR jit/84288
10186         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
10187         * configure: Regenerate.
10189 2018-03-21  Tom de Vries  <tom@codesourcery.com>
10191         PR tree-optimization/83126
10192         * tree-parloops.c (num_phis): New function.
10193         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
10195 2018-03-21  Nathan Sidwell  <nathan@acm.org>
10197         * doc/extend.texi (Deprecated Features): Update deprecated flags,
10198         mention anon-struct/union members and trailing attributes.
10200 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
10202         PR tree-optimization/84969
10203         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
10204         builtin memset partitions if they set different rhs values.
10206 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10208         PR rtl-optimization/84989
10209         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
10210         VEC_DUPLICATE with scalar result mode.
10212 2018-03-21  Martin Liska  <mliska@suse.cz>
10214         PR ipa/84963
10215         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
10216         not intended return statement.
10218 2018-03-21  Martin Liska  <mliska@suse.cz>
10220         PR target/84988
10221         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
10222         (chkp_find_bound_slots_1): Limit number of iterations.
10224 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
10226         PR target/84838
10227         * Minor grammar fixes for x86 options.
10229 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10231         PR debug/84875
10232         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
10233         holding REG_CFA_RESTORE notes, instead turn them into a USE.
10235 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
10237         PR target/83789
10238         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
10239         (altivec_lvx_<mode>_1op): Likewise.
10240         (altivec_stvx_<mode>_2op): Likewise.
10241         (altivec_stvx_<mode>_1op): Likewise.
10242         (altivec_lvx_<VM2:mode>): New define_expand.
10243         (altivec_stvx_<VM2:mode>): Likewise.
10244         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
10245         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
10246         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
10247         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
10248         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
10249         (rs6000_gen_lvx): Likewise.
10250         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
10251         (altivec_expand_stv_builtin): Likewise.
10252         (altivec_expand_builtin): Likewise.
10253         * config/rs6000/vector.md: Likewise.
10255 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10257         PR target/82518
10258         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
10259         BYTES_BIG_ENDIAN.
10261 2018-03-20  Richard Biener  <rguenther@suse.de>
10263         PR target/84986
10264         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
10265         sign-conversions as zero, fall back to standard scalar_stmt
10266         cost for the rest.
10268 2018-03-20  Martin Liska  <mliska@suse.cz>
10270         PR ipa/84825
10271         * predict.c (rebuild_frequencies): Handle case when we have
10272         PROFILE_ABSENT, but flag_guess_branch_prob is false.
10274 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10276         PR target/84990
10277         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
10278         flag_section_anchors.
10279         * varasm.c (use_blocks_for_decl_p): Remove hack for
10280         dw2_force_const_mem.
10282         PR target/84845
10283         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
10284         to ...
10285         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
10286         be created, use lowpart_subreg of operands[0] rather than operands[0]
10287         itself.
10288         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
10289         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
10290         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
10291         and n constraint instead of aarch64_shift_imm_di and Usd.
10292         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
10293         (*aarch64_<optab>_reg_minus<mode>3): ... this.
10295 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
10297         PR target/82989
10298         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
10299         to favor GPR over NEON registers.
10300         (<shift>di3_neon): Likewise.
10302 2018-03-20  Tom de Vries  <tom@codesourcery.com>
10304         PR target/84952
10305         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
10306         (nvptx_process_pars): Emit bar.sync asap and alap.
10308 2018-03-20  Tom de Vries  <tom@codesourcery.com>
10310         PR target/84954
10311         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
10312         seen_label if seen_label is already set.
10314 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10316         PR target/84945
10317         * config/i386/i386.c (fold_builtin_cpu): For features above 31
10318         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
10319         Use 1U instead of 1.  Formatting fixes.
10321         PR c/84953
10322         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
10323         instead of TREE_TYPE (s1) for the return value.
10325 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
10327         PR tree-optimization/84946
10328         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
10329         bitsize + bitsize in poly_uint64 rather than poly_int64.
10331         PR sanitizer/78651
10332         * dwarf2asm.c: Include fold-const.c.
10333         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
10334         of decl rather than decl itself.
10336         PR rtl-optimization/84643
10337         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
10339 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
10341         PR sanitizer/78651
10342         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
10343         calling assemble_variable.
10345 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
10347         PR target/81647
10348         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
10349         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
10351 2018-03-19  Jim Wilson  <jimw@sifive.com>
10353         PR bootstrap/84856
10354         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
10355         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
10356         (riscv_first_stack_step): Likewise.
10357         (riscv_option_override): Use STACK_BOUNDARY instead of
10358         MIN_STACK_BOUNDARY.
10359         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
10360         MIN_STACK_BOUNDARY.
10361         (BIGGEST_ALIGNMENT): Set to 128.
10362         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
10363         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
10364         STACK_BOUNDARY.
10366 2018-03-19  Richard Biener  <rguenther@suse.de>
10368         PR tree-optimization/84933
10369         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
10370         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
10372 2018-03-19  Richard Biener  <rguenther@suse.de>
10374         PR tree-optimization/84859
10375         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
10376         (cond_if_else_store_replacement): Perform sinking operation on
10377         single-store BBs regardless of MAX_STORES_TO_SINK setting.
10378         Generalize what a BB with a single eligible store is.
10380 2018-03-19  Richard Biener  <rguenther@suse.de>
10382         PR tree-optimization/84929
10383         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
10384         chrec_is_positive against non-chrec arg.
10386 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
10388         PR target/84711
10389         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
10391 2018-03-18  Martin Liska  <mliska@suse.cz>
10393         PR rtl-optimization/84635
10394         * regrename.c (build_def_use): Use matches_mode only when
10395         matches >= 0.
10397 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
10399         PR tree-optimization/84913
10400         * tree-vect-loop.c (vectorizable_reduction): Don't try to
10401         vectorize chains of COND_EXPRs.
10403 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10405         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
10407 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10409         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
10411 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10413         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
10415 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
10416             Kito Cheng  <kito.cheng@gmail.com>
10418         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
10419         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
10420         (nds32_adjust_reg_alloc_order): New function.
10421         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
10423 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
10425         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
10426         nds32_print_operand, nds32_print_operand_address): Use
10427         HOST_WIDE_INT_PRINT_DEC instead.
10429 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
10431         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
10433 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
10435         PR target/84902
10436         * config/i386/i386.c (initial_ix86_tune_features,
10437         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
10438         unsigned long long.
10439         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
10440         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
10441         rather than 1u << ix86_tune.  Formatting fix.
10442         (ix86_option_override_internal): Change ix86_arch_mask from
10443         unsigned int to unsigned HOST_WIDE_INT, initialize to
10444         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
10445         (ix86_function_specific_restore): Likewise.
10447 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10449         PR target/84899
10450         * postreload.c (reload_combine_recognize_pattern): Perform
10451         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
10452         truncate_int_for_mode the result for the destination's mode.
10454         PR c/84909
10455         * hsa-gen.c (mem_type_for_type): Fix comment typo.
10456         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
10457         Likewise.
10458         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
10459         Likewise.
10461 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
10463         PR target/84876
10464         * lra-assigns.c (lra_split_hard_reg_for): Don't use
10465         regno_allocno_class_array and sorted_pseudos.
10466         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
10467         insns where regno is used.
10469 2018-03-16  Martin Liska  <mliska@suse.cz>
10471         PR ipa/84833
10472         * multiple_target.c (create_dispatcher_calls): Redirect
10473         reference in the symbol table.
10475 2018-03-16  Martin Liska  <mliska@suse.cz>
10477         PR ipa/84722
10478         * multiple_target.c (create_dispatcher_calls): Redirect also
10479         an alias.
10481 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10483         PR c++/79937
10484         PR c++/82410
10485         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
10486         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
10487         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
10489 2018-03-16  Julia Koval  <julia.koval@intel.com>
10491         * doc/invoke.texi (Skylake Server): Add CLWB.
10492         Cannonlake): Remove CLWB.
10494 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10496         PR tree-optimization/84841
10497         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
10498         1 << 3.
10499         (FLOAT_ONE_CONST_TYPE): Define.
10500         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
10501         (sort_by_operand_rank): Put entries with higher constant_type last
10502         rather than first to match comments.
10504 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
10506         * config/nios2/nios2.md (movsi_internal): Fix thinko in
10507         split predicate.
10509 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
10511         PR c++/79085
10512         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
10513         check and use address of target always.
10515 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
10517         PR target/84574
10518         * config/i386/i386.c (indirect_thunk_needed): Update comments.
10519         (indirect_thunk_bnd_needed): Likewise.
10520         (indirect_thunks_used): Likewise.
10521         (indirect_thunks_bnd_used): Likewise.
10522         (indirect_return_needed): New.
10523         (indirect_return_bnd_needed): Likewise.
10524         (output_indirect_thunk_function): Add a bool argument for
10525         function return.
10526         (output_indirect_thunk_function): Don't generate alias for
10527         function return thunk.
10528         (ix86_code_end): Call output_indirect_thunk_function to generate
10529         function return thunks.
10530         (ix86_output_function_return): Set indirect_return_bnd_needed
10531         and indirect_return_needed instead of indirect_thunk_bnd_needed
10532         and indirect_thunk_needed.
10534 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
10536         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
10537         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
10538         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
10540 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
10541             Paul Hua <paul.hua.gm@gmail.com>
10543         PR c/84852
10544         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
10546 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
10548         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
10549         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
10550         resp. SFmode cases.
10552 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
10554         PR target/84711
10555         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
10556         instead of GET_MODE_SIZE when comparing Units.
10558 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
10560         PR target/68256
10561         * varasm.c (hash_section): Return an unchangeble hash value
10562         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
10563         Return !aarch64_can_use_per_function_literal_pools_p ().
10565 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
10567         PR target/84860
10568         * optabs.c (emit_conditional_move): Pass address of cmode's copy
10569         rather than address of cmode as last argument to prepare_cmp_insn.
10571 2018-03-15  Julia Koval  <julia.koval@intel.com>
10573         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
10574         F_AVX512VNNI, F_AVX512BITALG): New.
10576 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
10578         PR target/83451
10579         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
10580         insn for floating-point loads and stores.
10582 2018-03-14  Carl Love  <cel@us.ibm.com>
10584         * config/rs6000/rs6000-c.c: Add macro definitions for
10585         ALTIVEC_BUILTIN_VEC_PERMXOR.
10586         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
10587         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
10588         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
10589         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
10590         UNSPEC_VPERMXOR.
10591         * config/doc/extend.texi: Add prototypes for vec_permxor.
10593 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
10595         PR c/84852
10596         * diagnostic-show-locus.c (class layout_point): Convert m_line
10597         from int to linenum_type.
10598         (line_span::comparator): Use linenum "compare" function when
10599         comparing line numbers.
10600         (test_line_span): New function.
10601         (layout_range::contains_point): Convert param "row" from int to
10602         linenum_type.
10603         (layout_range::intersects_line_p): Likewise.
10604         (layout::will_show_line_p): Likewise.
10605         (layout::print_source_line): Likewise.
10606         (layout::should_print_annotation_line_p): Likewise.
10607         (layout::print_annotation_line): Likewise.
10608         (layout::print_leading_fixits): Likewise.
10609         (layout::annotation_line_showed_range_p): Likewise.
10610         (struct line_corrections): Likewise for field m_row.
10611         (line_corrections::line_corrections): Likewise for param "row".
10612         (layout::print_trailing_fixits): Likewise.
10613         (layout::get_state_at_point): Likewise.
10614         (layout::get_x_bound_for_row): Likewise.
10615         (layout::print_line): Likewise.
10616         (diagnostic_show_locus): Likewise for locals "last_line" and "row".
10617         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
10618         * input.c (selftest::test_linenum_comparisons): New function.
10619         (selftest::input_c_tests): Call it.
10620         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
10621         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
10622         * selftest.h (ASSERT_GT): New macro.
10623         (ASSERT_GT_AT): New macro.
10624         (ASSERT_LT): New macro.
10625         (ASSERT_LT_AT): New macro.
10627 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
10629         PR rtl-optimization/84780
10630         * combine.c (distribute_links): Don't make a link based on pc_rtx.
10632 2018-03-14  Martin Liska  <mliska@suse.cz>
10634         * tree.c (record_node_allocation_statistics): Use
10635         get_stats_node_kind.
10636         (get_stats_node_kind): New function extracted from
10637         record_node_allocation_statistics.
10638         (free_node): Use get_stats_node_kind.
10640 2018-03-14  Richard Biener  <rguenther@suse.de>
10642         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
10643         that the value-set of ANTIC_IN doesn't grow.
10645         Revert
10646         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
10647         member.
10648         (BB_VISITED_WITH_VISITED_SUCCS): New define.
10649         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
10651 2018-03-14  Julia Koval  <julia.koval@intel.com>
10653         * config.gcc (icelake-client, icelake-server): New.
10654         (icelake): Remove.
10655         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
10656         (initial_ix86_arch_features): Ditto.
10657         (PTA_SKYLAKE): Add SGX.
10658         (PTA_ICELAKE): Remove.
10659         (PTA_ICELAKE_CLIENT): New.
10660         (PTA_ICELAKE_SERVER): New.
10661         (ix86_option_override_internal): Split up icelake on icelake client and
10662         icelake server.
10663         (get_builtin_code_for_version): Ditto.
10664         (fold_builtin_cpu): Ditto.
10665         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
10666         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
10667         * config/i386/i386.h (processor_type): Ditto.
10668         * doc/invoke.texi: Ditto.
10670 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
10672         PR sanitizer/83392
10673         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
10674         INTEGER_CST offset, add it together with bitpos / 8 and
10675         sign extend based on POINTER_SIZE.
10677         PR target/84844
10678         Revert
10679         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
10681         PR target/78090
10682         * config/i386/constraints.md (Yc): New register constraint.
10683         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
10684         Use Yc constraint for alternative 2 of operand 0.  Remove
10685         preferred_for_speed attribute.
10687 2018-03-14  Richard Biener  <rguenther@suse.de>
10689         PR tree-optimization/84830
10690         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
10691         with the old one to avoid oscillations.
10693 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
10695         PR target/83712
10696         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
10697         pseudos.
10698         (assign_by_spills): Return a flag of reload assignment failure.
10699         Do not process the reload assignment failures.  Do not spill other
10700         reload pseudos if they has the same reg class.  Update n if
10701         necessary.
10702         (lra_assign): Add a return arg.  Set up from the result of
10703         assign_by_spills call.
10704         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10705         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10706         usage_insns if it is not NULL.
10707         (spill_hard_reg_in_range): New function.
10708         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10709         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10710         function prototypes.
10711         (lra_assign): Change prototype.
10712         * lra.c (lra): Add code to deal with fails by splitting hard reg
10713         live ranges.
10715 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
10717         * config/riscv/riscv.opt (mrelax): New option.
10718         * config/riscv/riscv.c (riscv_file_start): Emit ".option
10719         "norelax" when riscv_mrelax is disabled.
10720         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
10722 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10724         PR target/84743
10725         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
10726         reassociation for int modes.
10728 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10730         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
10731         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
10732         for big-endian.
10733         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
10734         * config/aarch64/aarch64-sve.md
10735         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
10736         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
10737         (*extend<mode><Vwide>2): Rename to...
10738         (aarch64_sve_extend<mode><Vwide>2): ...this.
10739         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
10740         renaming the old pattern to...
10741         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
10742         unsigned packs.
10743         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
10744         define_expand, renaming the old pattern to...
10745         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
10746         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
10747         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
10748         account when deciding which SVE instruction the optab should use.
10749         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
10751 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10753         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
10754         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
10755         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
10756         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
10757         (tlsdesc_small_<mode>): Turn a define_expand and use
10758         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
10759         (tlsdesc_small_advsimd_<mode>): ...this.
10760         (tlsdesc_small_sve_<mode>): New pattern.
10762 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10764         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
10765         (UNSPEC_UMUL_HIGHPART): New constants.
10766         (MUL_HIGHPART): New int iteraor.
10767         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
10768         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
10769         define_expand.
10770         (*<su>mul<mode>3_highpart): New define_insn.
10772 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
10774         PR lto/84805
10775         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
10776         incomplete types.
10778 2018-03-13  Martin Liska  <mliska@suse.cz>
10780         PR ipa/84658.
10781         * (sem_item_optimizer::sem_item_optimizer): Initialize new
10782         vector.
10783         (sem_item_optimizer::~sem_item_optimizer): Release it.
10784         (sem_item_optimizer::merge_classes): Register variable aliases.
10785         (sem_item_optimizer::fixup_pt_set): New function.
10786         (sem_item_optimizer::fixup_points_to_sets): Likewise.
10787         * ipa-icf.h: Declare new variables and functions.
10789 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
10791         PR middle-end/84834
10792         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
10793         integer_pow2p@2 and test integer_pow2p in condition.
10794         (A < 0 ? C : 0): Similarly for @1.
10796         PR middle-end/84831
10797         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
10798         characters starting at p contain '\0' character, don't look beyond
10799         that.
10801         PR target/84827
10802         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
10803         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
10805         PR target/84828
10806         * reg-stack.c (change_stack): Change update_end var from int to
10807         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
10808         also call set_block_for_insn on the newly added insns and rescan.
10810         PR target/84786
10811         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
10812         on the last operand.
10814         PR c++/84704
10815         * tree.c (stabilize_reference_1): Return save_expr (e) for
10816         STATEMENT_LIST even if it doesn't have side-effects.
10818 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
10820         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
10822 2018-03-12  Renlin Li  <renlin.li@arm.com>
10824         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
10825         aarch64_output_scalar_simd_mov_immediate.
10827 2018-03-12  Martin Sebor  <msebor@redhat.com>
10829         PR tree-optimization/83456
10830         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
10831         for perfectly overlapping calls to memcpy.
10832         (gimple_fold_builtin_memory_chk): Same.
10833         (gimple_fold_builtin_strcpy): Handle no-warning.
10834         (gimple_fold_builtin_stxcpy_chk): Same.
10835         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
10837 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
10839         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
10840         parameter.  Use it for SFmode.
10841         (rs6000_function_arg_advance_1): Adjust.
10842         (rs6000_function_arg): Adjust.
10843         (rs6000_gimplify_va_arg): Pass false for that new parameter.
10845 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
10847         PR rtl-optimization/84169
10848         PR rtl-optimization/84780
10849         * combine.c (can_combine_p): Check for a 2-insn combination whether
10850         the destination register is used between the two insns, too.
10852 2018-03-12  Richard Biener  <rguenther@suse.de>
10854         PR tree-optimization/84803
10855         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
10856         for refs DR analysis didn't process.
10858 2018-03-12  Richard Biener  <rguenther@suse.de>
10860         PR tree-optimization/84777
10861         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
10862         force-vectorize loops ignore whether we are optimizing for size.
10864 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
10866         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
10867         (TARGET_MD_ASM_ADJUST): Define.
10869 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
10870             Kito Cheng  <kito.cheng@gmail.com>
10871             Chung-Ju Wu  <jasonwucj@gmail.com>
10873         * config/nds32/nds32.c (nds32_compute_stack_frame,
10874         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
10875         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
10876         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
10877         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
10878         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
10879         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
10880         * config/nds32/nds32.md (prologue, epilogue): Use macro
10881         NDS32_V3PUSH_AVAILABLE_P to do checking.
10883 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
10885         PR debug/58150
10886         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
10887         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
10888         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
10889         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
10890         addition of most attributes on !orig_type_die or the attribute not
10891         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
10893 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10894             Chung-Ju Wu  <jasonwucj@gmail.com>
10896         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
10897         __NDS32_VH__ macro.
10898         * config/nds32/nds32.opt (mvh): New option.
10900 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10901             Chung-Ju Wu  <jasonwucj@gmail.com>
10903         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
10904         function.
10905         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
10906         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
10907         definition.
10909 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10910             Chung-Ju Wu  <jasonwucj@gmail.com>
10912         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
10913         function.
10914         * config/nds32/nds32-multiple.md (strlensi): New pattern.
10915         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
10917 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
10918             Kito Cheng  <kito.cheng@gmail.com>
10919             Chung-Ju Wu  <jasonwucj@gmail.com>
10921         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
10922         UNSPEC_FFMISM and UNSPEC_FLMISM.
10923         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
10924         for ffb, ffmism and flmism.
10925         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
10926         (unspec_ffmism): Ditto.
10927         (unspec_flmism): Ditto.
10928         (nds32_expand_builtin_impl): Check if string extension is available.
10929         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
10930         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
10932 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
10934         Reverting patch:
10935         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
10937         PR target/83712
10938         * lra-assigns.c (assign_by_spills): Return a flag of reload
10939         assignment failure.  Do not process the reload assignment
10940         failures.  Do not spill other reload pseudos if they has the same
10941         reg class.
10942         (lra_assign): Add a return arg.  Set up from the result of
10943         assign_by_spills call.
10944         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10945         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10946         usage_insns if it is not NULL.
10947         (spill_hard_reg_in_range): New function.
10948         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10949         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10950         function prototypes.
10951         (lra_assign): Change prototype.
10952         * lra.c (lra): Add code to deal with fails by splitting hard reg
10953         live ranges.
10955 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
10957         PR target/84807
10958         * config/i386/i386.opt: Replace Enforcment with Enforcement.
10960 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
10962         PR debug/84620
10963         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
10964         (dw_val_node): Add val_symbolic_view.
10965         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
10966         (symview_upper_bound): New.
10967         (new_line_info_table): Initialize symviews_since_reset.
10968         (dwarf2out_source_line): Count symviews_since_reset and set
10969         symview_upper_bound.
10970         (dw_val_equal_p): Handle symview.
10971         (add_AT_symview): New.
10972         (print_dw_val): Handle symview.
10973         (attr_checksum, attr_checksum_ordered): Likewise.
10974         (same_dw_val_p, size_of_die): Likewise.
10975         (value_format, output_die): Likewise.
10976         (add_high_low_attributes): Use add_AT_symview for entry_view.
10977         (dwarf2out_finish): Reset symview_upper_bound, clear
10978         zero_view_p.
10980 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
10982         PR target/83969
10983         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
10984         Add strict argument and use it.
10985         (rs6000_split_multireg_move): Update for new strict argument.
10986         (mem_operand_gpr): Disallow all non-offsettable addresses.
10987         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
10989 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
10991         PR target/84772
10992         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
10993         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
10994         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
10996         PR c++/84767
10997         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
10998         decl, use remap_type if we want to use the type.
11000 2018-03-09  Martin Sebor  <msebor@redhat.com>
11002         PR tree-optimization/84526
11003         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
11004         Remove dead code.
11005         (builtin_access::generic_overlap): Be prepared to handle non-array
11006         base objects.
11008 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
11010         PR rtl-optimization/84682
11011         * lra-constraints.c (process_address_1): Check is_address flag
11012         for address constraints.
11013         (process_alt_operands): Likewise.
11014         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
11015         preprocess_constraints.
11016         * recog.h (preprocess_constraints): Add oploc parameter.
11017         Adjust callers.
11018         * recog.c (preprocess_constraints): Test address_operand for
11019         CT_ADDRESS constraints.
11021 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
11023         PR target/83712
11024         * lra-assigns.c (assign_by_spills): Return a flag of reload
11025         assignment failure.  Do not process the reload assignment
11026         failures.  Do not spill other reload pseudos if they has the same
11027         reg class.
11028         (lra_assign): Add a return arg.  Set up from the result of
11029         assign_by_spills call.
11030         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
11031         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
11032         usage_insns if it is not NULL.
11033         (spill_hard_reg_in_range): New function.
11034         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
11035         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
11036         function prototypes.
11037         (lra_assign): Change prototype.
11038         * lra.c (lra): Add code to deal with fails by splitting hard reg
11039         live ranges.
11041 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11043         PR target/83193
11044         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
11045         Accept complain bool parameter.  Only emit errors if it is true.
11046         (arm_parse_cpu_option_name): Likewise.
11047         (arm_target_thumb_only): Adjust callers of the above.
11048         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
11049         prototype to take a default true bool parameter.
11050         (arm_parse_arch_option_name): Likewise.
11052 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
11053             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11055         PR jit/64089
11056         PR jit/84288
11057         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
11058         * configure: Regenerate.
11059         * configure.ac ("linker --version-script option"): New.
11060         ("linker soname option"): New.
11062 2018-03-09  Richard Biener  <rguenther@suse.de>
11064         PR tree-optimization/84775
11065         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
11066         immediate uses of predicate stmts and mark them modified.
11068         Revert
11069         PR tree-optimization/84178
11070         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
11071         to caller.
11072         (version_loop_for_if_conversion): Delay update_ssa call.
11073         (tree_if_conversion): Delay update_ssa until after predicate
11074         insertion.
11076 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11078         PR target/84763
11079         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
11080         when the function accesses prior frames.
11082 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
11084         PR debug/84456
11085         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
11086         gen_llsym, otherwise call maybe_gen_llsym.
11088         PR inline-asm/84742
11089         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
11090         has ',' character inside of it.
11092 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11094         PR target/84748
11095         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
11096         as clobbering CC_REGNUM.
11098 2018-03-08  Richard Biener  <rguenther@suse.de>
11100         PR middle-end/84552
11101         * tree-scalar-evolution.c: Include tree-into-ssa.h.
11102         (follow_copies_to_constant): Do not follow SSA names registered
11103         for update.
11105 2018-03-08  Richard Biener  <rguenther@suse.de>
11107         PR tree-optimization/84178
11108         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
11109         to caller.
11110         (version_loop_for_if_conversion): Delay update_ssa call.
11111         (tree_if_conversion): Delay update_ssa until after predicate
11112         insertion.
11114 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
11116         PR tree-optimization/84178
11117         * tree-if-conv.c (release_bb_predicate): Remove the
11118         the assertion that the stmts have NULL use_ops.
11119         Discard the statements, asserting that they haven't
11120         yet been added to a BB.
11122 2018-03-08  Richard Biener  <rguenther@suse.de>
11124         PR tree-optimization/84746
11125         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
11126         (phi_translate): Pass in destination ANTIC_OUT set.
11127         (phi_translate_1): Likewise.  For a simplified result lookup
11128         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
11129         (phi_translate_set): Adjust.
11130         (do_pre_regular_insertion): Likewise.
11131         (do_pre_partial_partial_insertion): Likewise.
11133 2018-03-08  Martin Liska  <mliska@suse.cz>
11135         PR gcov-profile/84735
11136         * doc/gcov.texi: Document usage of profile files.
11137         * gcov-io.h: Document changes in the format.
11139 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
11141         PR debug/84404
11142         PR debug/84408
11143         * dwarf2out.c (struct dw_line_info_table): Update comments for
11144         view == -1.
11145         (FORCE_RESET_NEXT_VIEW): New.
11146         (FORCE_RESETTING_VIEW_P): New.
11147         (RESETTING_VIEW_P): Check for -1 too.
11148         (ZERO_VIEW_P): Likewise.
11149         (new_line_info_table): Force-reset next view.
11150         (dwarf2out_begin_function): Likewise.
11151         (dwarf2out_source_line): Simplify zero_view_p initialization.
11152         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
11153         view directly.  Omit view when omitting .loc at line 0.
11155 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
11157         PR tree-optimization/84740
11158         * tree-switch-conversion.c (process_switch): Call build_constructors
11159         only if info.phi_count is non-zero.
11161         PR tree-optimization/84739
11162         * tree-tailcall.c (find_tail_calls): Check call arguments against
11163         DECL_ARGUMENTS (current_function_decl) rather than
11164         DECL_ARGUMENTS (func) when checking for tail recursion.
11166 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
11168         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
11169         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
11170         Volker Reichelt's entry and add entries for people that perform
11171         GCC fuzzy testing and report numerous bugs.
11173 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
11175         PR target/82411
11176         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
11177         readonly data in sdata, if that is disabled.
11178         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
11179         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
11180         -mreadonly-in-sdata option.
11182 2018-03-07  Martin Sebor  <msebor@redhat.com>
11184         PR tree-optimization/84468
11185         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
11186         basic block when looking for nul assignment.
11188 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
11190         PR target/84277
11191         * except.h (output_function_exception_table): Adjust prototype.
11192         * except.c (output_function_exception_table): Remove FNNAME parameter
11193         and add SECTION parameter.  Ouput one part of the table at a time.
11194         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
11195         the first part of the exception table and emit unwind directives.
11196         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
11197         (i386_pe_seh_cold_init): Likewise.
11198         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
11199         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
11200         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
11201         (ix86_output_call_insn): Emit a nop in one more case for SEH.
11202         * config/i386/winnt.c: Include except.h.
11203         (struct seh_frame_state): Add reg_offset, after_prologue and
11204         in_cold_section fields.
11205         (i386_pe_seh_end_prologue): Set seh->after_prologue.
11206         (i386_pe_seh_cold_init): New function.
11207         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
11208         to seh->in_cold_section.
11209         (seh_emit_push): Record the offset of the push.
11210         (seh_emit_save): Record the offet of the save.
11211         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
11212         Test seh->after_prologue to disregard the epilogue.
11213         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
11214         (i386_pe_end_cold_function): New function.
11216 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
11218         PR fortran/84565
11219         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
11220         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
11222         PR c++/84704
11223         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
11224         on tmp_var.
11225         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
11226         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
11228         PR middle-end/84723
11229         * multiple_target.c: Include tree-inline.h and intl.h.
11230         (expand_target_clones): Diagnose and fail if node->definition and
11231         !tree_versionable_function_p (node->decl).
11233 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
11235         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
11236         sprint_ul.
11237         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
11238         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
11239         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
11241 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
11243         PR target/84710
11244         * combine.c (try_combine): Use reg_or_subregno instead of handling
11245         just paradoxical SUBREGs and REGs.
11247 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
11249         * config/arc/arc.c (arc_finalize_pic): Remove function.
11250         (arc_must_save_register): We use single base PIC register, remove
11251         checks to save/restore the PIC register.
11252         (arc_expand_prologue): Likewise.
11253         * config/arc/arc-protos.h (arc_set_default_type_attributes):
11254         Remove.
11255         (arc_verify_short): Likewise.
11256         (arc_attr_type): Likewise.
11257         * config/arc/arc.c (arc_set_default_type_attributes): Remove.
11258         (walk_stores): Likewise.
11259         (arc_address_cost): Make it static.
11260         (arc_verify_short): Likewise.
11261         (branch_dest): Likewise.
11262         (arc_attr_type): Likewise.
11263         * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
11264         (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
11265         (arc_final_prescan_insn): Remove inserting the nops due to
11266         hardware hazards.  It is done in reorg step.
11267         (insn_length_variant_t): Remove.
11268         (insn_length_parameters_t): Likewise.
11269         (arc_insn_length_parameters): Likewise.
11270         (arc_get_insn_variants): Likewise.
11271         * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
11273 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
11275         PR inline-asm/84683
11276         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
11277         assertion failure.
11279         PR tree-optimization/84687
11280         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
11281         on new_node->decl.
11282         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
11284 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11286         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
11287         Rename to ppc_speculation_barrier.
11288         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
11289         __builtin_ppc_speculation_barrier.
11291 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
11293         PR target/84700
11294         * combine.c (combine_simplify_rtx): Don't try to simplify if
11295         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
11296         are equal to x.
11298 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
11300         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
11301         to 32 bytes when compiling for POWER9.
11303 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
11305         PR target/84564
11306         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
11307         regparm >= 3 with no arg reg available also for calls with
11308         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
11310         PR target/84524
11311         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
11312         orig,vex.
11313         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
11315 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
11317         PR target/84264
11318         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
11320 2018-03-05  Richard Biener  <rguenther@suse.de>
11322         PR tree-optimization/84486
11323         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
11324         When inserting a __builtin_assume_aligned call set the LHS
11325         SSA name alignment info accordingly.
11327 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
11329         PR tree-optimization/84114
11330         * config/aarch64/aarch64.c (aarch64_reassociation_width)
11331         Avoid reassociation of FLOAT_MODE addition.
11333 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
11335         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
11336         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
11337         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
11338         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
11339         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
11340         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
11341         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
11342         and -mwbnoinvd.
11343         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
11344         __builtin_ia32_wbinvd): New builtins.
11345         (SPECIAL_ARGS2): New.
11346         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
11347         (SPECIAL_ARGS2): New.
11348         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
11349         (ix86_valid_target_attribute_inner_p): Ditto.
11350         (ix86_init_mmx_sse_builtins): Add special_args2.
11351         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
11352         TARGET_WBNOINVD_P): New.
11353         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
11354         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
11355         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
11356         * config/i386/immintrin.h (_wbinvd): New intrinsic.
11357         * config/i386/pconfigintrin.h: New file.
11358         * config/i386/wbnoinvdintrin.h: Ditto.
11359         * config/i386/x86intrin.h: Add headers pconfigintrin.h and
11360         wbnoinvdintrin.h.
11361         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
11363 2018-03-05  Richard Biener  <rguenther@suse.de>
11365         PR tree-optimization/84670
11366         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
11367         member.
11368         (BB_VISITED_WITH_VISITED_SUCCS): New define.
11369         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
11370         (compute_antic_aux): Only assert the number of values in ANTIC_IN
11371         doesn't grow if all successors (recursively) were visited at least
11372         once.
11374 2018-03-05  Richard Biener  <rguenther@suse.de>
11376         PR tree-optimization/84650
11377         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
11378         if executed in the loop pipeline.
11380 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
11382         * doc/configfiles.texi (Configuration Files): Move info about
11383         conditionalizing $target-protos.h to...
11384         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
11385         differs from $target-protos.h.
11387 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
11388             Chung-Ju Wu  <jasonwucj@gmail.com>
11390         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
11391         * config/nds32/nds32-multiple.md (setmemsi): Define.
11392         * config/nds32/nds32-memory-manipulation.c
11393         (nds32_gen_dup_4_byte_to_word_value): New.
11394         (emit_setmem_word_loop): New.
11395         (emit_setmem_byte_loop): New.
11396         (nds32_expand_setmem_loop): New.
11397         (nds32_expand_setmem_loop_v3m): New.
11398         (nds32_expand_setmem_unroll): New.
11399         (nds32_expand_setmem): New.
11401 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11402             Chung-Ju Wu  <jasonwucj@gmail.com>
11404         * config/nds32/nds32-memory-manipulation.c
11405         (nds32_emit_load_store): New.
11406         (nds32_emit_post_inc_load_store): New.
11407         (nds32_emit_mem_move): New.
11408         (nds32_emit_mem_move_block): New.
11409         (nds32_expand_movmemsi_loop_unknown_size): New.
11410         (nds32_expand_movmemsi_loop_known_size): New.
11411         (nds32_expand_movmemsi_loop): New.
11412         (nds32_expand_movmemsi_unroll): New.
11413         (nds32_expand_movmemqi): Rename ...
11414         (nds32_expand_movmemsi): ... to this.
11415         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
11416         (movmemsi): ... to this.
11417         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
11418         (nds32_expand_movmemsi): ... to this.
11420 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11421             Monk Chiang  <sh.chiang04@gmail.com>
11422             Chung-Ju Wu  <jasonwucj@gmail.com>
11424         * config/nds32/nds32-protos.h
11425         (nds32_expand_load_multiple): New arguments.
11426         (nds32_expand_store_multiple): Ditto.
11427         (nds32_valid_multiple_load_store): Rename ...
11428         (nds32_valid_multiple_load_store_p): ... to this.
11429         * config/nds32/nds32-memory-manipulation.c
11430         (nds32_expand_load_multiple): Refine implementation.
11431         (nds32_expand_store_multiple): Ditto.
11432         * config/nds32/nds32-multiple.md
11433         (load_multiple): Update nds32_expand_load_multiple interface.
11434         (store_multiple): Update nds32_expand_store_multiple interface.
11435         * config/nds32/nds32-predicates.c
11436         (nds32_valid_multiple_load_store): Rename ...
11437         (nds32_valid_multiple_load_store_p): ... to this and refine
11438         implementation.
11439         * config/nds32/predicates.md
11440         (nds32_load_multiple_and_update_address_operation): New predicate.
11441         (nds32_store_multiple_and_update_address_operation): New predicate.
11443 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11444             Chung-Ju Wu  <jasonwucj@gmail.com>
11446         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
11447         (combo): New attribute.
11448         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
11450 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
11452         * config/nds32/nds32.opt: Change -mcmodel= default value.
11454 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
11455             Monk Chiang  <sh.chiang04@gmail.com>
11456             Chung-Ju Wu  <jasonwucj@gmail.com>
11458         * config/nds32/constants.md (unspec_element): New enum.
11459         * config/nds32/constraints.md (Umw): New constraint.
11460         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
11461         * config/nds32/nds32-intrinsic.md: Likewise.
11462         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
11463         (nds32_valid_smw_lwm_base_p): New.
11464         (nds32_output_smw_single_word): New.
11465         (nds32_output_lmw_single_word): New.
11466         (nds32_expand_unaligned_load): New.
11467         (nds32_expand_unaligned_store): New.
11468         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
11469         (nds32_output_smw_single_word): Declare.
11470         (nds32_output_lmw_single_word): Declare.
11471         (nds32_expand_unaligned_load): Declare.
11472         (nds32_expand_unaligned_store): Declare.
11473         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
11474         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
11475         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
11476         NDS32_BUILTIN_UASTORE_DW.
11477         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
11478         predicate.
11480 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
11481             Kito Cheng  <kito.cheng@gmail.com>
11482             Chung-Ju Wu  <jasonwucj@gmail.com>
11484         * config/nds32/nds32-intrinsic.c
11485         (nds32_expand_builtin_null_ftype_reg): Delete.
11486         (nds32_expand_builtin_reg_ftype_imm): Ditto.
11487         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
11488         (nds32_read_argument): New.
11489         (nds32_legitimize_target): Ditto.
11490         (nds32_legitimize_argument): Ditto.
11491         (nds32_check_constant_argument): Ditto.
11492         (nds32_expand_unop_builtin): Ditto.
11493         (nds32_expand_unopimm_builtin): Ditto.
11494         (nds32_expand_binop_builtin): Ditto.
11495         (nds32_builtin_decl_impl): Ditto.
11496         (builtin_description): Ditto.
11497         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
11498         (nds32_init_builtins_impl): Ditto.
11499         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
11500         (nds32_builtin_decl): New.
11501         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
11502         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
11504 2018-03-02  Jeff Law  <law@redhat.com>
11506         * reorg.c (stop_search_p): Handle DEBUG_INSN.
11507         (redundant_insn, fill_simple_delay_slots): Likewise.
11508         (fill_slots_from_thread): Likewise.
11509         * resource.c (mark_referenced_resources): Likewise.
11510         (mark_set_resources, find_dead_or_set_registers): Likewise.
11512 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11514         * substring-locations.h (format_warning_va): Formatting fix for
11515         ATTRIBUTE_GCC_DIAG.
11516         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
11517         argument.
11518         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
11519         * substring-locations.c: Include intl.h.
11520         (format_warning_va): Turned into small wrapper around
11521         format_warning_n_va, renamed to ...
11522         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
11523         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
11524         use ngettext.
11525         (format_warning_at_substring_n): New function.
11526         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
11527         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
11528         format_warning_at_substring with just a shorter name instead of
11529         const function pointer.
11530         (fmtwarn_n): New function.
11531         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
11532         appropriate, get rid of all the fmtstr temporaries, move conditionals
11533         with G_() wrapped string literals directly into fmtwarn arguments,
11534         cast dir.len to (int), formatting fixes.
11536 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
11538         * doc/invoke.texi: Remove "Cilk Plus" references.
11540 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11541             Richard Biener  <rguenther@suse.de>
11543         PR ipa/84628
11544         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
11545         for error or warning attributes if CALL_FROM_THUNK_P is set.
11546         Formatting fixes.
11548 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11550         PR target/56540
11551         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
11552         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
11554         PR target/56540
11555         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
11556         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
11558         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
11559         instead of -1U in last predictors element's probability member.
11561 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
11563         PR ipa/83983
11564         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
11565         arguments if they are comparable.
11567 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
11569         PR tree-optimization/84634
11570         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
11571         masks and masked_loop_p with a single loop_masks, making sure it's
11572         null for bb vectorization.
11574 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
11576         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
11577         (vect_analyze_data_ref_access): Use loop->safe_len rather than
11578         loop->force_vectorize to check whether there is no alias.
11580 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11582         PR target/84614
11583         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
11584         prototypes.
11585         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
11586         comments.
11587         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
11588         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
11589         instead of a loop around prev_real_insn.
11590         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
11591         prev_real_insn.
11593         PR inline-asm/84625
11594         * config/i386/i386.c (ix86_print_operand): Use conditional
11595         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
11596         zero vector.
11598 2018-03-02  Richard Biener  <rguenther@suse.de>
11600         PR tree-optimization/84427
11601         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
11602         (bitmap_set_subtract_values): Rewrite to handle multiple
11603         exprs per value.
11604         (clean): Likewise.
11605         (prune_clobbered_mems): Likewise.
11606         (phi_translate): Take edge instead of pred/phiblock.
11607         (phi_translate_1): Likewise.
11608         (phi_translate_set): Likewise.  Insert all translated
11609         exprs for a value into the set, keeping possibly multiple
11610         expressions per value.
11611         (compute_antic_aux): Adjust for phi_translate changes.
11612         When intersecting union the expressions and prune those
11613         not in the final value set, keeping possibly multiple
11614         expressions per value.  Do not use value-insertion
11615         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
11616         all expressions.  Add verification that the value-sets
11617         only shrink during iteration.
11618         (compute_partial_antic_aux): Adjust for the phi_translate changes.
11619         (do_pre_regular_insertion): Likewise.
11620         (do_pre_partial_partial_insertion): Likewise.
11622 2018-03-02  Richard Biener  <rguenther@suse.de>
11624         PR target/82005
11625         * config/darwin.c (saved_debug_info_level): New static global.
11626         (darwin_asm_lto_start): Disable debug info generation for LTO out.
11627         (darwin_asm_lto_end): Restore debug info generation settings.
11629 2018-03-01  Martin Liska  <mliska@suse.cz>
11631         PR sanitizer/82484
11632         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11633         volatile arguments.
11635 2018-03-01  Richard Biener  <rguenther@suse.de>
11637         PR debug/84645
11638         * dwarf2out.c (gen_variable_die): Properly handle late VLA
11639         type annotation with LTO when debug was disabled at compile-time.
11641 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
11643         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
11644         XINT with INTVAL.
11645         (mips_final_postscan_insn): Likewise.
11647 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
11649         PR rtl-optimization/84528
11650         * alias.c (init_alias_target): Add commentary.
11651         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
11652         a unique base value if the frame pointer is not eliminated
11653         to the stack pointer.
11655 2018-03-01  Tom de Vries  <tom@codesourcery.com>
11657         PR rtl-optimization/83327
11658         * lra-int.h (hard_regs_spilled_into): Declare.
11659         * lra.c (hard_regs_spilled_into): Define.
11660         (init_reg_info): Init hard_regs_spilled_into.
11661         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
11662         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
11663         (process_bb_lives): Handle hard_regs_spilled_into.
11664         (lra_create_live_ranges_1): Before doing liveness propagation, clear
11665         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
11667 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
11669         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
11670         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
11671         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
11672         * config/rs6000/aix72.h: New file.
11674 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
11676         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
11677         instead of warning_at with conditional singular and plural messages
11678         where possible.
11680         PR target/52991
11681         * stor-layout.c (update_alignment_for_field): For
11682         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
11683         && !DECL_PACKED (field), do the alignment update, just use
11684         only desired_align instead of MAX (type_align, desired_align)
11685         as the alignment.
11686         (place_field): Don't do known_align < desired_align handling
11687         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
11688         is non-NULL, instead do it after rli->prev_field handling and
11689         only if not within a bitfield word.  For DECL_PACKED (field)
11690         use type_align of BITS_PER_UNIT.
11692 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
11694         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
11695         superfluous parentheses and trailing spaces.
11697 2018-02-28  Richard Biener  <rguenther@suse.de>
11699         PR tree-optimization/84584
11700         * graphite-scop-detection.c (scop_detection::add_scop): Discard
11701         SCoPs with fake exit edge.
11703 2018-02-28  Martin Liska  <mliska@suse.cz>
11705         PR testsuite/84597
11706         * timevar.c (timer::print): Fix format to properly print 100%
11707         values.
11709 2018-02-28  Richard Biener  <rguenther@suse.de>
11711         PR middle-end/84607
11712         * genmatch.c (capture_info::walk_match): Do not mark
11713         captured expressions without operands as expr_p given
11714         they act more like predicates and should be subject to
11715         "lost tail" side-effect preserving.
11717 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
11719         PR rtl-optimization/81611
11720         * auto-inc-dec.c (attempt_change): Move dead note from
11721         mem_insn if it's the next use of regno
11722         (find_address): Take address use of reg holding
11723         non-incremented value.  Add parm to limit search to the named
11724         reg only.
11725         (merge_in_block): Attempt to use a mem insn that is the next
11726         use of the original regno.
11728 2018-02-27  Martin Sebor  <msebor@redhat.com>
11730         PR c++/83871
11731         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
11732         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
11734 2018-02-27  Martin Sebor  <msebor@redhat.com>
11736         PR translation/84207
11737         * diagnostic-core.h (warning_n, error_n, inform_n): Change
11738         n argument to unsigned HOST_WIDE_INT.
11739         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
11740         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
11741         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
11742         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
11744 2018-02-27  Richard Biener  <rguenther@suse.de>
11746         PR tree-optimization/84512
11747         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
11748         Do not use the estimate returned from record_stmt_cost for
11749         the scalar iteration cost but sum properly using add_stmt_cost.
11751 2018-02-27  Richard Biener  <rguenther@suse.de>
11753         PR tree-optimization/84466
11754         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
11755         Adjust last change to less strictly validate use operands.
11757 2018-02-27  Martin Liska  <mliska@suse.cz>
11759         PR gcov-profile/84548
11760         * gcov.c (process_file): Allow partial overlap and consider it
11761         also as group functions.
11762         (output_lines): Properly calculate range of lines for a group.
11764 2018-02-27  Martin Liska  <mliska@suse.cz>
11766         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
11767         'ggc' suffixes.  Change first column width.
11768         (timer::print): Fix formatting of the column.
11770 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
11772         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
11773         preserve inline entry blocks for the sake of debug inline
11774         entry point markers alone.
11775         (remove_unused_locals): Suggest in comments a better place to
11776         force the preservation of inline entry blocks that are
11777         otherwise unused, but do not preserve them.
11779 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11781         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
11783 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11785         PR target/84039
11786         * config/i386/constraints.md (Bs): Replace
11787         ix86_indirect_branch_register with
11788         TARGET_INDIRECT_BRANCH_REGISTER.
11789         (Bw): Likewise.
11790         * config/i386/i386.md (indirect_jump): Likewise.
11791         (tablejump): Likewise.
11792         (*sibcall_memory): Likewise.
11793         (*sibcall_value_memory): Likewise.
11794         Peepholes of indirect call and jump via memory: Likewise.
11795         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
11796         (*sibcall_value_GOT_32): Likewise.
11797         * config/i386/predicates.md (indirect_branch_operand): Likewise.
11798         (GOT_memory_operand): Likewise.
11799         (call_insn_operand): Likewise.
11800         (sibcall_insn_operand): Likewise.
11801         (GOT32_symbol_operand): Likewise.
11802         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
11804 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
11806         PR rtl-optimization/83496
11807         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
11808         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
11809         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
11810         redundant insn, if any.
11811         (relax_delay_slots): Likewise.
11812         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
11814 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
11816         PR tree-optimization/83965
11817         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
11818         that grouped statements are part of a reduction chain.  Return
11819         true if the statement is not marked as a reduction itself but
11820         is part of a group.
11821         (vect_recog_dot_prod_pattern): Don't check whether the statement
11822         is part of a group here.
11823         (vect_recog_sad_pattern): Likewise.
11824         (vect_recog_widen_sum_pattern): Likewise.
11826 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
11828         PR debug/84545
11829         * final.c (rest_of_clean_state): Also look for calls inside sequences.
11831 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11833         PR target/84530
11834         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
11835         the bool argument.
11836         (ix86_output_indirect_function_return): New prototype.
11837         (ix86_split_simple_return_pop_internal): Likewise.
11838         * config/i386/i386.c (indirect_return_via_cx): New.
11839         (indirect_return_via_cx_bnd): Likewise.
11840         (indirect_thunk_name): Handle return va CX_REG.
11841         (output_indirect_thunk_function): Create alias for
11842         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
11843         (ix86_output_indirect_jmp): Remove the bool argument.
11844         (ix86_output_indirect_function_return): New function.
11845         (ix86_split_simple_return_pop_internal): Likewise.
11846         * config/i386/i386.md (*indirect_jump): Don't pass false
11847         to ix86_output_indirect_jmp.
11848         (*tablejump_1): Likewise.
11849         (simple_return_pop_internal): Change it to define_insn_and_split.
11850         Call ix86_split_simple_return_pop_internal to split it for
11851         -mfunction-return=.
11852         (simple_return_indirect_internal): Call
11853         ix86_output_indirect_function_return instead of
11854         ix86_output_indirect_jmp.
11856 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
11858         PR bootstrap/84405
11859         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
11860         memset and value initialization afterwards.
11862 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
11864         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
11866 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11868         PR target/84521
11869         * common/config/aarch64/aarch64-common.c
11870         (aarch_option_optimization_table[]): Switch
11871         off fomit-frame-pointer
11873 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
11874             Chung-Ju Wu  <jasonwucj@gmail.com>
11876         * config/nds32/nds32-multiple.md (load_multiple): Disallow
11877         volatile memory.
11878         (store_multiple): Ditto.
11880 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
11882         * config.gcc: Add --with-cpu support for nds32 target.
11883         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
11884         * config/nds32/nds32.opt: Add -mcpu= option.
11886 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
11888         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
11889         isel=yes): Warn for these deprecated options.
11891 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
11893         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
11894         ISA_2_5_MASKS_EMBEDDED.
11896 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
11898         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
11899         p->max as pointers rather than using iterative_hash_expr.
11901 2018-02-23  Carl Love  <cel@us.ibm.com>
11903         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
11904         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
11905         BU_P8V_OVERLOAD_2.
11906         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
11907         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
11908         P8V_BUILTIN_VEC_VUNSIGNED2.
11910 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
11912         PR target/81572
11913         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
11914         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
11915         LRA_UNKNOWN_ALT.
11916         * lra-constraints.c (curr_insn_transform): Set up
11917         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
11918         LRA_UNKNOWN_ALT.
11919         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
11920         * lra-eliminations.c (spill_pseudos): Ditto.
11921         (process_insn_for_elimination): Ditto.
11922         * lra-lives.c (reg_early_clobber_p): Use the new macros.
11923         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
11924         LRA_NON_CLOBBERED_ALT.
11926 2018-02-22  Martin Sebor  <msebor@redhat.com>
11928         PR tree-optimization/84480
11929         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
11930         to maybe_diag_stxncpy_trunc.  Call it.
11931         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
11932         from gimple_fold_builtin_strcpy.  Print inlining stack.
11933         (handle_builtin_stxncpy): Print inlining stack.
11934         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
11936 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
11938         PR target/84176
11939         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
11940         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
11941         and -fcheck-pointer-bounds are used together.
11942         (indirect_thunk_prefix): New enum.
11943         (indirect_thunk_need_prefix): New function.
11944         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
11945         "_nt" instead of "_bnd" for NOTRACK prefix.
11946         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
11947         (output_indirect_thunk_function): Likewise.
11948         (): Likewise.
11949         (ix86_code_end): Update output_indirect_thunk_function calls.
11950         (ix86_output_indirect_branch_via_reg): Replace
11951         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
11952         (ix86_output_indirect_branch_via_push): Likewise.
11953         (ix86_output_function_return): Likewise.
11954         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
11955         incompatible with -fcf-protection=branch and
11956         -fcheck-pointer-bounds.
11958 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11960         PR target/83335
11961         * config/aarch64/aarch64.c (aarch64_print_address_internal):
11962         Change gcc_assert call to output_operand_lossage.
11964 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11966         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
11968 2018-02-22  DJ Delorie  <dj@redhat.com>
11969             Sebastian Perta  <sebastian.perta@renesas.com>
11970             Oleg Endo  <olegendo@gcc.gnu.org>
11972         * config/rx/rx.c (rx_rtx_costs): New function.
11973         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
11975 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11977         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
11979 2018-02-22  Martin Liska  <mliska@suse.cz>
11981         PR driver/83193
11982         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
11983         Add "native" as a possible value.
11985 2018-02-22  Martin Liska  <mliska@suse.cz>
11987         PR driver/83193
11988         * config/i386/i386.c (ix86_option_override_internal):
11989         Add "native" as a possible value for -march and -mtune.
11991 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
11993         PR target/84502
11994         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
11995         to all type variants.
11997         PR tree-optimization/84503
11998         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
11999         width as info->bitpos + info->bitsize - start.
12000         (merged_store_group::merge_overlapping): Simplify width computation.
12001         (check_no_overlap): New function.
12002         (imm_store_chain_info::try_coalesce_bswap): Compute expected
12003         start + width and last_order of the group, fail if check_no_overlap
12004         fails.
12005         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
12006         to group if check_no_overlap fails.
12008 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
12010         * config/rs6000/altivec.md: Delete contraint arguments to
12011         define_expand, define_split, and define_peephole2, and in
12012         define_insn_and_split if always unused.
12013         * config/rs6000/darwin.md: Ditto.
12014         * config/rs6000/dfp.md: Ditto.
12015         * config/rs6000/rs6000.md: Ditto.
12016         * config/rs6000/sync.md: Ditto.
12017         * config/rs6000/vector.md: Ditto.
12018         * config/rs6000/vsx.md: Ditto.
12020 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
12022         * config/rs6000/altivec.md: Write output control strings as braced
12023         blocks instead of double-quoted strings.
12024         * config/rs6000/darwin.md: Ditto.
12025         * config/rs6000/rs6000.md: Ditto.
12026         * config/rs6000/vector.md: Ditto.
12027         * config/rs6000/vsx.md: Ditto.
12029 2018-02-21  Jason Merrill  <jason@redhat.com>
12031         PR c++/84314 - ICE with templates and fastcall attribute.
12032         * attribs.c (build_type_attribute_qual_variant): Remove assert.
12034 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
12036         * ipa-cp.c (determine_versionability): Fix comment typos.
12038 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
12040         PR c/84229
12041         * ipa-cp.c (determine_versionability): Do not version functions caling
12042         va_arg_pack.
12044 2018-02-21  Martin Liska  <mliska@suse.cz>
12046         PR driver/83193
12047         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
12048         Add "native" as a possible value.
12049         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
12050         the macro when native cpu detection is available.
12052 2018-02-21  Martin Liska  <mliska@suse.cz>
12054         PR driver/83193
12055         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
12056         Add "native" as a possible value.
12057         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
12058         when native cpu detection is available.
12060 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
12061             Martin Sebor  <msebor@redhat.com>
12063         PR tree-optimization/84478
12064         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
12065         false.
12066         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
12067         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
12068         support which is conservatively correct, for 2 only stay conservative
12069         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
12070         argument to the 2 argument get_range_strlen, adjust 6 arg
12071         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
12072         false.
12073         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
12074         (gimple_fold_builtin_strlen): Pass true as last argument to
12075         get_range_strlen.
12077 2018-02-20  Martin Sebor  <msebor@redhat.com>
12079         PR middle-end/84095
12080         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
12081         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
12082         (builtin_memref::builtin_memref): Factor out parts into
12083         set_base_and_offset and call it.
12085 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
12087         PR middle-end/84406
12088         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
12089         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
12090         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
12091         search at the associated MODE_INT.
12093 2018-02-20  Jeff Law  <law@redhat.com>
12095         PR middle-end/82123
12096         PR tree-optimization/81592
12097         PR middle-end/79257
12098         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
12099         for range data rather than using global data.
12100         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
12101         range data rather than using global data.
12102         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
12103         pass it to children as needed.
12104         (struct directive::fmtresult): Similarly.
12105         (struct directive::set_width): Similarly.
12106         (struct directive::set_precision): Similarly.
12107         (format_integer, format_directive, parse_directive): Similarly.
12108         (format_none): Accept unnamed vr_values parameter.
12109         (format_percent, format_floating, format_character): Similarly.
12110         (format_string, format_plain): Similarly.
12111         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
12112         the EVRP range analyzer for range data rather than using global data.
12113         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
12114         gimple-ssa-evrp-analyze.h
12115         (class sprintf_dom_walker): Add after_dom_children member function.
12116         Add evrp_range_analyzer member.
12117         (sprintf_dom_walker::before_dom_children): Call into the EVRP
12118         range analyzer as needed.
12119         (sprintf_dom_walker::after_dom_children): New member function.
12120         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
12121         if not optimizing.
12122         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
12123         (evrp_range_analyzer::pop_to_marker): Likewise.
12125 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
12127         PR tree-optimization/84419
12128         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
12129         with the required type if its current type is compatible but
12130         different.
12132 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
12134         PR middle-end/82004
12135         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
12136         after vectorization.
12138 2018-02-20  Martin Liska  <mliska@suse.cz>
12140         PR driver/83193
12141         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
12142         possible values if we don't have a hint.
12144 2018-02-20  Martin Liska  <mliska@suse.cz>
12146         PR c/84310
12147         PR target/79747
12148         * final.c (shorten_branches): Build align_tab array with one
12149         more element.
12150         * opts.c (finish_options): Add alignment option limit check.
12151         (MAX_CODE_ALIGN): Likewise.
12152         (MAX_CODE_ALIGN_VALUE): Likewise.
12153         * doc/invoke.texi: Document maximum allowed option value for
12154         all -falign-* options.
12156 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
12158         PR target/84146
12159         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
12160         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
12161         * var-tracking.c (emit_note_insn_var_location): Remove all references
12162         to NOTE_INSN_CALL_ARG_LOCATION.
12163         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
12164         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
12165         Use copy_rtx_if_shared.
12166         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
12167         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
12168         (dwarf2out_var_location): Remove handling of
12169         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
12170         on call_insn.
12171         * final.c (final_scan_insn): Remove all references to
12172         NOTE_INSN_CALL_ARG_LOCATION.
12173         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
12174         before dumping final insns.
12175         * except.c (emit_note_eh_region_end): Remove all references to
12176         NOTE_INSN_CALL_ARG_LOCATION.
12177         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
12178         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
12179         * config/arc/arc.c (hwloop_optimize): Likewise.
12180         * config/arm/arm.c (create_fix_barrier): Likewise.
12181         * config/s390/s390.c (s390_chunkify_start): Likewise.
12182         * config/sh/sh.c (find_barrier): Likewise.
12183         * config/i386/i386.c (rest_of_insert_endbranch,
12184         ix86_seh_fixup_eh_fallthru): Likewise.
12185         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
12186         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
12187         * config/frv/frv.c (frv_function_prologue): Likewise.
12188         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
12189         reg note.
12190         (note_outside_basic_block_p): Remove all references to
12191         NOTE_INSN_CALL_ARG_LOCATION.
12192         * gengtype.c (adjust_field_rtx_def): Likewise.
12193         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
12194         Likewise.
12195         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
12196         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
12198         PR c++/84444
12199         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
12200         is ADDR_EXPR.
12202         PR tree-optimization/84452
12203         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
12204         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
12205         is NULL.
12207 2018-02-19  Martin Liska  <mliska@suse.cz>
12209         PR sanitizer/82183
12210         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
12212 2018-02-19  Martin Liska  <mliska@suse.cz>
12213             Richard Sandiford  <richard.sandiford@linaro.org>
12215         PR tree-optimization/82491
12216         * gimple-fold.c (get_base_constructor): Make earlier bail out
12217         to prevent ubsan.
12219 2018-02-19  Carl Love  <cel@us.ibm.com>
12221         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
12222         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
12223         BU_P8V_OVERLOAD_1.
12224         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
12225         P8V_BUILTIN_VEC_NEG.
12227 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
12229         * config/rl78/rl78.md (movdf): New define expand.
12231 2018-02-19  Martin Liska  <mliska@suse.cz>
12233         PR other/80589
12234         * doc/invoke.texi: Fix typo.
12235         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
12237 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
12239         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
12240         handle rs6000_single_float and rs6000_double_float specially for
12241         e500 family CPUs.
12243 2018-02-16  Jeff Law  <law@redhat.com>
12245         * config/rx/rx.c (add_pop_cfi_notes): New function.;
12246         (pop_regs): Use it.
12248 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
12250         PR ipa/84425
12251         * ipa-inline.c (inline_small_functions): Fix a typo.
12253 2018-02-16  Nathan Sidwell  <nathan@acm.org>
12255         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
12257 2018-02-16  Carl Love  <cel@us.ibm.com>
12259         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
12260         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
12261         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
12262         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
12263         expansion to P8V_BUILTIN_VEC_FLOAT2.
12265 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
12267         PR rtl-optimization/70023
12268         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
12269         src_regno into account.
12271 2018-02-16  Carl Love  <cel@us.ibm.com>
12273         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
12274         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
12275         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
12276         * config/rs6000/rs6000.c: Remove case statements for
12277         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
12278         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
12279         and P9V_BUILTIN_VEC_VINSERT4B.
12280         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
12281         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
12282         * config/rs6000/vsx.md:
12283         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
12284         vec_insert4b.
12286 2018-02-16  Carl Love  <cel@us.ibm.com>
12288         * config/rs6000/altivec.h: Add builtin names vec_extract4b
12289         vec_insert4b.
12290         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
12291         definitions.
12292         * config/rs6000/rs6000-c.c: Add the definitions for
12293         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
12294         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
12295         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
12296         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
12297         definition for insert4b and define insn *insert3b_internal.
12298         * doc/extend.texi: Add documentation for vec_extract4b.
12300 2018-02-16  Nathan Sidwell  <nathan@acm.org>
12302         * doc/extend.texi (Backwards Compatibility): Mention friend
12303         injection.  Note for-scope is deprecated.
12304         * doc/invoke.texi (-ffriend-injection): Deprecate.
12306 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
12308         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
12309         that moved to I2, also allow destinations that are a paradoxical
12310         subreg (instead of a normal reg).
12312 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
12314         PR target/83831
12315         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
12316         to QImode.
12318 2018-02-16  Richard Biener  <rguenther@suse.de>
12320         PR tree-optimization/84037
12321         PR tree-optimization/84016
12322         PR target/82862
12323         * config/i386/i386.c (ix86_builtin_vectorization_cost):
12324         Adjust vec_construct for the fact we need additional higher latency
12325         128bit inserts for AVX256 and AVX512 vector builds.
12326         (ix86_add_stmt_cost): Scale vector construction cost for
12327         elementwise loads.
12329 2018-02-16  Richard Biener  <rguenther@suse.de>
12331         PR tree-optimization/84417
12332         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
12333         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
12334         (non_rewritable_lvalue_p): Likewise, use poly-ints.
12336 2018-02-16  Martin Liska  <mliska@suse.cz>
12338         PR sanitizer/84307
12339         * internal-fn.def (ASAN_CHECK): Set proper flags.
12340         (ASAN_MARK): Likewise.
12342 2018-02-16  Julia Koval  <julia.koval@intel.com>
12344         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
12345         from PTA_CANNONLAKE.
12347 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
12349         PR target/84272
12350         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
12351         Use ++iter rather than iter++ for std::list iterators.
12352         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
12353         defer deleting them until all nodes in the forest are processed.  Do
12354         free even leaf nodes.  Change to_process into auto_vec.
12356         PR bootstrap/84405
12357         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
12358         * vec.h (vec_default_construct): Use memset instead of placement new
12359         if BROKEN_VALUE_INITIALIZATION is defined.
12360         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
12361         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
12362         is defined.
12364         PR rtl-optimization/83723
12365         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
12366         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
12367         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
12368         recursive calls.
12369         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
12370         callers.
12371         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
12373 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
12375         PR rtl-optimization/81443
12376         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
12377         from inner REGs to paradoxical SUBREGs.
12379 2018-02-16  Richard Biener  <rguenther@suse.de>
12381         PR tree-optimization/84399
12382         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
12383         For operands we can analyze at their definition make sure we can
12384         analyze them at each use as well.
12386 2018-02-16  Richard Biener  <rguenther@suse.de>
12388         PR tree-optimization/84190
12389         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
12390         volatile accesses if the decl isn't volatile.
12392 2018-02-15  Jason Merrill  <jason@redhat.com>
12394         PR c++/84314 - ICE with templates and fastcall attribute.
12395         * attribs.c (build_type_attribute_qual_variant): Don't clobber
12396         TYPE_CANONICAL on an existing type.
12398 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
12400         PR tree-optimization/84383
12401         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
12402         dstoff nor call operand_equal_p if dstbase is NULL.
12404         PR tree-optimization/84334
12405         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
12406         also a CONSTANT_CLASS_P, punt.
12408 2018-02-14  Jim Wilson  <jimw@sifive.com>
12410         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
12411         first SMALL_OPERAND check.  New local min_second_step.  Move assert
12412         to where locals are set.  Add TARGET_RVC support.
12413         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
12415 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
12417         * doc/invoke.texi: Correct -Wformat-overflow code sample.
12419 2018-02-14  Martin Sebor  <msebor@redhat.com>
12421         PR tree-optimization/83698
12422         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
12423         arrays constrain the offset range to their bounds.
12424         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
12425         (builtin_access::overlap): Avoid setting the size of overlap if it's
12426         already been set.
12427         (maybe_diag_overlap): Also consider arrays when deciding what values
12428         of offsets to include in diagnostics.
12430 2018-02-14  Martin Sebor  <msebor@redhat.com>
12432         PR c/84108
12433         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
12434         that correspond to the kind of a declaration.
12436 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
12438         PR target/83984
12439         * config/pa/pa.md: Load address of PIC label using the linkage table
12440         if the label is nonlocal.
12442 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
12444         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
12445         warning message if user requests -maltivec=be.
12446         * doc/invoke.texi: Document deprecation of -maltivec=be.
12448 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
12450         PR target/84220
12451         * config/rs6000/rs6000-c.c: Update definitions for
12452         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
12453         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
12455 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
12457         PR target/84239
12458         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
12459         add _get_ssp intrinsics. Remove argument from
12460         __builtin_ia32_rdssp[d|q].
12461         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
12462         * config/i386/i386-builtin.def: Remove argument from
12463         __builtin_ia32_rdssp[d|q].
12464         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
12465         ix86_expand_special_args_builtin for _rdssp[d|q].
12466         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
12467         Clear register before usage.
12468         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
12469         Add documentation for new _get_ssp and _inc_ssp intrinsics.
12471 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
12473         PR tree-optimization/84357
12474         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
12475         operand 1 of an ARRAY_REF too.
12477 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
12479         PR target/83831
12480         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
12481         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
12482         declarations.
12483         (set_of_reg): New struct.
12484         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
12485         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
12486         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
12487         functions.
12488         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
12489         Split into bitclr, bitset, bitinvert patterns if appropriate.
12490         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
12491         use rx_fuse_in_memory_bitop.
12492         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
12493         to named insn, correct maximum insn length.
12495 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
12497         PR target/79242
12498         * machmode.def: Define a complex mode for PARTIAL_INT.
12499         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
12500         MODE_PARTIAL_INT.
12501         * doc/rtl.texi: Document CSPImode.
12502         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
12503         handling.
12504         (msp430_hard_regno_nregs_with_padding): Likewise.
12506 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
12508         PR target/84279
12509         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
12511 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
12513         PR rtl-optimization/84169
12514         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
12515         we generated a parallel as new i3 and we split that to new i2 and i3
12516         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
12517         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
12518         those to i2, not i1.  Partially rewrite this scan code.
12520 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
12522         PR c/82210
12523         * stor-layout.c (place_field): For variable length fields, adjust
12524         offset_align afterwards not just based on the field's alignment,
12525         but also on the size.
12527         PR middle-end/84309
12528         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
12529         of exps and logs in the use_exp2 case.
12531 2018-02-13  Jeff Law  <law@redhat.com>
12533         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
12534         entry for "vector".
12536         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
12537         ARGS as unused.
12539 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
12541         PR debug/84342
12542         PR debug/84319
12543         * common.opt (gas-loc-support, gas-locview-support): New.
12544         (ginline-points, ginternal-reset-location-views): New.
12545         * doc/invoke.texi: Document them.  Use @itemx where intended.
12546         (gvariable-location-views): Adjust.
12547         * target.def (reset_location_view): New.
12548         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
12549         (TARGET_RESET_LOCATION_VIEW): New.
12550         * doc/tm.texi: Rebuilt.
12551         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
12552         (dwarf2out_default_as_locview_support): New.
12553         (output_asm_line_debug_info): Use option variables.
12554         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
12555         (output_loc_list): Likewise.
12556         (add_high_low_attributes): Check option variables.
12557         Don't output entry view attribute in strict mode.
12558         (gen_inlined_subroutine_die): Check option variables.
12559         (dwarf2out_inline_entry): Likewise.
12560         (init_sections_and_labels): Likewise.
12561         (dwarf2out_early_finish): Likewise.
12562         (maybe_reset_location_view): New, from...
12563         (dwarf2out_var_location): ... here.  Call it.
12564         * debug.h (dwarf2out_default_as_loc_support): Declare.
12565         (dwarf2out_default_as_locview_support): Declare.
12566         * hooks.c (hook_int_rtx_insn_0): New.
12567         * hooks.h (hook_int_rtx_insn_0): Declare.
12568         * toplev.c (process_options): Take -gas-loc-support and
12569         -gas-locview-support from dwarf2out.  Enable
12570         -gvariable-location-views by default only with locview
12571         assembler support.  Enable -ginternal-reset-location-views by
12572         default only if the target defines the corresponding hook.
12573         Enable -ginline-points by default if location views are
12574         enabled; force it disabled if statement frontiers are
12575         disabled.
12576         * tree-inline.c (expand_call_inline): Check option variables.
12577         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
12579 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
12581         PR tree-optimization/84321
12582         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
12583         handling.  Also check whether the anti-range contains any values
12584         that satisfy the mask; switch to a VR_RANGE if not.
12586 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
12588         PR sanitizer/84340
12589         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
12591 2018-02-13  Martin Jambor  <mjambor@suse.cz>
12593         PR c++/83990
12594         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
12595         of call statements, also set location of a load to a temporary.
12597 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
12599         * config/rl78/rl78.c (add_vector_labels): New function.
12600         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
12601         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
12602         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
12603         which checks that no arguments are passed.
12604         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
12605         * doc/extend.texi: Documentation for the new attribute.
12607 2018-02-13  Andreas Schwab  <schwab@suse.de>
12609         * config/riscv/linux.h (CPP_SPEC): Define.
12611 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
12613         PR target/84335
12614         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
12615         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
12616         OPTION_MASK_ISA_AES as first argument to def_builtin_const
12617         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
12618         instead of OPTION_MASK_ISA_PCLMUL as first argument to
12619         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
12620         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
12621         temporarily for AES and PCLMUL builtins.
12623         PR tree-optimization/84339
12624         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
12625         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
12626         Formatting fixes.
12628         PR middle-end/84309
12629         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
12630         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
12631         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
12632         inline function.
12633         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
12634         inline function.
12635         * omp-simd-clone.h: New file.
12636         * omp-simd-clone.c: Include omp-simd-clone.h.
12637         (expand_simd_clones): No longer static.
12638         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
12639         cgraph.h and omp-simd-clone.h.
12640         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
12641         (vect_recog_widen_shift_pattern): Formatting fix.
12642         (vect_pattern_recog_1): Don't check optab for calls.
12644         PR target/84336
12645         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
12646         operands[2] into a REG before using gen_lowpart on it.
12648 2018-02-12  Jeff Law  <law@redhat.com>
12650         PR target/83760
12651         * config/sh/sh.c (find_barrier): Consider a sibling call
12652         a barrier as well.
12654         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
12655         successfully back substituting a reg.
12657 2018-02-12  Richard Biener  <rguenther@suse.de>
12659         PR tree-optimization/84037
12660         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
12661         parameter, move visited init to caller.
12662         (vect_slp_analyze_operations): Separate cost from validity
12663         check, initialize visited once for all instances.
12664         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
12665         for all instances.
12666         * tree-vect-stmts.c (vect_model_simple_cost): Make early
12667         out an assert.
12668         (vect_model_promotion_demotion_cost): Likewise.
12669         (vectorizable_bswap): Guard cost modeling with !slp_node
12670         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
12671         SLP stmts.
12672         (vectorizable_call): Likewise.
12673         (vectorizable_conversion): Likewise.
12674         (vectorizable_assignment): Likewise.
12675         (vectorizable_shift): Likewise.
12676         (vectorizable_operation): Likewise.
12677         (vectorizable_store): Likewise.
12678         (vectorizable_load): Likewise.
12679         (vectorizable_condition): Likewise.
12680         (vectorizable_comparison): Likewise.
12682 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
12684         PR sanitizer/84307
12685         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
12686         (ASAN_MARK): Fix fnspec to account for return value, change pointer
12687         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
12689 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
12691         PR middle-end/83665
12692         * params.def (inline-min-speedup): Increase from 8 to 15.
12693         (max-inline-insns-auto): Decrease from 40 to 30.
12694         * ipa-split.c (consider_split): Add some buffer for function to
12695         be considered inlining candidate.
12696         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
12697         default values.
12699 2018-02-12  Richard Biener  <rguenther@suse.de>
12701         PR tree-optimization/84037
12702         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
12703         matched stmts if we cannot swap the non-matched ones.
12705 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
12707         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
12708         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
12709         _mm_maskz_scalef_round_ss): New intrinsics.
12710         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
12711         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
12712         __builtin_ia32_scalefss_round): Remove.
12713         (__builtin_ia32_scalefsd_mask_round,
12714         __builtin_ia32_scalefss_mask_round): New intrinsics.
12715         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
12716         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
12717         ((match_operand:VF_128 2 "<round_nimm_predicate>"
12718         "<round_constraint>")): Changed to ...
12719         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
12720         "<round_scalar_constraint>")): ... this.
12721         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
12722         %0, %1, %2<round_op3>}"): Changed to ...
12723         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
12724         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
12725         %2<round_scalar_mask_op3>}"): ... this.
12726         * config/i386/subst.md (round_scalar_nimm_predicate): New.
12728 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
12730         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
12731         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
12732         (_mm_maskz_sqrt_round_ss): New intrinsics.
12733         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
12734         (__builtin_ia32_sqrtsd_mask_round)
12735         (__builtin_ia32_sqrtss_mask_round): New builtins.
12736         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
12737         (__builtin_ia32_sqrtss_round): Remove.
12738         (__builtin_ia32_sqrtsd_mask_round)
12739         (__builtin_ia32_sqrtss_mask_round): New builtins.
12740         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
12741         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
12742         ((match_operand:VF_128 1 "vector_operand"
12743         "xBm,<round_constraint>")): Changed to ...
12744         ((match_operand:VF_128 1 "vector_operand"
12745         "xBm,<round_scalar_constraint>")): ... this.
12746         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
12747         %0, %2, %<iptr>1<round_op3>}): Changed to ...
12748         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
12749         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
12750         %<iptr>1<round_scalar_mask_op3>}): ... this.
12751         ((set_attr "prefix" "<round_prefix>")): Changed to ...
12752         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
12754 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
12756         PR target/84266
12757         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
12758         Cast vec_cmpeq result to correct type.
12759         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
12760         Cast vec_cmpgt result to correct type.
12762 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
12764         * final.c (final_scan_insn_1): Renamed from...
12765         (final_scan_insn): ... this.  New wrapper, to recover
12766         seen from the outermost call in recursive ones.
12767         * config/sparc/sparc.c (output_return): Drop seen from call.
12768         (output_sibcall): Likewise.
12769         * config/visium/visium.c (output_branch): Likewise.
12771 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
12773         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
12774         function label.
12776 2018-02-10  Alan Modra  <amodra@gmail.com>
12778         PR target/84300
12779         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
12780         Specify LR as an input.
12782 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
12784         PR sanitizer/83987
12785         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
12786         remove_member_access_dummy_vars): New functions.
12787         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
12788         lower_omp_1, execute_lower_omp): Use them.
12790         PR rtl-optimization/84308
12791         * shrink-wrap.c (spread_components): Release todo vector.
12793 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
12795         PR rtl-optimization/57193
12796         * ira-color.c (struct allocno_color_data): Add member
12797         conflict_allocno_hard_prefs.
12798         (update_conflict_allocno_hard_prefs): New.
12799         (bucket_allocno_compare_func): Add a preference based on
12800         conflict_allocno_hard_prefs.
12801         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
12802         (color_allocnos): Remove a dead code.  Initiate
12803         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
12805 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
12807         PR target/84226
12808         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
12809         constraint from =wa to wa.  Avoid a subreg on the output operand,
12810         instead use a pseudo and subreg it in a move.
12811         (p9_xxbrd_<mode>): Changed to ...
12812         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
12813         (p9_xxbrd_v2df): New expander.
12814         (p9_xxbrw_<mode>): Changed to ...
12815         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
12816         (p9_xxbrw_v4sf): New expander.
12818 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
12820         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
12822 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
12824         PR target/83926
12825         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
12826         multiply in 32-bit mode.
12827         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
12828         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
12829         mode.
12831 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
12833         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
12834         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
12835         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
12836         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
12838 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
12840         PR lto/84213
12841         * dwarf2out.c (is_trivial_indirect_ref): New function.
12842         (dwarf2out_late_global_decl): Do not generate a location
12843         attribute for variables that have a non-trivial DECL_VALUE_EXPR
12844         and that are not defined in the current unit.
12846 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12848         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
12849         instead of a libcall for UNORDERED.
12851 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
12853         PR target/82641
12854         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
12855         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
12857 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12859         PR target/PR84295
12860         * config/s390/s390.c (s390_set_current_function): Invoke
12861         s390_indirect_branch_settings also if fndecl didn't change.
12863 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
12865         * config/rs6000/rs6000.md (blockage): Set length to zero.
12867 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12869         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
12871 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
12873         PR sanitizer/84285
12874         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
12875         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
12876         -static-lib*san.
12878         PR debug/84252
12879         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
12880         PARALLEL incoming that failed vt_get_decl_and_offset check.
12882         PR middle-end/84237
12883         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
12884         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
12885         TREE_READONLY bit.
12886         (get_variable_section): For decls in named .bss* sections pass true as
12887         second argument to bss_initializer_p.
12889 2018-02-09  Marek Polacek  <polacek@redhat.com>
12890             Jakub Jelinek  <jakub@redhat.com>
12892         PR c++/83659
12893         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
12894         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
12895         Sync some changes from cxx_fold_indirect_ref.
12897 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
12899         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
12900         markers.
12901         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
12902         (BLOCK_INLINE_ENTRY_LABEL): New.
12903         (dwarf2out_var_location): Disregard inline entry markers.
12904         (inline_entry_data): New struct.
12905         (inline_entry_data_hasher): New hashtable type.
12906         (inline_entry_data_hasher::hash): New.
12907         (inline_entry_data_hasher::equal): New.
12908         (inline_entry_data_table): New variable.
12909         (add_high_low_attributes): Add DW_AT_entry_pc and
12910         DW_AT_GNU_entry_view attributes if a pending entry is found
12911         in inline_entry_data_table.  Add old entry_pc attribute only
12912         if debug nonbinding markers are disabled.
12913         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
12914         markers are enabled.
12915         (block_within_block_p, dwarf2out_inline_entry): New.
12916         (dwarf2out_finish): Check that no entries remained in
12917         inline_entry_data_table.
12918         * final.c (reemit_insn_block_notes): Handle inline entry notes.
12919         (final_scan_insn, notice_source_line): Likewise.
12920         (rest_of_clean_state): Skip inline entry markers.
12921         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
12922         markers.
12923         * gimple.c (gimple_build_debug_inline_entry): New.
12924         * gimple.h (enum gimple_debug_subcode): Add
12925         GIMPLE_DEBUG_INLINE_ENTRY.
12926         (gimple_build_debug_inline_entry): Declare.
12927         (gimple_debug_inline_entry_p): New.
12928         (gimple_debug_nonbind_marker_p): Adjust.
12929         * insn-notes.def (INLINE_ENTRY): New.
12930         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
12931         inline entry marker notes.
12932         (print_insn): Likewise.
12933         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
12934         (INSN_DEBUG_MARKER_KIND): Likewise.
12935         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
12936         * tree-inline.c (expand_call_inline): Build and insert
12937         debug_inline_entry stmt.
12938         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
12939         inline entry blocks early, if nonbind markers are enabled.
12940         (dump_scope_block): Dump fragment info.
12941         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
12942         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
12943         (gimple_build_debug_inline_entry): New.
12944         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
12945         Enable/disable inline entry points too.
12946         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
12947         (DEBUG_INSN): Describe inline entry markers.
12949         * common.opt (gvariable-location-views): New.
12950         (gvariable-location-views=incompat5): New.
12951         * config.in: Rebuilt.
12952         * configure: Rebuilt.
12953         * configure.ac: Test assembler for view support.
12954         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
12955         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
12956         * dwarf2out.c (var_loc_view): New typedef.
12957         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
12958         (dwarf2out_locviews_in_attribute): New.
12959         (dwarf2out_locviews_in_loclist): New.
12960         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
12961         (enum dw_line_info_opcode): Add LI_adv_address.
12962         (struct dw_line_info_table): Add view.
12963         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
12964         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
12965         (zero_view_p): New variable.
12966         (ZERO_VIEW_P): New macro.
12967         (output_asm_line_debug_info): New.
12968         (struct var_loc_node): Add view.
12969         (add_AT_view_list, AT_loc_list): New.
12970         (add_var_loc_to_decl): Add view param.  Test it against last.
12971         (new_loc_list): Add view params.  Record them.
12972         (AT_loc_list_ptr): Handle loc and view lists.
12973         (view_list_to_loc_list_val_node): New.
12974         (print_dw_val): Handle dw_val_class_view_list.
12975         (size_of_die): Likewise.
12976         (value_format): Likewise.
12977         (loc_list_has_views): New.
12978         (gen_llsym): Set vl_symbol too.
12979         (maybe_gen_llsym, skip_loc_list_entry): New.
12980         (dwarf2out_maybe_output_loclist_view_pair): New.
12981         (output_loc_list): Output view list or entries too.
12982         (output_view_list_offset): New.
12983         (output_die): Handle dw_val_class_view_list.
12984         (output_dwarf_version): New.
12985         (output_compilation_unit_header): Use it.
12986         (output_skeleton_debug_sections): Likewise.
12987         (output_rnglists, output_line_info): Likewise.
12988         (output_pubnames, output_aranges): Update version comments.
12989         (output_one_line_info_table): Output view numbers in asm comments.
12990         (dw_loc_list): Determine current endview, pass it to new_loc_list.
12991         Call maybe_gen_llsym.
12992         (loc_list_from_tree_1): Adjust.
12993         (add_AT_location_description): Create view list attribute if
12994         needed, check it's absent otherwise.
12995         (convert_cfa_to_fb_loc_list): Adjust.
12996         (maybe_emit_file): Call output_asm_line_debug_info for test.
12997         (dwarf2out_var_location): Reset views as needed.  Precompute
12998         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
12999         attribute.  Set view.
13000         (new_line_info_table): Reset next view.
13001         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
13002         (dwarf2out_source_line): Likewise.  Output view resets and labels to
13003         the assembler, or select appropriate line info opcodes.
13004         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
13005         (optimize_string_length): Catch it.  Adjust.
13006         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
13007         dw_val_class_view_list, and remove it if no longer needed.
13008         (hash_loc_list): Hash view numbers.
13009         (loc_list_hasher::equal): Compare them.
13010         (optimize_location_lists): Check whether a view list symbol is
13011         needed, and whether the locview attribute is present, and
13012         whether they match.  Remove the locview attribute if no longer
13013         needed.
13014         (index_location_lists): Call skip_loc_list_entry for test.
13015         (dwarf2out_finish): Call output_asm_line_debug_info for test.
13016         Use output_dwarf_version.
13017         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
13018         (struct dw_val_node): Add val_view_list.
13019         * final.c (SEEN_NEXT_VIEW): New.
13020         (set_next_view_needed): New.
13021         (clear_next_view_needed): New.
13022         (maybe_output_next_view): New.
13023         (final_start_function): Rename to...
13024         (final_start_function_1): ... this.  Take pointer to FIRST,
13025         add SEEN parameter.  Emit param bindings in the initial view.
13026         (final_start_function): Reintroduce SEEN-less interface.
13027         (final): Rename to...
13028         (final_1): ... this.  Take SEEN parameter.  Output final pending
13029         next view at the end.
13030         (final): Reintroduce seen-less interface.
13031         (final_scan_insn): Output pending next view before switching
13032         sections or ending a block.  Mark the next view as needed when
13033         outputting variable locations.  Notify debug backend of section
13034         changes, and of location view changes.
13035         (rest_of_handle_final): Adjust.
13036         * toplev.c (process_options): Autodetect value for debug variable
13037         location views option.  Warn on incompat5 without -gdwarf-5.
13038         * doc/invoke.texi (gvariable-location-views): New.
13039         (gvariable-location-views=incompat5): New.
13040         (gno-variable-location-views): New.
13042 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
13044         PR tree-optimization/84136
13045         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
13046         that the result of find_edge is non-NULL.
13048 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
13050         PR target/83008
13051         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
13052         storing integer register in SImode.  Fix cost of 256 and 512
13053         byte aligned SSE register store.
13055 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
13057         * config/i386/i386.c (ix86_multiplication_cost): Fix
13058         multiplication cost for TARGET_AVX512DQ.
13060 2018-02-08  Marek Polacek  <polacek@redhat.com>
13062         PR tree-optimization/84238
13063         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
13064         get_range_strlen.
13066 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
13068         PR tree-optimization/84265
13069         * tree-vect-stmts.c (vectorizable_store): Don't treat
13070         VMAT_CONTIGUOUS accesses as grouped.
13071         (vectorizable_load): Likewise.
13073 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
13075         PR tree-optimization/81635
13076         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
13077         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
13078         (test_round_for_mask): New functions.
13079         (wide_int_cc_tests): Call test_round_for_mask.
13080         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
13081         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
13082         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
13083         range returned by get_range_info.
13085 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
13087         PR ipa/81360
13088         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
13089         * symtab.c: Include builtins.h
13090         (symtab_node::output_to_lto_symbol_table_p): Move here
13091         from lto-streamer-out.c:output_symbol_p.
13092         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
13093         (output_symbol_p): Move all logic to symtab.c
13094         (produce_symtab): Update.
13096 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13098         * config/s390/s390-opts.h (enum indirect_branch): Define.
13099         * config/s390/s390-protos.h (s390_return_addr_from_memory)
13100         (s390_indirect_branch_via_thunk)
13101         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
13102         (enum s390_indirect_branch_type): Define.
13103         * config/s390/s390.c (struct s390_frame_layout, struct
13104         machine_function): Remove.
13105         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
13106         (indirect_branch_table_label_no, indirect_branch_table_name):
13107         Define variables.
13108         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
13109         (enum s390_indirect_branch_option): Define.
13110         (s390_return_addr_from_memory): New function.
13111         (s390_handle_string_attribute): New function.
13112         (s390_attribute_table): Add new attribute handler.
13113         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
13114         (s390_indirect_branch_via_thunk): New function.
13115         (s390_indirect_branch_via_inline_thunk): New function.
13116         (s390_function_ok_for_sibcall): When jumping via thunk disallow
13117         sibling call optimization for non z10 compiles.
13118         (s390_emit_call): Force indirect branch target to be a single
13119         register.  Add r1 clobber for non-z10 compiles.
13120         (s390_emit_epilogue): Emit return jump via return_use expander.
13121         (s390_reorg): Handle JUMP_INSNs as execute targets.
13122         (s390_option_override_internal): Perform validity checks for the
13123         new command line options.
13124         (s390_indirect_branch_attrvalue): New function.
13125         (s390_indirect_branch_settings): New function.
13126         (s390_set_current_function): Invoke s390_indirect_branch_settings.
13127         (s390_output_indirect_thunk_function):  New function.
13128         (s390_code_end): Implement target hook.
13129         (s390_case_values_threshold): Implement target hook.
13130         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
13131         macros.
13132         * config/s390/s390.h (struct s390_frame_layout)
13133         (struct machine_function): Move here from s390.c.
13134         (TARGET_INDIRECT_BRANCH_NOBP_RET)
13135         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
13136         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
13137         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
13138         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
13139         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
13140         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
13141         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
13142         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
13143         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
13144         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
13145         (mnemonic attribute): Add values which aren't recognized
13146         automatically.
13147         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
13148         pattern for branch conversion.  Fix mnemonic attribute.
13149         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
13150         indirect branch via thunk if requested.
13151         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
13152         ("*indirect_jump"): Disable for branch conversion using out of
13153         line thunks.
13154         ("indirect_jump_via_thunk<mode>_z10")
13155         ("indirect_jump_via_thunk<mode>")
13156         ("indirect_jump_via_inlinethunk<mode>_z10")
13157         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
13158         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
13159         ("casesi_jump_via_inlinethunk<mode>_z10")
13160         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
13161         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
13162         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
13163         ("*indirect2_jump"): Disable for branch conversion.
13164         ("casesi_jump"): Turn into expander and expand patterns for branch
13165         conversion.
13166         ("return_use"): New expander.
13167         ("*return"): Emit return via thunk and rename it to ...
13168         ("*return<mode>"): ... this one.
13169         * config/s390/s390.opt: Add new options and and enum for the
13170         option values.
13172 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
13174         * lra-constraints.c (match_reload): Unconditionally use
13175         gen_lowpart_SUBREG, rather than selecting between that
13176         and equivalent gen_rtx_SUBREG code.
13178 2018-02-08  Richard Biener  <rguenther@suse.de>
13180         PR tree-optimization/84233
13181         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
13182         changed flag instead of boguously re-using phi_inserted.
13184 2018-02-08  Martin Jambor  <mjambor@suse.cz>
13186         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
13187         static local variables.
13189 2018-02-08  Richard Biener  <rguenther@suse.de>
13191         PR tree-optimization/84278
13192         * tree-vect-stmts.c (vectorizable_store): When looking for
13193         smaller vector types to perform grouped strided loads/stores
13194         make sure the mode is supported by the target.
13195         (vectorizable_load): Likewise.
13197 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
13199         * config/aarch64/aarch64.c (aarch64_components_for_bb):
13200         Increase LDP/STP opportunities by adding adjacent callee-saves.
13202 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
13204         PR rtl-optimization/84068
13205         PR rtl-optimization/83459
13206         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
13208 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
13210         PR tree-optimization/84224
13211         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
13212         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
13213         non-zero arguments.
13215 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
13217         PR target/84113
13218         * config/rs6000/altivec.md (*restore_world): Remove LR use.
13219         * config/rs6000/predicates.md (restore_world_operation): Adjust op
13220         count, remove one USE.
13222 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
13224         * doc/install.texi (Configuration): Document the
13225         --with-long-double-format={ibm,ieee} PowerPC configuration
13226         options.
13228         PR target/84154
13229         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
13230         Convert from define_expand to be define_insn_and_split.  Rework
13231         float/double/_Float128 conversions to QI/HI/SImode to work with
13232         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
13233         conversions to QI/HImode types did a store and then a load to
13234         truncate the value.  For conversions to VSX registers, don't split
13235         the insn, instead emit the code directly.  Use the code iterator
13236         any_fix to combine signed and unsigned conversions.
13237         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
13238         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
13239         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
13240         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
13241         (fix_<mode>di2_hw): Likewise.
13242         (fixuns_<mode>di2_hw): Likewise.
13243         (fix_<mode>si2_hw): Likewise.
13244         (fixuns_<mode>si2_hw): Likewise.
13245         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
13246         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
13247         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
13248         fix<uns>_trunc<SFDF:mode>si2_p8.
13249         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
13250         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
13251         (fix<uns>_<mode>_mem): Likewise.
13252         (fctiw<u>z_<mode>_mem): Likewise.
13253         (fix<uns>_<mode>_mem): Likewise.
13254         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
13255         the register allocator from doing a direct move to the GPRs to do
13256         a store, and instead use the ISA 3.0 store byte/half-word from
13257         vector register instruction.  For IEEE 128-bit floating point,
13258         also optimize stores of 32-bit ints.
13259         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
13261 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
13263         * genextract.c (push_pathstr_operand): New function to support
13264         [a-zA-Z].
13265         (walk_rtx): Call push_pathstr_operand.
13266         (print_path): Support [a-zA-Z].
13268 2018-02-07  Richard Biener  <rguenther@suse.de>
13270         PR tree-optimization/84037
13271         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
13272         (cse_and_gimplify_to_preheader): Declare.
13273         (vect_get_place_in_interleaving_chain): Likewise.
13274         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
13275         ivexpr_map.
13276         (_loop_vec_info::~_loop_vec_info): Delete it.
13277         (cse_and_gimplify_to_preheader): New function.
13278         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
13279         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
13280         (vectorizable_load): Likewise.  For grouped stores always base
13281         the IV on the first element.
13282         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
13283         condition before gimplifying.
13285 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
13287         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
13288         *DIV_EXPR and *MOD_EXPR.
13290 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
13292         PR target/84248
13293         * config/i386/i386.c (ix86_option_override_internal): Mask out
13294         the CF_SET bit when checking -fcf-protection.
13296 2018-02-07  Tom de Vries  <tom@codesourcery.com>
13298         PR libgomp/84217
13299         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
13300         enough.
13302 2018-02-07  Richard Biener  <rguenther@suse.de>
13304         PR tree-optimization/84204
13305         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
13306         this place.
13308         PR tree-optimization/84205
13309         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
13310         special-case isl_ast_op_zdiv_r.
13312         PR tree-optimization/84223
13313         * graphite-scop-detection.c (gather_bbs::before_dom_children):
13314         Only add conditions from within the region.
13315         (gather_bbs::after_dom_children): Adjust.
13317 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
13319         PR target/84209
13320         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
13321         * config/avr/avr.md: Only post-reload split REG-REG moves if
13322         either register is GENERAL_REG_P.
13324 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
13326         PR tree-optimization/84235
13327         * tree-ssa-scopedtables.c
13328         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
13329         if the subtraction is performed in floating point type where NaNs are
13330         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
13331         build 1.  Formatting fix.
13333 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
13335         PR target/84146
13336         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
13337         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
13338         and skip it regardless of bb boundaries.  Use CALL_P macro,
13339         don't test INSN_P (insn) together with CALL_P or JUMP_P check
13340         unnecessarily, formatting fix.
13342 2018-02-06  Michael Collison  <michael.collison@arm.com>
13344         * config/arm/thumb2.md:
13345         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
13346         (*thumb_mov_notscc): Ditto.
13348 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
13350         PR target/84154
13351         * config/rs6000/rs6000.md (su code attribute): Use "u" for
13352         unsigned_fix, not "s".
13354 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13356         * configure.ac (gcc_fn_eh_frame_ro): New function.
13357         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
13358         correct .eh_frame permissions.
13359         * configure: Regenerate.
13361 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
13363         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
13364         irrelevant options.
13366 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13368         * config/rs6000/rs6000.c (rs6000_option_override_internal):
13369         Display warning message for -mno-speculate-indirect-jumps.
13371 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
13373         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
13374         Undocumented.
13375         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
13377 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
13379         PR tree-optimization/84225
13380         * tree-eh.c (find_trapping_overflow): Only call
13381         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
13383 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
13385         PR target/84145
13386         * config/i386/i386.c: Reimplement the check of possible options
13387         -mibt/-mshstk conbination. Change error messages.
13388         * doc/invoke.texi: Fix a typo: remove extra '='.
13390 2018-02-06  Marek Polacek  <polacek@redhat.com>
13392         PR tree-optimization/84228
13393         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
13395 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
13397         PR target/82641
13398         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
13399         emitted arch directives.
13400         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
13401         __ARM_FEATURE_COPROC before changing architectures.
13403 2018-02-06  Richard Biener  <rguenther@suse.de>
13405         * config/i386/i386.c (print_reg): Fix typo.
13406         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
13408 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
13410         * configure: Regenerate.
13412 2018-02-05  Martin Sebor  <msebor@redhat.com>
13414         PR tree-optimization/83369
13415         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
13416         inlining context.
13418 2018-02-05  Martin Liska  <mliska@suse.cz>
13420         * doc/invoke.texi: Cherry-pick upstream r323995.
13422 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
13424         * ira.c (ira_init_register_move_cost): Adjust comment.
13426 2018-02-05  Martin Liska  <mliska@suse.cz>
13428         PR gcov-profile/84137
13429         * doc/gcov.texi: Fix typo in documentation.
13431 2018-02-05  Martin Liska  <mliska@suse.cz>
13433         PR gcov-profile/83879
13434         * doc/gcov.texi: Document necessity of --dynamic-list-data when
13435         using dlopen functionality.
13437 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
13439         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
13440         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
13441         _mm_maskz_range_ss, _mm_mask_range_round_ss,
13442         _mm_maskz_range_round_ss): New intrinsics.
13443         (__builtin_ia32_rangesd128_round)
13444         (__builtin_ia32_rangess128_round): Remove.
13445         (__builtin_ia32_rangesd128_mask_round,
13446         __builtin_ia32_rangess128_mask_round): New builtins.
13447         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
13448         __builtin_ia32_rangess128_round): Remove.
13449         (__builtin_ia32_rangesd128_mask_round,
13450         __builtin_ia32_rangess128_mask_round): New builtins.
13451         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
13452         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
13453         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
13454         "<round_saeonly_constraint>")): Changed to ...
13455         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
13456         "<round_saeonly_scalar_constraint>")): ... this.
13457         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
13458         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
13459         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
13460         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
13461         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
13463 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
13465         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
13466         options.
13467         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
13468         Remove all values except native, 8540 and 8548.
13470 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
13472         * config/i386/i386.c (ix86_output_function_return): Pass
13473         INVALID_REGNUM, instead of -1, as invalid register number to
13474         indirect_thunk_name and output_indirect_thunk.
13476 2018-02-02  Julia Koval  <julia.koval@intel.com>
13478         * config.gcc: Add -march=icelake.
13479         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
13480         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
13481         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
13482         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
13483         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
13484         (processor_target_table): Add icelake.
13485         (ix86_option_override_internal): Handle new PTAs.
13486         (get_builtin_code_for_version): Handle icelake.
13487         (M_INTEL_COREI7_ICELAKE): New.
13488         (fold_builtin_cpu): Handle icelake.
13489         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
13490         * doc/invoke.texi: Add -march=icelake.
13492 2018-02-02  Julia Koval  <julia.koval@intel.com>
13494         * config/i386/i386.c (ix86_option_override_internal): Change flags type
13495         to wide_int_bitmask.
13496         * wide-int-bitmask.h: New.
13498 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
13500         PR target/84066
13501         * config/i386/i386.md: Replace Pmode with word_mode in
13502         builtin_setjmp_setup and builtin_longjmp to support x32.
13504 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
13506         PR target/56010
13507         PR target/83743
13508         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
13509         #include "opts.h".
13510         (rs6000_supported_cpu_names): New static variable.
13511         (linux_cpu_translation_table): Likewise.
13512         (elf_platform) <cpu>: Define new static variable and use it.
13513         Translate kernel AT_PLATFORM name to canonical name if needed.
13514         Error if platform name is unknown.
13516 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
13518         PR target/84089
13519         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
13521 2018-02-01  Jeff Law  <law@redhat.com>
13523         PR target/84128
13524         * config/i386/i386.c (release_scratch_register_on_entry): Add new
13525         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
13526         the scratch if RELEASE_VIA_POP is false.
13527         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
13528         If we have to save a temporary register, decrement SIZE appropriately.
13529         Pass new arguments to release_scratch_register_on_entry.
13530         (ix86_adjust_stack_and_probe): Likewise.
13531         (ix86_emit_probe_stack_range): Pass new arguments to
13532         release_scratch_register_on_entry.
13534 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
13536         PR rtl-optimization/84157
13537         * combine.c (change_zero_ext): Use REG_P predicate in
13538         front of HARD_REGISTER_P predicate.
13540 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
13542         * config/avr/avr.c (avr_option_override): Move disabling of
13543         -fdelete-null-pointer-checks to...
13544         * common/config/avr/avr-common.c (avr_option_optimization_table):
13545         ...here.
13547 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13549         PR tree-optimization/81635
13550         * tree-data-ref.c (split_constant_offset_1): For types that
13551         wrap on overflow, try to use range info to prove that wrapping
13552         cannot occur.
13554 2018-02-01  Renlin Li  <renlin.li@arm.com>
13556         PR target/83370
13557         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
13558         TAILCALL_ADDR_REGS.
13559         (aarch64_register_move_cost): Likewise.
13560         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
13561         TAILCALL_ADDR_REGS.
13562         (REG_CLASS_NAMES): Likewise.
13563         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
13564         TAILCALL_ADDR_REGS. Remove IP registers.
13565         * config/aarch64/aarch64.md (Ucs): Update register constraint.
13567 2018-02-01  Richard Biener  <rguenther@suse.de>
13569         * domwalk.h (dom_walker::dom_walker): Add additional constructor
13570         for specifying RPO order and allow NULL for that.
13571         * domwalk.c (dom_walker::dom_walker): Likewise.
13572         (dom_walker::walk): Handle NULL RPO order.
13573         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
13574         in RPO order.
13575         (rewrite_update_dom_walker): Likewise.
13576         (mark_def_dom_walker): Likewise.
13578 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13580         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
13581         (aarch64_maybe_expand_sve_subreg_move): Declare.
13582         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
13583         * config/aarch64/predicates.md (aarch64_any_register_operand): New
13584         predicate.
13585         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
13586         that are semantically a reverse operation.
13587         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
13588         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
13589         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
13590         functions.
13591         (aarch64_can_change_mode_class): For big-endian, forbid changes
13592         between two SVE modes if they have different element sizes.
13594 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13596         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
13597         the TImode handling for big-endian targets.
13599 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13601         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
13602         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
13603         not just bytes.
13604         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
13605         Remove BSWAP handing for big-endian targets and use the form of
13606         LD1RQ appropariate for the mode.
13608 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13610         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
13611         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
13612         duplicated element.
13614 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13616         PR tearget/83845
13617         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
13618         check for operands that need to go through aarch64_sve_reload_be.
13620 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
13622         PR tree-optimization/81661
13623         PR tree-optimization/84117
13624         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
13625         * tree-eh.c: Include gimplify.h.
13626         (find_trapping_overflow, replace_trapping_overflow,
13627         rewrite_to_non_trapping_overflow): New functions.
13628         * tree-vect-loop.c: Include tree-eh.h.
13629         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
13630         * tree-data-ref.c: Include tree-eh.h.
13631         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
13633 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
13635         PR rtl-optimization/84123
13636         * combine.c (change_zero_ext): Check if hard register satisfies
13637         can_change_dest_mode before calling gen_lowpart_SUBREG.
13639 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
13641         PR target/82444
13642         * ira.c (ira_init_register_move_cost): Remove assert.
13644 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13646         PR rtl-optimization/84071
13647         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
13648         * doc/tm.texi: Regenerate.
13650 2018-01-31  Richard Biener  <rguenther@suse.de>
13652         PR tree-optimization/84132
13653         * tree-data-ref.c (analyze_miv_subscript): Properly
13654         check whether evolution_function_is_affine_multivariate_p
13655         before calling gcd_of_steps_may_divide_p.
13657 2018-01-31  Julia Koval  <julia.koval@intel.com>
13659         PR target/83618
13660         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
13661         * config/i386/i386.md (rdpid_rex64) New.
13662         (rdpid): Make 32bit only.
13664 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
13666         PR lto/84105
13667         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
13668         an IDENTIFIER_NODE for FUNCTION_TYPE's.
13670 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13672         Revert
13673         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
13675         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
13677 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13679         PR rtl-optimization/84071
13680         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
13681         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
13683 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
13685         * config/arc/arc.c (arc_handle_aux_attribute): New function.
13686         (arc_attribute_table): Add 'aux' attribute.
13687         (arc_in_small_data_p): Consider aux like variables.
13688         (arc_is_aux_reg_p): New function.
13689         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
13690         (arc_get_aux_arg): New function.
13691         (prepare_move_operands): Handle aux-register access.
13692         (arc_handle_aux_attribute): New function.
13693         * doc/extend.texi (ARC Variable attributes): Add subsection.
13695 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
13697         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
13698         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
13699         (arc_attribute_table): Add 'uncached' attribute.
13700         (arc_print_operand): Print '.di' flag for uncached memory
13701         accesses.
13702         (arc_in_small_data_p): Do not consider for small data the uncached
13703         types.
13704         (arc_is_uncached_mem_p): New function.
13705         * config/arc/predicates.md (compact_store_memory_operand): Check
13706         for uncached memory accesses.
13707         (nonvol_nonimm_operand): Likewise.
13708         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
13710 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
13712         PR c/84100
13713         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
13714         falign-loops=): Add Optimization flag.
13716 2018-01-30  Jeff Law  <law@redhat.com>
13718         PR target/84064
13719         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
13720         INT_REGISTERS_SAVED.  Check it prior to calling
13721         get_scratch_register_on_entry.
13722         (ix86_adjust_stack_and_probe): Similarly.
13723         (ix86_emit_probe_stack_range): Similarly.
13724         (ix86_expand_prologue): Corresponding changes.
13726 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13728         PR target/40411
13729         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
13730         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
13732 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
13734         PR target/84112
13735         * lra-constraints.c (curr_insn_transform): Process AND in the
13736         address.
13738 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
13740         PR rtl-optimization/83986
13741         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
13742         dependence against last_pending_memory_flush in addition to
13743         pending_jump_insns.
13745 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
13747         PR tree-optimization/81611
13748         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
13749         copies.
13751 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13753         PR target/83758
13754         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
13755         a reg rtx.
13757 2018-01-30  Richard Biener  <rguenther@suse.de>
13758             Jakub Jelinek  <jakub@redhat.com>
13760         PR tree-optimization/84111
13761         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
13762         inner loops added during recursion, as they don't have up-to-date
13763         SSA form.
13765 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
13767         PR ipa/81360
13768         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
13769         (can_inline_edge_by_limits_p): ... here.
13770         (can_early_inline_edge_p, check_callers,
13771         update_caller_keys, update_callee_keys, recursive_inlining,
13772         add_new_edges_to_heap, speculation_useful_p,
13773         inline_small_functions,
13774         inline_small_functions, flatten_function,
13775         inline_to_all_callers_1): Update.
13777 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
13779         * profile-count.c (profile_count::combine_with_ipa_count): Handle
13780         zeros correctly.
13782 2018-01-30  Richard Biener  <rguenther@suse.de>
13784         PR tree-optimization/83008
13785         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
13786         invariant and constant vector uses in stmts when they need
13787         more than one stmt.
13789 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13791         PR bootstrap/84017
13792         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
13793         * configure: Regenerate.
13795 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13797         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
13798         pattern.
13799         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
13800         Use gen_rtx_REG rather than gen_lowpart.
13802 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13804         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
13805         rather than 0 when creating partial subregs.
13807 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13809         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
13810         of usage.
13812 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
13814         PR target/81550
13815         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
13816         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
13817         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
13818         flags.  This restores the settings used before the 2017-07-24.
13819         Turning off pre increment/decrement/modify allows IVOPTS to
13820         optimize DF/SF loops where the index is an int.
13822 2018-01-29  Richard Biener  <rguenther@suse.de>
13823             Kelvin Nilsen  <kelvin@gcc.gnu.org>
13825         PR bootstrap/80867
13826         * tree-vect-stmts.c (vectorizable_call): Don't call
13827         targetm.vectorize_builtin_md_vectorized_function if callee is
13828         NULL.
13830 2018-01-22  Carl Love  <cel@us.ibm.com>
13832         * doc/extend.tex: Fix typo in second arg in
13833         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
13835 2018-01-29  Richard Biener  <rguenther@suse.de>
13837         PR tree-optimization/84086
13838         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
13839         (flush_ssaname_freelist): When SSA names were released reset
13840         the SCEV hash table.
13842 2018-01-29  Richard Biener  <rguenther@suse.de>
13844         PR tree-optimization/84057
13845         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
13846         removed paths when removing edges.
13848 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
13850         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
13851         -mfunction-return=@var{choice}.
13853 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
13855         PR diagnostic/84034
13856         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
13857         Handle CR like TAB.
13858         (layout::print_source_line): Likewise.
13859         (test_get_line_width_without_trailing_whitespace): Add test cases.
13861 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
13863         PR middle-end/84040
13864         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
13865         debug insns.
13867 2018-01-26  Jim Wilson  <jimw@sifive.com>
13869         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
13871         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
13872         specified.
13874 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13876         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
13877         and CMP + SUB-immediate -> SUBS.
13879 2018-01-26  Martin Sebor  <msebor@redhat.com>
13881         PR tree-optimization/83896
13882         * tree-ssa-strlen.c (get_string_len): Rename...
13883         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
13884         Avoid assuming length is constant.
13885         (handle_char_store): Use HOST_WIDE_INT for string length.
13887 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
13889         PR target/81763
13890         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
13891         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
13893 2018-01-26  Richard Biener  <rguenther@suse.de>
13895         PR rtl-optimization/84003
13896         * dse.c (record_store): Only record redundant stores when
13897         the earlier store aliases at least all accesses the later one does.
13899 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
13901         PR rtl-optimization/83985
13902         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
13903         REG_CFA_RESTORE insns.
13904         (delete_unmarked_insns): Don't ignore separate shrink wrapping
13905         REG_CFA_RESTORE insns here.
13907         PR c/83989
13908         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
13909         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
13911 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13913         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
13914         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
13915         (arc_init): Likewise.
13916         (arc_override_options): Likewise.
13917         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
13918         value.
13919         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
13920         support.
13921         * config/arc/arc.h (TARGET_DBNZ): Define.
13922         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
13923         properly set the tune attribute.
13924         (dbnz): Use TARGET_DBNZ guard.
13925         * config/arc/arc.opt (mtune): Add core3 option.
13927 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13929         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
13930         recognize new pic like addresses.
13931         (arc_delegitimize_address): Clean up.
13933 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13935         * config/arc/arc-arches.def: Option mrf16 valid for all
13936         architectures.
13937         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
13938         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
13939         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
13940         * config/arc/arc-tables.opt: Regenerate.
13941         * config/arc/arc.c (arc_conditional_register_usage): Handle
13942         reduced register file case.
13943         (arc_file_start): Set must have build attributes.
13944         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
13945         mrf16 option value.
13946         * config/arc/arc.opt (mrf16): Add new option.
13947         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
13948         * config/arc/genmultilib.awk: Handle new mrf16 option.
13949         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
13950         * config/arc/t-multilib: Regenerate.
13951         * doc/invoke.texi (ARC Options): Document mrf16 option.
13953 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13955         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
13956         * config/arc/arc.c (arc_handle_secure_attribute): New function.
13957         (arc_attribute_table): Add 'secure_call' attribute.
13958         (arc_print_operand): Print secure call operand.
13959         (arc_function_ok_for_sibcall): Don't optimize tail calls when
13960         secure.
13961         (arc_is_secure_call_p): New function.  * config/arc/arc.md
13962         (call_i): Add support for sjli instruction.
13963         (call_value_i): Likewise.
13964         * config/arc/constraints.md (Csc): New constraint.
13966 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13967             John Eric Martin  <John.Martin@emmicro-us.com>
13969         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
13970         * config/arc/arc.c (_arc_jli_section): New struct.
13971         (arc_jli_section): New type.
13972         (rc_jli_sections): New static variable.
13973         (arc_handle_jli_attribute): New function.
13974         (arc_attribute_table): Add jli_always and jli_fixed attribute.
13975         (arc_file_end): New function.
13976         (TARGET_ASM_FILE_END): Define.
13977         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
13978         (arc_add_jli_section): New function.
13979         (jli_call_scan): Likewise.
13980         (arc_reorg): Call jli_call_scan.
13981         (arc_output_addsi): Remove 'S' from printing asm operand.
13982         (arc_is_jli_call_p): New function.
13983         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
13984         operand.
13985         (movhi_insn): Likewise.
13986         (movsi_insn): Likewise.
13987         (movsi_set_cc_insn): Likewise.
13988         (loadqi_update): Likewise.
13989         (load_zeroextendqisi_update): Likewise.
13990         (load_signextendqisi_update): Likewise.
13991         (loadhi_update): Likewise.
13992         (load_zeroextendhisi_update): Likewise.
13993         (load_signextendhisi_update): Likewise.
13994         (loadsi_update): Likewise.
13995         (loadsf_update): Likewise.
13996         (movsicc_insn): Likewise.
13997         (bset_insn): Likewise.
13998         (bxor_insn): Likewise.
13999         (bclr_insn): Likewise.
14000         (bmsk_insn): Likewise.
14001         (bicsi3_insn): Likewise.
14002         (cmpsi_cc_c_insn): Likewise.
14003         (movsi_ne): Likewise.
14004         (movsi_cond_exec): Likewise.
14005         (clrsbsi2): Likewise.
14006         (norm_f): Likewise.
14007         (normw): Likewise.
14008         (swap): Likewise.
14009         (divaw): Likewise.
14010         (flag): Likewise.
14011         (sr): Likewise.
14012         (kflag): Likewise.
14013         (ffs): Likewise.
14014         (ffs_f): Likewise.
14015         (fls): Likewise.
14016         (call_i): Remove 'S' asm letter, add jli instruction.
14017         (call_value_i): Likewise.
14018         * config/arc/arc.op (mjli-always): New option.
14019         * config/arc/constraints.md (Cji): New constraint.
14020         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
14021         operand.
14022         (subsf3_fpx): Likewise.
14023         (mulsf3_fpx): Likewise.
14024         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
14025         asm operand.
14026         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
14027         function attrbutes.
14028         * doc/invoke.texi (ARC): Document mjli-always option.
14030 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
14032         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
14033         avoid addition with 0 and use incw and decw where possible.
14035 2018-01-26  Richard Biener  <rguenther@suse.de>
14037         PR tree-optimization/81082
14038         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
14039         association if it requires casting to unsigned.
14040         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
14041         from fold_plusminus_mult_expr to catch important cases late when
14042         range info is available.
14044 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
14046         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
14047         * configure.ac (hidden_linkonce): New test.
14048         * configure: Regenerate.
14049         * config.in: Regenerate.
14051 2018-01-26  Julia Koval  <julia.koval@intel.com>
14053         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
14054         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
14055         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
14056         _mm_mask_bitshuffle_epi64_mask): Fix type.
14057         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
14058         USI_FTYPE_V4DI_V4DI_USI): Remove.
14059         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
14060         __builtin_ia32_vpshufbitqmb256_mask,
14061         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
14062         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
14063         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
14065 2018-01-26  Alan Modra  <amodra@gmail.com>
14067         PR target/84033
14068         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
14069         UNSPEC_VBPERMQ.  Sort other unspecs.
14071 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
14073         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
14075 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
14077         PR middle-end/83055
14078         * predict.c (drop_profile): Do not push/pop cfun; update also
14079         node->count.
14080         (handle_missing_profiles): Fix logic looking for zero profiles.
14082 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
14084         PR middle-end/83977
14085         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
14086         on functions with #pragma omp declare simd or functions with simd
14087         attribute.
14088         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
14089         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
14090         Remove trailing \n from warning_at calls.
14092 2018-01-25  Tom de Vries  <tom@codesourcery.com>
14094         PR target/84028
14095         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
14096         for neutered workers.
14098 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
14100         PR target/68467
14101         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
14102         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
14104 2018-01-24  Jeff Law  <law@redhat.com>
14106         PR target/83994
14107         * i386.c (get_probe_interval): Move to earlier point.
14108         (ix86_compute_frame_layout): If -fstack-clash-protection and
14109         the frame is larger than the probe interval, then use pushes
14110         to save registers rather than reg->mem moves.
14111         (ix86_expand_prologue): Remove conditional for int_registers_saved
14112         assertion.
14114 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
14116         PR target/84014
14117         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
14118         min/max for never referenced object.
14120 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
14122         PR middle-end/83977
14123         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
14124         here.
14125         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
14126         attributes from DECL_ATTRIBUTES (decl) without affecting
14127         DECL_ATTRIBUTES (current_function_decl).
14128         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
14129         functions with non-NULL DECL_ABSTRACT_ORIGIN.
14131 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
14133         PR tree-optimization/83979
14134         * fold-const.c (fold_comparison): Use constant_boolean_node
14135         instead of boolean_{true,false}_node.
14137 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
14139         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
14140         with zero counts.
14142 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14144         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14145         Simplify the clause that sets the length attribute.
14146         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14147         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
14148         clause that sets the length attribute.
14149         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14151 2018-01-24  Tom de Vries  <tom@codesourcery.com>
14153         PR target/83589
14154         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
14155         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
14156         Add strict parameter.
14157         (prevent_branch_around_nothing): Insert dummy insn between branch to
14158         label and label with no ptx insn inbetween.
14159         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
14161 2018-01-24  Tom de Vries  <tom@codesourcery.com>
14163         PR target/81352
14164         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
14165         for neutered threads in warp.
14166         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
14168 2018-01-24  Richard Biener  <rguenther@suse.de>
14170         PR tree-optimization/83176
14171         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
14172         operands.
14174 2018-01-24  Richard Biener  <rguenther@suse.de>
14176         PR tree-optimization/82819
14177         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
14178         code generating pluses that are no-ops in the target precision.
14180 2018-01-24  Richard Biener  <rguenther@suse.de>
14182         PR middle-end/84000
14183         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
14185 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14187         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
14188         to merge probabilities.
14189         * predict.c (probably_never_executed): Also mark as cold functions
14190         with global 0 profile and guessed local profile.
14191         * profile-count.c (profile_probability::combine_with_count): New
14192         member function.
14193         * profile-count.h (profile_probability::operator*,
14194         profile_probability::operator*=, profile_probability::operator/,
14195         profile_probability::operator/=): Reduce precision to adjusted
14196         and set value to guessed on contradictory divisions.
14197         (profile_probability::combine_with_freq): Remove.
14198         (profile_probability::combine_wiht_count): Declare.
14199         (profile_count::force_nonzero):: Set to adjusted.
14200         (profile_count::probability_in):: Set quality to adjusted.
14201         * tree-ssa-tail-merge.c (replace_block_by): Use
14202         combine_with_count.
14204 2018-01-23  Andrew Waterman  <andrew@sifive.com>
14205             Jim Wilson  <jimw@sifive.com>
14207         * config/riscv/riscv.c (riscv_stack_boundary): New.
14208         (riscv_option_override): Set riscv_stack_boundary.  Handle
14209         riscv_preferred_stack_boundary_arg.
14210         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
14211         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
14212         (STACK_BOUNDARY): Set to riscv_stack_boundary.
14213         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
14214         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
14215         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
14217 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
14219         PR target/83905
14220         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
14221         of struct ix86_frame.
14222         (ix86_expand_epilogue): Likewise.  Add a local variable for
14223         the reg_save_offset field in struct ix86_frame.
14225 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
14227         PR tree-optimization/82604
14228         * tree-loop-distribution.c (enum partition_kind): New enum item
14229         PKIND_PARTIAL_MEMSET.
14230         (partition_builtin_p): Support above new enum item.
14231         (generate_code_for_partition): Ditto.
14232         (compute_access_range): Differentiate cases that equality can be
14233         proven at all loops, the innermost loops or no loops.
14234         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
14235         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
14236         (finalize_partitions, distribute_loop): Don't fuse partition of
14237         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
14238         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
14239         parloop is enabled.
14241 2018-01-23  Martin Liska  <mliska@suse.cz>
14243         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
14244         order to ignore the predictor.
14245         (PRED_POLYMORPHIC_CALL): Likewise.
14246         (PRED_RECURSIVE_CALL): Likewise.
14248 2018-01-23  Martin Liska  <mliska@suse.cz>
14250         * tree-profile.c (tree_profiling): Print function header to
14251         aware reader which function we are working on.
14252         * value-prof.c (gimple_find_values_to_profile): Do not print
14253         not interesting value histograms.
14255 2018-01-23  Martin Liska  <mliska@suse.cz>
14257         * profile-count.h (enum profile_quality): Add
14258         profile_uninitialized as the first value. Do not number values
14259         as they are zero based.
14260         (profile_count::verify): Update sanity check.
14261         (profile_probability::verify): Likewise.
14263 2018-01-23  Nathan Sidwell  <nathan@acm.org>
14265         * doc/invoke.texi (ffor-scope): Deprecate.
14267 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14269         PR tree-optimization/83510
14270         * domwalk.c (set_all_edges_as_executable): New function.
14271         (dom_walker::dom_walker): Convert bool param
14272         "skip_unreachable_blocks" to enum reachability.  Move setup of
14273         edge flags to set_all_edges_as_executable and only do it when
14274         reachability is REACHABLE_BLOCKS.
14275         * domwalk.h (enum dom_walker::reachability): New enum.
14276         (dom_walker::dom_walker): Convert bool param
14277         "skip_unreachable_blocks" to enum reachability.
14278         (set_all_edges_as_executable): New decl.
14279         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
14280         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
14281         "reachability".
14282         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
14283         but converting true to REACHABLE_BLOCKS.
14284         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
14285         * tree-vrp.c
14286         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
14287         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
14288         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
14289         REACHABLE_BLOCKS.
14290         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
14291         if check_all_array_refs will be called.
14293 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14295         * tree.c (selftest::test_location_wrappers): Add more test
14296         coverage.
14298 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14300         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
14301         (selftest::test_bit_in_range): Likewise.
14303 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
14305         PR testsuite/83888
14306         * doc/sourcebuild.texi (vect_float): Say that the selector
14307         only describes the situation when -funsafe-math-optimizations is on.
14308         (vect_float_strict): Document.
14310 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
14312         PR tree-optimization/83965
14313         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
14314         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
14315         instead of checking only for a reduction.
14316         (vect_recog_widen_sum_pattern): Likewise.
14318 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14320         * predict.c (probably_never_executed): Only use precise profile info.
14321         (compute_function_frequency): Skip after inlining hack since we now
14322         have quality checking.
14324 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14326         * profile-count.h (profile_probability::very_unlikely,
14327         profile_probability::unlikely, profile_probability::even): Set
14328         precision to guessed.
14330 2018-01-23  Richard Biener  <rguenther@suse.de>
14332         PR tree-optimization/83963
14333         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
14334         Properly terminate dominator walk when crossing the exit edge not
14335         when visiting its source block.
14337 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
14339         PR c++/83918
14340         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
14341         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
14343 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
14345         PR tree-optimization/83957
14346         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
14347         semicolon after for body surrounded by braces.
14349         PR tree-optimization/83081
14350         * profile-count.h (profile_probability::split): New method.
14351         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
14352         Use profile_probability::split.
14353         (do_compare_rtx_and_jump): Fix adjustment of probabilities
14354         when splitting a single conditional jump into 2.
14356 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
14358         PR tree-optimization/69452
14359         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
14360         decl.
14362 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14364         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
14365         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
14366         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
14368 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14370         * config/rl78/rl78-protos.h (rl78_split_movdi): New function
14371         declaration.
14372         * config/rl78/rl78.md (movdi): New define_expand.
14373         * config/rl78/rl78.c (rl78_split_movdi): New function.
14375 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14377         PR target/83862
14378         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
14379         no longer used.
14380         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
14381         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
14382         128-bit to produce an UNSPEC move to get the double word with the
14383         signbit and then a shift directly to do signbit.
14384         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
14385         implementation with a new version that just does either a direct
14386         move or a regular move.  Move memory interface to separate insns.
14387         Move insns so they are next to the expander.
14388         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
14389         with signbit move.  Split big and little endian case.
14390         (signbit<mode>2_dm_mem_le): Likewise.
14391         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
14392         (signbit<mode>2_dm2): Likewise.
14394 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14396         * config/rl78/rl78.md (anddi3): New define_expand.
14398 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14400         * config/rl78/rl78.md (umindi3): New define_expand.
14402 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14404         * config/rl78/rl78.md (smindi3): New define_expand.
14406 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14408         * config/rl78/rl78.md (smaxdi3): New define_expand.
14410 2018-01-22  Carl Love  <cel@us.ibm.com>
14412         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
14413         LVX_V1TI): Add macro expansion.
14414         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
14415         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
14416         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
14417         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
14418         Change check to determine if the instruction is a byte reversing
14419         entry.  Fix typo in comment.
14420         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
14421         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
14422         Add def_builtin calls for new builtins.
14423         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
14424         Add define_insn expansion.
14426 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14428         * config/rl78/rl78.md (umaxdi3): New define_expand.
14430 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14432         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
14433         for non-QImode registers.
14435 2018-01-22  Richard Biener  <rguenther@suse.de>
14437         PR tree-optimization/83963
14438         * graphite-scop-detection.c (scop_detection::get_sese): Delay
14439         including the loop exit block.
14440         (scop_detection::merge_sese): Likewise.
14441         (scop_detection::add_scop): Do it here instead.
14443 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14445         * doc/sourcebuild.texi (arm_softfloat): Document.
14447 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
14449         PR gcc/77734
14450         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
14451         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
14452         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
14454 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14455             David Edelsohn  <dje.gcc@gmail.com>
14457         PR target/83946
14458         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14459         Change "crset eq" to "crset 2".
14460         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14461         (*call_indirect_aix<mode>_nospec): Likewise.
14462         (*call_value_indirect_aix<mode>_nospec): Likewise.
14463         (*call_indirect_elfv2<mode>_nospec): Likewise.
14464         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
14465         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
14466         change assembly output from . to $.
14467         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14468         (indirect_jump<mode>_nospec): Change assembly output from . to $.
14469         (*tablejump<mode>_internal1_nospec): Likewise.
14471 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
14473         PR target/80870
14474         * config/sh/sh_optimize_sett_clrt.cc:
14475         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
14477 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
14479         PR tree-optimization/83940
14480         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
14481         offset_dt to vect_constant_def rather than vect_unknown_def_type.
14482         (vect_check_load_store_mask): Add a mask_dt_out parameter and
14483         use it to pass back the definition type.
14484         (vect_check_store_rhs): Likewise rhs_dt_out.
14485         (vect_build_gather_load_calls): Add a mask_dt argument and use
14486         it instead of a call to vect_is_simple_use.
14487         (vectorizable_store): Update calls to vect_check_load_store_mask
14488         and vect_check_store_rhs.  Use the dt returned by the latter instead
14489         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
14490         instead of calls to vect_is_simple_use.  Pass the scalar rather
14491         than the vector operand to vect_is_simple_use when handling
14492         second and subsequent copies of an rhs value.
14493         (vectorizable_load): Update calls to vect_check_load_store_mask
14494         and vect_build_gather_load_calls.  Use the cached mask_dt and
14495         gs_info.offset_dt instead of calls to vect_is_simple_use.
14497 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
14499         PR middle-end/83945
14500         * tree-emutls.c: Include gimplify.h.
14501         (lower_emutls_2): New function.
14502         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
14503         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
14504         it before further processing.
14506         PR target/83930
14507         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
14508         UINTVAL (trueop1) instead of INTVAL (op1).
14510 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
14512         PR debug/81570
14513         PR debug/83728
14514         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
14515         INCOMING_FRAME_SP_OFFSET if not defined.
14516         (scan_trace): Add ENTRY argument.  If true and
14517         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
14518         emit a note to adjust the CFA offset.
14519         (create_cfi_notes): Adjust scan_trace callers.
14520         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
14521         INCOMING_FRAME_SP_OFFSET in the CIE.
14522         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
14523         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
14524         Likewise.
14525         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
14526         * doc/tm.texi: Regenerated.
14528 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
14530         PR rtl-optimization/83147
14531         * lra-constraints.c (remove_inheritance_pseudos): Use
14532         lra_substitute_pseudo_within_insn.
14534 2018-01-19  Tom de Vries  <tom@codesourcery.com>
14535             Cesar Philippidis  <cesar@codesourcery.com>
14537         PR target/83920
14538         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
14540 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
14542         PR target/83790
14543         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
14544         spaces for function labels.
14546 2018-01-19  Martin Liska  <mliska@suse.cz>
14548         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
14549         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
14550         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
14551         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
14552         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
14553         (PRED_CONST_RETURN): Change from 69 to 65.
14554         (PRED_NULL_RETURN): Change from 91 to 71.
14555         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
14556         (PRED_LOOP_GUARD): Change from 66 to 73.
14558 2018-01-19  Martin Liska  <mliska@suse.cz>
14560         * predict.c (predict_insn_def): Add new assert.
14561         (struct branch_predictor): Change type to signed integer.
14562         (test_prediction_value_range): Amend test to cover
14563         PROB_UNINITIALIZED.
14564         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
14565         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
14566         (PRED_LOOP_ITERATIONS_MAX): Likewise.
14567         (PRED_LOOP_IV_COMPARE): Likewise.
14568         * predict.h (PROB_UNINITIALIZED): Define new constant.
14570 2018-01-19  Martin Liska  <mliska@suse.cz>
14572         * predict.c (dump_prediction): Add new format for
14573         analyze_brprob.py script which is enabled with -details
14574         suboption.
14575         * profile-count.h (precise_p): New function.
14577 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
14579         PR tree-optimization/83922
14580         * tree-vect-loop.c (vect_verify_full_masking): Return false if
14581         there are no statements that need masking.
14582         (vect_active_double_reduction_p): New function.
14583         (vect_analyze_loop_operations): Use it when handling phis that
14584         are not in the loop header.
14586 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
14588         PR tree-optimization/83914
14589         * tree-vect-loop.c (vectorizable_induction): Don't convert
14590         init_expr or apply the peeling adjustment for inductions
14591         that are nested within the vectorized loop.
14593 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14595         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
14596         instead of NEG.
14598 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
14600         PR sanitizer/81715
14601         PR testsuite/83882
14602         * function.h (gimplify_parameters): Add gimple_seq * argument.
14603         * function.c: Include gimple.h and options.h.
14604         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
14605         for the added local temporaries if needed.
14606         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
14607         if there are any parameter cleanups, wrap whole body into a
14608         try/finally with the cleanups.
14610 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
14612         PR target/82964
14613         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
14614         Use GET_MODE_CLASS for scalar floating point.
14616 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
14618         PR ipa/82256
14619         patch by PaX Team
14620         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
14621         Fix call of call_cgraph_insertion_hooks.
14623 2018-01-18  Martin Sebor  <msebor@redhat.com>
14625         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
14627 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
14629         PR ipa/83619
14630         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
14631         frequencies.
14633 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
14635         PR other/70268
14636         * common.opt: (-ffile-prefix-map): New option.
14637         * opts.c (common_handle_option): Defer it.
14638         * opts-global.c (handle_common_deferred_options): Handle it.
14639         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
14640         * file-prefix-map.h: New file.
14641         (remap_debug_filename, add_debug_prefix_map): ...here.
14642         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
14643         * final.c (debug_prefix_map, add_debug_prefix_map
14644         remap_debug_filename): Move to...
14645         * file-prefix-map.c: New file.
14646         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
14647         generalize, get rid of alloca(), use strrchr() instead of strchr().
14648         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
14649         Implement in terms of add_prefix_map().
14650         (remap_macro_filename, remap_debug_filename): Implement in term of
14651         remap_filename().
14652         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
14653         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
14654         * dbxout.c: Include file-prefix-map.h.
14655         * varasm.c: Likewise.
14656         * vmsdbgout.c: Likewise.
14657         * xcoffout.c: Likewise.
14658         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
14659         * doc/cppopts.texi (-fmacro-prefix-map): Document.
14660         * doc/invoke.texi (-ffile-prefix-map): Document.
14661         (-fdebug-prefix-map): Update description.
14663 2018-01-18  Martin Liska  <mliska@suse.cz>
14665         * config/i386/i386.c (indirect_thunk_name): Document that also
14666         lfence is emitted.
14667         (output_indirect_thunk): Document why both instructions
14668         (pause and lfence) are generated.
14670 2018-01-18  Richard Biener  <rguenther@suse.de>
14672         PR tree-optimization/83887
14673         * graphite-scop-detection.c
14674         (scop_detection::get_nearest_dom_with_single_entry): Remove.
14675         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
14676         (scop_detection::merge_sese): Re-implement with a flood-fill
14677         algorithm that properly finds a SESE region if it exists.
14679 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
14681         PR c/61240
14682         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
14683         pointer_diff optimizations use view_convert instead of convert.
14685 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14687         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14688         Generate different code for -mno-speculate-indirect-jumps.
14689         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14690         (*call_indirect_aix<mode>): Disable for
14691         -mno-speculate-indirect-jumps.
14692         (*call_indirect_aix<mode>_nospec): New define_insn.
14693         (*call_value_indirect_aix<mode>): Disable for
14694         -mno-speculate-indirect-jumps.
14695         (*call_value_indirect_aix<mode>_nospec): New define_insn.
14696         (*sibcall_nonlocal_sysv<mode>): Generate different code for
14697         -mno-speculate-indirect-jumps.
14698         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14700 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
14702         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
14703         long double type, set the flags for noting the default long double
14704         type, even if we don't pass or return a long double type.
14706 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
14708         PR ipa/83051
14709         * ipa-inline.c (flatten_function): Do not overwrite final inlining
14710         failure.
14712 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
14714         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
14715         support for merge[hl].
14716         (fold_mergehl_helper): New helper function.
14717         (tree-vector-builder.h): New #include for tree_vector_builder usage.
14718         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
14719         (altivec_vmrglw_direct): Add xxmrglw insn.
14721 2018-01-17  Andrew Waterman  <andrew@sifive.com>
14723         * config/riscv/riscv.c (riscv_conditional_register_usage): If
14724         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
14726 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
14728         PR lto/83121
14729         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
14730         call the lto_location_cache before reading the
14731         DECL_SOURCE_LOCATION of the types.
14733 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
14734             Richard Sandiford  <richard.sandiford@linaro.org>
14736         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
14737         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
14738         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
14739         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
14740         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
14741         Add declaration.
14742         * config/aarch64/constraints.md (aarch64_movti_operand):
14743         Limit immediates.
14744         * config/aarch64/predicates.md (Uti): Add new constraint.
14746 2018-01-17 Carl Love  <cel@us.ibm.com>
14748         * config/rs6000/vsx.md (define_expand xl_len_r,
14749         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
14750         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
14751         lxvll.
14752         (define_expand, define_insn): Move the shift left from  the
14753         define_insn to the define_expand for lxvl and stxvl instructions.
14754         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
14755         and XL_LEN_R definitions to PURE.
14757 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
14759         * config/i386/i386.c (indirect_thunk_name): Declare regno
14760         as unsigned int.  Compare regno with INVALID_REGNUM.
14761         (output_indirect_thunk): Ditto.
14762         (output_indirect_thunk_function): Ditto.
14763         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
14764         in the call to output_indirect_thunk_function.
14766 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
14768         PR middle-end/83884
14769         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
14770         rather than the size of inner_type to determine the stack slot size
14771         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
14773 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
14775         PR target/83546
14776         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
14777         to PTA_SILVERMONT.
14779 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
14781         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
14782         endian Linux systems to optionally enable multilibs for selecting
14783         the long double type if the user configured an explicit type.
14784         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
14785         have no long double multilibs if not defined.
14786         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
14787         warn if the user used -mabi={ieee,ibm}longdouble and we built
14788         multilibs for long double.
14789         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
14790         appropriate multilib option.
14791         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
14792         multilib options.
14793         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
14794         for building long double multilibs.
14795         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
14797 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
14799         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
14800         copies.
14802         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
14803         64 bits.
14804         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
14805         128 bits.
14807         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
14808         variables.
14810         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
14811         return value.
14813 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
14815         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
14816         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
14818 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
14820         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
14821         different rtl trees depending on TARGET_64BIT.
14822         (rs6000_gen_lvx): Likewise.
14824 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
14826         * config/visium/visium.md (nop): Tweak comment.
14827         (hazard_nop): Likewise.
14829 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14831         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
14832         -mspeculate-indirect-jumps.
14833         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
14834         for -mno-speculate-indirect-jumps.
14835         (*call_indirect_elfv2<mode>_nospec): New define_insn.
14836         (*call_value_indirect_elfv2<mode>): Disable for
14837         -mno-speculate-indirect-jumps.
14838         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
14839         (indirect_jump): Emit different RTL for
14840         -mno-speculate-indirect-jumps.
14841         (*indirect_jump<mode>): Disable for
14842         -mno-speculate-indirect-jumps.
14843         (*indirect_jump<mode>_nospec): New define_insn.
14844         (tablejump): Emit different RTL for
14845         -mno-speculate-indirect-jumps.
14846         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
14847         (tablejumpsi_nospec): New define_expand.
14848         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
14849         (tablejumpdi_nospec): New define_expand.
14850         (*tablejump<mode>_internal1): Disable for
14851         -mno-speculate-indirect-jumps.
14852         (*tablejump<mode>_internal1_nospec): New define_insn.
14853         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
14854         option.
14856 2018-01-16  Artyom Skrobov tyomitch@gmail.com
14858         * caller-save.c (insert_save): Drop unnecessary parameter.  All
14859         callers updated.
14861 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14862             Richard Biener  <rguenth@suse.de>
14864         PR libgomp/83590
14865         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
14866         return early, inline manually is_gimple_sizepos.  Make sure if we
14867         call gimplify_expr we don't end up with a gimple constant.
14868         * tree.c (variably_modified_type_p): Don't return true for
14869         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
14870         * gimplify.h (is_gimple_sizepos): Remove.
14872 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14874         PR tree-optimization/83857
14875         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
14876         vectorizable_live_operation for pure SLP statements.
14877         (vectorizable_live_operation): Handle PHIs.
14879 2018-01-16  Richard Biener  <rguenther@suse.de>
14881         PR tree-optimization/83867
14882         * tree-vect-stmts.c (vect_transform_stmt): Precompute
14883         nested_in_vect_loop_p since the scalar stmt may get invalidated.
14885 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14887         PR c/83844
14888         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
14889         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
14890         If off is not INTEGER_CST, issue a may not be aligned warning
14891         rather than isn't aligned.  Use isn%'t rather than isn't.
14892         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
14893         into MULT_EXPR.
14894         <case MULT_EXPR>: Improve the case when bottom and one of the
14895         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
14896         operand, in that case check if the other operand is multiple of
14897         bottom divided by the INTEGER_CST operand.
14899 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14901         PR target/83858
14902         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
14903         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
14904         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
14905         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
14906         * config/pa/pa.c (pa_function_arg_advance): Likewise.
14907         (pa_function_arg, pa_arg_partial_bytes): Likewise.
14908         (pa_function_arg_size): New function.
14910 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14912         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
14913         in a separate statement.
14915 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14917         PR tree-optimization/83847
14918         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
14919         group gathers and scatters.
14921 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14923         PR rtl-optimization/86620
14924         * params.def (max-sched-ready-insns): Bump minimum value to 1.
14926         PR rtl-optimization/83213
14927         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
14928         to last if both are JUMP_INSNs.
14930         PR tree-optimization/83843
14931         * gimple-ssa-store-merging.c
14932         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
14933         store_immediate_info for bswap/nop orig_stores.
14935 2018-01-15  Andrew Waterman  <andrew@sifive.com>
14937         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
14938         !TARGET_MUL.
14939         <UDIV>: Increase cost if !TARGET_DIV.
14941 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
14943         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
14944         (define_attr "cr_logical_3op"): New.
14945         (cceq_ior_compare): Adjust.
14946         (cceq_ior_compare_complement): Adjust.
14947         (*cceq_rev_compare): Adjust.
14948         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
14949         (is_cracked_insn): Adjust.
14950         (insn_must_be_first_in_group): Adjust.
14951         * config/rs6000/40x.md: Adjust.
14952         * config/rs6000/440.md: Adjust.
14953         * config/rs6000/476.md: Adjust.
14954         * config/rs6000/601.md: Adjust.
14955         * config/rs6000/603.md: Adjust.
14956         * config/rs6000/6xx.md: Adjust.
14957         * config/rs6000/7450.md: Adjust.
14958         * config/rs6000/7xx.md: Adjust.
14959         * config/rs6000/8540.md: Adjust.
14960         * config/rs6000/cell.md: Adjust.
14961         * config/rs6000/e300c2c3.md: Adjust.
14962         * config/rs6000/e500mc.md: Adjust.
14963         * config/rs6000/e500mc64.md: Adjust.
14964         * config/rs6000/e5500.md: Adjust.
14965         * config/rs6000/e6500.md: Adjust.
14966         * config/rs6000/mpc.md: Adjust.
14967         * config/rs6000/power4.md: Adjust.
14968         * config/rs6000/power5.md: Adjust.
14969         * config/rs6000/power6.md: Adjust.
14970         * config/rs6000/power7.md: Adjust.
14971         * config/rs6000/power8.md: Adjust.
14972         * config/rs6000/power9.md: Adjust.
14973         * config/rs6000/rs64.md: Adjust.
14974         * config/rs6000/titan.md: Adjust.
14976 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14978         * config/i386/predicates.md (indirect_branch_operand): Rewrite
14979         ix86_indirect_branch_register logic.
14981 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14983         * config/i386/constraints.md (Bs): Update
14984         ix86_indirect_branch_register check.  Don't check
14985         ix86_indirect_branch_register with GOT_memory_operand.
14986         (Bw): Likewise.
14987         * config/i386/predicates.md (GOT_memory_operand): Don't check
14988         ix86_indirect_branch_register here.
14989         (GOT32_symbol_operand): Likewise.
14991 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14993         * config/i386/predicates.md (constant_call_address_operand):
14994         Rewrite ix86_indirect_branch_register logic.
14995         (sibcall_insn_operand): Likewise.
14997 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14999         * config/i386/constraints.md (Bs): Replace
15000         ix86_indirect_branch_thunk_register with
15001         ix86_indirect_branch_register.
15002         (Bw): Likewise.
15003         * config/i386/i386.md (indirect_jump): Likewise.
15004         (tablejump): Likewise.
15005         (*sibcall_memory): Likewise.
15006         (*sibcall_value_memory): Likewise.
15007         Peepholes of indirect call and jump via memory: Likewise.
15008         * config/i386/i386.opt: Likewise.
15009         * config/i386/predicates.md (indirect_branch_operand): Likewise.
15010         (GOT_memory_operand): Likewise.
15011         (call_insn_operand): Likewise.
15012         (sibcall_insn_operand): Likewise.
15013         (GOT32_symbol_operand): Likewise.
15015 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
15017         PR middle-end/83837
15018         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
15019         type rather than type addr's type points to.
15020         (expand_omp_atomic_mutex): Likewise.
15021         (expand_omp_atomic): Likewise.
15023 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
15025         PR target/83839
15026         * config/i386/i386.c (output_indirect_thunk_function): Use
15027         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
15028         for  __x86_return_thunk.
15030 2018-01-15  Richard Biener  <rguenther@suse.de>
15032         PR middle-end/83850
15033         * expmed.c (extract_bit_field_1): Fix typo.
15035 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15037         PR target/83687
15038         * config/arm/iterators.md (VF): New mode iterator.
15039         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
15040         Remove integer-related logic from pattern.
15041         (neon_vabd<mode>_3): Likewise.
15043 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
15045         PR middle-end/82694
15046         * common.opt (fstrict-overflow): No longer an alias.
15047         (fwrapv-pointer): New option.
15048         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
15049         also for pointer types based on flag_wrapv_pointer.
15050         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
15051         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
15052         opts->x_flag_wrapv got set.
15053         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
15054         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
15055         POINTER_TYPE_OVERFLOW_UNDEFINED.
15056         * match.pd: Likewise in address comparison pattern.
15057         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
15059 2018-01-15  Richard Biener  <rguenther@suse.de>
15061         PR lto/83804
15062         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
15063         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
15064         Reset type names to their identifier if their TYPE_DECL doesn't
15065         have linkage (and thus is used for ODR and devirt).
15066         (save_debug_info_for_decl): Remove.
15067         (save_debug_info_for_type): Likewise.
15068         (add_tree_to_fld_list): Adjust.
15069         * tree-pretty-print.c (dump_generic_node): Make dumping of
15070         type names more robust.
15072 2018-01-15  Richard Biener  <rguenther@suse.de>
15074         * BASE-VER: Bump to 8.0.1.
15076 2018-01-14  Martin Sebor  <msebor@redhat.com>
15078         PR other/83508
15079         * builtins.c (check_access): Avoid warning when the no-warning bit
15080         is set.
15082 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
15084         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
15085         * ira-color (allocno_hard_regs_compare): Likewise.
15087 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
15089         PR target/83013
15090         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
15091         Use .pushsection/.popsection.
15093 2018-01-14  Martin Sebor  <msebor@redhat.com>
15095         PR c++/81327
15096         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
15098 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
15100         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
15101         entry from extra_headers.
15102         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
15103         extra_headers, make the list bitwise identical to the i?86-*-* one.
15105 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15107         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
15108         -mcmodel=large with -mindirect-branch=thunk,
15109         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
15110         -mfunction-return=thunk-extern.
15111         * doc/invoke.texi: Document -mcmodel=large is incompatible with
15112         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
15113         -mfunction-return=thunk and -mfunction-return=thunk-extern.
15115 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15117         * config/i386/i386.c (print_reg): Print the name of the full
15118         integer register without '%'.
15119         (ix86_print_operand): Handle 'V'.
15120         * doc/extend.texi: Document 'V' modifier.
15122 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15124         * config/i386/constraints.md (Bs): Disallow memory operand for
15125         -mindirect-branch-register.
15126         (Bw): Likewise.
15127         * config/i386/predicates.md (indirect_branch_operand): Likewise.
15128         (GOT_memory_operand): Likewise.
15129         (call_insn_operand): Likewise.
15130         (sibcall_insn_operand): Likewise.
15131         (GOT32_symbol_operand): Likewise.
15132         * config/i386/i386.md (indirect_jump): Call convert_memory_address
15133         for -mindirect-branch-register.
15134         (tablejump): Likewise.
15135         (*sibcall_memory): Likewise.
15136         (*sibcall_value_memory): Likewise.
15137         Disallow peepholes of indirect call and jump via memory for
15138         -mindirect-branch-register.
15139         (*call_pop): Replace m with Bw.
15140         (*call_value_pop): Likewise.
15141         (*sibcall_pop_memory): Replace m with Bs.
15142         * config/i386/i386.opt (mindirect-branch-register): New option.
15143         * doc/invoke.texi: Document -mindirect-branch-register option.
15145 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15147         * config/i386/i386-protos.h (ix86_output_function_return): New.
15148         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
15149         set function_return_type.
15150         (indirect_thunk_name): Add ret_p to indicate thunk for function
15151         return.
15152         (output_indirect_thunk_function): Pass false to
15153         indirect_thunk_name.
15154         (ix86_output_indirect_branch_via_reg): Likewise.
15155         (ix86_output_indirect_branch_via_push): Likewise.
15156         (output_indirect_thunk_function): Create alias for function
15157         return thunk if regno < 0.
15158         (ix86_output_function_return): New function.
15159         (ix86_handle_fndecl_attribute): Handle function_return.
15160         (ix86_attribute_table): Add function_return.
15161         * config/i386/i386.h (machine_function): Add
15162         function_return_type.
15163         * config/i386/i386.md (simple_return_internal): Use
15164         ix86_output_function_return.
15165         (simple_return_internal_long): Likewise.
15166         * config/i386/i386.opt (mfunction-return=): New option.
15167         (indirect_branch): Mention -mfunction-return=.
15168         * doc/extend.texi: Document function_return function attribute.
15169         * doc/invoke.texi: Document -mfunction-return= option.
15171 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15173         * config/i386/i386-opts.h (indirect_branch): New.
15174         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
15175         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
15176         with local indirect jump when converting indirect call and jump.
15177         (ix86_set_indirect_branch_type): New.
15178         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
15179         (indirectlabelno): New.
15180         (indirect_thunk_needed): Likewise.
15181         (indirect_thunk_bnd_needed): Likewise.
15182         (indirect_thunks_used): Likewise.
15183         (indirect_thunks_bnd_used): Likewise.
15184         (INDIRECT_LABEL): Likewise.
15185         (indirect_thunk_name): Likewise.
15186         (output_indirect_thunk): Likewise.
15187         (output_indirect_thunk_function): Likewise.
15188         (ix86_output_indirect_branch_via_reg): Likewise.
15189         (ix86_output_indirect_branch_via_push): Likewise.
15190         (ix86_output_indirect_branch): Likewise.
15191         (ix86_output_indirect_jmp): Likewise.
15192         (ix86_code_end): Call output_indirect_thunk_function if needed.
15193         (ix86_output_call_insn): Call ix86_output_indirect_branch if
15194         needed.
15195         (ix86_handle_fndecl_attribute): Handle indirect_branch.
15196         (ix86_attribute_table): Add indirect_branch.
15197         * config/i386/i386.h (machine_function): Add indirect_branch_type
15198         and has_local_indirect_jump.
15199         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
15200         to true.
15201         (tablejump): Likewise.
15202         (*indirect_jump): Use ix86_output_indirect_jmp.
15203         (*tablejump_1): Likewise.
15204         (simple_return_indirect_internal): Likewise.
15205         * config/i386/i386.opt (mindirect-branch=): New option.
15206         (indirect_branch): New.
15207         (keep): Likewise.
15208         (thunk): Likewise.
15209         (thunk-inline): Likewise.
15210         (thunk-extern): Likewise.
15211         * doc/extend.texi: Document indirect_branch function attribute.
15212         * doc/invoke.texi: Document -mindirect-branch= option.
15214 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
15216         PR ipa/83051
15217         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
15219 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
15221         * ipa-inline.c (want_inline_small_function_p): Return false if
15222         inlining has already failed with CIF_FINAL_ERROR.
15223         (update_caller_keys): Call want_inline_small_function_p before
15224         can_inline_edge_p.
15225         (update_callee_keys): Likewise.
15227 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
15229         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
15230         New function.
15231         (rs6000_quadword_masked_address_p): Likewise.
15232         (quad_aligned_load_p): Likewise.
15233         (quad_aligned_store_p): Likewise.
15234         (const_load_sequence_p): Add comment to describe the outer-most loop.
15235         (mimic_memory_attributes_and_flags): New function.
15236         (rs6000_gen_stvx): Likewise.
15237         (replace_swapped_aligned_store): Likewise.
15238         (rs6000_gen_lvx): Likewise.
15239         (replace_swapped_aligned_load): Likewise.
15240         (replace_swapped_load_constant): Capitalize argument name in
15241         comment describing this function.
15242         (rs6000_analyze_swaps): Add a third pass to search for vector loads
15243         and stores that access quad-word aligned addresses and replace
15244         with stvx or lvx instructions when appropriate.
15245         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
15246         New function prototype.
15247         (rs6000_quadword_masked_address_p): Likewise.
15248         (rs6000_gen_lvx): Likewise.
15249         (rs6000_gen_stvx): Likewise.
15250         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
15251         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
15252         when memory address is aligned.
15253         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
15254         this split to select lvx instruction when memory address is aligned.
15255         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
15256         instruction when memory address is aligned.
15257         (*vsx_le_perm_load_v16qi): Likewise.
15258         (four unnamed splitters): Modify to select the stvx instruction
15259         when memory is aligned.
15261 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
15263         * predict.c (determine_unlikely_bbs): Handle correctly BBs
15264         which appears in the queue multiple times.
15266 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15267             Alan Hayward  <alan.hayward@arm.com>
15268             David Sherwood  <david.sherwood@arm.com>
15270         * tree-vectorizer.h (vec_lower_bound): New structure.
15271         (_loop_vec_info): Add check_nonzero and lower_bounds.
15272         (LOOP_VINFO_CHECK_NONZERO): New macro.
15273         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
15274         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
15275         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
15276         fields.  Make seg_len the distance travelled, not including the
15277         access size.
15278         (dr_direction_indicator): Declare.
15279         (dr_zero_step_indicator): Likewise.
15280         (dr_known_forward_stride_p): Likewise.
15281         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
15282         tree-ssanames.h.
15283         (runtime_alias_check_p): Allow runtime alias checks with
15284         variable strides.
15285         (operator ==): Compare access_size and align.
15286         (prune_runtime_alias_test_list): Rework for new distinction between
15287         the access_size and seg_len.
15288         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
15289         segment lengths.
15290         (get_segment_min_max): New function.
15291         (create_intersect_range_checks): Use it.
15292         (dr_step_indicator): New function.
15293         (dr_direction_indicator): Likewise.
15294         (dr_zero_step_indicator): Likewise.
15295         (dr_known_forward_stride_p): Likewise.
15296         * tree-loop-distribution.c (data_ref_segment_size): Return
15297         DR_STEP * (niters - 1).
15298         (compute_alias_check_pairs): Update call to the dr_with_seg_len
15299         constructor.
15300         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
15301         (vect_preserves_scalar_order_p): New function, split out from...
15302         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
15303         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
15304         (vect_vfa_access_size): New function.
15305         (vect_vfa_align): Likewise.
15306         (vect_compile_time_alias): Take access_size_a and access_b arguments.
15307         (dump_lower_bound): New function.
15308         (vect_check_lower_bound): Likewise.
15309         (vect_small_gap_p): Likewise.
15310         (vectorizable_with_step_bound_p): Likewise.
15311         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
15312         depencies if the vectorization factor is 1.  Convert the checks
15313         for nonzero steps into checks on the bounds of DR_STEP.  Try using
15314         a bunds check for variable steps if the minimum required step is
15315         relatively small. Update calls to the dr_with_seg_len
15316         constructor and to vect_compile_time_alias.
15317         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
15318         function.
15319         (vect_loop_versioning): Call it.
15320         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
15321         when retrying.
15322         (vect_estimate_min_profitable_iters): Account for any bounds checks.
15324 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15325             Alan Hayward  <alan.hayward@arm.com>
15326             David Sherwood  <david.sherwood@arm.com>
15328         * doc/sourcebuild.texi (vect_scatter_store): Document.
15329         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
15330         optabs.
15331         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
15332         Document.
15333         * genopinit.c (main): Add supports_vec_scatter_store and
15334         supports_vec_scatter_store_cached to target_optabs.
15335         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
15336         IFN_MASK_SCATTER_STORE.
15337         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
15338         functions.
15339         * internal-fn.h (internal_store_fn_p): Declare.
15340         (internal_fn_stored_value_index): Likewise.
15341         * internal-fn.c (scatter_store_direct): New macro.
15342         (expand_scatter_store_optab_fn): New function.
15343         (direct_scatter_store_optab_supported_p): New macro.
15344         (internal_store_fn_p): New function.
15345         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
15346         IFN_MASK_SCATTER_STORE.
15347         (internal_fn_mask_index): Likewise.
15348         (internal_fn_stored_value_index): New function.
15349         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
15350         for scatter stores.
15351         * optabs-query.h (supports_vec_scatter_store_p): Declare.
15352         * optabs-query.c (supports_vec_scatter_store_p): New function.
15353         * tree-vectorizer.h (vect_get_store_rhs): Declare.
15354         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
15355         true for scatter stores.
15356         (vect_gather_scatter_fn_p): Handle scatter stores too.
15357         (vect_check_gather_scatter): Consider using scatter stores if
15358         supports_vec_scatter_store_p.
15359         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
15360         scatter stores too.
15361         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
15362         internal_fn_stored_value_index.
15363         (check_load_store_masking): Handle scatter stores too.
15364         (vect_get_store_rhs): Make public.
15365         (vectorizable_call): Use internal_store_fn_p.
15366         (vectorizable_store): Handle scatter store internal functions.
15367         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
15368         when deciding whether the end of the group has been reached.
15369         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
15370         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
15371         (mask_scatter_store<mode>): New insns.
15373 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15374             Alan Hayward  <alan.hayward@arm.com>
15375             David Sherwood  <david.sherwood@arm.com>
15377         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
15378         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
15379         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
15380         function.
15381         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
15382         Use vect_truncate_gather_scatter_offset if we can't treat the
15383         operation as a normal gather load or scatter store.
15384         (get_group_load_store_type): Take the gather_scatter_info
15385         as argument.  Try using a gather load or scatter store for
15386         single-element groups.
15387         (get_load_store_type): Update calls to get_group_load_store_type
15388         and vect_use_strided_gather_scatters_p.
15390 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15391             Alan Hayward  <alan.hayward@arm.com>
15392             David Sherwood  <david.sherwood@arm.com>
15394         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
15395         optional tree argument.
15396         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
15397         null target hooks.
15398         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
15399         but continue to use the current value as a fallback.
15400         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
15401         to compare the updates.
15402         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
15403         (get_load_store_type): Use it when handling a strided access.
15404         (vect_get_strided_load_store_ops): New function.
15405         (vect_get_data_ptr_increment): Likewise.
15406         (vectorizable_load): Handle strided gather loads.  Always pass
15407         a step to vect_create_data_ref_ptr and bump_vector_ptr.
15409 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15410             Alan Hayward  <alan.hayward@arm.com>
15411             David Sherwood  <david.sherwood@arm.com>
15413         * doc/md.texi (gather_load@var{m}): Document.
15414         (mask_gather_load@var{m}): Likewise.
15415         * genopinit.c (main): Add supports_vec_gather_load and
15416         supports_vec_gather_load_cached to target_optabs.
15417         * optabs-tree.c (init_tree_optimization_optabs): Use
15418         ggc_cleared_alloc to allocate target_optabs.
15419         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
15420         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
15421         functions.
15422         * internal-fn.h (internal_load_fn_p): Declare.
15423         (internal_gather_scatter_fn_p): Likewise.
15424         (internal_fn_mask_index): Likewise.
15425         (internal_gather_scatter_fn_supported_p): Likewise.
15426         * internal-fn.c (gather_load_direct): New macro.
15427         (expand_gather_load_optab_fn): New function.
15428         (direct_gather_load_optab_supported_p): New macro.
15429         (direct_internal_fn_optab): New function.
15430         (internal_load_fn_p): Likewise.
15431         (internal_gather_scatter_fn_p): Likewise.
15432         (internal_fn_mask_index): Likewise.
15433         (internal_gather_scatter_fn_supported_p): Likewise.
15434         * optabs-query.c (supports_at_least_one_mode_p): New function.
15435         (supports_vec_gather_load_p): Likewise.
15436         * optabs-query.h (supports_vec_gather_load_p): Declare.
15437         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
15438         and memory_type field.
15439         (NUM_PATTERNS): Bump to 15.
15440         * tree-vect-data-refs.c: Include internal-fn.h.
15441         (vect_gather_scatter_fn_p): New function.
15442         (vect_describe_gather_scatter_call): Likewise.
15443         (vect_check_gather_scatter): Try using internal functions for
15444         gather loads.  Recognize existing calls to a gather load function.
15445         (vect_analyze_data_refs): Consider using gather loads if
15446         supports_vec_gather_load_p.
15447         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
15448         (vect_get_gather_scatter_offset_type): Likewise.
15449         (vect_convert_mask_for_vectype): Likewise.
15450         (vect_add_conversion_to_patterm): Likewise.
15451         (vect_try_gather_scatter_pattern): Likewise.
15452         (vect_recog_gather_scatter_pattern): New pattern recognizer.
15453         (vect_vect_recog_func_ptrs): Add it.
15454         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
15455         internal_fn_mask_index and internal_gather_scatter_fn_p.
15456         (check_load_store_masking): Take the gather_scatter_info as an
15457         argument and handle gather loads.
15458         (vect_get_gather_scatter_ops): New function.
15459         (vectorizable_call): Check internal_load_fn_p.
15460         (vectorizable_load): Likewise.  Handle gather load internal
15461         functions.
15462         (vectorizable_store): Update call to check_load_store_masking.
15463         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
15464         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
15465         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
15466         (aarch64_gather_scale_operand_d): New predicates.
15467         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
15468         (mask_gather_load<mode>): New insns.
15470 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15471             Alan Hayward  <alan.hayward@arm.com>
15472             David Sherwood  <david.sherwood@arm.com>
15474         * optabs.def (fold_left_plus_optab): New optab.
15475         * doc/md.texi (fold_left_plus_@var{m}): Document.
15476         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
15477         * internal-fn.c (fold_left_direct): Define.
15478         (expand_fold_left_optab_fn): Likewise.
15479         (direct_fold_left_optab_supported_p): Likewise.
15480         * fold-const-call.c (fold_const_fold_left): New function.
15481         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
15482         * tree-parloops.c (valid_reduction_p): New function.
15483         (gather_scalar_reductions): Use it.
15484         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
15485         (vect_finish_replace_stmt): Declare.
15486         * tree-vect-loop.c (fold_left_reduction_fn): New function.
15487         (needs_fold_left_reduction_p): New function, split out from...
15488         (vect_is_simple_reduction): ...here.  Accept reductions that
15489         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
15490         (vect_force_simple_reduction): Also store the reduction type in
15491         the assignment's STMT_VINFO_REDUC_TYPE.
15492         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
15493         (merge_with_identity): New function.
15494         (vect_expand_fold_left): Likewise.
15495         (vectorize_fold_left_reduction): Likewise.
15496         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
15497         scalar phi in place for it.  Check for target support and reject
15498         cases that would reassociate the operation.  Defer the transform
15499         phase to vectorize_fold_left_reduction.
15500         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
15501         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
15502         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
15504 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15506         * tree-if-conv.c (predicate_mem_writes): Remove redundant
15507         call to ifc_temp_var.
15509 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15510             Alan Hayward  <alan.hayward@arm.com>
15511             David Sherwood  <david.sherwood@arm.com>
15513         * target.def (legitimize_address_displacement): Take the original
15514         offset as a poly_int.
15515         * targhooks.h (default_legitimize_address_displacement): Update
15516         accordingly.
15517         * targhooks.c (default_legitimize_address_displacement): Likewise.
15518         * doc/tm.texi: Regenerate.
15519         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
15520         as an argument, moving assert of ad->disp == ad->disp_term to...
15521         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
15522         Try calling targetm.legitimize_address_displacement before expanding
15523         the address rather than afterwards, and adjust for the new interface.
15524         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
15525         Match the new hook interface.  Handle SVE addresses.
15526         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
15527         new hook interface.
15529 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15531         * Makefile.in (OBJS): Add early-remat.o.
15532         * target.def (select_early_remat_modes): New hook.
15533         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
15534         * doc/tm.texi: Regenerate.
15535         * targhooks.h (default_select_early_remat_modes): Declare.
15536         * targhooks.c (default_select_early_remat_modes): New function.
15537         * timevar.def (TV_EARLY_REMAT): New timevar.
15538         * passes.def (pass_early_remat): New pass.
15539         * tree-pass.h (make_pass_early_remat): Declare.
15540         * early-remat.c: New file.
15541         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
15542         function.
15543         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
15545 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15546             Alan Hayward  <alan.hayward@arm.com>
15547             David Sherwood  <david.sherwood@arm.com>
15549         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
15550         vfm1 with a bound_epilog parameter.
15551         (vect_do_peeling): Update calls accordingly, and move the prologue
15552         call earlier in the function.  Treat the base bound_epilog as 0 for
15553         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
15554         this base when peeling for gaps.
15555         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
15556         with fully-masked loops.
15557         (vect_estimate_min_profitable_iters): Handle the single peeled
15558         iteration in that case.
15560 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15561             Alan Hayward  <alan.hayward@arm.com>
15562             David Sherwood  <david.sherwood@arm.com>
15564         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
15565         single-element interleaving even if the size is not a power of 2.
15566         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
15567         accesses for single-element interleaving if the group size is
15568         not a power of 2.
15570 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15571             Alan Hayward  <alan.hayward@arm.com>
15572             David Sherwood  <david.sherwood@arm.com>
15574         * doc/md.texi (fold_extract_last_@var{m}): Document.
15575         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
15576         * optabs.def (fold_extract_last_optab): New optab.
15577         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
15578         * internal-fn.c (fold_extract_direct): New macro.
15579         (expand_fold_extract_optab_fn): Likewise.
15580         (direct_fold_extract_optab_supported_p): Likewise.
15581         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
15582         * tree-vect-loop.c (vect_model_reduction_cost): Handle
15583         EXTRACT_LAST_REDUCTION.
15584         (get_initial_def_for_reduction): Do not create an initial vector
15585         for EXTRACT_LAST_REDUCTION reductions.
15586         (vectorizable_reduction): Leave the scalar phi in place for
15587         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
15588         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
15589         epilogue code for EXTRACT_LAST_REDUCTION and defer the
15590         transform phase to vectorizable_condition.
15591         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
15592         split out from...
15593         (vect_finish_stmt_generation): ...here.
15594         (vect_finish_replace_stmt): New function.
15595         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
15596         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
15597         pattern.
15598         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
15600 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15601             Alan Hayward  <alan.hayward@arm.com>
15602             David Sherwood  <david.sherwood@arm.com>
15604         * doc/md.texi (extract_last_@var{m}): Document.
15605         * optabs.def (extract_last_optab): New optab.
15606         * internal-fn.def (EXTRACT_LAST): New internal function.
15607         * internal-fn.c (cond_unary_direct): New macro.
15608         (expand_cond_unary_optab_fn): Likewise.
15609         (direct_cond_unary_optab_supported_p): Likewise.
15610         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
15611         loops using EXTRACT_LAST.
15612         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
15613         (extract_last_<mode>): ...this optab.
15614         (vec_extract<mode><Vel>): Update accordingly.
15616 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15617             Alan Hayward  <alan.hayward@arm.com>
15618             David Sherwood  <david.sherwood@arm.com>
15620         * target.def (empty_mask_is_expensive): New hook.
15621         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
15622         * doc/tm.texi: Regenerate.
15623         * targhooks.h (default_empty_mask_is_expensive): Declare.
15624         * targhooks.c (default_empty_mask_is_expensive): New function.
15625         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
15626         if the target says that empty masks are expensive.
15627         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
15628         New function.
15629         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
15631 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15632             Alan Hayward  <alan.hayward@arm.com>
15633             David Sherwood  <david.sherwood@arm.com>
15635         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
15636         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
15637         (vect_use_loop_mask_for_alignment_p): New function.
15638         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
15639         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
15640         niters_skip argument.  Make sure that the first niters_skip elements
15641         of the first iteration are inactive.
15642         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
15643         Update call to vect_set_loop_masks_directly.
15644         (get_misalign_in_elems): New function, split out from...
15645         (vect_gen_prolog_loop_niters): ...here.
15646         (vect_update_init_of_dr): Take a code argument that specifies whether
15647         the adjustment should be added or subtracted.
15648         (vect_update_init_of_drs): Likewise.
15649         (vect_prepare_for_masked_peels): New function.
15650         (vect_do_peeling): Skip prologue peeling if we're using a mask
15651         instead.  Update call to vect_update_inits_of_drs.
15652         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
15653         mask_skip_niters.
15654         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
15655         alignment.  Do not include the number of peeled iterations in
15656         the minimum threshold in that case.
15657         (vectorizable_induction): Adjust the start value down by
15658         LOOP_VINFO_MASK_SKIP_NITERS iterations.
15659         (vect_transform_loop): Call vect_prepare_for_masked_peels.
15660         Take the number of skipped iterations into account when calculating
15661         the loop bounds.
15662         * tree-vect-stmts.c (vect_gen_while_not): New function.
15664 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15665             Alan Hayward  <alan.hayward@arm.com>
15666             David Sherwood  <david.sherwood@arm.com>
15668         * doc/sourcebuild.texi (vect_fully_masked): Document.
15669         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
15670         default value to 0.
15671         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
15672         split out from...
15673         (vect_analyze_loop_2): ...here. Don't check the vectorization
15674         factor against the number of loop iterations if the loop is
15675         fully-masked.
15677 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15678             Alan Hayward  <alan.hayward@arm.com>
15679             David Sherwood  <david.sherwood@arm.com>
15681         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
15682         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
15683         (dump_groups): Update accordingly.
15684         (iv_use::mem_type): New member variable.
15685         (address_p): New function.
15686         (record_use): Add a mem_type argument and initialize the new
15687         mem_type field.
15688         (record_group_use): Add a mem_type argument.  Use address_p.
15689         Remove obsolete null checks of base_object.  Update call to record_use.
15690         (find_interesting_uses_op): Update call to record_group_use.
15691         (find_interesting_uses_cond): Likewise.
15692         (find_interesting_uses_address): Likewise.
15693         (get_mem_type_for_internal_fn): New function.
15694         (find_address_like_use): Likewise.
15695         (find_interesting_uses_stmt): Try find_address_like_use before
15696         calling find_interesting_uses_op.
15697         (addr_offset_valid_p): Use the iv mem_type field as the type
15698         of the addressed memory.
15699         (add_autoinc_candidates): Likewise.
15700         (get_address_cost): Likewise.
15701         (split_small_address_groups_p): Use address_p.
15702         (split_address_groups): Likewise.
15703         (add_iv_candidate_for_use): Likewise.
15704         (autoinc_possible_for_pair): Likewise.
15705         (rewrite_groups): Likewise.
15706         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
15707         (determine_group_iv_cost): Update after split of USE_ADDRESS.
15708         (get_alias_ptr_type_for_ptr_address): New function.
15709         (rewrite_use_address): Rewrite address uses in calls that were
15710         identified by find_address_like_use.
15712 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15713             Alan Hayward  <alan.hayward@arm.com>
15714             David Sherwood  <david.sherwood@arm.com>
15716         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
15717         TARGET_MEM_REFs.
15718         * gimple-expr.h (is_gimple_addressable: Likewise.
15719         * gimple-expr.c (is_gimple_address): Likewise.
15720         * internal-fn.c (expand_call_mem_ref): New function.
15721         (expand_mask_load_optab_fn): Use it.
15722         (expand_mask_store_optab_fn): Likewise.
15724 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15725             Alan Hayward  <alan.hayward@arm.com>
15726             David Sherwood  <david.sherwood@arm.com>
15728         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
15729         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
15730         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
15731         (cond_umax@var{mode}): Document.
15732         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
15733         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
15734         (cond_umin_optab, cond_umax_optab): New optabs.
15735         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
15736         (COND_IOR, COND_XOR): New internal functions.
15737         * internal-fn.h (get_conditional_internal_fn): Declare.
15738         * internal-fn.c (cond_binary_direct): New macro.
15739         (expand_cond_binary_optab_fn): Likewise.
15740         (direct_cond_binary_optab_supported_p): Likewise.
15741         (get_conditional_internal_fn): New function.
15742         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
15743         Cope with reduction statements that are vectorized as calls rather
15744         than assignments.
15745         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
15746         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
15747         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
15748         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
15749         (UNSPEC_COND_EOR): New unspecs.
15750         (optab): Add mappings for them.
15751         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
15752         (sve_int_op, sve_fp_op): New int attributes.
15754 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15755             Alan Hayward  <alan.hayward@arm.com>
15756             David Sherwood  <david.sherwood@arm.com>
15758         * optabs.def (while_ult_optab): New optab.
15759         * doc/md.texi (while_ult@var{m}@var{n}): Document.
15760         * internal-fn.def (WHILE_ULT): New internal function.
15761         * internal-fn.h (direct_internal_fn_supported_p): New override
15762         that takes two types as argument.
15763         * internal-fn.c (while_direct): New macro.
15764         (expand_while_optab_fn): New function.
15765         (convert_optab_supported_p): Likewise.
15766         (direct_while_optab_supported_p): New macro.
15767         * wide-int.h (wi::udiv_ceil): New function.
15768         * tree-vectorizer.h (rgroup_masks): New structure.
15769         (vec_loop_masks): New typedef.
15770         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
15771         and fully_masked_p.
15772         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
15773         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
15774         (vect_max_vf): New function.
15775         (slpeel_make_loop_iterate_ntimes): Delete.
15776         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
15777         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
15778         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
15779         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
15780         internal-fn.h, stor-layout.h and optabs-query.h.
15781         (vect_set_loop_mask): New function.
15782         (add_preheader_seq): Likewise.
15783         (add_header_seq): Likewise.
15784         (interleave_supported_p): Likewise.
15785         (vect_maybe_permute_loop_masks): Likewise.
15786         (vect_set_loop_masks_directly): Likewise.
15787         (vect_set_loop_condition_masked): Likewise.
15788         (vect_set_loop_condition_unmasked): New function, split out from
15789         slpeel_make_loop_iterate_ntimes.
15790         (slpeel_make_loop_iterate_ntimes): Rename to..
15791         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
15792         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
15793         (vect_do_peeling): Update call accordingly.
15794         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
15795         loops.
15796         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
15797         mask_compare_type, can_fully_mask_p and fully_masked_p.
15798         (release_vec_loop_masks): New function.
15799         (_loop_vec_info): Use it to free the loop masks.
15800         (can_produce_all_loop_masks_p): New function.
15801         (vect_get_max_nscalars_per_iter): Likewise.
15802         (vect_verify_full_masking): Likewise.
15803         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
15804         retries, and free the mask rgroups before retrying.  Check loop-wide
15805         reasons for disallowing fully-masked loops.  Make the final decision
15806         about whether use a fully-masked loop or not.
15807         (vect_estimate_min_profitable_iters): Do not assume that peeling
15808         for the number of iterations will be needed for fully-masked loops.
15809         (vectorizable_reduction): Disable fully-masked loops.
15810         (vectorizable_live_operation): Likewise.
15811         (vect_halve_mask_nunits): New function.
15812         (vect_double_mask_nunits): Likewise.
15813         (vect_record_loop_mask): Likewise.
15814         (vect_get_loop_mask): Likewise.
15815         (vect_transform_loop): Handle the case in which the final loop
15816         iteration might handle a partial vector.  Call vect_set_loop_condition
15817         instead of slpeel_make_loop_iterate_ntimes.
15818         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
15819         (check_load_store_masking): New function.
15820         (prepare_load_store_mask): Likewise.
15821         (vectorizable_store): Handle fully-masked loops.
15822         (vectorizable_load): Likewise.
15823         (supportable_widening_operation): Use vect_halve_mask_nunits for
15824         booleans.
15825         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
15826         (vect_gen_while): New function.
15827         * config/aarch64/aarch64.md (umax<mode>3): New expander.
15828         (aarch64_uqdec<mode>): New insn.
15830 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15831             Alan Hayward  <alan.hayward@arm.com>
15832             David Sherwood  <david.sherwood@arm.com>
15834         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
15835         (reduc_xor_scal_optab): New optabs.
15836         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
15837         (reduc_xor_scal_@var{m}): Document.
15838         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
15839         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
15840         internal functions.
15841         * fold-const-call.c (fold_const_call): Handle them.
15842         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
15843         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
15844         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
15845         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
15846         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
15847         (UNSPEC_XORV): New unspecs.
15848         (optab): Add entries for them.
15849         (BITWISEV): New int iterator.
15850         (bit_reduc_op): New int attributes.
15852 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15853             Alan Hayward  <alan.hayward@arm.com>
15854             David Sherwood  <david.sherwood@arm.com>
15856         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
15857         * internal-fn.def (VEC_SHL_INSERT): New internal function.
15858         * optabs.def (vec_shl_insert_optab): New optab.
15859         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
15860         (duplicate_and_interleave): Likewise.
15861         * tree-vect-loop.c: Include internal-fn.h.
15862         (neutral_op_for_slp_reduction): New function, split out from
15863         get_initial_defs_for_reduction.
15864         (get_initial_def_for_reduction): Handle option 2 for variable-length
15865         vectors by loading the neutral value into a vector and then shifting
15866         the initial value into element 0.
15867         (get_initial_defs_for_reduction): Replace the code argument with
15868         the neutral value calculated by neutral_op_for_slp_reduction.
15869         Use gimple_build_vector for constant-length vectors.
15870         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
15871         but the first group_size elements have a neutral value.
15872         Use duplicate_and_interleave otherwise.
15873         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
15874         Update call to get_initial_defs_for_reduction.  Handle SLP
15875         reductions for variable-length vectors by creating one vector
15876         result for each scalar result, with the elements associated
15877         with other scalar results stubbed out with the neutral value.
15878         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
15879         Require IFN_VEC_SHL_INSERT for double reductions on
15880         variable-length vectors, or SLP reductions that have
15881         a neutral value.  Require can_duplicate_and_interleave_p
15882         support for variable-length unchained SLP reductions if there
15883         is no neutral value, such as for MIN/MAX reductions.  Also require
15884         the number of vector elements to be a multiple of the number of
15885         SLP statements when doing variable-length unchained SLP reductions.
15886         Update call to vect_create_epilog_for_reduction.
15887         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
15888         and remove initial values.
15889         (duplicate_and_interleave): Make public.
15890         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
15891         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
15893 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15894             Alan Hayward  <alan.hayward@arm.com>
15895             David Sherwood  <david.sherwood@arm.com>
15897         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
15898         (can_duplicate_and_interleave_p): New function.
15899         (vect_get_and_check_slp_defs): Take the vector of statements
15900         rather than just the current one.  Remove excess parentheses.
15901         Restriction rejectinon of vect_constant_def and vect_external_def
15902         for variable-length vectors to boolean types, or types for which
15903         can_duplicate_and_interleave_p is false.
15904         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
15905         (duplicate_and_interleave): New function.
15906         (vect_get_constant_vectors): Use gimple_build_vector for
15907         constant-length vectors and suitable variable-length constant
15908         vectors.  Use duplicate_and_interleave for other variable-length
15909         vectors.  Don't defer the update when inserting new statements.
15911 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15912             Alan Hayward  <alan.hayward@arm.com>
15913             David Sherwood  <david.sherwood@arm.com>
15915         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
15916         min_profitable_iters doesn't go negative.
15918 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15919             Alan Hayward  <alan.hayward@arm.com>
15920             David Sherwood  <david.sherwood@arm.com>
15922         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
15923         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
15924         * optabs.def (vec_mask_load_lanes_optab): New optab.
15925         (vec_mask_store_lanes_optab): Likewise.
15926         * internal-fn.def (MASK_LOAD_LANES): New internal function.
15927         (MASK_STORE_LANES): Likewise.
15928         * internal-fn.c (mask_load_lanes_direct): New macro.
15929         (mask_store_lanes_direct): Likewise.
15930         (expand_mask_load_optab_fn): Handle masked operations.
15931         (expand_mask_load_lanes_optab_fn): New macro.
15932         (expand_mask_store_optab_fn): Handle masked operations.
15933         (expand_mask_store_lanes_optab_fn): New macro.
15934         (direct_mask_load_lanes_optab_supported_p): Likewise.
15935         (direct_mask_store_lanes_optab_supported_p): Likewise.
15936         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
15937         parameter.
15938         (vect_load_lanes_supported): Likewise.
15939         * tree-vect-data-refs.c (strip_conversion): New function.
15940         (can_group_stmts_p): Likewise.
15941         (vect_analyze_data_ref_accesses): Use it instead of checking
15942         for a pair of assignments.
15943         (vect_store_lanes_supported): Take a masked_p parameter.
15944         (vect_load_lanes_supported): Likewise.
15945         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
15946         vect_store_lanes_supported and vect_load_lanes_supported.
15947         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
15948         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
15949         parameter.  Don't allow gaps for masked accesses.
15950         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
15951         and vect_load_lanes_supported.
15952         (get_load_store_type): Take a masked_p parameter and update
15953         call to get_group_load_store_type.
15954         (vectorizable_store): Update call to get_load_store_type.
15955         Handle IFN_MASK_STORE_LANES.
15956         (vectorizable_load): Update call to get_load_store_type.
15957         Handle IFN_MASK_LOAD_LANES.
15959 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15960             Alan Hayward  <alan.hayward@arm.com>
15961             David Sherwood  <david.sherwood@arm.com>
15963         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
15964         modes for SVE.
15965         * config/aarch64/aarch64-protos.h
15966         (aarch64_sve_struct_memory_operand_p): Declare.
15967         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
15968         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
15969         (VPRED, vpred): Handle SVE structure modes.
15970         * config/aarch64/constraints.md (Utx): New constraint.
15971         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
15972         (aarch64_sve_struct_nonimmediate_operand): New predicates.
15973         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
15974         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
15975         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
15976         structure modes.  Split into pieces after RA.
15977         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
15978         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
15979         New patterns.
15980         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
15981         SVE structure modes.
15982         (aarch64_classify_address): Likewise.
15983         (sizetochar): Move earlier in file.
15984         (aarch64_print_operand): Handle SVE register lists.
15985         (aarch64_array_mode): New function.
15986         (aarch64_sve_struct_memory_operand_p): Likewise.
15987         (TARGET_ARRAY_MODE): Redefine.
15989 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15990             Alan Hayward  <alan.hayward@arm.com>
15991             David Sherwood  <david.sherwood@arm.com>
15993         * target.def (array_mode): New target hook.
15994         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
15995         * doc/tm.texi: Regenerate.
15996         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
15997         * hooks.c (hook_optmode_mode_uhwi_none): New function.
15998         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
15999         targetm.array_mode.
16000         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
16001         type sizes.
16003 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16004             Alan Hayward  <alan.hayward@arm.com>
16005             David Sherwood  <david.sherwood@arm.com>
16007         * fold-const.c (fold_binary_loc): Check the argument types
16008         rather than the result type when testing for a vector operation.
16010 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16012         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
16013         * doc/tm.texi: Regenerate.
16015 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16016             Alan Hayward  <alan.hayward@arm.com>
16017             David Sherwood  <david.sherwood@arm.com>
16019         * doc/invoke.texi (-msve-vector-bits=): Document new option.
16020         (sve): Document new AArch64 extension.
16021         * doc/md.texi (w): Extend the description of the AArch64
16022         constraint to include SVE vectors.
16023         (Upl, Upa): Document new AArch64 predicate constraints.
16024         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
16025         enum.
16026         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
16027         (msve-vector-bits=): New option.
16028         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
16029         SVE when these are disabled.
16030         (sve): New extension.
16031         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
16032         modes.  Adjust their number of units based on aarch64_sve_vg.
16033         (MAX_BITSIZE_MODE_ANY_MODE): Define.
16034         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
16035         aarch64_addr_query_type.
16036         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
16037         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
16038         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
16039         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
16040         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
16041         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
16042         (aarch64_simd_imm_zero_p): Delete.
16043         (aarch64_check_zero_based_sve_index_immediate): Declare.
16044         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
16045         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
16046         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
16047         (aarch64_sve_float_mul_immediate_p): Likewise.
16048         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
16049         rather than an rtx.
16050         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
16051         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
16052         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
16053         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
16054         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
16055         (aarch64_regmode_natural_size): Likewise.
16056         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
16057         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
16058         left one place.
16059         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
16060         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
16061         for VG and the SVE predicate registers.
16062         (V_ALIASES): Add a "z"-prefixed alias.
16063         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
16064         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
16065         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
16066         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
16067         (REG_CLASS_NAMES): Add entries for them.
16068         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
16069         and the predicate registers.
16070         (aarch64_sve_vg): Declare.
16071         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
16072         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
16073         (REGMODE_NATURAL_SIZE): Define.
16074         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
16075         SVE macros.
16076         * config/aarch64/aarch64.c: Include cfgrtl.h.
16077         (simd_immediate_info): Add a constructor for series vectors,
16078         and an associated step field.
16079         (aarch64_sve_vg): New variable.
16080         (aarch64_dbx_register_number): Handle VG and the predicate registers.
16081         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
16082         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
16083         (VEC_ANY_DATA, VEC_STRUCT): New constants.
16084         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
16085         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
16086         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
16087         (aarch64_get_mask_mode): New functions.
16088         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
16089         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
16090         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
16091         predicate modes and predicate registers.  Explicitly restrict
16092         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
16093         to store a vector mode if it is recognized by
16094         aarch64_classify_vector_mode.
16095         (aarch64_regmode_natural_size): New function.
16096         (aarch64_hard_regno_caller_save_mode): Return the original mode
16097         for predicates.
16098         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
16099         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
16100         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
16101         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
16102         functions.
16103         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
16104         does not overlap dest if the function is frame-related.  Handle
16105         SVE constants.
16106         (aarch64_split_add_offset): New function.
16107         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
16108         them aarch64_add_offset.
16109         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
16110         and update call to aarch64_sub_sp.
16111         (aarch64_add_cfa_expression): New function.
16112         (aarch64_expand_prologue): Pass extra temporary registers to the
16113         functions above.  Handle the case in which we need to emit new
16114         DW_CFA_expressions for registers that were originally saved
16115         relative to the stack pointer, but now have to be expressed
16116         relative to the frame pointer.
16117         (aarch64_output_mi_thunk): Pass extra temporary registers to the
16118         functions above.
16119         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
16120         IP0 and IP1 values for SVE frames.
16121         (aarch64_expand_vec_series): New function.
16122         (aarch64_expand_sve_widened_duplicate): Likewise.
16123         (aarch64_expand_sve_const_vector): Likewise.
16124         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
16125         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
16126         into the register, rather than emitting a SET directly.
16127         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
16128         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
16129         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
16130         (offset_9bit_signed_scaled_p): New functions.
16131         (aarch64_replicate_bitmask_imm): New function.
16132         (aarch64_bitmask_imm): Use it.
16133         (aarch64_cannot_force_const_mem): Reject expressions involving
16134         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
16135         (aarch64_classify_index): Handle SVE indices, by requiring
16136         a plain register index with a scale that matches the element size.
16137         (aarch64_classify_address): Handle SVE addresses.  Assert that
16138         the mode of the address is VOIDmode or an integer mode.
16139         Update call to aarch64_classify_symbol.
16140         (aarch64_classify_symbolic_expression): Update call to
16141         aarch64_classify_symbol.
16142         (aarch64_const_vec_all_in_range_p): New function.
16143         (aarch64_print_vector_float_operand): Likewise.
16144         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
16145         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
16146         and the FP immediates 1.0 and 0.5.
16147         (aarch64_print_address_internal): Handle SVE addresses.
16148         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
16149         (aarch64_regno_regclass): Handle predicate registers.
16150         (aarch64_secondary_reload): Handle big-endian reloads of SVE
16151         data modes.
16152         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
16153         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
16154         (aarch64_convert_sve_vector_bits): New function.
16155         (aarch64_override_options): Use it to handle -msve-vector-bits=.
16156         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
16157         rather than an rtx.
16158         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
16159         Handle SVE vector and predicate modes.  Accept VL-based constants
16160         that need only one temporary register, and VL offsets that require
16161         no temporary registers.
16162         (aarch64_conditional_register_usage): Mark the predicate registers
16163         as fixed if SVE isn't available.
16164         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
16165         Return true for SVE vector and predicate modes.
16166         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
16167         rather than an unsigned int.  Handle SVE modes.
16168         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
16169         SVE modes.
16170         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
16171         if SVE is enabled.
16172         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
16173         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
16174         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
16175         (aarch64_sve_float_mul_immediate_p): New functions.
16176         (aarch64_sve_valid_immediate): New function.
16177         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
16178         Explicitly reject structure modes.  Check for INDEX constants.
16179         Handle PTRUE and PFALSE constants.
16180         (aarch64_check_zero_based_sve_index_immediate): New function.
16181         (aarch64_simd_imm_zero_p): Delete.
16182         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
16183         vector modes.  Accept constants in the range of CNT[BHWD].
16184         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
16185         ask for an Advanced SIMD mode.
16186         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
16187         (aarch64_simd_vector_alignment): Handle SVE predicates.
16188         (aarch64_vectorize_preferred_vector_alignment): New function.
16189         (aarch64_simd_vector_alignment_reachable): Use it instead of
16190         the vector size.
16191         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
16192         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
16193         functions.
16194         (MAX_VECT_LEN): Delete.
16195         (expand_vec_perm_d): Add a vec_flags field.
16196         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
16197         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
16198         (aarch64_evpc_ext): Don't apply a big-endian lane correction
16199         for SVE modes.
16200         (aarch64_evpc_rev): Rename to...
16201         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
16202         (aarch64_evpc_rev_global): New function.
16203         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
16204         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
16205         MAX_VECT_LEN.
16206         (aarch64_evpc_sve_tbl): New function.
16207         (aarch64_expand_vec_perm_const_1): Update after rename of
16208         aarch64_evpc_rev.  Handle SVE permutes too, trying
16209         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
16210         than aarch64_evpc_tbl.
16211         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
16212         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
16213         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
16214         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
16215         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
16216         (aarch64_expand_sve_vcond): New functions.
16217         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
16218         of aarch64_vector_mode_p.
16219         (aarch64_dwarf_poly_indeterminate_value): New function.
16220         (aarch64_compute_pressure_classes): Likewise.
16221         (aarch64_can_change_mode_class): Likewise.
16222         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
16223         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
16224         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
16225         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
16226         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
16227         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
16228         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
16229         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
16230         constraints.
16231         (Dn, Dl, Dr): Accept const as well as const_vector.
16232         (Dz): Likewise.  Compare against CONST0_RTX.
16233         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
16234         of "vector" where appropriate.
16235         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
16236         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
16237         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
16238         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
16239         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
16240         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
16241         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
16242         (v_int_equiv): Extend to SVE modes.
16243         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
16244         mode attributes.
16245         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
16246         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
16247         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
16248         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
16249         (SVE_COND_FP_CMP): New int iterators.
16250         (perm_hilo): Handle the new unpack unspecs.
16251         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
16252         attributes.
16253         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
16254         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
16255         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
16256         (aarch64_equality_operator, aarch64_constant_vector_operand)
16257         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
16258         (aarch64_sve_nonimmediate_operand): Likewise.
16259         (aarch64_sve_general_operand): Likewise.
16260         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
16261         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
16262         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
16263         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
16264         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
16265         (aarch64_sve_float_arith_immediate): Likewise.
16266         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
16267         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
16268         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
16269         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
16270         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
16271         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
16272         (aarch64_sve_float_arith_operand): Likewise.
16273         (aarch64_sve_float_arith_with_sub_operand): Likewise.
16274         (aarch64_sve_float_mul_operand): Likewise.
16275         (aarch64_sve_vec_perm_operand): Likewise.
16276         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
16277         (aarch64_mov_operand): Accept const_poly_int and const_vector.
16278         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
16279         as well as const_vector.
16280         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
16281         in file.  Use CONST0_RTX and CONSTM1_RTX.
16282         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
16283         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
16284         Use aarch64_simd_imm_zero.
16285         * config/aarch64/aarch64-sve.md: New file.
16286         * config/aarch64/aarch64.md: Include it.
16287         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
16288         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
16289         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
16290         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
16291         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
16292         (sve): New attribute.
16293         (enabled): Disable instructions with the sve attribute unless
16294         TARGET_SVE.
16295         (movqi, movhi): Pass CONST_POLY_INT operaneds through
16296         aarch64_expand_mov_immediate.
16297         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
16298         CNT[BHSD] immediates.
16299         (movti): Split CONST_POLY_INT moves into two halves.
16300         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
16301         Split additions that need a temporary here if the destination
16302         is the stack pointer.
16303         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
16304         (*add<mode>3_poly_1): New instruction.
16305         (set_clobber_cc): New expander.
16307 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16309         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
16310         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
16311         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
16312         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
16313         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
16314         Change innermode from fixed_mode_size to machine_mode.
16315         (simplify_subreg): Update call accordingly.  Handle a constant-sized
16316         subreg of a variable-length CONST_VECTOR.
16318 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16319             Alan Hayward  <alan.hayward@arm.com>
16320             David Sherwood  <david.sherwood@arm.com>
16322         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
16323         (add_offset_to_base): New function, split out from...
16324         (create_mem_ref): ...here.  When handling a scale other than 1,
16325         check first whether the address is valid without the offset.
16326         Add it into the base if so, leaving the index and scale as-is.
16328 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
16330         PR c++/83778
16331         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
16332         fold_for_warn before checking if arg2 is INTEGER_CST.
16334 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
16336         * config/rs6000/predicates.md (load_multiple_operation): Delete.
16337         (store_multiple_operation): Delete.
16338         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
16339         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
16340         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
16341         guarded by TARGET_STRING.
16342         (rs6000_output_load_multiple): Delete.
16343         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
16344         OPTION_MASK_STRING / TARGET_STRING handling.
16345         (print_operand) <'N', 'O'>: Add comment that these are unused now.
16346         (const rs6000_opt_masks) <"string">: Change mask to 0.
16347         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
16348         (MASK_STRING): Delete.
16349         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
16350         parts.  Simplify.
16351         (load_multiple): Delete.
16352         (*ldmsi8): Delete.
16353         (*ldmsi7): Delete.
16354         (*ldmsi6): Delete.
16355         (*ldmsi5): Delete.
16356         (*ldmsi4): Delete.
16357         (*ldmsi3): Delete.
16358         (store_multiple): Delete.
16359         (*stmsi8): Delete.
16360         (*stmsi7): Delete.
16361         (*stmsi6): Delete.
16362         (*stmsi5): Delete.
16363         (*stmsi4): Delete.
16364         (*stmsi3): Delete.
16365         (movmemsi_8reg): Delete.
16366         (corresponding unnamed define_insn): Delete.
16367         (movmemsi_6reg): Delete.
16368         (corresponding unnamed define_insn): Delete.
16369         (movmemsi_4reg): Delete.
16370         (corresponding unnamed define_insn): Delete.
16371         (movmemsi_2reg): Delete.
16372         (corresponding unnamed define_insn): Delete.
16373         (movmemsi_1reg): Delete.
16374         (corresponding unnamed define_insn): Delete.
16375         * config/rs6000/rs6000.opt (mno-string): New.
16376         (mstring): Replace by deprecation warning stub.
16377         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
16379 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
16381         * regrename.c (regrename_do_replace): If replacing the same
16382         reg multiple times, try to reuse last created gen_raw_REG.
16384         PR debug/81155
16385         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
16386         main to workaround a bug in GDB.
16388 2018-01-12  Tom de Vries  <tom@codesourcery.com>
16390         PR target/83737
16391         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
16393 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
16395         PR rtl-optimization/80481
16396         * ira-color.c (get_cap_member): New function.
16397         (allocnos_conflict_by_live_ranges_p): Use it.
16398         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
16399         (setup_slot_coalesced_allocno_live_ranges): Ditto.
16401 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
16403         PR target/83628
16404         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
16405         (*saddl_se_1): Ditto.
16406         (*ssubsi_1): Ditto.
16407         (*ssubl_se_1): Ditto.
16409 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16411         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
16412         rather than wi::to_widest for DR_INITs.
16413         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
16414         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
16415         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
16416         INTEGER_CSTs.
16417         (vect_analyze_group_access_1): Note that here.
16419 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16421         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
16422         polynomial type sizes.
16424 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16426         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
16427         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
16428         (gimple_add_tmp_var): Likewise.
16430 2018-01-12  Martin Liska  <mliska@suse.cz>
16432         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
16433         (gimple_alloc_sizes): Likewise.
16434         (dump_gimple_statistics): Use PRIu64 in printf format.
16435         * gimple.h: Change uint64_t to int.
16437 2018-01-12  Martin Liska  <mliska@suse.cz>
16439         * tree-core.h: Use uint64_t instead of int.
16440         * tree.c (tree_node_counts): Likewise.
16441         (tree_node_sizes): Likewise.
16442         (dump_tree_statistics): Use PRIu64 in printf format.
16444 2018-01-12  Martin Liska  <mliska@suse.cz>
16446         * Makefile.in: As qsort_chk is implemented in vec.c, add
16447         vec.o to linkage of gencfn-macros.
16448         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
16449         passing the info to record_node_allocation_statistics.
16450         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
16451         and pass the info.
16452         * ggc-common.c (struct ggc_usage): Add operator== and use
16453         it in operator< and compare function.
16454         * mem-stats.h (struct mem_usage): Likewise.
16455         * vec.c (struct vec_usage): Remove operator< and compare
16456         function. Can be simply inherited.
16458 2018-01-12  Martin Jambor  <mjambor@suse.cz>
16460         PR target/81616
16461         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
16462         * tree-ssa-math-opts.c: Include domwalk.h.
16463         (convert_mult_to_fma_1): New function.
16464         (fma_transformation_info): New type.
16465         (fma_deferring_state): Likewise.
16466         (cancel_fma_deferring): New function.
16467         (result_of_phi): Likewise.
16468         (last_fma_candidate_feeds_initial_phi): Likewise.
16469         (convert_mult_to_fma): Added deferring logic, split actual
16470         transformation to convert_mult_to_fma_1.
16471         (math_opts_dom_walker): New type.
16472         (math_opts_dom_walker::after_dom_children): New method, body moved
16473         here from pass_optimize_widening_mul::execute, added deferring logic
16474         bits.
16475         (pass_optimize_widening_mul::execute): Moved most of code to
16476         math_opts_dom_walker::after_dom_children.
16477         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
16478         * config/i386/i386.c (ix86_option_override_internal): Added
16479         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
16481 2018-01-12  Richard Biener  <rguenther@suse.de>
16483         PR debug/83157
16484         * dwarf2out.c (gen_variable_die): Do not reset old_die for
16485         inline instance vars.
16487 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
16489         PR target/81819
16490         * config/rx/rx.c (rx_is_restricted_memory_address):
16491         Handle SUBREG case.
16493 2018-01-12  Richard Biener  <rguenther@suse.de>
16495         PR tree-optimization/80846
16496         * target.def (split_reduction): New target hook.
16497         * targhooks.c (default_split_reduction): New function.
16498         * targhooks.h (default_split_reduction): Declare.
16499         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
16500         target requests first reduce vectors by combining low and high
16501         parts.
16502         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
16503         (get_vectype_for_scalar_type_and_size): Export.
16504         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
16505         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
16506         * doc/tm.texi: Regenerate.
16507         * config/i386/i386.c (ix86_split_reduction): Implement
16508         TARGET_VECTORIZE_SPLIT_REDUCTION.
16510 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
16512         PR target/83368
16513         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
16514         in PIC mode except for TARGET_VXWORKS_RTP.
16515         * config/sparc/sparc.c: Include cfgrtl.h.
16516         (TARGET_INIT_PIC_REG): Define.
16517         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
16518         (sparc_pic_register_p): New predicate.
16519         (sparc_legitimate_address_p): Use it.
16520         (sparc_legitimize_pic_address): Likewise.
16521         (sparc_delegitimize_address): Likewise.
16522         (sparc_mode_dependent_address_p): Likewise.
16523         (gen_load_pcrel_sym): Remove 4th parameter.
16524         (load_got_register): Adjust call to above.  Remove obsolete stuff.
16525         (sparc_expand_prologue): Do not call load_got_register here.
16526         (sparc_flat_expand_prologue): Likewise.
16527         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
16528         (sparc_use_pseudo_pic_reg): New function.
16529         (sparc_init_pic_reg): Likewise.
16530         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
16531         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
16533 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
16535         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
16536         Add item for branch_cost.
16538 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
16540         PR rtl-optimization/83565
16541         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
16542         not extend the result to a larger mode for rotate operations.
16543         (num_sign_bit_copies1): Likewise.
16545 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
16547         PR target/40411
16548         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
16549         -symbolic.
16550         Use values-Xc.o for -pedantic.
16551         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
16553 2018-01-12  Martin Liska  <mliska@suse.cz>
16555         PR ipa/83054
16556         * ipa-devirt.c (final_warning_record::grow_type_warnings):
16557         New function.
16558         (possible_polymorphic_call_targets): Use it.
16559         (ipa_devirt): Likewise.
16561 2018-01-12  Martin Liska  <mliska@suse.cz>
16563         * profile-count.h (enum profile_quality): Use 0 as invalid
16564         enum value of profile_quality.
16566 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
16568         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
16569         -mext-string options.
16571 2018-01-12  Richard Biener  <rguenther@suse.de>
16573         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
16574         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
16575         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
16576         Likewise.
16577         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
16579 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
16581         * configure.ac (--with-long-double-format): Add support for the
16582         configuration option to change the default long double format on
16583         PowerPC systems.
16584         * config.gcc (powerpc*-linux*-*): Likewise.
16585         * configure: Regenerate.
16586         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
16587         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
16588         used without modification.
16590 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16592         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
16593         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
16594         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
16595         MISC_BUILTIN_SPEC_BARRIER.
16596         (rs6000_init_builtins): Likewise.
16597         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
16598         enum value.
16599         (speculation_barrier): New define_insn.
16600         * doc/extend.texi: Document __builtin_speculation_barrier.
16602 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
16604         PR target/83203
16605         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
16606         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
16607         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
16608         iterators.
16609         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
16610         integral modes instead of "ss" and "sd".
16611         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
16612         vectors with 32-bit and 64-bit elements.
16613         (vecdupssescalarmodesuffix): New mode attribute.
16614         (vec_dup<mode>): Use it.
16616 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
16618         PR target/83330
16619         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
16620         frame if argument is passed on stack.
16622 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
16624         PR target/82682
16625         * ree.c (combine_reaching_defs): Optimize also
16626         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
16627         reg2=any_extend(exp); reg1=reg2;, formatting fix.
16629 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
16631         PR middle-end/83189
16632         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
16634 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
16636         PR middle-end/83718
16637         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
16638         after they are computed.
16640 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
16642         PR tree-optimization/83695
16643         * gimple-loop-linterchange.cc
16644         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
16645         reset cached scev information after interchange.
16646         (pass_linterchange::execute): Remove call to scev_reset_htab.
16648 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16650         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
16651         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
16652         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
16653         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
16654         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
16655         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
16656         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
16657         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
16658         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
16659         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
16660         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
16661         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
16662         (V_lane_reg): Likewise.
16663         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
16664         New define_expand.
16665         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
16666         (vfmal_lane_low<mode>_intrinsic,
16667         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
16668         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
16669         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
16670         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
16671         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
16672         vfmsl_lane_high<mode>_intrinsic): New define_insns.
16674 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16676         * config/arm/arm-cpus.in (fp16fml): New feature.
16677         (ALL_SIMD): Add fp16fml.
16678         (armv8.2-a): Add fp16fml as an option.
16679         (armv8.3-a): Likewise.
16680         (armv8.4-a): Add fp16fml as part of fp16.
16681         * config/arm/arm.h (TARGET_FP16FML): Define.
16682         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
16683         when appropriate.
16684         * config/arm/arm-modes.def (V2HF): Define.
16685         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
16686         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
16687         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
16688         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
16689         vfmsl_low, vfmsl_high): New set of builtins.
16690         * config/arm/iterators.md (PLUSMINUS): New code iterator.
16691         (vfml_op): New code attribute.
16692         (VFMLHALVES): New int iterator.
16693         (VFML, VFMLSEL): New mode attributes.
16694         (V_reg): Define mapping for V2HF.
16695         (V_hi, V_lo): New mode attributes.
16696         (VF_constraint): Likewise.
16697         (vfml_half, vfml_half_selector): New int attributes.
16698         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
16699         define_expand.
16700         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
16701         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
16702         New define_insn.
16703         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
16704         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
16705         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
16706         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
16707         documentation.
16708         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
16709         Document new effective target and option set.
16711 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16713         * config/arm/arm-cpus.in (armv8_4): New feature.
16714         (ARMv8_4a): New fgroup.
16715         (armv8.4-a): New arch.
16716         * config/arm/arm-tables.opt: Regenerate.
16717         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
16718         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
16719         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
16720         Add matching rules for -march=armv8.4-a and extensions.
16721         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
16723 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
16725         PR target/81821
16726         * config/rx/rx.md (BW): New mode attribute.
16727         (sync_lock_test_and_setsi): Add mode suffix to insn output.
16729 2018-01-11  Richard Biener  <rguenther@suse.de>
16731         PR tree-optimization/83435
16732         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
16733         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
16734         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
16736 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16737             Alan Hayward  <alan.hayward@arm.com>
16738             David Sherwood  <david.sherwood@arm.com>
16740         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
16741         field.
16742         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
16743         (aarch64_print_address_internal): Use it to check for a zero offset.
16745 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16746             Alan Hayward  <alan.hayward@arm.com>
16747             David Sherwood  <david.sherwood@arm.com>
16749         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
16750         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
16751         Return a poly_int64 rather than a HOST_WIDE_INT.
16752         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
16753         rather than a HOST_WIDE_INT.
16754         * config/aarch64/aarch64.h (aarch64_frame): Protect with
16755         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
16756         hard_fp_offset, frame_size, initial_adjust, callee_offset and
16757         final_offset from HOST_WIDE_INT to poly_int64.
16758         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
16759         to_constant when getting the number of units in an Advanced SIMD
16760         mode.
16761         (aarch64_builtin_vectorized_function): Check for a constant number
16762         of units.
16763         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
16764         GET_MODE_SIZE.
16765         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
16766         attribute instead of GET_MODE_NUNITS.
16767         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
16768         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
16769         GET_MODE_SIZE for fixed-size registers.
16770         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
16771         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
16772         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
16773         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
16774         (aarch64_print_operand, aarch64_print_address_internal)
16775         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
16776         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
16777         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
16778         Handle polynomial GET_MODE_SIZE.
16779         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
16780         wider than SImode without modification.
16781         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
16782         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
16783         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
16784         passing and returning SVE modes.
16785         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
16786         rather than GEN_INT.
16787         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
16788         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
16789         (aarch64_allocate_and_probe_stack_space): Likewise.
16790         (aarch64_layout_frame): Cope with polynomial offsets.
16791         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
16792         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
16793         polynomial offsets.
16794         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
16795         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
16796         poly_int64 rather than a HOST_WIDE_INT.
16797         (aarch64_get_separate_components, aarch64_process_components)
16798         (aarch64_expand_prologue, aarch64_expand_epilogue)
16799         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
16800         (aarch64_anchor_offset): New function, split out from...
16801         (aarch64_legitimize_address): ...here.
16802         (aarch64_builtin_vectorization_cost): Handle polynomial
16803         TYPE_VECTOR_SUBPARTS.
16804         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
16805         GET_MODE_NUNITS.
16806         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
16807         number of elements from the PARALLEL rather than the mode.
16808         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
16809         rather than GET_MODE_BITSIZE.
16810         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
16811         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
16812         (aarch64_expand_vec_perm_const_1): Handle polynomial
16813         d->perm.length () and d->perm elements.
16814         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
16815         Apply to_constant to d->perm elements.
16816         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
16817         polynomial CONST_VECTOR_NUNITS.
16818         (aarch64_move_pointer): Take amount as a poly_int64 rather
16819         than an int.
16820         (aarch64_progress_pointer): Avoid temporary variable.
16821         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
16822         the mode attribute instead of GET_MODE.
16824 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16825             Alan Hayward  <alan.hayward@arm.com>
16826             David Sherwood  <david.sherwood@arm.com>
16828         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
16829         x exists before using it.
16830         (aarch64_add_constant_internal): Rename to...
16831         (aarch64_add_offset_1): ...this.  Replace regnum with separate
16832         src and dest rtxes.  Handle the case in which they're different,
16833         including when the offset is zero.  Replace scratchreg with an rtx.
16834         Use 2 additions if there is no spare register into which we can
16835         move a 16-bit constant.
16836         (aarch64_add_constant): Delete.
16837         (aarch64_add_offset): Replace reg with separate src and dest
16838         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
16839         Use aarch64_add_offset_1.
16840         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
16841         an rtx rather than an int.  Take the delta as a poly_int64
16842         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
16843         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
16844         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
16845         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
16846         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
16847         and aarch64_add_sp.
16848         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
16849         aarch64_add_constant.
16851 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16853         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
16854         Use scalar_float_mode.
16856 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16858         * config/aarch64/aarch64-simd.md
16859         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
16860         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
16861         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
16862         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
16863         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
16864         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
16865         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
16866         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
16867         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
16868         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
16870 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
16872         PR target/83514
16873         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
16874         targ_options->x_arm_arch_string is non NULL.
16876 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
16878         * config/aarch64/aarch64.h
16879         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
16881 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
16883         PR target/82096
16884         * expmed.c (emit_store_flag_force): Swap if const op0
16885         and change VOIDmode to mode of op0.
16887 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16889         PR rtl-optimization/83761
16890         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
16891         than bytes to mode_for_size.
16893 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16895         PR middle-end/83189
16896         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
16897         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
16898         profile.
16900 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16902         PR middle-end/83575
16903         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
16904         when in layout mode.
16905         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
16906         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
16907         partition fixup.
16909 2018-01-10  Michael Collison  <michael.collison@arm.com>
16911         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
16912         * config/aarch64/aarch64-option-extension.def: Add
16913         AARCH64_OPT_EXTENSION of 'fp16fml'.
16914         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16915         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
16916         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
16917         * config/aarch64/constraints.md (Ui7): New constraint.
16918         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
16919         (VFMLA_SEL_W): Ditto.
16920         (f16quad): Ditto.
16921         (f16mac1): Ditto.
16922         (VFMLA16_LOW): New int iterator.
16923         (VFMLA16_HIGH): Ditto.
16924         (UNSPEC_FMLAL): New unspec.
16925         (UNSPEC_FMLSL): Ditto.
16926         (UNSPEC_FMLAL2): Ditto.
16927         (UNSPEC_FMLSL2): Ditto.
16928         (f16mac): New code attribute.
16929         * config/aarch64/aarch64-simd-builtins.def
16930         (aarch64_fmlal_lowv2sf): Ditto.
16931         (aarch64_fmlsl_lowv2sf): Ditto.
16932         (aarch64_fmlalq_lowv4sf): Ditto.
16933         (aarch64_fmlslq_lowv4sf): Ditto.
16934         (aarch64_fmlal_highv2sf): Ditto.
16935         (aarch64_fmlsl_highv2sf): Ditto.
16936         (aarch64_fmlalq_highv4sf): Ditto.
16937         (aarch64_fmlslq_highv4sf): Ditto.
16938         (aarch64_fmlal_lane_lowv2sf): Ditto.
16939         (aarch64_fmlsl_lane_lowv2sf): Ditto.
16940         (aarch64_fmlal_laneq_lowv2sf): Ditto.
16941         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
16942         (aarch64_fmlalq_lane_lowv4sf): Ditto.
16943         (aarch64_fmlsl_lane_lowv4sf): Ditto.
16944         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
16945         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
16946         (aarch64_fmlal_lane_highv2sf): Ditto.
16947         (aarch64_fmlsl_lane_highv2sf): Ditto.
16948         (aarch64_fmlal_laneq_highv2sf): Ditto.
16949         (aarch64_fmlsl_laneq_highv2sf): Ditto.
16950         (aarch64_fmlalq_lane_highv4sf): Ditto.
16951         (aarch64_fmlsl_lane_highv4sf): Ditto.
16952         (aarch64_fmlalq_laneq_highv4sf): Ditto.
16953         (aarch64_fmlsl_laneq_highv4sf): Ditto.
16954         * config/aarch64/aarch64-simd.md:
16955         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
16956         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16957         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
16958         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16959         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
16960         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
16961         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
16962         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
16963         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
16964         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
16965         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
16966         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
16967         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
16968         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
16969         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
16970         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
16971         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
16972         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
16973         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
16974         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
16975         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
16976         (vfmlsl_low_u32): Ditto.
16977         (vfmlalq_low_u32): Ditto.
16978         (vfmlslq_low_u32): Ditto.
16979         (vfmlal_high_u32): Ditto.
16980         (vfmlsl_high_u32): Ditto.
16981         (vfmlalq_high_u32): Ditto.
16982         (vfmlslq_high_u32): Ditto.
16983         (vfmlal_lane_low_u32): Ditto.
16984         (vfmlsl_lane_low_u32): Ditto.
16985         (vfmlal_laneq_low_u32): Ditto.
16986         (vfmlsl_laneq_low_u32): Ditto.
16987         (vfmlalq_lane_low_u32): Ditto.
16988         (vfmlslq_lane_low_u32): Ditto.
16989         (vfmlalq_laneq_low_u32): Ditto.
16990         (vfmlslq_laneq_low_u32): Ditto.
16991         (vfmlal_lane_high_u32): Ditto.
16992         (vfmlsl_lane_high_u32): Ditto.
16993         (vfmlal_laneq_high_u32): Ditto.
16994         (vfmlsl_laneq_high_u32): Ditto.
16995         (vfmlalq_lane_high_u32): Ditto.
16996         (vfmlslq_lane_high_u32): Ditto.
16997         (vfmlalq_laneq_high_u32): Ditto.
16998         (vfmlslq_laneq_high_u32): Ditto.
16999         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
17000         (AARCH64_FL_FOR_ARCH8_4): New.
17001         (AARCH64_ISA_F16FML): New ISA flag.
17002         (TARGET_F16FML): New feature flag for fp16fml.
17003         (doc/invoke.texi): Document new fp16fml option.
17005 2018-01-10  Michael Collison  <michael.collison@arm.com>
17007         * config/aarch64/aarch64-builtins.c:
17008         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
17009         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
17010         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
17011         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
17012         (AARCH64_ISA_SHA3): New ISA flag.
17013         (TARGET_SHA3): New feature flag for sha3.
17014         * config/aarch64/iterators.md (sha512_op): New int attribute.
17015         (CRYPTO_SHA512): New int iterator.
17016         (UNSPEC_SHA512H): New unspec.
17017         (UNSPEC_SHA512H2): Ditto.
17018         (UNSPEC_SHA512SU0): Ditto.
17019         (UNSPEC_SHA512SU1): Ditto.
17020         * config/aarch64/aarch64-simd-builtins.def
17021         (aarch64_crypto_sha512hqv2di): New builtin.
17022         (aarch64_crypto_sha512h2qv2di): Ditto.
17023         (aarch64_crypto_sha512su0qv2di): Ditto.
17024         (aarch64_crypto_sha512su1qv2di): Ditto.
17025         (aarch64_eor3qv8hi): Ditto.
17026         (aarch64_rax1qv2di): Ditto.
17027         (aarch64_xarqv2di): Ditto.
17028         (aarch64_bcaxqv8hi): Ditto.
17029         * config/aarch64/aarch64-simd.md:
17030         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
17031         (aarch64_crypto_sha512su0qv2di): Ditto.
17032         (aarch64_crypto_sha512su1qv2di): Ditto.
17033         (aarch64_eor3qv8hi): Ditto.
17034         (aarch64_rax1qv2di): Ditto.
17035         (aarch64_xarqv2di): Ditto.
17036         (aarch64_bcaxqv8hi): Ditto.
17037         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
17038         (vsha512h2q_u64): Ditto.
17039         (vsha512su0q_u64): Ditto.
17040         (vsha512su1q_u64): Ditto.
17041         (veor3q_u16): Ditto.
17042         (vrax1q_u64): Ditto.
17043         (vxarq_u64): Ditto.
17044         (vbcaxq_u16): Ditto.
17045         * config/arm/types.md (crypto_sha512): New type attribute.
17046         (crypto_sha3): Ditto.
17047         (doc/invoke.texi): Document new sha3 option.
17049 2018-01-10  Michael Collison  <michael.collison@arm.com>
17051         * config/aarch64/aarch64-builtins.c:
17052         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
17053         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
17054         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
17055         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
17056         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
17057         (AARCH64_ISA_SM4): New ISA flag.
17058         (TARGET_SM4): New feature flag for sm4.
17059         * config/aarch64/aarch64-simd-builtins.def
17060         (aarch64_sm3ss1qv4si): Ditto.
17061         (aarch64_sm3tt1aq4si): Ditto.
17062         (aarch64_sm3tt1bq4si): Ditto.
17063         (aarch64_sm3tt2aq4si): Ditto.
17064         (aarch64_sm3tt2bq4si): Ditto.
17065         (aarch64_sm3partw1qv4si): Ditto.
17066         (aarch64_sm3partw2qv4si): Ditto.
17067         (aarch64_sm4eqv4si): Ditto.
17068         (aarch64_sm4ekeyqv4si): Ditto.
17069         * config/aarch64/aarch64-simd.md:
17070         (aarch64_sm3ss1qv4si): Ditto.
17071         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
17072         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
17073         (aarch64_sm4eqv4si): Ditto.
17074         (aarch64_sm4ekeyqv4si): Ditto.
17075         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
17076         (sm3part_op): Ditto.
17077         (CRYPTO_SM3TT): Ditto.
17078         (CRYPTO_SM3PART): Ditto.
17079         (UNSPEC_SM3SS1): New unspec.
17080         (UNSPEC_SM3TT1A): Ditto.
17081         (UNSPEC_SM3TT1B): Ditto.
17082         (UNSPEC_SM3TT2A): Ditto.
17083         (UNSPEC_SM3TT2B): Ditto.
17084         (UNSPEC_SM3PARTW1): Ditto.
17085         (UNSPEC_SM3PARTW2): Ditto.
17086         (UNSPEC_SM4E): Ditto.
17087         (UNSPEC_SM4EKEY): Ditto.
17088         * config/aarch64/constraints.md (Ui2): New constraint.
17089         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
17090         * config/arm/types.md (crypto_sm3): New type attribute.
17091         (crypto_sm4): Ditto.
17092         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
17093         (vsm3tt1aq_u32): Ditto.
17094         (vsm3tt1bq_u32): Ditto.
17095         (vsm3tt2aq_u32): Ditto.
17096         (vsm3tt2bq_u32): Ditto.
17097         (vsm3partw1q_u32): Ditto.
17098         (vsm3partw2q_u32): Ditto.
17099         (vsm4eq_u32): Ditto.
17100         (vsm4ekeyq_u32): Ditto.
17101         (doc/invoke.texi): Document new sm4 option.
17103 2018-01-10  Michael Collison  <michael.collison@arm.com>
17105         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
17106         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
17107         (AARCH64_FL_FOR_ARCH8_4): New.
17108         (AARCH64_FL_V8_4): New flag.
17109         (doc/invoke.texi): Document new armv8.4-a option.
17111 2018-01-10  Michael Collison  <michael.collison@arm.com>
17113         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
17114         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
17115         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
17116         * config/aarch64/aarch64-option-extension.def: Add
17117         AARCH64_OPT_EXTENSION of 'sha2'.
17118         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
17119         (crypto): Disable sha2 and aes if crypto disabled.
17120         (crypto): Enable aes and sha2 if enabled.
17121         (simd): Disable sha2 and aes if simd disabled.
17122         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
17123         New flags.
17124         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
17125         (TARGET_SHA2): New feature flag for sha2.
17126         (TARGET_AES): New feature flag for aes.
17127         * config/aarch64/aarch64-simd.md:
17128         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
17129         conditional on TARGET_AES.
17130         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
17131         (aarch64_crypto_sha1hsi): Make pattern conditional
17132         on TARGET_SHA2.
17133         (aarch64_crypto_sha1hv4si): Ditto.
17134         (aarch64_be_crypto_sha1hv4si): Ditto.
17135         (aarch64_crypto_sha1su1v4si): Ditto.
17136         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
17137         (aarch64_crypto_sha1su0v4si): Ditto.
17138         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
17139         (aarch64_crypto_sha256su0v4si): Ditto.
17140         (aarch64_crypto_sha256su1v4si): Ditto.
17141         (doc/invoke.texi): Document new aes and sha2 options.
17143 2018-01-10  Martin Sebor  <msebor@redhat.com>
17145         PR tree-optimization/83781
17146         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
17147         as string arrays.
17149 2018-01-11  Martin Sebor  <msebor@gmail.com>
17150             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17152         PR tree-optimization/83501
17153         PR tree-optimization/81703
17155         * tree-ssa-strlen.c (get_string_cst): Rename...
17156         (get_string_len): ...to this.  Handle global constants.
17157         (handle_char_store): Adjust.
17159 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
17160             Jim Wilson  <jimw@sifive.com>
17162         * config/riscv/riscv-protos.h (riscv_output_return): New.
17163         * config/riscv/riscv.c (struct machine_function): New naked_p field.
17164         (riscv_attribute_table, riscv_output_return),
17165         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
17166         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
17167         (riscv_compute_frame_info): Only compute frame->mask if not a naked
17168         function.
17169         (riscv_expand_prologue): Add early return for naked function.
17170         (riscv_expand_epilogue): Likewise.
17171         (riscv_function_ok_for_sibcall): Return false for naked function.
17172         (riscv_set_current_function): New.
17173         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
17174         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
17175         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
17176         * doc/extend.texi (RISC-V Function Attributes): New.
17178 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
17180         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
17181         check for 128-bit long double before checking TCmode.
17182         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
17183         128-bit long doubles before checking TFmode or TCmode.
17184         (FLOAT128_IBM_P): Likewise.
17186 2018-01-10  Martin Sebor  <msebor@redhat.com>
17188         PR tree-optimization/83671
17189         * builtins.c (c_strlen): Unconditionally return zero for the empty
17190         string.
17191         Use -Warray-bounds for warnings.
17192         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
17193         for non-constant array indices with COMPONENT_REF, arrays of
17194         arrays, and pointers to arrays.
17195         (gimple_fold_builtin_strlen): Determine and set length range for
17196         non-constant character arrays.
17198 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
17200         PR middle-end/81897
17201         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
17202         empty blocks.
17204 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
17206         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
17208 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
17210         PR target/83399
17211         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
17212         VECTOR_MEM_ALTIVEC_OR_VSX_P.
17213         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
17214         indexed_or_indirect_operand predicate.
17215         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
17216         (*vsx_le_perm_load_v8hi): Likewise.
17217         (*vsx_le_perm_load_v16qi): Likewise.
17218         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
17219         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
17220         (*vsx_le_perm_store_v8hi): Likewise.
17221         (*vsx_le_perm_store_v16qi): Likewise.
17222         (eight unnamed splitters): Likewise.
17224 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
17226         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
17227         * config/rs6000/emmintrin.h: Likewise.
17228         * config/rs6000/mmintrin.h: Likewise.
17229         * config/rs6000/xmmintrin.h: Likewise.
17231 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
17233         PR c++/43486
17234         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
17235         "public_flag".
17236         * tree.c (tree_nop_conversion): Return true for location wrapper
17237         nodes.
17238         (maybe_wrap_with_location): New function.
17239         (selftest::check_strip_nops): New function.
17240         (selftest::test_location_wrappers): New function.
17241         (selftest::tree_c_tests): Call it.
17242         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
17243         (maybe_wrap_with_location): New decl.
17244         (EXPR_LOCATION_WRAPPER_P): New macro.
17245         (location_wrapper_p): New inline function.
17246         (tree_strip_any_location_wrapper): New inline function.
17248 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
17250         PR target/83735
17251         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
17252         stack_realign_offset for the largest alignment of stack slot
17253         actually used.
17254         (ix86_find_max_used_stack_alignment): New function.
17255         (ix86_finalize_stack_frame_flags): Use it.  Set
17256         max_used_stack_alignment if we don't realign stack.
17257         * config/i386/i386.h (machine_function): Add
17258         max_used_stack_alignment.
17260 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
17262         * config/arm/arm.opt (-mbranch-cost): New option.
17263         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
17264         account.
17266 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
17268         PR target/83629
17269         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
17270         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
17272 2018-01-10  Richard Biener  <rguenther@suse.de>
17274         PR debug/83765
17275         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
17276         early out so it also covers the case where we have a non-NULL
17277         origin.
17279 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
17281         PR tree-optimization/83753
17282         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
17283         for non-strided grouped accesses if the number of elements is 1.
17285 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
17287         PR target/81616
17288         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
17289         * i386.h (TARGET_USE_GATHER): Define.
17290         * x86-tune.def (X86_TUNE_USE_GATHER): New.
17292 2018-01-10  Martin Liska  <mliska@suse.cz>
17294         PR bootstrap/82831
17295         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
17296         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
17297         partitioning.
17298         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
17299         CLEANUP_NO_PARTITIONING is not set.
17301 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
17303         * doc/rtl.texi: Remove documentation of (const ...) wrappers
17304         for vectors, as a partial revert of r254296.
17305         * rtl.h (const_vec_p): Delete.
17306         (const_vec_duplicate_p): Don't test for vector CONSTs.
17307         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
17308         * expmed.c (make_tree): Likewise.
17310         Revert:
17311         * common.md (E, F): Use CONSTANT_P instead of checking for
17312         CONST_VECTOR.
17313         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
17314         checking for CONST_VECTOR.
17316 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17318         PR middle-end/83575
17319         * predict.c (force_edge_cold): Handle in more sane way edges
17320         with no prediction.
17322 2018-01-09  Carl Love  <cel@us.ibm.com>
17324         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
17325         V4SI, V4SF types.
17326         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
17327         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
17328         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
17329         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
17330         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
17331         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
17332         * config/rs6000/rs6000-protos.h: Add extern defition for
17333         rs6000_generate_float2_double_code.
17334         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
17335         function.
17336         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
17337         (float2_v2df): Add define_expand.
17339 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
17341         PR target/83628
17342         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
17343         op_mode in the force_to_mode call.
17345 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17347         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
17348         instead of checking each element individually.
17349         (aarch64_evpc_uzp): Likewise.
17350         (aarch64_evpc_zip): Likewise.
17351         (aarch64_evpc_ext): Likewise.
17352         (aarch64_evpc_rev): Likewise.
17353         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
17354         instead of checking each element individually.  Return true without
17355         generating rtl if
17356         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
17357         whether all selected elements come from the same input, instead of
17358         checking each element individually.  Remove calls to gen_rtx_REG,
17359         start_sequence and end_sequence and instead assert that no rtl is
17360         generated.
17362 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17364         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
17365         order of HIGH and CONST checks.
17367 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17369         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
17370         if the destination isn't an SSA_NAME.
17372 2018-01-09  Richard Biener  <rguenther@suse.de>
17374         PR tree-optimization/83668
17375         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
17376         move prologue...
17377         (canonicalize_loop_form): ... here, renamed from ...
17378         (canonicalize_loop_closed_ssa_form): ... this and amended to
17379         swap successor edges for loop exit blocks to make us use
17380         the RPO order we need for initial schedule generation.
17382 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
17384         PR tree-optimization/64811
17385         * match.pd: When optimizing comparisons with Inf, avoid
17386         introducing or losing exceptions from comparisons with NaN.
17388 2018-01-09  Martin Liska  <mliska@suse.cz>
17390         PR sanitizer/82517
17391         * asan.c (shadow_mem_size): Add gcc_assert.
17393 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
17395         Don't save registers in main().
17397         PR target/83738
17398         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
17399         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
17400         * config/avr/avr.c (avr_set_current_function): Don't error if
17401         naked, OS_task or OS_main are specified at the same time.
17402         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
17403         OS_main.
17404         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
17405         attribute.
17406         * common/config/avr/avr-common.c (avr_option_optimization_table):
17407         Switch on -mmain-is-OS_task for optimizing compilations.
17409 2018-01-09  Richard Biener  <rguenther@suse.de>
17411         PR tree-optimization/83572
17412         * graphite.c: Include cfganal.h.
17413         (graphite_transform_loops): Connect infinite loops to exit
17414         and remove fake edges at the end.
17416 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17418         * ipa-inline.c (edge_badness): Revert accidental checkin.
17420 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17422         PR ipa/80763
17423         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
17424         symbols; not inline clones.
17426 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
17428         PR target/83507
17429         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
17430         hard registers.  Formatting fixes.
17432         PR preprocessor/83722
17433         * gcc.c (try_generate_repro): Pass
17434         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
17435         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
17436         do_report_bug.
17438 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
17439             Kito Cheng  <kito.cheng@gmail.com>
17441         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
17442         (riscv_leaf_function_p): Delete.
17443         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
17445 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
17447         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
17448         function.
17449         (do_ifelse): New function.
17450         (do_isel): New function.
17451         (do_sub3): New function.
17452         (do_add3): New function.
17453         (do_load_mask_compare): New function.
17454         (do_overlap_load_compare): New function.
17455         (expand_compare_loop): New function.
17456         (expand_block_compare): Call expand_compare_loop() when appropriate.
17457         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
17458         option description.
17459         (-mblock-compare-inline-loop-limit): New option.
17461 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17463         PR target/83677
17464         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
17465         Reverse order of second and third operands in first alternative.
17466         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
17467         of first and second elements in UNSPEC_VPERMR vector.
17468         (altivec_expand_vec_perm_le): Likewise.
17470 2018-01-08  Jeff Law  <law@redhat.com>
17472         PR rtl-optimizatin/81308
17473         * tree-switch-conversion.c (cfg_altered): New file scoped static.
17474         (process_switch): If group_case_labels makes a change, then set
17475         cfg_altered.
17476         (pass_convert_switch::execute): If a switch is converted, then
17477         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
17479         PR rtl-optimization/81308
17480         * recog.c (split_all_insns): Conditionally cleanup the CFG after
17481         splitting insns.
17483 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
17485         PR target/83663 - Revert r255946
17486         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
17487         generation for cases where splatting a value is not useful.
17488         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
17489         across a vec_duplicate and a paradoxical subreg forming a vector
17490         mode to a vec_concat.
17492 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17494         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
17495         -march=armv8.3-a variants.
17496         * config/arm/t-multilib: Likewise.
17497         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
17499 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
17501         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
17502         to generate rtl.
17503         (cceq_ior_compare_complement): Give it a name so I can use it, and
17504         change boolean_or_operator predicate to boolean_operator so it can
17505         be used to generate a crand.
17506         (eqne): New code iterator.
17507         (bd/bd_neg): New code_attrs.
17508         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
17509         a single define_insn.
17510         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
17511         decrement (bdnzt/bdnzf/bdzt/bdzf).
17512         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
17513         with the new names of the branch decrement patterns, and added the
17514         names of the branch decrement conditional patterns.
17516 2018-01-08  Richard Biener  <rguenther@suse.de>
17518         PR tree-optimization/83563
17519         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
17520         cache.
17522 2018-01-08  Richard Biener  <rguenther@suse.de>
17524         PR middle-end/83713
17525         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
17527 2018-01-08  Richard Biener  <rguenther@suse.de>
17529         PR tree-optimization/83685
17530         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
17531         references to abnormals.
17533 2018-01-08  Richard Biener  <rguenther@suse.de>
17535         PR lto/83719
17536         * dwarf2out.c (output_indirect_strings): Handle empty
17537         skeleton_debug_str_hash.
17538         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
17540 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
17542         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
17543         (emit_store_direct): Likewise.
17544         (arc_trampoline_adjust_address): Likewise.
17545         (arc_asm_trampoline_template): New function.
17546         (arc_initialize_trampoline): Use asm_trampoline_template.
17547         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
17548         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
17549         * config/arc/arc.md (flush_icache): Delete pattern.
17551 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
17553         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
17554         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
17555         munaligned-access.
17557 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17559         PR target/83681
17560         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
17561         by not USED_FOR_TARGET.
17562         (make_pass_resolve_sw_modes): Likewise.
17564 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17566         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
17567         USED_FOR_TARGET.
17569 2018-01-08  Richard Biener  <rguenther@suse.de>
17571         PR middle-end/83580
17572         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
17574 2018-01-08  Richard Biener  <rguenther@suse.de>
17576         PR middle-end/83517
17577         * match.pd ((t * 2) / 2) -> t): Add missing :c.
17579 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
17581         PR middle-end/81897
17582         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
17583         basic blocks with a small number of successors.
17584         (convert_control_dep_chain_into_preds): Improve handling of
17585         forwarder blocks.
17586         (dump_predicates): Split apart into...
17587         (dump_pred_chain): ...here...
17588         (dump_pred_info): ...and here.
17589         (can_one_predicate_be_invalidated_p): Add debugging printfs.
17590         (can_chain_union_be_invalidated_p): Improve check for invalidation
17591         of paths.
17592         (uninit_uses_cannot_happen): Avoid unnecessary if
17593         convert_control_dep_chain_into_preds yielded nothing.
17595 2018-01-06  Martin Sebor  <msebor@redhat.com>
17597         PR tree-optimization/83640
17598         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
17599         subtracting negative offset from size.
17600         (builtin_access::overlap): Adjust offset bounds of the access to fall
17601         within the size of the object if possible.
17603 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
17605         PR rtl-optimization/83699
17606         * expmed.c (extract_bit_field_1): Restrict the vector usage of
17607         extract_bit_field_as_subreg to cases in which the extracted
17608         value is also a vector.
17610         * lra-constraints.c (process_alt_operands): Test for the equivalence
17611         substitutions when detecting a possible reload cycle.
17613 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
17615         PR debug/83480
17616         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
17617         by default if flag_selective_schedling{,2}.  Formatting fixes.
17619         PR rtl-optimization/83682
17620         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
17621         if it has non-VECTOR_MODE element mode.
17622         (vec_duplicate_p): Likewise.
17624         PR middle-end/83694
17625         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
17626         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
17628 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
17630         PR target/83604
17631         * config/i386/i386-builtin.def
17632         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
17633         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
17634         Require also OPTION_MASK_ISA_AVX512F in addition to
17635         OPTION_MASK_ISA_GFNI.
17636         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
17637         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
17638         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
17639         to OPTION_MASK_ISA_GFNI.
17640         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
17641         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
17642         OPTION_MASK_ISA_AVX512BW.
17643         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
17644         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
17645         addition to OPTION_MASK_ISA_GFNI.
17646         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
17647         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
17648         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
17649         to OPTION_MASK_ISA_GFNI.
17650         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
17651         a requirement for all ISAs rather than any of them with a few
17652         exceptions.
17653         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
17654         processing.
17655         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
17656         bitmasks to be enabled with 3 exceptions, instead of requiring any
17657         enabled ISA with lots of exceptions.
17658         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
17659         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
17660         Change avx512bw in isa attribute to avx512f.
17661         * config/i386/sgxintrin.h: Add license boilerplate.
17662         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
17663         to __AVX512F__ and __AVX512VL to __AVX512VL__.
17664         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
17665         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
17666         defined.
17667         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
17668         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
17669         temporarily sse2 rather than sse if not enabled already.
17671         PR target/83604
17672         * config/i386/sse.md (VI248_VLBW): Rename to ...
17673         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
17674         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
17675         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
17676         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
17677         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
17678         mode iterator instead of VI248_VLBW.
17680 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
17682         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
17683         (record_modified): Skip clobbers; add debug output.
17684         (param_change_prob): Use sreal frequencies.
17686 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
17688         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
17689         punt for user-aligned variables.
17691 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
17693         * tree-chrec.c (chrec_contains_symbols): Return true for
17694         POLY_INT_CST.
17696 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
17698         PR target/82439
17699         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
17700         of (x|y) == x for BICS pattern.
17702 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
17704         PR tree-optimization/83605
17705         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
17706         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
17707         can throw.
17709 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17711         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
17712         * config/epiphany/rtems.h: New file.
17714 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17715             Uros Bizjak  <ubizjak@gmail.com>
17717         PR target/83554
17718         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
17719         QIreg_operand instead of register_operand predicate.
17720         * config/i386/i386.c (ix86_rop_should_change_byte_p,
17721         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
17722         comments instead of -fmitigate[-_]rop.
17724 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
17726         PR bootstrap/81926
17727         * cgraphunit.c (symbol_table::compile): Switch to text_section
17728         before calling assembly_start debug hook.
17729         * run-rtl-passes.c (run_rtl_passes): Likewise.
17730         Include output.h.
17732 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17734         * tree-vrp.c (extract_range_from_binary_expr_1): Check
17735         range_int_cst_p rather than !symbolic_range_p before calling
17736         extract_range_from_multiplicative_op_1.
17738 2018-01-04  Jeff Law  <law@redhat.com>
17740         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
17741         redundant test in assertion.
17743 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17745         * doc/rtl.texi: Document machine_mode wrapper classes.
17747 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17749         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
17750         using tree_to_uhwi.
17752 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17754         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
17755         the VEC_PERM_EXPR fold to fail.
17757 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17759         PR debug/83585
17760         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
17761         to switched_sections.
17763 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17765         PR target/83680
17766         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
17767         test for d.testing.
17769 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
17771         PR target/83387
17772         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
17773         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
17775 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17777         PR debug/83666
17778         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
17779         is BLKmode and bitpos not zero or mode change is needed.
17781 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17783         PR target/83675
17784         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
17785         TARGET_VIS2.
17787 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
17789         PR target/83628
17790         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
17791         instead of MULT rtx.  Update all corresponding splitters.
17792         (*saddl_se): Ditto.
17793         (*ssub<modesuffix>): Ditto.
17794         (*ssubl_se): Ditto.
17795         (*cmp_sadd_di): Update split patterns.
17796         (*cmp_sadd_si): Ditto.
17797         (*cmp_sadd_sidi): Ditto.
17798         (*cmp_ssub_di): Ditto.
17799         (*cmp_ssub_si): Ditto.
17800         (*cmp_ssub_sidi): Ditto.
17801         * config/alpha/predicates.md (const23_operand): New predicate.
17802         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
17803         Look for ASHIFT, not MULT inner operand.
17804         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
17806 2018-01-04  Martin Liska  <mliska@suse.cz>
17808         PR gcov-profile/83669
17809         * gcov.c (output_intermediate_file): Add version to intermediate
17810         gcov file.
17811         * doc/gcov.texi: Document new field 'version' in intermediate
17812         file format. Fix location of '-k' option of gcov command.
17814 2018-01-04  Martin Liska  <mliska@suse.cz>
17816         PR ipa/82352
17817         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
17819 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17821         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
17823 2018-01-03  Martin Sebor  <msebor@redhat.com>
17825         PR tree-optimization/83655
17826         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
17827         checking calls with invalid arguments.
17829 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17831         * tree-vect-stmts.c (vect_get_store_rhs): New function.
17832         (vectorizable_mask_load_store): Delete.
17833         (vectorizable_call): Return false for masked loads and stores.
17834         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
17835         instead of gimple_assign_rhs1.
17836         (vectorizable_load): Handle IFN_MASK_LOAD.
17837         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
17839 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17841         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
17842         split out from..,
17843         (vectorizable_mask_load_store): ...here.
17844         (vectorizable_load): ...and here.
17846 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17848         * tree-vect-stmts.c (vect_build_all_ones_mask)
17849         (vect_build_zero_merge_argument): New functions, split out from...
17850         (vectorizable_load): ...here.
17852 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17854         * tree-vect-stmts.c (vect_check_store_rhs): New function,
17855         split out from...
17856         (vectorizable_mask_load_store): ...here.
17857         (vectorizable_store): ...and here.
17859 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17861         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
17862         split out from...
17863         (vectorizable_mask_load_store): ...here.
17865 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17867         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
17868         (vect_model_store_cost): Take a vec_load_store_type instead of a
17869         vect_def_type.
17870         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
17871         (vect_model_store_cost): Take a vec_load_store_type instead of a
17872         vect_def_type.
17873         (vectorizable_mask_load_store): Update accordingly.
17874         (vectorizable_store): Likewise.
17875         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
17877 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17879         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
17880         IFN_MASK_LOAD calls here rather than...
17881         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
17883 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17884             Alan Hayward  <alan.hayward@arm.com>
17885             David Sherwood  <david.sherwood@arm.com>
17887         * expmed.c (extract_bit_field_1): For vector extracts,
17888         fall back to extract_bit_field_as_subreg if vec_extract
17889         isn't available.
17891 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17892             Alan Hayward  <alan.hayward@arm.com>
17893             David Sherwood  <david.sherwood@arm.com>
17895         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
17896         they are variable or constant sized.
17897         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
17898         slots for constant-sized data.
17900 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17901             Alan Hayward  <alan.hayward@arm.com>
17902             David Sherwood  <david.sherwood@arm.com>
17904         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
17905         handling COND_EXPRs with boolean comparisons, try to find a better
17906         basis for the mask type than the boolean itself.
17908 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17910         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
17911         is calculated and how it can be overridden.
17912         * genmodes.c (max_bitsize_mode_any_mode): New variable.
17913         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
17914         if defined.
17915         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
17916         if nonzero.
17918 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17919             Alan Hayward  <alan.hayward@arm.com>
17920             David Sherwood  <david.sherwood@arm.com>
17922         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
17923         Remove the mode argument.
17924         (aarch64_simd_valid_immediate): Remove the mode and inverse
17925         arguments.
17926         * config/aarch64/iterators.md (bitsize): New iterator.
17927         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
17928         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
17929         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
17930         aarch64_simd_valid_immediate.
17931         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
17932         (aarch64_reg_or_bic_imm): Likewise.
17933         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
17934         with an insn_type enum and msl with a modifier_type enum.
17935         Replace element_width with a scalar_mode.  Change the shift
17936         to unsigned int.  Add constructors for scalar_float_mode and
17937         scalar_int_mode elements.
17938         (aarch64_vect_float_const_representable_p): Delete.
17939         (aarch64_can_const_movi_rtx_p)
17940         (aarch64_simd_scalar_immediate_valid_for_move)
17941         (aarch64_simd_make_constant): Update call to
17942         aarch64_simd_valid_immediate.
17943         (aarch64_advsimd_valid_immediate_hs): New function.
17944         (aarch64_advsimd_valid_immediate): Likewise.
17945         (aarch64_simd_valid_immediate): Remove mode and inverse
17946         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
17947         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
17948         and aarch64_float_const_representable_p on the result.
17949         (aarch64_output_simd_mov_immediate): Remove mode argument.
17950         Update call to aarch64_simd_valid_immediate and use of
17951         simd_immediate_info.
17952         (aarch64_output_scalar_simd_mov_immediate): Update call
17953         accordingly.
17955 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17956             Alan Hayward  <alan.hayward@arm.com>
17957             David Sherwood  <david.sherwood@arm.com>
17959         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
17960         (mode_nunits): Likewise CONST_MODE_NUNITS.
17961         * machmode.def (ADJUST_NUNITS): Document.
17962         * genmodes.c (mode_data::need_nunits_adj): New field.
17963         (blank_mode): Update accordingly.
17964         (adj_nunits): New variable.
17965         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
17966         parameter.
17967         (emit_mode_size_inline): Set need_bytesize_adj for all modes
17968         listed in adj_nunits.
17969         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
17970         listed in adj_nunits.  Don't emit case statements for such modes.
17971         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
17972         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
17973         nothing if adj_nunits is nonnull.
17974         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
17975         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
17976         (emit_mode_fbit): Update use of print_maybe_const_decl.
17977         (emit_move_size): Likewise.  Treat the array as non-const
17978         if adj_nunits.
17979         (emit_mode_adjustments): Handle adj_nunits.
17981 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17983         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
17984         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
17985         (VECTOR_MODES): Use it.
17986         (make_vector_modes): Take the prefix as an argument.
17988 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17989             Alan Hayward  <alan.hayward@arm.com>
17990             David Sherwood  <david.sherwood@arm.com>
17992         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
17993         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
17994         for MODE_VECTOR_BOOL.
17995         * machmode.def (VECTOR_BOOL_MODE): Document.
17996         * genmodes.c (VECTOR_BOOL_MODE): New macro.
17997         (make_vector_bool_mode): New function.
17998         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
17999         MODE_VECTOR_BOOL.
18000         * lto-streamer-in.c (lto_input_mode_table): Likewise.
18001         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
18002         Likewise.
18003         * stor-layout.c (int_mode_for_mode): Likewise.
18004         * tree.c (build_vector_type_for_mode): Likewise.
18005         * varasm.c (output_constant_pool_2): Likewise.
18006         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
18007         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
18008         for MODE_VECTOR_BOOL.
18009         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
18010         of mode class checks.
18011         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
18012         instead of a list of mode class checks.
18013         (expand_vector_scalar_condition): Likewise.
18014         (type_for_widest_vector_mode): Handle BImode as an inner mode.
18016 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18017             Alan Hayward  <alan.hayward@arm.com>
18018             David Sherwood  <david.sherwood@arm.com>
18020         * machmode.h (mode_size): Change from unsigned short to
18021         poly_uint16_pod.
18022         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
18023         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
18024         or if measurement_type is not polynomial.
18025         (fixed_size_mode::includes_p): Check for constant-sized modes.
18026         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
18027         return a poly_uint16 rather than an unsigned short.
18028         (emit_mode_size): Change the type of mode_size from unsigned short
18029         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
18030         (emit_mode_adjustments): Cope with polynomial vector sizes.
18031         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
18032         for GET_MODE_SIZE.
18033         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
18034         for GET_MODE_SIZE.
18035         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
18036         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
18037         * caller-save.c (setup_save_areas): Likewise.
18038         (replace_reg_with_saved_mem): Likewise.
18039         * calls.c (emit_library_call_value_1): Likewise.
18040         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
18041         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
18042         (gen_lowpart_for_combine): Likewise.
18043         * convert.c (convert_to_integer_1): Likewise.
18044         * cse.c (equiv_constant, cse_insn): Likewise.
18045         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
18046         (cselib_subst_to_values): Likewise.
18047         * dce.c (word_dce_process_block): Likewise.
18048         * df-problems.c (df_word_lr_mark_ref): Likewise.
18049         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
18050         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
18051         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
18052         (rtl_for_decl_location): Likewise.
18053         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
18054         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
18055         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
18056         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
18057         (expand_expr_real_1): Likewise.
18058         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
18059         (pad_below): Likewise.
18060         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
18061         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
18062         * ira.c (get_subreg_tracking_sizes): Likewise.
18063         * ira-build.c (ira_create_allocno_objects): Likewise.
18064         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
18065         (ira_sort_regnos_for_alter_reg): Likewise.
18066         * ira-costs.c (record_operand_costs): Likewise.
18067         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
18068         (resolve_simple_move): Likewise.
18069         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
18070         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
18071         (lra_constraints): Likewise.
18072         (CONST_POOL_OK_P): Reject variable-sized modes.
18073         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
18074         (add_pseudo_to_slot, lra_spill): Likewise.
18075         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18076         * optabs-query.c (get_best_extraction_insn): Likewise.
18077         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
18078         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
18079         (expand_mult_highpart, valid_multiword_target_p): Likewise.
18080         * recog.c (offsettable_address_addr_space_p): Likewise.
18081         * regcprop.c (maybe_mode_change): Likewise.
18082         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
18083         * regrename.c (build_def_use): Likewise.
18084         * regstat.c (dump_reg_info): Likewise.
18085         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
18086         (find_reloads, find_reloads_subreg_address): Likewise.
18087         * reload1.c (eliminate_regs_1): Likewise.
18088         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
18089         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
18090         (simplify_binary_operation_1, simplify_subreg): Likewise.
18091         * targhooks.c (default_function_arg_padding): Likewise.
18092         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
18093         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
18094         (verify_gimple_assign_ternary): Likewise.
18095         * tree-inline.c (estimate_move_cost): Likewise.
18096         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18097         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
18098         (get_address_cost_ainc): Likewise.
18099         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18100         (vect_supportable_dr_alignment): Likewise.
18101         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
18102         (vectorizable_reduction): Likewise.
18103         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
18104         (vectorizable_operation, vectorizable_load): Likewise.
18105         * tree.c (build_same_sized_truth_vector_type): Likewise.
18106         * valtrack.c (cleanup_auto_inc_dec): Likewise.
18107         * var-tracking.c (emit_note_insn_var_location): Likewise.
18108         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
18109         (ADDR_VEC_ALIGN): Likewise.
18111 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18112             Alan Hayward  <alan.hayward@arm.com>
18113             David Sherwood  <david.sherwood@arm.com>
18115         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
18116         unsigned short.
18117         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
18118         or if measurement_type is polynomial.
18119         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
18120         * combine.c (make_extraction): Likewise.
18121         * dse.c (find_shift_sequence): Likewise.
18122         * dwarf2out.c (mem_loc_descriptor): Likewise.
18123         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
18124         (extract_bit_field, extract_low_bits): Likewise.
18125         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
18126         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
18127         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
18128         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
18129         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
18130         * reload.c (find_reloads): Likewise.
18131         * reload1.c (alter_reg): Likewise.
18132         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
18133         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
18134         * tree-if-conv.c (predicate_mem_writes): Likewise.
18135         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18136         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
18137         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
18138         * valtrack.c (dead_debug_insert_temp): Likewise.
18139         * varasm.c (mergeable_constant_section): Likewise.
18140         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
18142 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18143             Alan Hayward  <alan.hayward@arm.com>
18144             David Sherwood  <david.sherwood@arm.com>
18146         * expr.c (expand_assignment): Cope with polynomial mode sizes
18147         when assigning to a CONCAT.
18149 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18150             Alan Hayward  <alan.hayward@arm.com>
18151             David Sherwood  <david.sherwood@arm.com>
18153         * machmode.h (mode_precision): Change from unsigned short to
18154         poly_uint16_pod.
18155         (mode_to_precision): Return a poly_uint16 rather than an unsigned
18156         short.
18157         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
18158         or if measurement_type is not polynomial.
18159         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
18160         in which the mode is already known to be a scalar_int_mode.
18161         * genmodes.c (emit_mode_precision): Change the type of mode_precision
18162         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
18163         initializer.
18164         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
18165         for GET_MODE_PRECISION.
18166         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
18167         for GET_MODE_PRECISION.
18168         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
18169         as polynomial.
18170         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
18171         (expand_field_assignment, make_extraction): Likewise.
18172         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
18173         (get_last_value): Likewise.
18174         * convert.c (convert_to_integer_1): Likewise.
18175         * cse.c (cse_insn): Likewise.
18176         * expr.c (expand_expr_real_1): Likewise.
18177         * lra-constraints.c (simplify_operand_subreg): Likewise.
18178         * optabs-query.c (can_atomic_load_p): Likewise.
18179         * optabs.c (expand_atomic_load): Likewise.
18180         (expand_atomic_store): Likewise.
18181         * ree.c (combine_reaching_defs): Likewise.
18182         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
18183         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
18184         * tree.h (type_has_mode_precision_p): Likewise.
18185         * ubsan.c (instrument_si_overflow): Likewise.
18187 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18188             Alan Hayward  <alan.hayward@arm.com>
18189             David Sherwood  <david.sherwood@arm.com>
18191         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
18192         polynomial numbers of units.
18193         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
18194         (valid_vector_subparts_p): New function.
18195         (build_vector_type): Remove temporary shim and take the number
18196         of units as a poly_uint64 rather than an int.
18197         (build_opaque_vector_type): Take the number of units as a
18198         poly_uint64 rather than an int.
18199         * tree.c (build_vector_from_ctor): Handle polynomial
18200         TYPE_VECTOR_SUBPARTS.
18201         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
18202         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
18203         (build_vector_from_val): If the number of units is variable,
18204         use build_vec_duplicate_cst for constant operands and
18205         VEC_DUPLICATE_EXPR otherwise.
18206         (make_vector_type): Remove temporary is_constant ().
18207         (build_vector_type, build_opaque_vector_type): Take the number of
18208         units as a poly_uint64 rather than an int.
18209         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
18210         VECTOR_CST_NELTS.
18211         * cfgexpand.c (expand_debug_expr): Likewise.
18212         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
18213         (store_constructor, expand_expr_real_1): Likewise.
18214         (const_scalar_mask_from_tree): Likewise.
18215         * fold-const-call.c (fold_const_reduction): Likewise.
18216         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
18217         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
18218         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
18219         (fold_relational_const): Likewise.
18220         (native_interpret_vector): Likewise.  Change the size from an
18221         int to an unsigned int.
18222         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
18223         TYPE_VECTOR_SUBPARTS.
18224         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
18225         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
18226         duplicating a non-constant operand into a variable-length vector.
18227         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
18228         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
18229         * ipa-icf.c (sem_variable::equals): Likewise.
18230         * match.pd: Likewise.
18231         * omp-simd-clone.c (simd_clone_subparts): Likewise.
18232         * print-tree.c (print_node): Likewise.
18233         * stor-layout.c (layout_type): Likewise.
18234         * targhooks.c (default_builtin_vectorization_cost): Likewise.
18235         * tree-cfg.c (verify_gimple_comparison): Likewise.
18236         (verify_gimple_assign_binary): Likewise.
18237         (verify_gimple_assign_ternary): Likewise.
18238         (verify_gimple_assign_single): Likewise.
18239         * tree-pretty-print.c (dump_generic_node): Likewise.
18240         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18241         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
18242         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
18243         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
18244         (vect_shift_permute_load_chain): Likewise.
18245         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
18246         (expand_vector_condition, optimize_vector_constructor): Likewise.
18247         (lower_vec_perm, get_compute_type): Likewise.
18248         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
18249         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
18250         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
18251         (vect_recog_mask_conversion_pattern): Likewise.
18252         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
18253         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
18254         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
18255         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
18256         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
18257         (vectorizable_shift, vectorizable_operation, vectorizable_store)
18258         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
18259         (supportable_widening_operation): Likewise.
18260         (supportable_narrowing_operation): Likewise.
18261         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
18262         Likewise.
18263         * varasm.c (output_constant): Likewise.
18265 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18266             Alan Hayward  <alan.hayward@arm.com>
18267             David Sherwood  <david.sherwood@arm.com>
18269         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
18270         so that both the length == 3 and length != 3 cases set up their
18271         own permute vectors.  Add comments explaining why we know the
18272         number of elements is constant.
18273         (vect_permute_load_chain): Likewise.
18275 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18276             Alan Hayward  <alan.hayward@arm.com>
18277             David Sherwood  <david.sherwood@arm.com>
18279         * machmode.h (mode_nunits): Change from unsigned char to
18280         poly_uint16_pod.
18281         (ONLY_FIXED_SIZE_MODES): New macro.
18282         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
18283         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
18284         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
18285         New typedefs.
18286         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
18287         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
18288         or if measurement_type is not polynomial.
18289         * genmodes.c (ZERO_COEFFS): New macro.
18290         (emit_mode_nunits_inline): Make mode_nunits_inline return a
18291         poly_uint16.
18292         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
18293         Use ZERO_COEFFS when emitting initializers.
18294         * data-streamer.h (bp_pack_poly_value): New function.
18295         (bp_unpack_poly_value): Likewise.
18296         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
18297         for GET_MODE_NUNITS.
18298         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
18299         for GET_MODE_NUNITS.
18300         * tree.c (make_vector_type): Remove temporary shim and make
18301         the real function take the number of units as a poly_uint64
18302         rather than an int.
18303         (build_vector_type_for_mode): Handle polynomial nunits.
18304         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
18305         * emit-rtl.c (const_vec_series_p_1): Likewise.
18306         (gen_rtx_CONST_VECTOR): Likewise.
18307         * fold-const.c (test_vec_duplicate_folding): Likewise.
18308         * genrecog.c (validate_pattern): Likewise.
18309         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
18310         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
18311         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
18312         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
18313         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
18314         * rtlanal.c (subreg_get_info): Likewise.
18315         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
18316         (vect_grouped_load_supported): Likewise.
18317         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
18318         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
18319         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18320         (simplify_const_unary_operation, simplify_binary_operation_1)
18321         (simplify_const_binary_operation, simplify_ternary_operation)
18322         (test_vector_ops_duplicate, test_vector_ops): Likewise.
18323         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
18324         instead of CONST_VECTOR_NUNITS.
18325         * varasm.c (output_constant_pool_2): Likewise.
18326         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
18327         explicit-encoded elements in the XVEC for variable-length vectors.
18329 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18331         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
18333 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18334             Alan Hayward  <alan.hayward@arm.com>
18335             David Sherwood  <david.sherwood@arm.com>
18337         * coretypes.h (fixed_size_mode): Declare.
18338         (fixed_size_mode_pod): New typedef.
18339         * builtins.h (target_builtins::x_apply_args_mode)
18340         (target_builtins::x_apply_result_mode): Change type to
18341         fixed_size_mode_pod.
18342         * builtins.c (apply_args_size, apply_result_size, result_vector)
18343         (expand_builtin_apply_args_1, expand_builtin_apply)
18344         (expand_builtin_return): Update accordingly.
18346 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18348         * cse.c (hash_rtx_cb): Hash only the encoded elements.
18349         * cselib.c (cselib_hash_rtx): Likewise.
18350         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
18351         CONST_VECTOR encoding.
18353 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18354             Jeff Law  <law@redhat.com>
18356         PR target/83641
18357         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
18358         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
18359         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
18360         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
18362         PR target/83641
18363         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
18364         explicitly probe *sp in a noreturn function if there were any callee
18365         register saves or frame pointer is needed.
18367 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18369         PR debug/83621
18370         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
18371         BLKmode for ternary, binary or unary expressions.
18373         PR debug/83645
18374         * var-tracking.c (delete_vta_debug_insn): New inline function.
18375         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
18376         insns from get_insns () to NULL instead of each bb separately.
18377         Use delete_vta_debug_insn.  No longer static.
18378         (vt_debug_insns_local, variable_tracking_main_1): Adjust
18379         delete_vta_debug_insns callers.
18380         * rtl.h (delete_vta_debug_insns): Declare.
18381         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
18382         instead of variable_tracking_main.
18384 2018-01-03  Martin Sebor  <msebor@redhat.com>
18386         PR tree-optimization/83603
18387         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
18388         arguments past the endof the argument list in functions declared
18389         without a prototype.
18390         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
18391         Avoid checking when arguments are null.
18393 2018-01-03  Martin Sebor  <msebor@redhat.com>
18395         PR c/83559
18396         * doc/extend.texi (attribute const): Fix a typo.
18397         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
18398         issuing -Wsuggest-attribute for void functions.
18400 2018-01-03  Martin Sebor  <msebor@redhat.com>
18402         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
18403         offset_int::from instead of wide_int::to_shwi.
18404         (maybe_diag_overlap): Remove assertion.
18405         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
18406         * gimple-ssa-sprintf.c (format_directive): Same.
18407         (parse_directive): Same.
18408         (sprintf_dom_walker::compute_format_length): Same.
18409         (try_substitute_return_value): Same.
18411 2018-01-03  Jeff Law  <law@redhat.com>
18413         PR middle-end/83654
18414         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
18415         non-constant residual for zero at runtime and avoid probing in
18416         that case.  Reorganize code for trailing problem to mirror handling
18417         of the residual.
18419 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
18421         PR tree-optimization/83501
18422         * tree-ssa-strlen.c (get_string_cst): New.
18423         (handle_char_store): Call get_string_cst.
18425 2018-01-03  Martin Liska  <mliska@suse.cz>
18427         PR tree-optimization/83593
18428         * tree-ssa-strlen.c: Include tree-cfg.h.
18429         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
18430         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
18431         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
18432         to false.
18433         (strlen_dom_walker::before_dom_children): Call
18434         gimple_purge_dead_eh_edges. Dump tranformation with details
18435         dump flags.
18436         (strlen_dom_walker::before_dom_children): Update call by adding
18437         new argument cleanup_eh.
18438         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
18440 2018-01-03  Martin Liska  <mliska@suse.cz>
18442         PR ipa/83549
18443         * cif-code.def (VARIADIC_THUNK): New enum value.
18444         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
18445         thunks.
18447 2018-01-03  Jan Beulich  <jbeulich@suse.com>
18449         * sse.md (mov<mode>_internal): Tighten condition for when to use
18450         vmovdqu<ssescalarsize> for TI and OI modes.
18452 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18454         Update copyright years.
18456 2018-01-03  Martin Liska  <mliska@suse.cz>
18458         PR ipa/83594
18459         * ipa-visibility.c (function_and_variable_visibility): Skip
18460         functions with noipa attribure.
18462 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18464         * gcc.c (process_command): Update copyright notice dates.
18465         * gcov-dump.c (print_version): Ditto.
18466         * gcov.c (print_version): Ditto.
18467         * gcov-tool.c (print_version): Ditto.
18468         * gengtype.c (create_file): Ditto.
18469         * doc/cpp.texi: Bump @copying's copyright year.
18470         * doc/cppinternals.texi: Ditto.
18471         * doc/gcc.texi: Ditto.
18472         * doc/gccint.texi: Ditto.
18473         * doc/gcov.texi: Ditto.
18474         * doc/install.texi: Ditto.
18475         * doc/invoke.texi: Ditto.
18477 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18479         * vector-builder.h (vector_builder::m_full_nelts): Change from
18480         unsigned int to poly_uint64.
18481         (vector_builder::full_nelts): Update prototype accordingly.
18482         (vector_builder::new_vector): Likewise.
18483         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
18484         (vector_builder::operator ==): Likewise.
18485         (vector_builder::finalize): Likewise.
18486         * int-vector-builder.h (int_vector_builder::int_vector_builder):
18487         Take the number of elements as a poly_uint64 rather than an
18488         unsigned int.
18489         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
18490         from unsigned int to poly_uint64.
18491         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
18492         (vec_perm_indices::new_vector): Likewise.
18493         (vec_perm_indices::length): Likewise.
18494         (vec_perm_indices::nelts_per_input): Likewise.
18495         (vec_perm_indices::input_nelts): Likewise.
18496         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
18497         number of elements per input as a poly_uint64 rather than an
18498         unsigned int.  Use the original encoding for variable-length
18499         vectors, rather than clamping each individual element.
18500         For the second and subsequent elements in each pattern,
18501         clamp the step and base before clamping their sum.
18502         (vec_perm_indices::series_p): Handle polynomial element counts.
18503         (vec_perm_indices::all_in_range_p): Likewise.
18504         (vec_perm_indices_to_tree): Likewise.
18505         (vec_perm_indices_to_rtx): Likewise.
18506         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18507         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
18508         (tree_vector_builder::new_binary_operation): Handle polynomial
18509         element counts.  Return false if we need to know the number
18510         of elements at compile time.
18511         * fold-const.c (fold_vec_perm): Punt if the number of elements
18512         isn't known at compile time.
18514 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18516         * vec-perm-indices.h (vec_perm_builder): Change element type
18517         from HOST_WIDE_INT to poly_int64.
18518         (vec_perm_indices::element_type): Update accordingly.
18519         (vec_perm_indices::clamp): Handle polynomial element_types.
18520         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
18521         (vec_perm_indices::all_in_range_p): Likewise.
18522         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
18523         than shwi trees.
18524         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
18525         polynomial vec_perm_indices element types.
18526         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
18527         * fold-const.c (fold_vec_perm): Likewise.
18528         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
18529         * tree-vect-generic.c (lower_vec_perm): Likewise.
18530         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18531         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
18532         element type to HOST_WIDE_INT.
18534 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18535             Alan Hayward  <alan.hayward@arm.com>
18536             David Sherwood  <david.sherwood@arm.com>
18538         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
18539         rather than an int.  Use plus_constant.
18540         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
18541         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
18543 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18544             Alan Hayward  <alan.hayward@arm.com>
18545             David Sherwood  <david.sherwood@arm.com>
18547         * calls.c (emit_call_1, expand_call): Change struct_value_size from
18548         a HOST_WIDE_INT to a poly_int64.
18550 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18551             Alan Hayward  <alan.hayward@arm.com>
18552             David Sherwood  <david.sherwood@arm.com>
18554         * calls.c (load_register_parameters): Cope with polynomial
18555         mode sizes.  Require a constant size for BLKmode parameters
18556         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
18557         forces a parameter to be padded at the lsb end in order to
18558         fill a complete number of words, require the parameter size
18559         to be ordered wrt UNITS_PER_WORD.
18561 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18562             Alan Hayward  <alan.hayward@arm.com>
18563             David Sherwood  <david.sherwood@arm.com>
18565         * reload1.c (spill_stack_slot_width): Change element type
18566         from unsigned int to poly_uint64_pod.
18567         (alter_reg): Treat mode sizes as polynomial.
18569 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18570             Alan Hayward  <alan.hayward@arm.com>
18571             David Sherwood  <david.sherwood@arm.com>
18573         * reload.c (complex_word_subreg_p): New function.
18574         (reload_inner_reg_of_subreg, push_reload): Use it.
18576 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18577             Alan Hayward  <alan.hayward@arm.com>
18578             David Sherwood  <david.sherwood@arm.com>
18580         * lra-constraints.c (process_alt_operands): Reject matched
18581         operands whose sizes aren't ordered.
18582         (match_reload): Refer to this check here.
18584 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18585             Alan Hayward  <alan.hayward@arm.com>
18586             David Sherwood  <david.sherwood@arm.com>
18588         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
18589         that the mode size is in the set {1, 2, 4, 8, 16}.
18591 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18592             Alan Hayward  <alan.hayward@arm.com>
18593             David Sherwood  <david.sherwood@arm.com>
18595         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
18596         Use plus_constant instead of gen_rtx_PLUS.
18598 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18599             Alan Hayward  <alan.hayward@arm.com>
18600             David Sherwood  <david.sherwood@arm.com>
18602         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
18603         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
18604         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
18605         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
18606         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
18607         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
18608         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
18609         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
18610         * config/i386/i386.c (ix86_push_rounding): ...this new function.
18611         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
18612         a poly_int64.
18613         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
18614         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
18615         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
18616         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
18617         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
18618         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
18619         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
18620         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
18621         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
18622         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
18623         function.
18624         * expr.c (emit_move_resolve_push): Treat the input and result
18625         of PUSH_ROUNDING as a poly_int64.
18626         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
18627         (emit_push_insn): Likewise.
18628         * lra-eliminations.c (mark_not_eliminable): Likewise.
18629         * recog.c (push_operand): Likewise.
18630         * reload1.c (elimination_effects): Likewise.
18631         * rtlanal.c (nonzero_bits1): Likewise.
18632         * calls.c (store_one_arg): Likewise.  Require the padding to be
18633         known at compile time.
18635 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18636             Alan Hayward  <alan.hayward@arm.com>
18637             David Sherwood  <david.sherwood@arm.com>
18639         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
18640         Use plus_constant instead of gen_rtx_PLUS.
18642 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18643             Alan Hayward  <alan.hayward@arm.com>
18644             David Sherwood  <david.sherwood@arm.com>
18646         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
18647         rather than an int.
18649 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18650             Alan Hayward  <alan.hayward@arm.com>
18651             David Sherwood  <david.sherwood@arm.com>
18653         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
18654         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
18655         via stack temporaries.  Treat the mode size as polynomial too.
18657 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18658             Alan Hayward  <alan.hayward@arm.com>
18659             David Sherwood  <david.sherwood@arm.com>
18661         * expr.c (expand_expr_real_2): When handling conversions involving
18662         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
18663         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
18664         as a poly_uint64 too.
18666 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18667             Alan Hayward  <alan.hayward@arm.com>
18668             David Sherwood  <david.sherwood@arm.com>
18670         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
18672 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18673             Alan Hayward  <alan.hayward@arm.com>
18674             David Sherwood  <david.sherwood@arm.com>
18676         * combine.c (can_change_dest_mode): Handle polynomial
18677         REGMODE_NATURAL_SIZE.
18678         * expmed.c (store_bit_field_1): Likewise.
18679         * expr.c (store_constructor): Likewise.
18680         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
18681         and polynomial REGMODE_NATURAL_SIZE.
18682         (gen_lowpart_common): Likewise.
18683         * reginfo.c (record_subregs_of_mode): Likewise.
18684         * rtlanal.c (read_modify_subreg_p): Likewise.
18686 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18687             Alan Hayward  <alan.hayward@arm.com>
18688             David Sherwood  <david.sherwood@arm.com>
18690         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
18691         numbers of elements.
18693 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18694             Alan Hayward  <alan.hayward@arm.com>
18695             David Sherwood  <david.sherwood@arm.com>
18697         * match.pd: Cope with polynomial numbers of vector elements.
18699 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18700             Alan Hayward  <alan.hayward@arm.com>
18701             David Sherwood  <david.sherwood@arm.com>
18703         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
18704         in a POINTER_PLUS_EXPR.
18706 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18707             Alan Hayward  <alan.hayward@arm.com>
18708             David Sherwood  <david.sherwood@arm.com>
18710         * omp-simd-clone.c (simd_clone_subparts): New function.
18711         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
18712         (ipa_simd_modify_function_body): Likewise.
18714 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18715             Alan Hayward  <alan.hayward@arm.com>
18716             David Sherwood  <david.sherwood@arm.com>
18718         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
18719         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
18720         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
18721         (expand_vector_condition, vector_element): Likewise.
18722         (subparts_gt): New function.
18723         (get_compute_type): Use subparts_gt.
18724         (count_type_subparts): Delete.
18725         (expand_vector_operations_1): Use subparts_gt instead of
18726         count_type_subparts.
18728 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18729             Alan Hayward  <alan.hayward@arm.com>
18730             David Sherwood  <david.sherwood@arm.com>
18732         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
18733         (vect_compile_time_alias): ...this new function.  Do the calculation
18734         on poly_ints rather than trees.
18735         (vect_prune_runtime_alias_test_list): Update call accordingly.
18737 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18738             Alan Hayward  <alan.hayward@arm.com>
18739             David Sherwood  <david.sherwood@arm.com>
18741         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
18742         numbers of units.
18743         (vect_schedule_slp_instance): Likewise.
18745 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18746             Alan Hayward  <alan.hayward@arm.com>
18747             David Sherwood  <david.sherwood@arm.com>
18749         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
18750         constant and extern definitions for variable-length vectors.
18751         (vect_get_constant_vectors): Note that the number of units
18752         is known to be constant.
18754 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18755             Alan Hayward  <alan.hayward@arm.com>
18756             David Sherwood  <david.sherwood@arm.com>
18758         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
18759         of units as polynomial.  Choose between WIDE and NARROW based
18760         on multiple_p.
18762 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18763             Alan Hayward  <alan.hayward@arm.com>
18764             David Sherwood  <david.sherwood@arm.com>
18766         * tree-vect-stmts.c (simd_clone_subparts): New function.
18767         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
18769 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18770             Alan Hayward  <alan.hayward@arm.com>
18771             David Sherwood  <david.sherwood@arm.com>
18773         * tree-vect-stmts.c (vectorizable_call): Treat the number of
18774         vectors as polynomial.  Use build_index_vector for
18775         IFN_GOMP_SIMD_LANE.
18777 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18778             Alan Hayward  <alan.hayward@arm.com>
18779             David Sherwood  <david.sherwood@arm.com>
18781         * tree-vect-stmts.c (get_load_store_type): Treat the number of
18782         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
18783         for variable-length vectors.
18784         (vectorizable_mask_load_store): Treat the number of units as
18785         polynomial, asserting that it is constant if the condition has
18786         already been enforced.
18787         (vectorizable_store, vectorizable_load): Likewise.
18789 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18790             Alan Hayward  <alan.hayward@arm.com>
18791             David Sherwood  <david.sherwood@arm.com>
18793         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
18794         of units as polynomial.  Punt if we can't tell at compile time
18795         which vector contains the final result.
18797 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18798             Alan Hayward  <alan.hayward@arm.com>
18799             David Sherwood  <david.sherwood@arm.com>
18801         * tree-vect-loop.c (vectorizable_induction): Treat the number
18802         of units as polynomial.  Punt on SLP inductions.  Use an integer
18803         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
18804         cast of such a series for variable-length floating-point
18805         reductions.
18807 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18808             Alan Hayward  <alan.hayward@arm.com>
18809             David Sherwood  <david.sherwood@arm.com>
18811         * tree.h (build_index_vector): Declare.
18812         * tree.c (build_index_vector): New function.
18813         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
18814         of units as polynomial, forcibly converting it to a constant if
18815         vectorizable_reduction has already enforced the condition.
18816         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
18817         to create a {1,2,3,...} vector.
18818         (vectorizable_reduction): Treat the number of units as polynomial.
18819         Choose vectype_in based on the largest scalar element size rather
18820         than the smallest number of units.  Enforce the restrictions
18821         relied on above.
18823 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18824             Alan Hayward  <alan.hayward@arm.com>
18825             David Sherwood  <david.sherwood@arm.com>
18827         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
18828         number of units as polynomial.
18830 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18831             Alan Hayward  <alan.hayward@arm.com>
18832             David Sherwood  <david.sherwood@arm.com>
18834         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
18835         * target.def (autovectorize_vector_sizes): Return the vector sizes
18836         by pointer, using vector_sizes rather than a bitmask.
18837         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
18838         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
18839         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
18840         Likewise.
18841         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
18842         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
18843         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
18844         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
18845         * omp-general.c (omp_max_vf): Likewise.
18846         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18847         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
18848         * tree-vect-loop.c (vect_analyze_loop): Likewise.
18849         * tree-vect-slp.c (vect_slp_bb): Likewise.
18850         * doc/tm.texi: Regenerate.
18851         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
18852         to a poly_uint64.
18853         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
18854         the vector size as a poly_uint64 rather than an unsigned int.
18855         (current_vector_size): Change from an unsigned int to a poly_uint64.
18856         (get_vectype_for_scalar_type): Update accordingly.
18857         * tree.h (build_truth_vector_type): Take the size and number of
18858         units as a poly_uint64 rather than an unsigned int.
18859         (build_vector_type): Add a temporary overload that takes
18860         the number of units as a poly_uint64 rather than an unsigned int.
18861         * tree.c (make_vector_type): Likewise.
18862         (build_truth_vector_type): Take the number of units as a poly_uint64
18863         rather than an unsigned int.
18865 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18866             Alan Hayward  <alan.hayward@arm.com>
18867             David Sherwood  <david.sherwood@arm.com>
18869         * target.def (get_mask_mode): Take the number of units and length
18870         as poly_uint64s rather than unsigned ints.
18871         * targhooks.h (default_get_mask_mode): Update accordingly.
18872         * targhooks.c (default_get_mask_mode): Likewise.
18873         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18874         * doc/tm.texi: Regenerate.
18876 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18877             Alan Hayward  <alan.hayward@arm.com>
18878             David Sherwood  <david.sherwood@arm.com>
18880         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
18881         * omp-general.c (omp_max_vf): Likewise.
18882         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
18883         (expand_omp_simd): Handle polynomial safelen.
18884         * omp-low.c (omplow_simd_context): Add a default constructor.
18885         (omplow_simd_context::max_vf): Change from int to poly_uint64.
18886         (lower_rec_simd_input_clauses): Update accordingly.
18887         (lower_rec_input_clauses): Likewise.
18889 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18890             Alan Hayward  <alan.hayward@arm.com>
18891             David Sherwood  <david.sherwood@arm.com>
18893         * tree-vectorizer.h (vect_nunits_for_cost): New function.
18894         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
18895         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
18896         (vect_analyze_slp_cost): Likewise.
18897         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
18898         (vect_model_load_cost): Likewise.
18900 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18901             Alan Hayward  <alan.hayward@arm.com>
18902             David Sherwood  <david.sherwood@arm.com>
18904         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
18905         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
18906         from an unsigned int * to a poly_uint64_pod *.
18907         (calculate_unrolling_factor): New function.
18908         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
18910 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18911             Alan Hayward  <alan.hayward@arm.com>
18912             David Sherwood  <david.sherwood@arm.com>
18914         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
18915         from an unsigned int to a poly_uint64.
18916         (_loop_vec_info::slp_unrolling_factor): Likewise.
18917         (_loop_vec_info::vectorization_factor): Change from an int
18918         to a poly_uint64.
18919         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
18920         (vect_get_num_vectors): New function.
18921         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
18922         (vect_get_num_copies): Use vect_get_num_vectors.
18923         (vect_analyze_data_ref_dependences): Change max_vf from an int *
18924         to an unsigned int *.
18925         (vect_analyze_data_refs): Change min_vf from an int * to a
18926         poly_uint64 *.
18927         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18928         than an unsigned HOST_WIDE_INT.
18929         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
18930         (vect_analyze_data_ref_dependence): Change max_vf from an int *
18931         to an unsigned int *.
18932         (vect_analyze_data_ref_dependences): Likewise.
18933         (vect_compute_data_ref_alignment): Handle polynomial vf.
18934         (vect_enhance_data_refs_alignment): Likewise.
18935         (vect_prune_runtime_alias_test_list): Likewise.
18936         (vect_shift_permute_load_chain): Likewise.
18937         (vect_supportable_dr_alignment): Likewise.
18938         (dependence_distance_ge_vf): Take the vectorization factor as a
18939         poly_uint64 rather than an unsigned HOST_WIDE_INT.
18940         (vect_analyze_data_refs): Change min_vf from an int * to a
18941         poly_uint64 *.
18942         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
18943         vfm1 as a poly_uint64 rather than an int.  Make the same change
18944         for the returned bound_scalar.
18945         (vect_gen_vector_loop_niters): Handle polynomial vf.
18946         (vect_do_peeling): Likewise.  Update call to
18947         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
18948         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
18949         be constant.
18950         * tree-vect-loop.c (vect_determine_vectorization_factor)
18951         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
18952         (vect_get_known_peeling_cost): Likewise.
18953         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
18954         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
18955         (vect_transform_loop): Likewise.  Use the lowest possible VF when
18956         updating the upper bounds of the loop.
18957         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
18958         rather than an int.
18959         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
18960         polynomial unroll factors.
18961         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
18962         (vect_make_slp_decision): Likewise.
18963         (vect_supported_load_permutation_p): Likewise, and polynomial
18964         vf too.
18965         (vect_analyze_slp_cost): Handle polynomial vf.
18966         (vect_slp_analyze_node_operations): Likewise.
18967         (vect_slp_analyze_bb_1): Likewise.
18968         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18969         than an unsigned HOST_WIDE_INT.
18970         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
18971         (vectorizable_load): Handle polynomial vf.
18972         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
18973         a poly_uint64.
18974         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
18976 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18977             Alan Hayward  <alan.hayward@arm.com>
18978             David Sherwood  <david.sherwood@arm.com>
18980         * match.pd: Handle bit operations involving three constants
18981         and try to fold one pair.
18983 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18985         * tree-vect-loop-manip.c: Include gimple-fold.h.
18986         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
18987         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
18988         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
18989         Add a path that uses a step of VF instead of 1, but disable it
18990         for now.
18991         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
18992         and niters_no_overflow parameters.  Update calls to
18993         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
18994         Create a new SSA name if the latter choses to use a ste other
18995         than zero, and return it via niters_vector_mult_vf_var.
18996         * tree-vect-loop.c (vect_transform_loop): Update calls to
18997         vect_do_peeling, vect_gen_vector_loop_niters and
18998         slpeel_make_loop_iterate_ntimes.
18999         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
19000         (vect_gen_vector_loop_niters): Update declarations after above changes.
19002 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
19004         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
19005         128-bit round to integer instructions.
19006         (ceil<mode>2): Likewise.
19007         (btrunc<mode>2): Likewise.
19008         (round<mode>2): Likewise.
19010 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
19012         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
19013         unaligned VSX load/store on P8/P9.
19014         (expand_block_clear): Allow the use of unaligned VSX
19015         load/store on P8/P9.
19017 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19019         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
19020         New function.
19021         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
19022         swap associated with both a load and a store.
19024 2018-01-02  Andrew Waterman  <andrew@sifive.com>
19026         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
19027         * config/riscv/riscv.md (clear_cache): Use it.
19029 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
19031         * web.c: Remove out-of-date comment.
19033 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19035         * expr.c (fixup_args_size_notes): Check that any existing
19036         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
19037         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
19038         (emit_single_push_insn): ...here.
19040 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19042         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
19043         (const_vector_encoded_nelts): New function.
19044         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
19045         (const_vector_int_elt, const_vector_elt): Declare.
19046         * emit-rtl.c (const_vector_int_elt_1): New function.
19047         (const_vector_elt): Likewise.
19048         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
19049         of CONST_VECTOR_ELT.
19051 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19053         * expr.c: Include rtx-vector-builder.h.
19054         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
19055         directly on the tree encoding.
19056         (const_vector_from_tree): Likewise.
19057         * optabs.c: Include rtx-vector-builder.h.
19058         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
19059         sequence of "u" values.
19060         * vec-perm-indices.c: Include rtx-vector-builder.h.
19061         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
19062         directly on the vec_perm_indices encoding.
19064 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19066         * doc/rtl.texi (const_vector): Describe new encoding scheme.
19067         * Makefile.in (OBJS): Add rtx-vector-builder.o.
19068         * rtx-vector-builder.h: New file.
19069         * rtx-vector-builder.c: Likewise.
19070         * rtl.h (rtx_def::u2): Add a const_vector field.
19071         (CONST_VECTOR_NPATTERNS): New macro.
19072         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
19073         (CONST_VECTOR_DUPLICATE_P): Likewise.
19074         (CONST_VECTOR_STEPPED_P): Likewise.
19075         (CONST_VECTOR_ENCODED_ELT): Likewise.
19076         (const_vec_duplicate_p): Check for a duplicated vector encoding.
19077         (unwrap_const_vec_duplicate): Likewise.
19078         (const_vec_series_p): Check for a non-duplicated vector encoding.
19079         Say that the function only returns true for integer vectors.
19080         * emit-rtl.c: Include rtx-vector-builder.h.
19081         (gen_const_vec_duplicate_1): Delete.
19082         (gen_const_vector): Call gen_const_vec_duplicate instead of
19083         gen_const_vec_duplicate_1.
19084         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
19085         (gen_const_vec_duplicate): Use rtx_vector_builder.
19086         (gen_const_vec_series): Likewise.
19087         (gen_rtx_CONST_VECTOR): Likewise.
19088         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
19089         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
19090         Build a new vector rather than modifying a CONST_VECTOR in-place.
19091         (handle_special_swappables): Update call accordingly.
19092         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
19093         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
19094         Build a new vector rather than modifying a CONST_VECTOR in-place.
19095         (handle_special_swappables): Update call accordingly.
19097 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19099         * simplify-rtx.c (simplify_const_binary_operation): Use
19100         CONST_VECTOR_ELT instead of XVECEXP.
19102 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19104         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
19105         the selector elements to be different from the data elements
19106         if the selector is a VECTOR_CST.
19107         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
19108         ssizetype for the selector.
19110 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19112         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
19113         before testing each element individually.
19114         * tree-vect-generic.c (lower_vec_perm): Likewise.
19116 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19118         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
19119         * selftest-run-tests.c (selftest::run_tests): Call it.
19120         * vector-builder.h (vector_builder::operator ==): New function.
19121         (vector_builder::operator !=): Likewise.
19122         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
19123         (vec_perm_indices::all_from_input_p): New function.
19124         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
19125         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
19126         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
19127         instead of reading the VECTOR_CST directly.  Detect whether both
19128         vector inputs are the same before constructing the vec_perm_indices,
19129         and update the number of inputs argument accordingly.  Use the
19130         utility functions added above.  Only construct sel2 if we need to.
19132 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19134         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
19135         the broadcast of the low byte.
19136         (expand_mult_highpart): Use an explicit encoding for the permutes.
19137         * optabs-query.c (can_mult_highpart_p): Likewise.
19138         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
19139         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19140         (vectorizable_bswap): Likewise.
19141         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
19142         explicit encoding for the power-of-2 permutes.
19143         (vect_permute_store_chain): Likewise.
19144         (vect_grouped_load_supported): Likewise.
19145         (vect_permute_load_chain): Likewise.
19147 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19149         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
19150         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
19151         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
19152         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
19153         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
19154         (vect_gen_perm_mask_any): Likewise.
19156 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19158         * int-vector-builder.h: New file.
19159         * vec-perm-indices.h: Include int-vector-builder.h.
19160         (vec_perm_indices): Redefine as an int_vector_builder.
19161         (auto_vec_perm_indices): Delete.
19162         (vec_perm_builder): Redefine as a stand-alone class.
19163         (vec_perm_indices::vec_perm_indices): New function.
19164         (vec_perm_indices::clamp): Likewise.
19165         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
19166         (vec_perm_indices::new_vector): New function.
19167         (vec_perm_indices::new_expanded_vector): Update for new
19168         vec_perm_indices class.
19169         (vec_perm_indices::rotate_inputs): New function.
19170         (vec_perm_indices::all_in_range_p): Operate directly on the
19171         encoded form, without computing elided elements.
19172         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
19173         encoding.  Update for new vec_perm_indices class.
19174         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
19175         the given vec_perm_builder.
19176         (expand_vec_perm_var): Update vec_perm_builder constructor.
19177         (expand_mult_highpart): Use vec_perm_builder instead of
19178         auto_vec_perm_indices.
19179         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
19180         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
19181         or double series encoding as appropriate.
19182         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
19183         vec_perm_indices instead of auto_vec_perm_indices.
19184         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
19185         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
19186         (vect_permute_store_chain): Likewise.
19187         (vect_grouped_load_supported): Likewise.
19188         (vect_permute_load_chain): Likewise.
19189         (vect_shift_permute_load_chain): Likewise.
19190         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
19191         (vect_transform_slp_perm_load): Likewise.
19192         (vect_schedule_slp_instance): Likewise.
19193         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19194         (vectorizable_mask_load_store): Likewise.
19195         (vectorizable_bswap): Likewise.
19196         (vectorizable_store): Likewise.
19197         (vectorizable_load): Likewise.
19198         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
19199         vec_perm_indices instead of auto_vec_perm_indices.  Use
19200         tree_to_vec_perm_builder to read the vector from a tree.
19201         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
19202         vec_perm_builder instead of a vec_perm_indices.
19203         (have_whole_vector_shift): Use vec_perm_builder and
19204         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
19205         truncation to calc_vec_perm_mask_for_shift.
19206         (vect_create_epilog_for_reduction): Likewise.
19207         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
19208         from auto_vec_perm_indices to vec_perm_indices.
19209         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
19210         instead of changing individual elements.
19211         (aarch64_vectorize_vec_perm_const): Use new_vector to install
19212         the vector in d.perm.
19213         * config/arm/arm.c (expand_vec_perm_d::perm): Change
19214         from auto_vec_perm_indices to vec_perm_indices.
19215         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
19216         instead of changing individual elements.
19217         (arm_vectorize_vec_perm_const): Use new_vector to install
19218         the vector in d.perm.
19219         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
19220         Update vec_perm_builder constructor.
19221         (rs6000_expand_interleave): Likewise.
19222         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
19223         (rs6000_expand_interleave): Likewise.
19225 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19227         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
19228         to qimode could truncate the indices.
19229         * optabs.c (expand_vec_perm_var): Likewise.
19231 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19233         * Makefile.in (OBJS): Add vec-perm-indices.o.
19234         * vec-perm-indices.h: New file.
19235         * vec-perm-indices.c: Likewise.
19236         * target.h (vec_perm_indices): Replace with a forward class
19237         declaration.
19238         (auto_vec_perm_indices): Move to vec-perm-indices.h.
19239         * optabs.h: Include vec-perm-indices.h.
19240         (expand_vec_perm): Delete.
19241         (selector_fits_mode_p, expand_vec_perm_var): Declare.
19242         (expand_vec_perm_const): Declare.
19243         * target.def (vec_perm_const_ok): Replace with...
19244         (vec_perm_const): ...this new hook.
19245         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
19246         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
19247         * doc/tm.texi: Regenerate.
19248         * optabs.def (vec_perm_const): Delete.
19249         * doc/md.texi (vec_perm_const): Likewise.
19250         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
19251         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
19252         expand_vec_perm for constant permutation vectors.  Assert that
19253         the mode of variable permutation vectors is the integer equivalent
19254         of the mode that is being permuted.
19255         * optabs-query.h (selector_fits_mode_p): Declare.
19256         * optabs-query.c: Include vec-perm-indices.h.
19257         (selector_fits_mode_p): New function.
19258         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
19259         is defined, instead of checking whether the vec_perm_const_optab
19260         exists.  Use targetm.vectorize.vec_perm_const instead of
19261         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
19262         fit in the vector mode before using a variable permute.
19263         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
19264         vec_perm_indices instead of an rtx.
19265         (expand_vec_perm): Replace with...
19266         (expand_vec_perm_const): ...this new function.  Take the selector
19267         as a vec_perm_indices rather than an rtx.  Also take the mode of
19268         the selector.  Update call to shift_amt_for_vec_perm_mask.
19269         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
19270         Use vec_perm_indices::new_expanded_vector to expand the original
19271         selector into bytes.  Check whether the indices fit in the vector
19272         mode before using a variable permute.
19273         (expand_vec_perm_var): Make global.
19274         (expand_mult_highpart): Use expand_vec_perm_const.
19275         * fold-const.c: Includes vec-perm-indices.h.
19276         * tree-ssa-forwprop.c: Likewise.
19277         * tree-vect-data-refs.c: Likewise.
19278         * tree-vect-generic.c: Likewise.
19279         * tree-vect-loop.c: Likewise.
19280         * tree-vect-slp.c: Likewise.
19281         * tree-vect-stmts.c: Likewise.
19282         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
19283         Delete.
19284         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
19285         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
19286         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
19287         (aarch64_vectorize_vec_perm_const): ...this new function.
19288         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19289         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19290         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
19291         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
19292         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19293         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19294         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
19295         into...
19296         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
19297         check for NEON modes.
19298         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
19299         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
19300         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
19301         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
19302         into...
19303         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
19304         the old VEC_PERM_CONST conditions.
19305         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
19306         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
19307         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
19308         (ia64_vectorize_vec_perm_const_ok): Merge into...
19309         (ia64_vectorize_vec_perm_const): ...this new function.
19310         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
19311         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
19312         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
19313         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
19314         * config/mips/mips.c (mips_expand_vec_perm_const)
19315         (mips_vectorize_vec_perm_const_ok): Merge into...
19316         (mips_vectorize_vec_perm_const): ...this new function.
19317         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
19318         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
19319         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
19320         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
19321         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
19322         (rs6000_expand_vec_perm_const): Delete.
19323         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
19324         Delete.
19325         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19326         (altivec_expand_vec_perm_const_le): Take each operand individually.
19327         Operate on constant selectors rather than rtxes.
19328         (altivec_expand_vec_perm_const): Likewise.  Update call to
19329         altivec_expand_vec_perm_const_le.
19330         (rs6000_expand_vec_perm_const): Delete.
19331         (rs6000_vectorize_vec_perm_const_ok): Delete.
19332         (rs6000_vectorize_vec_perm_const): New function.
19333         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
19334         an element count and rtx array.
19335         (rs6000_expand_extract_even): Update call accordingly.
19336         (rs6000_expand_interleave): Likewise.
19337         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
19338         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
19339         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
19340         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
19341         (rs6000_expand_vec_perm_const): Delete.
19342         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19343         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19344         (altivec_expand_vec_perm_const_le): Take each operand individually.
19345         Operate on constant selectors rather than rtxes.
19346         (altivec_expand_vec_perm_const): Likewise.  Update call to
19347         altivec_expand_vec_perm_const_le.
19348         (rs6000_expand_vec_perm_const): Delete.
19349         (rs6000_vectorize_vec_perm_const_ok): Delete.
19350         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
19351         reference to the SPE evmerge intructions.
19352         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
19353         an element count and rtx array.
19354         (rs6000_expand_extract_even): Update call accordingly.
19355         (rs6000_expand_interleave): Likewise.
19356         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
19357         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
19358         new function.
19359         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19361 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19363         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
19364         vector mode and that that mode matches the mode of the data
19365         being permuted.
19366         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
19367         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
19368         directly using expand_vec_perm_1 when forcing selectors into
19369         registers.
19370         (expand_vec_perm_var): New function, split out from expand_vec_perm.
19372 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19374         * optabs-query.h (can_vec_perm_p): Delete.
19375         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
19376         * optabs-query.c (can_vec_perm_p): Split into...
19377         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
19378         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
19379         particular selector is valid.
19380         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
19381         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
19382         (vect_grouped_load_supported): Likewise.
19383         (vect_shift_permute_load_chain): Likewise.
19384         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
19385         (vect_transform_slp_perm_load): Likewise.
19386         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19387         (vectorizable_bswap): Likewise.
19388         (vect_gen_perm_mask_checked): Likewise.
19389         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
19390         implementations of variable permutation vectors into account
19391         when deciding which selector to use.
19392         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
19393         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
19394         with a false third argument.
19395         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
19396         to test whether the constant selector is valid and can_vec_perm_var_p
19397         to test whether a variable selector is valid.
19399 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19401         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
19402         * optabs-query.c (can_vec_perm_p): Likewise.
19403         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
19404         instead of vec_perm_indices.
19405         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
19406         (vect_gen_perm_mask_checked): Likewise,
19407         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
19408         (vect_gen_perm_mask_checked): Likewise,
19410 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19412         * optabs-query.h (qimode_for_vec_perm): Declare.
19413         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
19414         (qimode_for_vec_perm): ...this new function.
19415         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
19417 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
19419         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
19420         does not have a conditional at the top.
19422 2018-01-02  Richard Biener  <rguenther@suse.de>
19424         * ipa-inline.c (big_speedup_p): Fix expression.
19426 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
19428         PR target/81616
19429         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
19430         for generic 4->6.
19432 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
19434         PR target/81616
19435         Generic tuning.
19436         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
19437         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
19438         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
19439         cond_taken_branch_cost 3->4.
19441 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
19443         PR tree-optimization/83581
19444         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
19445         TODO_cleanup_cfg if any changes have been made.
19447         PR middle-end/83608
19448         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
19449         convert_modes if target mode has the right side, but different mode
19450         class.
19452         PR middle-end/83609
19453         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
19454         last argument when extracting from CONCAT.  If either from_real or
19455         from_imag is NULL, use expansion through memory.  If result is not
19456         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
19457         the parts directly to inner mode, if even that fails, use expansion
19458         through memory.
19460         PR middle-end/83623
19461         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
19462         check for bswap in mode rather than HImode and use that in expand_unop
19463         too.
19465 Copyright (C) 2018 Free Software Foundation, Inc.
19467 Copying and distribution of this file, with or without modification,
19468 are permitted in any medium without royalty provided the copyright
19469 notice and this notice are preserved.