* doc/md.texi (define_subst): Document how multiple occurrences of
[official-gcc.git] / gcc / ChangeLog
blob1d27acad8b736e7aaa5361c7b6498fe924fbf22c
1 2018-07-08  Paul Koning  <ni1d@arrl.net>
3         * doc/md.texi (define_subst): Document how multiple occurrences of
4         the same argument in the replacement pattern are handled.
6 2018-07-11  Paul Koning  <ni1d@arrl.net>
8         * doc/extend.texi (Common Variable Attributes): Move "mode" into
9         alphabetical order.
10         (Common Type Attributes): Add "mode" attribute.
12 2018-07-11  Jan Hubicka  <hubicka@ucw.cz>
14         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
15         stream DECL_ORIGINAL_TYPE.
16         (DFS::DFS_write_tree_body): Drop hack handling local external decls.
17         (hash_tree): Do not walk DECL_ORIGINAL_TYPE.
18         * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
19         Do not walk original type.
20         * tree-streamer-out.c (streamer_write_chain): Drop hack handling
21         external decls.
22         (write_ts_decl_non_common_tree_pointers): Do not stream
23         DECL_ORIGINAL_TYPE
24         * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
25         (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.
27 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
29         * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
30         thread twice from the same starting edge.
32 2018-07-11  Aldy Hernandez  <aldyh@redhat.com>
34         * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
35         * gimple.c (gimple_call_nonnull_result_p): ...here...
36         (gimple_call_nonnull_arg): ...and here.
37         * gimple.h (gimple_call_nonnull_result_p): New.
38         (gimple_call_nonnull_arg): New.
40 2018-07-11  Richard Earnshaw  <rearnsha@arm.com>
42         * config/arm/arm-cpus.in: Move information from fpu field of each
43         cpu definition to the isa field.
44         * config/arm/parsecpu.awk (fpu): Delete match rule.
45         (gen_comm_data): Don't add bits from the CPU's FPU entry.
47 2018-07-11  Richard Biener  <rguenther@suse.de>
49         PR debug/86457
50         * dwarf2out.c (init_sections_and_labels): Use
51         output_asm_line_debug_info consistently.
52         (dwarf2out_early_finish): Likewise.
53         (dwarf2out_finish): Remove DW_AT_stmt_list from early generated
54         type units.
56 2018-07-11  Richard Biener  <rguenther@suse.de>
58         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
59         Rework father_bb setting in a way to avoid propagating constants
60         multiple times on a loop body.
62 2018-07-10  Mark Wielaard  <mark@klomp.org>
64         PR debug/86459
65         * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.
67 2018-07-10  Richard Biener  <rguenther@suse.de>
69         * hash-map.h (hash_map::iterator::operator*): Return
70         references to key and value.
72 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
74         PR c++/86443
75         * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
76         to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
77         BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
78         (gimplify_omp_for): For composite loops, move outer
79         OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
80         OMP_FOR/OMP_SIMD if there are any non-trivial wrappers.  For class
81         iterators add any needed clauses.  Allow OMP_FOR_ORIG_DECLS to contain
82         TREE_LIST for both the original class iterator and the "last" helper
83         var.  Gimplify OMP_FOR_PRE_BODY before the outermost composite
84         loop, remember has_decl_expr from outer composite loops for the
85         innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
87 2018-07-09  Martin Sebor  <msebor@redhat.com>
89         PR middle-end/77357
90         PR middle-end/86428
91         * builtins.c (c_strlen): Avoid out-of-bounds warnings when
92         accessing implicitly initialized array elements.
93         * expr.c (string_constant): Handle string initializers of
94         character arrays within aggregates.
95         * gimple-fold.c (fold_array_ctor_reference): Add argument.
96         Store element offset.  As a special case, handle zero size.
97         (fold_nonarray_ctor_reference): Same.
98         (fold_ctor_reference): Add argument.  Store subobject offset.
99         * gimple-fold.h (fold_ctor_reference): Add argument.
101 2018-07-09  Paul Koning  <ni1d@arrl.net>
103         * config/pdp11/pdp11.c (pdp11_addr_cost): New function.
104         (pdp11_insn_cost): New function.
105         (pdp11_md_asm_adjust): New function.
106         (TARGET_INVALID_WITHIN_DOLOOP): Define.
107         (pdp11_rtx_costs): Update to match machine better.
108         (output_addr_const_pdp11): Correct format mismatch warnings.
109         * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
110         * config/pdp11/pdp11.md: General change to add base_cost and/or
111         length attributes for use by new pdp11_insn_cost function.
112         (MIN_BRANCH): Correct definition.
113         (MIN_SOB): Ditto.
114         (doloop_end): Use standard pattern name for looping pattern.
115         (doloop_end_nocc): New.
116         (movsf): Add another constraint alternative.
117         (zero_extendqihi2): Add constraint alternatives for not in place
118         extend.
119         (zero_extendhisi2): Remove.
120         (shift patterns): Add CC handling variants.
121         (bswaphi2): New.
122         (bswapsi2): New.
123         (rothi3): New.
124         (define_peephole2): New peephole to recognize mov that sets CC for
125         subsequent test.
127 2018-07-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
129         * config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
130         SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
131         wi::add.
133 2018-07-09  Jakub Jelinek  <jakub@redhat.com>
135         PR c/86420
136         * real.c (real_nextafter): Return true if result is denormal.
138 2018-07-09  Martin Liska  <mliska@suse.cz>
140         * common.opt: Add back wrongly removed attribute.
142 2018-07-09  Richard Biener  <rguenther@suse.de>
144         PR debug/86413
145         * dwarf2out.c (gen_block_die): For an early generated DIE
146         always output high/low PC attributes.
148 2018-07-09  Tom de Vries  <tdevries@suse.de>
150         * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
151         * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
152         onto VAR_DECL with abstract origin.
154 2018-07-07  Jim Wilson  <jimw@sifive.com>
156         * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.
158 2018-07-07  Tom de Vries  <tdevries@suse.de>
160         * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
162 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
164         * tree-vrp.c (vrp_int_const_binop): Change overflow type to
165         overflow_type.
166         (combine_bound): Use wide-int overflow calculation instead of
167         rolling our own.
168         * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
169         overflow_type.
170         * fold-const.c (int_const_binop_2): Same.
171         (extract_muldiv_1): Same.
172         (fold_div_compare): Same.
173         (fold_abs_const): Same.
174         * match.pd: Same.
175         * poly-int.h (add): Same.
176         (sub): Same.
177         (neg): Same.
178         (mul): Same.
179         * predict.c (predict_iv_comparison): Same.
180         * profile-count.c (slow_safe_scale_64bit): Same.
181         * simplify-rtx.c (simplify_const_binary_operation): Same.
182         * tree-chrec.c (tree_fold_binomial): Same.
183         * tree-data-ref.c (split_constant_offset_1): Same.
184         * tree-if-conv.c (idx_within_array_bound): Same.
185         * tree-scalar-evolution.c (iv_can_overflow_p): Same.
186         * tree-ssa-phiopt.c (minmax_replacement): Same.
187         * tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
188         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
189         * vr-values.c (vr_values::adjust_range_with_scev): Same.
190         * wide-int.cc (wi::add_large): Same.
191         (wi::mul_internal): Same.
192         (wi::sub_large): Same.
193         (wi::divmod_internal): Same.
194         * wide-int.h: Change overflow type to overflow_type for neg, add,
195         mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
196         mod_trunc, mod_ceil, mod_round, add_large, sub_large,
197         mul_internal, divmod_internal.
198         (overflow_type): New enum.
199         (accumulate_overflow): New.
201 2018-07-06  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
203         * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
204         (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.
206 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
208         * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
209         argument is checked for zero before entering loop, avoid checking again.
211 2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>
213         * gimplify.h (generic_expr_could_trap_p): Set as global function.
214         * gimplify.h (generic_expr_could_trap_p): Likwise.
215         * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
217 2018-07-06  Jakub Jelinek  <jakub@redhat.com>
219         PR tree-optimization/86401
220         * fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
221         ((A & N) + B) & M -> (A + B) & M etc. optimization into ...
222         (fold_bit_and_mask): ... here.  New helper function for match.pd.
223         * fold-const.h (fold_bit_and_mask): Declare.
224         * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.
226 2018-07-06  Peter Bergner  <bergner@linux.ibm.com>
228         PR target/86324
229         * target.def (translate_mode_attribute): New hook.
230         * targhooks.h (default_translate_mode_attribute): Declare.
231         * targhooks.c (default_translate_mode_attribute): New function.
232         * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
233         * doc/tm.texi: Regenerate.
234         * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
235         (rs6000_translate_mode_attribute): New function.
237 2018-07-06  Paul Koning  <ni1d@arrl.net>
239         * doc/md.texi (define_split): Document DONE and FAIL.
240         (define_peephole2): Ditto.
242 2018-07-05  Jeff Law  <law@redhat.com>
244         PR tree-optimization/86010
245         * tree-ssa-dse.c (compute_trims): More aggressively trim at
246         both the head and tail of mem* and str* calls.
248 2018-07-05  Jim Wilson  <jimw@sifive.com>
250         * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
252 2018-07-05  Indu Bhagat  <indu.bhagat@oracle.com> 
254         * config/aarch64/aarch64-simd.md: correct flags text for 
255         MIN_EXPR replacement.
257 2018-07-05  James Clarke  <jrtc27@jrtc27.com>
259         * configure: Regenerated.
261 2018-07-05  Carl Love  <cel@us.ibm.com>
263         * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
264         float argument to VSX_BUILTIN_DOUBLEH_V4SF.
265         Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
266         VSX_BUILTIN_DOUBLEL_V4SF.
268 2018-07-05  Martin Sebor  <msebor@redhat.com>
270         PR c++/86400
271         * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
272         than its domain to compute its the upper bound of a char array.
274 2018-07-05  Nathan Sidwell  <nathan@acm.org>
276         Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
277         * doc/cpp.texi: Update comment.
278         * doc/tm.texi: Rebuilt.
279         * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
280         (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
281         * doc/extend.texi (Backwards Compatibility): Clarify it is system
282         headers affected by extern "C".
283         * system.h: Poison NO_IMPLICIT_EXTERN_C.
284         * config/alpha/alpha.h, config/arm/uclinux-elf.h,
285         config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
286         config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
287         config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
288         config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
289         config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
290         config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
291         config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
292         config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
293         config/sparc/openbsd64.h, config/sparc/sp-elf.h,
294         config/sparc/sp64-elf.h, config/spu/spu.h,
295         config/stormy16/stormy16.h, config/v850/v850.h,
296         config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
297         define NO_IMPLICIT_EXTERN_C.
298         * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.
300 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
302         PR target/84711
303         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
304         instead of GET_MODE_SIZE when comparing Units.
306 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
308         PR target/84711
309         * rtlanal.c (set_noop_p): Constrain on mode change,
310         include hard-reg-set.h
312 2018-07-05  Tamar Christina  <tamar.christina@arm.com>
314         * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size.
316 2018-07-05  Jakub Jelinek  <jakub@redhat.com>
318         Revert
319         2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
321         PR sanitizer/84250
322         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
323         libasan.
324         * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
326 2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
328         PR sanitizer/84250
329         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
330         libasan.
331         * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
333 2018-07-04  Eric Botcazou  <ebotcazou@adacore.com>
335         PR middle-end/86380
336         * expmed.c (choose_multiplier): Fix incorrect comparison with mask.
338 2018-07-04  Aldy Hernandez  <aldyh@redhat.com>
340         * tree-vrp.c (extract_range_from_binary_expr_1): Initialize
341         neg_*_op* variables.
343 2018-07-04  Martin Liska  <mliska@suse.cz>
345         * tree-switch-conversion.c: Define
346         max_ratio_for_speed and max_ratio_for_size constants.
348 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
349             Martin Liska  <mliska@suse.cz>
351         PR middle-end/66240
352         PR target/45996
353         PR c/84100
354         * common.opt: Rename align options with 'str_' prefix.
355         * common/config/i386/i386-common.c (set_malign_value): New
356         function.
357         (ix86_handle_option): Use it to set -falign-* options/
358         * config/aarch64/aarch64-protos.h (struct tune_params): Change
359         type from int to string.
360         * config/aarch64/aarch64.c: Update default values from int
361         to string.
362         * config/alpha/alpha.c (alpha_override_options_after_change):
363         Likewise.
364         * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
365         * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
366         max skip conditionally.
367         * config/i386/freebsd.h (SUBALIGN_LOG): New.
368         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
369         max skip conditionally.
370         * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
371         max skip conditionally.
372         * config/i386/gnu-user.h (SUBALIGN_LOG): New.
373         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
374         max skip conditionally.
375         * config/i386/i386.c (struct ptt): Change type from int to
376         string.
377         (ix86_default_align): Set default values.
378         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
379         max skip conditionally.
380         * config/i386/iamcu.h (SUBALIGN_LOG): New.
381         (ASM_OUTPUT_MAX_SKIP_ALIGN):
382         * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
383         * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
384         max skip conditionally.
385         * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
386         (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
387         * config/i386/x86-64.h (SUBALIGN_LOG): New.
388         (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
389         max skip conditionally.
390         (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
391         * config/ia64/ia64.c (ia64_option_override): Set default values
392         for alignment options.
393         * config/m68k/m68k.c: Handle new str_align_* options.
394         * config/mips/mips.c (mips_set_compression_mode): Change
395         type of constants.
396         (mips_option_override): Set default values for options.
397         * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
398         Likewise.
399         * config/rs6000/rs6000.c (rs6000_option_override_internal):
400         Likewise.
401         * config/rx/rx.c (rx_option_override): Likewise.
402         * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
403         (LABEL_ALIGN): Use align_labels_log.
404         (LOOP_ALIGN): Use align_loops_align.
405         * config/s390/s390.c (s390_asm_output_function_label): Use new
406         macros.
407         * config/sh/sh.c (sh_override_options_after_change):
408         Change type of constants.
409         * config/spu/spu.c (spu_sched_init): Likewise.
410         * config/sparc/sparc.c (sparc_option_override): Set default
411         values for options.
412         * config/visium/visium.c (visium_option_override): Likewise.
413         * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
414         emit p2align format with last argument if it's not needed.
415         * doc/invoke.texi: Document extended format of -falign-*.
416         * final.c: Use align_labels alignment.
417         * flags.h (struct target_flag_state): Change type to use
418         align_flags.
419         (struct align_flags_tuple): New.
420         (struct align_flags): Likewise.
421         (align_loops_log): Redefine macro to use new types.
422         (align_loops_max_skip): Redefine macro to use new types.
423         (align_jumps_log): Redefine macro to use new types.
424         (align_jumps_max_skip): Redefine macro to use new types.
425         (align_labels_log): Redefine macro to use new types.
426         (align_labels_max_skip): Redefine macro to use new types.
427         (align_functions_log): Redefine macro to use new types.
428         (align_loops): Redefine macro to use new types.
429         (align_jumps): Redefine macro to use new types.
430         (align_labels): Redefine macro to use new types.
431         (align_functions): Redefine macro to use new types.
432         (align_functions_max_skip): Redefine macro to use new types.
433         (align_loops_value): New macro.
434         (align_jumps_value): New macro.
435         (align_labels_value): New macro.
436         (align_functions_value): New macro.
437         * function.c (invoke_set_current_function_hook): Propagate
438         alignment values from flags to global variables default in
439         topleev.h.
440         * ipa-icf.c (sem_function::equals_wpa): Use
441         cl_optimization_option_eq instead of memcmp.
442         * lto-streamer.h (cl_optimization_stream_out): Support streaming
443         of string types.
444         (cl_optimization_stream_in): Likewise.
445         * optc-save-gen.awk: Support strings in cl_optimization.
446         * opth-gen.awk: Likewise.
447         * opts.c (finish_options): Remove error checking of invalid
448         value ranges.
449         (MAX_CODE_ALIGN): Remove.
450         (MAX_CODE_ALIGN_VALUE): Likewise.
451         (parse_and_check_align_values): New function.
452         (check_alignment_argument): Likewise.
453         (common_handle_option): Use check_alignment_argument.
454         * opts.h (parse_and_check_align_values): Declare.
455         * toplev.c (init_alignments): Remove.
456         (read_log_maxskip): New.
457         (parse_N_M): Likewise.
458         (parse_alignment_opts): Likewise.
459         (backend_init_target): Remove usage of init_alignments.
460         * toplev.h (parse_alignment_opts): Declare.
461         * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
462         argument.
463         * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
464         * tree.c (cl_option_hasher::equal): New.
465         * varasm.c: Use new global macros.
467 2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
469         * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
470         Use a simpler align directive also if MAXSKIP = ALIGN-1.
471         * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
472         * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
473         * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
474         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
475         * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
476         is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
477         define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
478         * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
479         * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
480         * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
481         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
483 2018-07-04  Martin Liska  <mliska@suse.cz>
484             Jonathan Wakely  <jwakely@redhat.com>
486         * coverage.c: Use correct type.
487         * doc/invoke.texi: Language correction.
489 2018-07-03  H.J. Lu  <hongjiu.lu@intel.com>
491         PR target/85620
492         * config/i386/i386.c (rest_of_insert_endbranch): Also generate
493         ENDBRANCH for non-tail call which may return via indirect branch.
494         * doc/extend.texi: Document indirect_return attribute.
496 2018-07-03  Martin Sebor  <msebor@redhat.com>
498         PR tree-optimization/86274
499         * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
500         precondition.
501         (format_floating): Correct handling of infinities and NaNs.
503 2018-07-03  Martin Sebor  <msebor@redhat.com>
505         * print-tree.c (print_real_cst): New function.
506         (print_node_brief): Call it.
507         (print_node): Ditto.
509 2018-07-03  Jeff Law  <law@redhat.com>
511         * config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
512         into a single pattern.
514         * config/h8300/h8300.md (ors code_iterator): New.
515         (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
516         a single pattern and single splitter.
517         (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
518         (iorqi3_1, xorqi3_1): Likewise.
519         (iorqi3, xorqi3 expanders): Similarly.
521         * config/h8300/h8300.md (movmd_internal_normal): Consolidated with
522         (movmd_internal) into a single pattern using the P mode iterator.
523         (movmd splitters): Similarly.
524         (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
525         (movsd splitters): Similarly.
527         * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
528         ADDB, ADDW and ADDL into a single ADD attribute which selects the
529         right table based on the size of the operand.
530         * config/h8300/h8300.md (length_table): Corresponding changes. All
531         references to "addb", "addw" and "addl" changed to "add".
532         (btst patterns): Merge two variants into a single pattern.
533         (tstqi, tsthi): Likewise.
534         (addhi3_incdec, addsi3_incdec): Likewise.
535         (subhi3_h8300hs, subsi3_h8300hs): Likewise.
536         (mulhi3, mulsi3): Likewise.
537         (udivhi3, udivsi3): Likewise.
538         (divhi3, divsi3): Likewise.
539         (andorqi3, andorhi3, andorsi3): Likewise.
541 2018-07-03  Uros Bizjak  <ubizjak@gmail.com>
543         PR target/85694
544         * config/i386/sse.md (uavg<mode>3_ceil): New expander.
545         (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.
547 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
549         PR tree-optimization/85694
550         * config/aarch64/iterators.md (HADD, RHADD): New int iterators.
551         (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and
552         UNSPEC_URHADD.
553         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor)
554         (<u>avg<mode>3_ceil): New patterns.
556 2018-07-03  David Malcolm  <dmalcolm@redhat.com>
558         * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from
559         scan-tree-dump directive.
560         * gcc.dg/vect/slp-perm-2.c: Likewise.
561         * gcc.dg/vect/slp-perm-3.c: Likewise.
562         * gcc.dg/vect/slp-perm-5.c: Likewise.
563         * gcc.dg/vect/slp-perm-6.c: Likewise.
564         * gcc.dg/vect/slp-perm-7.c: Likewise.
565         * gcc.dg/vect/slp-perm-8.c: Likewise.
567 2018-07-03  Marek Polacek  <polacek@redhat.com>
569         PR middle-end/86202
570         * gimple-fold.c (size_must_be_zero_p): Check the type of the size.
572 2018-07-03  Richard Biener  <rguenther@suse.de>
574         PR ipa/86389
575         * tree-ssa-structalias.c (find_func_clobbers): Properly
576         handle indirect calls.
578 2018-07-03  Jeff Law  <law@redhat.com>
580         * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators.
581         (shifts): New code iterator.
582         (movqi, movhi, movsi, movsf expanders): Consolidate into a single
583         expander.  Fix HImode handling on H8/SX.
584         (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander.
585         (subqi3, subhi3, subsi3 expanders): Likewise.
586         (andqi3, andhi3, andsi3 expanders): Likewise.
587         (iorqi3, iorhi3, iorsi3 expanders): Likewise.
588         (xorqi3, xorhi3, xorsi3 expanders): Likewise.
589         (negqi2, neghi2, negsi2, negsf2 expanders): Likewise.
590         (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
591         (zero_extendqihi2, zero_extendqisi2): Likewise.
592         (extendqihi2, extendqisi2): Likewise.
593         (rotlqi3, rotlhi3, rotlsi3): Likewise.
594         (neghi2_h8300, negsi2_h8300): Likewise for these patterns.
595         (rotlqi3_1, rotlhi3_1): Likewise.
596         (logicalhi3_sn, logicalsi3_sn): Likewise.
597         (logicalhi3, logicalsi3): Likewise.
599 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
601         * tree-vect-patterns.c (vect_recog_rotate_pattern)
602         (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
603         (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast)
604         (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector
605         type to append_pattern_def_seq instead of creating a stmt_vec_info
606         directly.
607         (build_mask_conversion): Likewise.  Remove vinfo argument.
608         (vect_add_conversion_to_patterm): Likewise, renaming to...
609         (vect_add_conversion_to_pattern): ...this.
610         (vect_recog_mask_conversion_pattern): Update call to
611         build_mask_conversion.  Pass the vector type to
612         append_pattern_def_seq here too.
613         (vect_recog_gather_scatter_pattern): Update call to
614         vect_add_conversion_to_pattern.
616 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
618         * tree-vect-patterns.c (new_pattern_def_seq): Delete.
619         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
620         (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern)
621         (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set
622         STMT_VINFO_PATTERN_DEF_SEQ to null here.
623         (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern)
624         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use
625         append_pattern_def_seq instead of new_pattern_def_seq.
626         (vect_recog_divmod_pattern): Do both of the above.
627         (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ
628         is null.
630 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
632         * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
633         (vect_recog_sad_pattern, vect_recog_widen_op_pattern)
634         (vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
635         (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
636         (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
637         (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
638         (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
639         (vect_recog_mult_pattern, vect_recog_divmod_pattern)
640         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
641         (vect_recog_mask_conversion_pattern): Replace vec<gimple *>
642         parameter with a single stmt_vec_info.
643         (vect_recog_func_ptr): Likewise.
644         (vect_recog_gather_scatter_pattern): Likewise, folding in...
645         (vect_try_gather_scatter_pattern): ...this.
646         (vect_pattern_recog_1): Remove stmts_to_replace and just pass
647         the stmt_vec_info of the statement to be matched.  Don't clear
648         STMT_VINFO_RELATED_STMT.
649         (vect_pattern_recog): Update call accordingly.
651 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
653         PR tree-optimization/85694
654         * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
655         (uavgM3_ceil): Document new optabs.
656         * doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
657         * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
658         functions.
659         * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
660         (savg_ceil_optab): New optabs.
661         * tree-vect-patterns.c (vect_recog_average_pattern): New function.
662         (vect_vect_recog_func_ptrs): Add it.
663         * tree-vect-stmts.c (vectorizable_call): Get the type of the zero
664         constant directly from the associated lhs.
666 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
668         * tree-vect-patterns.c (vect_split_statement): New function.
669         (vect_convert_input): Use it to try to split an existing cast.
671 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
673         * poly-int.h (print_hex): New function.
674         * dumpfile.h (dump_dec, dump_hex): Declare.
675         * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
676         * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
677         min_input_precision, operation_precision and operation_sign.
678         * tree-vect-patterns.c (vect_get_range_info): New function.
679         (vect_same_loop_or_bb_p, vect_single_imm_use)
680         (vect_operation_fits_smaller_type): Delete.
681         (vect_look_through_possible_promotion): Add an optional
682         single_use_p parameter.
683         (vect_recog_over_widening_pattern): Rewrite to use new
684         stmt_vec_info infomration.  Handle one operation at a time.
685         (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
686         (vect_truncatable_operation_p, vect_set_operation_type)
687         (vect_set_min_input_precision): New functions.
688         (vect_determine_min_output_precision_1): Likewise.
689         (vect_determine_min_output_precision): Likewise.
690         (vect_determine_precisions_from_range): Likewise.
691         (vect_determine_precisions_from_users): Likewise.
692         (vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
693         (vect_vect_recog_func_ptrs): Put over_widening first.
694         Add cast_forwprop.
695         (vect_pattern_recog): Call vect_determine_precisions.
697 2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
699         * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
700         statements that have been replaced by further pattern statements.
701         (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
703 2018-07-03  Richard Biener  <rguenther@suse.de>
705         * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
706         always set *dt.  Dump vectype in vectype overload.
707         * dumpfile.h (dump_gimple_expr): New function.
708         (dump_gimple_expr_loc): Likewise.
709         * dumpfile.c (dump_gimple_expr): New function.
710         (dump_gimple_expr_loc): Likewise.
712 2018-07-02  Jeff Law  <law@redhat.com>
714         * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
715         the H8/300, H8/300H and H8/S variants into a single pattern.
716         (movhi_h8300, movqi_h8300hs): Similarly.
717         (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
718         (QHI mode iterator): New.
720         * config/h8300/h8300.md: Remove trailing whitespace.
722 2018-07-02  Jim Wilson  <jimw@sifive.com>
724         * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
725         instead of emit_insn for interrupt returns.
726         * config/riscv/riscv.md (riscv_met): Add (return) to rtl.
727         (riscv_sret, riscv_uret): Likewise.
729 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
731         * pretty-print.c (selftest::test_pp_format): Move save and restore
732         of quotes to class auto_fix_quotes, and add an instance.
733         * selftest.c: Include "intl.h".
734         (selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
735         (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
736         * selftest.h (selftest::auto_fix_quotes): New class.
738 2018-07-02  Richard Henderson  <richard.henderson@linaro.org>
740         * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
741         (aarch64_sve_prepare_conditional_op): Remove.
742         * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
743         Allow aarch64_simd_reg_or_zero as select operand; remove
744         the aarch64_sve_prepare_conditional_op call.
745         (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
746         (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
747         (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
748         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
749         (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
750         (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
751         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
752         (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
753         and a splitters to match all of the *_any patterns.
754         * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
756         * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
757         (SVE_COND_FP_BINARY_REV): Remove.
758         (sve_int_op_rev, sve_fp_op_rev): New.
759         * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
760         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
761         (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
762         (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
763         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
764         (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
765         (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
766         (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
767         (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
769         * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
770         Remove match_dup 1 from the inner unspec.
771         (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
773         * config/aarch64/aarch64.md (movprfx): New attr.
774         (length): Default movprfx to 8.
775         * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
776         (*madd<SVE_I>, *msub<SVE_I): Likewise.
777         (*<su>mul<SVE_I>3_highpart): Likewise.
778         (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
779         (*v<ASHIFT><SVE_I>3): Likewise.
780         (*<su><MAXMIN><SVE_I>3): Likewise.
781         (*<su><MAXMIN><SVE_F>3): Likewise.
782         (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
783         (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
784         (*div<SVE_F>4): Likewise.
786 2018-07-02  Richard Sandiford  <richard.sandiford@arm.com>
788         * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
789         in dump string.
791 2018-07-02  Richard Biener  <rguenther@suse.de>
793         PR tree-optimization/86363
794         * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
795         memset argument refers to a non-variable address.
797 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
799         * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the
800         {PLUS,MINUS}_EXPR code to...
801         (adjust_symbolic_bound): ...here,
802         (combine_bound): ...here,
803         (set_value_range_with_overflow): ...and here.
805 2018-07-02  Aldy Hernandez  <aldyh@redhat.com>
807         * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
808         code...
809         (extract_range_from_abs_expr): ...here.
811 2018-07-02  Eric Botcazou  <ebotcazou@adacore.com>
813         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
814         -fno-omit-frame-pointer when not optimizing.
816 2018-07-02  Martin Liska  <mliska@suse.cz>
818         PR ipa/86279
819         * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
820         (propagate_nothrow): Likewise.
822 2018-07-02  Martin Liska  <mliska@suse.cz>
824         PR ipa/86323
825         * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
827 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
829         * dumpfile.c (dump_generic_expr_loc): Undo removal of this
830         function in r262149, changing "loc" param from source_location to
831         const dump_location_t &.
832         * dumpfile.h (dump_generic_expr_loc): Undo removal of this
833         declaration, as above.
835 2018-07-01  Paul Koning  <ni1d@arrl.net>
837         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
838         -munit-asm, -mgnu-asm, -mdec-asm.
839         * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
840         (pdp11_output_labelref): New.
841         (pdp11_output_def): New.
842         (pdp11_output_addr_vec_elt): New.
843         * config/pdp11/pdp11.c: Use tab between opcode and operands.  Use
844         %# and %@ format codes.
845         (pdp11_option_override): New.
846         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
847         (pdp11_output_ident): New.
848         (pdp11_asm_named_section): New.
849         (pdp11_asm_init_sections): New.
850         (pdp11_file_start): New.
851         (pdp11_file_end): New.
852         (output_ascii): Use .ascii/.asciz for -mdec-asm.
853         (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm.  Add
854         %o, like %c but octal.
855         (pdp11_option_override): New.
856         * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
857         -mdec-asm.
858         (DATA_SECTION_ASM_OP): Ditto.
859         (READONLY_DATA_SECTION_ASM_OP): New.
860         (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
861         (ASM_GENERATE_INTERNAL_LABEL): Use new function.
862         (ASM_OUTPUT_LABELREF): Ditto.
863         (ASM_OUTPUT_DEF): Ditto.
864         (ASM_OUTPUT_EXTERNAL): New.
865         (ASM_OUTPUT_SOURCE_FILENAME): New.
866         (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
867         (ASM_OUTPUT_SKIP): Update for -mdec-asm.
868         * config/pdp11/pdp11.md: Use tab between opcode and operands.  Use
869         %# and %@ format codes.
870         * config/pdp11/pdp11.opt (mgnu-asm): New.
871         (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
872         (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
873         * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
875 2018-07-01  Aldy Hernandez  <aldyh@redhat.com>
877         * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
878         dereferencing path[] beyond its length.
879         (debug_path): New.
880         (debug_all_paths): New.
881         (rewire_first_differing_edge): New.
882         (adjust_paths_after_duplication): New.
883         (duplicate_thread_path): Call adjust_paths_after_duplication.
884         Add new argument.
885         (thread_through_all_blocks): Add new argument to
886         duplicate_thread_path.
888 2018-06-30  Jim Wilson  <jimw@sifive.com>
890         * config/riscv/predicates.md (p2m1_shift_operand): New.
891         (high_mask_shift_operand): New.
892         * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
893         pattern using p2m1_shift_operand.
894         (lshsi3_zero_extend_3+2): New combiner pattern using
895         high_mask_shift_operand.
897 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
899         * tree-vect-patterns.c (vect_get_external_def_edge): New function,
900         split out from...
901         (vect_recog_rotate_pattern): ...here.
902         (vect_convert_input): Try to insert casts of invariants in the
903         preheader.
904         * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
905         preheader to be empty.
907 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
909         * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
910         vector type.  If given, install it in the new statement's
911         STMT_VINFO_VECTYPE.
912         (vect_element_precision): New function.
913         (vect_unpromoted_value): New struct.
914         (vect_unpromoted_value::vect_unpromoted_value): New function.
915         (vect_unpromoted_value::set_op): Likewise.
916         (vect_look_through_possible_promotion): Likewise.
917         (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
918         (vect_widened_op_tree, vect_convert_input): Likewise.
919         (vect_convert_inputs, vect_convert_output): Likewise.
920         (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
921         to handle the optional cast of the multiplication result and
922         vect_widened_op_tree to detect the widened multiplication itself.
923         Do not require the input and output of promotion casts to have
924         the same sign, but base the signedness of the operation on the
925         input rather than the result.  If the pattern includes two
926         promotions, check that those promotions have the same sign.
927         Do not restrict the MULT_EXPR handling to a double-width result;
928         handle quadruple-width results and wider.  Use vect_convert_inputs
929         to convert the inputs to the common type.
930         (vect_recog_sad_pattern):  Use vect_look_through_possible_promotion
931         to handle the optional cast of the ABS result.  Also allow a sign
932         change or a sign extension between the ABS and MINUS.
933         Use vect_widened_op_tree to detect the widened subtraction and use
934         vect_convert_inputs to convert the inputs to the common type.
935         (vect_handle_widen_op_by_const): Delete.
936         (vect_recog_widen_op_pattern): New function.
937         (vect_recog_widen_mult_pattern): Use it.
938         (vect_recog_widen_shift_pattern): Likewise.
939         (vect_recog_widen_sum_pattern): Use
940         vect_look_through_possible_promotion to handle the promoted
941         PLUS_EXPR operand.
943 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
945         * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
946         the containing gimple_seq *.
947         * gimple-iterator.h (gsi_for_stmt): Declare it.
948         * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
949         (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
950         (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
951         (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
952         (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
953         checks.
954         (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
955         split out from...
956         (vect_mark_pattern_stmts): ...here.  Handle cases in which the
957         statement being replaced is part of an existing pattern
958         definition sequence, inserting the new pattern statements before
959         the original one.
960         (vect_pattern_recog_1): Don't return a bool.  If the statement
961         is already part of a pattern, instead apply pattern matching
962         to the pattern definition statements.  Don't clear the
963         STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
964         (vect_pattern_recog): Don't break after the first match;
965         continue processing the pattern definition statements instead.
966         Don't bail out for STMT_VINFO_IN_PATTERN_P here.
968 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
970         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
971         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
972         (vect_recog_widen_sum_pattern): Use it.
974 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
976         * tree-vect-loop.c (vectorizable_reduction): Assert that the
977         phi is not a pattern statement and has not been replaced by
978         a pattern statement.
979         * tree-vect-patterns.c (type_conversion_p): Don't check
980         STMT_VINFO_IN_PATTERN_P.
981         (vect_recog_vector_vector_shift_pattern): Likewise.
982         (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
983         the pattern statement rather than the original statement; check
984         directly for a WIDEN_MULT_EXPR here.
985         * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
986         vect_is_simple_use to return the pattern statement rather
987         than the original statement; use is_pattern_stmt_p to check
988         for such a pattern statement.
989         * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
990         to return the pattern statement rather than the original statement;
991         don't do the same transformation here.
992         (vect_is_simple_use): If the defining statement has been replaced
993         by a pattern statement, return the pattern statement instead.
994         Remove the corresponding (local) transformation from the vectype
995         overload.
997 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
999         * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
1000         end and default to null.
1001         * tree-vect-loop.c (vect_create_epilog_for_reduction)
1002         (vectorizable_reduction): Update calls accordingly, dropping the
1003         gimple ** argument if the passed-back statement isn't needed.
1004         * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
1005         (vect_recog_rotate_pattern): Likewise.
1006         (vect_recog_mask_conversion_pattern): Likewise.
1007         * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
1008         (vect_mask_constant_operand_p): Likewise.
1009         * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
1010         (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
1011         (get_group_load_store_type, get_load_store_type): Likewise.
1012         (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
1013         (vectorizable_call, vectorizable_simd_clone_call): Likewise.
1014         (vectorizable_conversion, vectorizable_assignment): Likewise.
1015         (vectorizable_shift, vectorizable_operation): Likewise.
1016         (vectorizable_store, vect_is_simple_cond): Likewise.
1017         (vectorizable_condition, vectorizable_comparison): Likewise.
1018         (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
1019         (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
1020         and move it to the end.  Cope with null def_stmt_outs.
1022 2018-06-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1024         * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
1026 2018-06-29  Jeff Law  <law@redhat.com>
1028         * config/v850/v850.c (v850_legitimate_address_p): Handle large
1029         displacements for TARGET_V850E2V3 and newer.
1030         (TARGET_LRA_P): Remove.  Defaults to LRA now.
1031         * config/v850/v850.md (sign23byte_load): Remove.
1032         (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
1033         (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
1035 2018-06-29  Martin Liska  <mliska@suse.cz>
1037         PR lto/85759
1038         * coverage.c (coverage_init): Mangle full path name.
1039         * doc/invoke.texi: Document the change.
1040         * gcov-io.c (mangle_path): New.
1041         * gcov-io.h (mangle_path): Likewise.
1042         * gcov.c (mangle_name): Use mangle_path for path mangling.
1044 2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1046         * config/arm/arm.c (output_move_double): Don't allow STRD instructions
1047         if starting source register is not even.
1049 2018-06-29  Martin Liska  <mliska@suse.cz>
1051         PR tree-optimization/86263
1052         * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
1053         Make edge redirection.
1055 2018-06-29  David Malcolm  <dmalcolm@redhat.com>
1057         * dumpfile.c (dump_loc): Add indentation based on scope depth.
1058         (dump_scope_depth): New variable.
1059         (get_dump_scope_depth): New function.
1060         (dump_begin_scope): New function.
1061         (dump_end_scope): New function.
1062         * dumpfile.h (get_dump_scope_depth): New declaration.
1063         (dump_begin_scope): New declaration.
1064         (dump_end_scope): New declaration.
1065         (class auto_dump_scope): New class.
1066         (AUTO_DUMP_SCOPE): New macro.
1067         * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
1068         AUTO_DUMP_SCOPE.
1070 2018-06-29  Richard Biener  <rguenther@suse.de>
1072         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
1073         compute_all_dependences succeeds.
1074         * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
1075         exceed --param loop-max-datarefs-for-datadeps.
1077 2018-06-29  Jakub Jelinek  <jakub@redhat.com>
1079         * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
1081 2018-06-28  Uros Bizjak  <ubizjak@gmail.com>
1083         PR target/86348
1084         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
1085         alternative 0 in preferred_for_speed attribute.
1087 2018-06-28  Paul Koning  <ni1d@arrl.net>
1089         * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
1090         * config/pdp11/pdp11.c (pdp11_shift_length): New function.
1091         * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
1092         * config/pdp11/pdp11.md: Correct "length" attribute calculation
1093         for shift insn patterns.
1095 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
1097         * cgraph.c (cgraph_node::get_body): Replace assignments to
1098         "dump_file" with calls to set_dump_file.
1099         * dumpfile.c (alt_dump_file): Make static, and group with...
1100         (alt_flags): ...this definition.
1101         (dumps_are_enabled): New variable.
1102         (refresh_dumps_are_enabled): New function.
1103         (set_dump_file): New function.
1104         (set_alt_dump_file): New function.
1105         (gcc::dump_manager::dump_start): Replace assignments to
1106         "dump_file" and "alt_dump_file" with calls to set_dump_file and
1107         set_alt_dump_file.
1108         (gcc::dump_manager::dump_finish): Likewise.
1109         * dumpfile.h (alt_dump_file): Delete decl.
1110         (dumps_are_enabled): New variable decl.
1111         (set_dump_file): New function decl.
1112         (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
1113         global.
1114         * tree-nested.c (lower_nested_functions): Replace assignments to
1115         "dump_file" with calls to set_dump_file.
1117 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1119         * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
1120         goto_locus of each outgoing edge of each basic block.
1122 2018-06-28  Richard Biener  <rguenther@suse.de>
1124         * dwarf2out.c (decl_scope_table): Remove.
1125         (push_decl_scope): Likewise.
1126         (pop_decl_scope): Likewise.
1127         (gen_type_die_for_member): Do not call push/pop_decl_scope.
1128         (gen_struct_or_union_type_die): Likewise.
1129         (gen_tagged_type_die): Likewise.
1130         (dwarf2out_init): Do not initialize decl_scope_table.
1131         (dwarf2out_c_finalize): Do not free it.
1133 2018-06-28  Richard Biener  <rguenther@suse.de>
1135         * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
1136         deciding whether to not re-use a DIE.
1138 2018-06-28  Richard Biener  <rguenther@suse.de>
1140         * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
1141         DW_AT_abstract_origin attribute.
1143 2018-06-28  Martin Liska  <mliska@suse.cz>
1145         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
1146         Use newly introduced constants.
1147         * tree-switch-conversion.h (struct jump_table_cluster):
1148         Define max_ratio_for_size and max_ratio_for_speed.
1150 2018-06-28  Martin Liska  <mliska@suse.cz>
1152         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
1153         Add new checking assert to catch invalid state.
1154         (jump_table_cluster::can_be_handled): Handle single case
1155         clusters.
1156         (jump_table_cluster::is_beneficial): Bail out for such case.
1157         (bit_test_cluster::find_bit_tests):
1158         Add new checking assert to catch invalid state.
1159         (bit_test_cluster::can_be_handled): Handle single case
1160         clusters.
1161         (bit_test_cluster::is_beneficial): Bail out for such case.
1162         (switch_decision_tree::analyze_switch_statement):
1163         Fix comment.
1165 2018-06-28  Martin Liska  <mliska@suse.cz>
1167         * common.opt: Introduce -completion option.
1168         * gcc.c (driver_handle_option): Handle it.
1169         (driver::main): Print completions if completion
1170         is set.
1171         * opt-suggestions.c (option_proposer::get_completions):
1172         New function.
1173         (option_proposer::suggest_completion): Likewise.
1174         (option_proposer::find_param_completions): Likewise.
1175         (verify_autocompletions): Likewise.
1176         (test_completion_valid_options): Likewise.
1177         (test_completion_valid_params): Likewise.
1178         (in_completion_p): Likewise.
1179         (empty_completion_p): Likewise.
1180         (test_completion_partial_match): Likewise.
1181         (test_completion_garbage): Likewise.
1182         (opt_proposer_c_tests): Likewise.
1183         * opt-suggestions.h: Declare new functions.
1184         * opts.c (common_handle_option): Handle OPT__completion_.
1185         * selftest-run-tests.c (selftest::run_tests): Add
1186         opt_proposer_c_tests.
1187         * selftest.c (assert_str_startswith): New.
1188         * selftest.h (assert_str_startswith): Likewise.
1189         (opt_proposer_c_tests): New.
1190         (ASSERT_STR_STARTSWITH): Likewise.
1192 2018-06-28  Martin Liska  <mliska@suse.cz>
1194         * Makefile.in: Add opt-suggestions.o.
1195         * gcc-main.c: Include opt-suggestions.h.
1196         * gcc.c (driver::driver): Likewise.
1197         (driver::~driver): Remove m_option_suggestions.
1198         (driver::build_option_suggestions): Moved to option_proposer.
1199         (driver::suggest_option): Likewise.
1200         (driver::handle_unrecognized_options): Use option_proposer.
1201         * gcc.h (class driver): Add new memver m_option_proposer.
1202         * opt-suggestions.c: New file.
1203         * opt-suggestions.h: New file.
1205 2018-06-28  Martin Liska  <mliska@suse.cz>
1207         * vec.h (class auto_string_vec): New (moved from auto_argvec).
1208         (auto_string_vec::~auto_string_vec): Likewise.
1210 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1212         * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
1213         prevent_decl_creation_for_types fields up and add reset_location field.
1214         * tree-inline.c (remap_gimple_stmt): Force input_location on the new
1215         statement if id->reset_location is true.
1216         (copy_edges_for_bb): Do not set goto_locus on the new edges if
1217         id->reset_location is true.
1218         (copy_phis_for_bb): Force input_location on the arguments if
1219         id->reset_location is true.
1220         (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
1221         is set on the function to be inlined.
1223 2018-06-27  Stephan Bergmann  <sbergman@redhat.com>
1225         * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
1227 2018-06-27  Dimitar Dimitrov  <dimitar@dinux.eu>
1229         * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
1230         registers for Pmode.
1231         * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
1232         hard registers for the clobbered pseudo.
1234 2018-06-27  Paul Koning  <ni1d@arrl.net>
1236         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
1237         mutually exclusive options.
1238         * config/pdp11/constraints.md (h): New constraint.
1239         (O): Update definition to match shift code generation.
1240         (D): New constraint.
1241         * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
1242         (CCFP): Remove.
1243         * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
1244         function.
1245         (output_jump): Change arguments.
1246         (pdp11_fixed_cc_regs): New function.
1247         (pdp11_cc_mode): Ditto.
1248         (pdp11_expand_shift): Ditto.
1249         (pdp11_assemble_shift): Ditto.
1250         (pdp11_small_shift): Ditto.
1251         (pdp11_branch_cost): Remove.
1252         * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
1253         from output.
1254         (pdp11_register_move_cost): Update for CC registers.
1255         (pdp11_rtx_costs): Add case for LSHIFTRT.
1256         (pdp11_output_jump): Add CCNZ mode conditional branches.
1257         (notice_update_cc_on_set): Remove.
1258         (pdp11_cc_mode): New function.
1259         (simple_memory_operand): Correct pre/post decrement case.
1260         (no_side_effect_operand): New function.
1261         (pdp11_regno_reg_class): Add CC_REGS class.
1262         (pdp11_fixed_cc_regs): New function.
1263         (pdp11_small_shift): New function.
1264         (pdp11_expand_shift): New function to expand shift insns.
1265         (pdp11_assemble_shift): New function to output shifts.
1266         (pdp11_branch_cost): Remove.
1267         (pdp11_modes_tieable_p): Make QI/HI modes tieable.
1268         * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
1269         (WCHAR_TYPE): Ditto.
1270         (PTRDIFF_TYPE): Ditto.
1271         (ADJUST_INSN_LENGTH): New macro.
1272         (FIXED_REGISTERS): Add CC registers.
1273         (CALL_USED_REGISTERS): Ditto.
1274         (reg_class): Ditto.
1275         (REG_CLASS_NAMES): Ditto.
1276         (REG_CLASS_CONTENTS): Ditto.
1277         (SELECT_CC_MODE): Use new function.
1278         (TARGET_FLAGS_REGNUM): New macro.
1279         (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
1280         (cc0_reg_rtx): Remove.
1281         (CC_STATUS_MDEP): Remove.
1282         (CC_STATUS_MDEFP_INIT): Remove.
1283         (CC_IN_FPU): Remove.
1284         (NOTICE_UPDATE_CC): Remove.
1285         (REGISTER_NAMES): Add CC registers.
1286         (BRANCH_COST): Change to constant 1.
1287         * config/pdp11/pdp11.md: Rewrite for CCmode condition code
1288         handling.
1289         * config/pdp11/pdp11.opt (mbcopy): Remove.
1290         (mbcopy-builtin): Remove.
1291         (mbranch-cheap): Remove.
1292         (mbranch-expensive): Remove.
1293         * config/pdp11/predicates.md (expand_shift_operand): Update to
1294         match shift code generation.
1295         (ccnz_operator): New predicate.
1296         * doc/invoke.texi (PDP-11 Options): Remove deleted options
1297         -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
1298         Remove non-existent option -mabshi, -mno-abshi.  Document mutually
1299         exclusive options.
1300         * doc/md.texi (PDP-11): Document new D and h constraints.  Update
1301         description of O constraint.
1303 2018-06-27  Jeff Law  <law@redhat.com>
1304             Austin Law  <austinklaw@gmail.com>
1306         * config/v850/v850.md (addsi3_set_flags): New pattern.
1307         (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
1308         (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
1309         (zero_extendhisi2_v850_set_flags): Likewise.
1310         (zero_extendqisi2_v850_set_flags): Likewise.
1311         (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
1312         (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
1313         (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
1315         * config/v850/v850-protos.h (notice_update_cc): Remove.
1316         * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
1317         (v850_print_operand): Handle 'D' and "d".
1318         (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
1319         Add handling of arithmetic/logical operations compared against zero.
1320         (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
1321         Do not look at v850_compare_op, instead get mode from last argument.
1322         (v850_gen_compare): Remove
1323         (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
1324         after reload for prologue insns.
1325         (expand_prologue): Account for CLOBBER of CC_REGNUM in various
1326         patterns.
1327         (construct_save_jarl): Likewise.
1328         (TARGET_FLAGS_REGNUM): Define.
1329         * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
1330         (NOTICE_UPDATE_CC): Remove.
1331         * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
1332         than cc0.  Conditionalize on reload_completed.
1333         (cmpsi_insn, setfcc_insn): Likewise.
1334         (tst1 splitter): Turn into define_and_split which sets the flags
1335         after reload.
1336         (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
1337         (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
1338         (cstoresf4, cstoredf4): Clobber the flags.
1339         (cmpsi, cmpsf, cmpdf): Remove expanders.
1340         (setf_insn): Remove pattern.
1341         (addsi3): Turn into define_and_split which clobbers the flags after
1342         reload and a suitable pattern (addsi3_clobber_flags) for use after
1343         reload.
1344         (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
1345         (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
1346         (ashrsi3, ashrsi3_v850e2): Likewise.
1347         (bins): Clobber the flags.
1348         (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
1349         (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
1350         (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
1351         (call_value_internal_short, call_value_internal_long): Likewise.
1352         (callt_save_interrupt, callt_return_interrupt): Likewise.
1353         (save_interrupt, return_interrupt): Likewise.
1354         (callt_save_all_interrupt, save_all_interrupt): Likewise.
1355         (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
1356         (restore_all_interrupt, _restore_all_interrupt): Likewise.
1357         (All FP comparisons): Only allow after reload has completed.
1358         (trfsr): Likewise.
1359         (divh, divhu): Tweak output template.
1360         (branch_z_normal, branch_z_invert): Remove
1361         (branch_nz_normal, branch_nz_invert): Likewise.
1362         (extendhisi_insn, extendqisi_insn): Do not clobber flags.
1364         * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
1365         * config/v850/v850.c (notice_update_cc): Remove.
1366         * config/v850/v850.h  (CC_OVERFLOW_UNUSABLE): Remove
1367         (CC_NO_CARRY): Likewise.
1368         (NOTICE_UPDATE_CC): Define to nothing.
1369         * config/v850/v850.md: Remove block comment on cc0 handling
1370         Remove "cc" attribute from all patterns.  Remove cc_status handling
1371         from all patterns.  Minor formatting fixes.
1373 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1375         * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
1376         (cortex-a76.cortex-a55): Likewise.
1377         * config/aarch64/aarch64-tune.md: Regenerate.
1378         * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
1379         cortex-a76.cortex-a55.
1381 2018-06-27  Jeff Law  <law@redhat.com>
1383         * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
1384         (MULTILIB_DIRNAMES): Similarly.
1386 2018-06-27  Eric Botcazou  <ebotcazou@adacore.com>
1388         * gimple.h (gimple_return_retbnd): Delete.
1389         (gimple_return_set_retbnd): Likewise.
1390         * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
1391         gimple_return_set_retbnd.
1392         * gimple-pretty-print.c (dump_gimple_return): Remove call to
1393         gimple_return_retbnd and adjust.
1394         * tree-inline.h (struct copy_body_data): Remove retbnd field.
1395         * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
1396         Explicitly return NULL in a couple more cases.  Move assertion
1397         on debug statements and remove unreachable code.
1398         (reset_debug_binding): Do not test id->retbnd.
1399         (expand_call_inline): Do not set it.
1401 2018-06-27  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
1403         * configure.ac: Add --disable-gcov option.
1404         * configure: Regenerate.
1405         * Makefile.in: Honour @enable_gcov@.
1406         * doc/install.texi: Document --disable-gcov.
1408 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1410         * config/arm/arm-cpus.in (cortex-a76): New entry.
1411         (cortex-a76.cortex-a55): Likewise.
1412         * config/arm/arm-tables.opt: Regenerate.
1413         * config/arm/arm-tune.md: Likewise.
1414         * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
1415         * doc/invoke.texi (ARM Options): Document cortex-a76 and
1416         cortex-a76.cortex-a55.
1418 2018-06-27 Tamar Christina  <tamar.christina@arm.com>
1420         PR target/85769
1421         * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
1423 2018-06-27  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1425         * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
1426         comment.
1427         (EPILOGUE_USES): Likewise.
1429 2018-06-26  Eric Botcazou  <ebotcazou@adacore.com>
1431         * tree-inline.c (remap_location): New function extracted from...
1432         (copy_edges_for_bb): Add ID parameter.  Remap goto_locus.
1433         (copy_phis_for_bb): ...here.  Call remap_location.
1434         (copy_cfg_body): Adjust call to copy_edges_for_bb.
1436 2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
1438         * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
1439         unaligned vsx for 16B memset.
1441 2018-06-26  Segher Boessenkool  <segher@kernel.crashing.org>
1443         PR target/86285
1444         * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
1445         ieee128_float_type_node to long_double_type_node unless
1446         TARGET_LONG_DOUBLE_128 is set.
1448 2018-06-26  David Malcolm  <dmalcolm@redhat.com>
1450         * cfgloop.c (get_loop_location): Convert return type from
1451         location_t to dump_user_location_t, replacing INSN_LOCATION lookups
1452         by implicit construction from rtx_insn *, and using
1453         dump_user_location_t::from_function_decl for the fallback case.
1454         * cfgloop.h (get_loop_location): Convert return type from
1455         location_t to dump_user_location_t.
1456         * cgraphunit.c (walk_polymorphic_call_targets): Update call to
1457         dump_printf_loc to pass in a dump_location_t rather than a
1458         location_t, via the gimple stmt.
1459         * coverage.c (get_coverage_counts): Update calls to
1460         dump_printf_loc to pass in dump_location_t rather than a
1461         location_t.
1462         * doc/optinfo.texi (Dump types): Convert example of
1463         dump_printf_loc from taking "locus" to taking "insn".  Update
1464         description of the "_loc" calls to cover dump_location_t.
1465         * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
1466         "selftest.h".
1467         (dump_user_location_t::dump_user_location_t): New constructors,
1468         from gimple *stmt and rtx_insn *.
1469         (dump_user_location_t::from_function_decl): New function.
1470         (dump_loc): Make static.
1471         (dump_gimple_stmt_loc): Convert param "loc" from location_t to
1472         const dump_location_t &.
1473         (dump_generic_expr_loc): Delete.
1474         (dump_printf_loc): Convert param "loc" from location_t to
1475         const dump_location_t &.
1476         (selftest::test_impl_location): New function.
1477         (selftest::dumpfile_c_tests): New function.
1478         * dumpfile.h: Include "profile-count.h".
1479         (class dump_user_location_t): New class.
1480         (struct dump_impl_location_t): New struct.
1481         (class dump_location_t): New class.
1482         (dump_printf_loc): Convert 2nd param from source_location to
1483         const dump_location_t &.
1484         (dump_generic_expr_loc): Delete.
1485         (dump_gimple_stmt_loc): Convert 2nd param from source_location to
1486         const dump_location_t &.
1487         * gimple-fold.c (fold_gimple_assign): Update call to
1488         dump_printf_loc to pass in a dump_location_t rather than a
1489         location_t, via the gimple stmt.
1490         (gimple_fold_call): Likewise.
1491         * gimple-loop-interchange.cc
1492         (loop_cand::analyze_iloop_reduction_var): Update for change to
1493         check_reduction_path.
1494         (tree_loop_interchange::interchange): Update for change to
1495         find_loop_location.
1496         * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
1497         change in return-type of find_loop_location.
1498         (graphite_regenerate_ast_isl): Likewise.
1499         * graphite-optimize-isl.c (optimize_isl): Likewise.
1500         * graphite.c (graphite_transform_loops): Likewise.
1501         * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
1502         pass in a dump_location_t rather than a location_t, via the
1503         gimple stmt.
1504         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1505         * ipa.c (walk_polymorphic_call_targets): Likewise.
1506         * loop-unroll.c (report_unroll): Convert "locus" param from
1507         location_t to dump_location_t.
1508         (decide_unrolling): Update for change to get_loop_location's
1509         return type.
1510         * omp-grid.c (struct grid_prop): Convert field "target_loc" from
1511         location_t to dump_user_location_t.
1512         (grid_find_single_omp_among_assignments_1): Updates calls to
1513         dump_printf_loc to pass in a dump_location_t rather than a
1514         location_t, via the gimple stmt.
1515         (grid_parallel_clauses_gridifiable): Convert "tloc" from
1516         location_t to dump_location_t.  Updates calls to dump_printf_loc
1517         to pass in a dump_location_t rather than a location_t, via the
1518         gimple stmt.
1519         (grid_inner_loop_gridifiable_p): Likewise.
1520         (grid_dist_follows_simple_pattern): Likewise.
1521         (grid_gfor_follows_tiling_pattern): Likewise.
1522         (grid_target_follows_gridifiable_pattern): Likewise.
1523         (grid_attempt_target_gridification): Convert initialization
1524         of local "grid" from memset to zero-initialization; FIXME: does
1525         this require C++11?  Update call to dump_printf_loc to pass in a
1526         optinfo_location rather than a location_t, via the gimple stmt.
1527         * profile.c (read_profile_edge_counts): Updates call to
1528         dump_printf_loc to pass in a dump_location_t rather than a
1529         location_t
1530         (compute_branch_probabilities): Likewise.
1531         * selftest-run-tests.c (selftest::run_tests): Call
1532         dumpfile_c_tests.
1533         * selftest.h (dumpfile_c_tests): New decl.
1534         * tree-loop-distribution.c (pass_loop_distribution::execute):
1535         Update for change in return type of find_loop_location.
1536         * tree-parloops.c (parallelize_loops): Likewise.
1537         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
1538         "locus" from location_t to dump_user_location_t.
1539         (canonicalize_loop_induction_variables): Likewise.
1540         * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
1541         for change in return type of find_loop_location.
1542         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
1543         to dump_printf_loc to pass in a dump_location_t rather than a
1544         location_t, via the stmt.
1545         * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
1546         Likewise.
1547         * tree-vect-loop-manip.c (find_loop_location): Convert return
1548         type from source_location to dump_user_location_t.
1549         (vect_do_peeling): Update for above change.
1550         (vect_loop_versioning): Update for change in type of
1551         vect_location.
1552         * tree-vect-loop.c (check_reduction_path): Convert "loc" param
1553         from location_t to dump_user_location_t.
1554         (vect_estimate_min_profitable_iters): Update for change in type
1555         of vect_location.
1556         * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
1557         location_t to dump_location_t.
1558         (vect_slp_bb): Update for change in type of vect_location.
1559         * tree-vectorizer.c (vect_location): Convert from source_location
1560         to dump_user_location_t.
1561         (try_vectorize_loop_1): Update for change in vect_location's type.
1562         (vectorize_loops): Likewise.
1563         (increase_alignment): Likewise.
1564         * tree-vectorizer.h (vect_location): Convert from source_location
1565         to dump_user_location_t.
1566         (find_loop_location): Convert return type from source_location to
1567         dump_user_location_t.
1568         (check_reduction_path): Convert 1st param from location_t to
1569         dump_user_location_t.
1570         * value-prof.c (check_counter): Update call to dump_printf_loc to
1571         pass in a dump_user_location_t rather than a location_t; update
1572         call to error_at for change in type of "locus".
1573         (check_ic_target): Update call to dump_printf_loc to
1574         pass in a dump_user_location_t rather than a location_t, via the
1575         call_stmt.
1577 2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>
1579         * config/s390/s390.h (enum processor_flags): Do not use
1580         default tune parameter when -march was specified.
1582 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
1584         PR target/86314
1585         * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
1586         Check reg_overlap_mentioned_p in addition to reg_set_p with the same
1587         operands.
1589 2018-06-26  Richard Biener  <rguenther@suse.de>
1591         PR tree-optimization/86287
1592         PR bootstrap/86316
1593         * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
1594         (vect_analyze_loop): Initialize n_stmts.
1596 2018-06-26  Richard Biener  <rguenther@suse.de>
1598         PR middle-end/86271
1599         * fold-const.c (fold_convertible_p): Pointer extension
1600         isn't valid.
1602 2018-06-26  Alexandre Oliva <aoliva@redhat.com>
1604         PR debug/86064
1605         * dwarf2out.c (loc_list_has_views): Adjust comments.
1606         (dw_loc_list): Split single cross-partition range with
1607         nonzero locview.
1609 2018-06-25  Jeff Law  <law@redhat.com>
1611         * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
1612         on -mbig-switch by default.
1614         * config/v850/predicates.md (const_float_1_operand): Fix match_code
1615         test.
1616         (const_float_0_operand): Remove unused predicate.
1617         * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
1618         (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
1619         (recipsf2): New expander.  Original pattern now called
1620         (recipsf2_insn).
1621         (recipdf2, recipdf2_insn): Similarly.
1622         (rsqrtsf2, rsqrtsf2_insn): Similarly
1623         (rsqrtdf2, rsqrtdf2_insn): Similarly
1625 2018-06-26  Gerald Pfeifer  <gerald@pfeifer.com>
1627         * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
1628         Simplify logic for FreeBSD (twice).
1630 2018-06-25  Martin Sebor  <msebor@redhat.com>
1632         PR tree-optimization/86204
1633         * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
1634         a strnlen result if it's less than the length of the string.
1636 2018-06-25  Martin Sebor  <msebor@redhat.com>
1638         PR tree-optimization/85700
1639         * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
1640         * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
1641         (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
1643 2018-06-25  Martin Sebor  <msebor@redhat.com>
1645         * doc/extend.texi (Zero-length arrays): Update and clarify.
1647 2018-06-25  Michael Meissner  <meissner@linux.ibm.com>
1649         * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
1650         added IEEE/IBM long double multilib support on PowerPC little
1651         endian Linux systems.
1652         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
1653         (MULTILIB_DEFAULTS): Likewise.
1654         * config/rs6000/rs6000.c (rs6000_option_override_internal):
1655         Likewise.
1656         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
1657         * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
1658         * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
1660 2018-06-25  Alexander Monakov  <amonakov@ispras.ru>
1662         PR middle-end/86311
1663         * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
1664         (REORDER_45): Likewise.
1666 2018-06-25  Jeff Law  <law@redhat.com>
1668         * config/v850/v850.md (divmodhi4): Make sure to sign extend the
1669         dividend to 32 bits.  Adjust length.
1670         (udivmodhi4): Cleanup output template.  Fix length.
1672 2018-06-25  Carl Love  <cel@us.ibm.com>
1674         * config/rs6000/vsx.md: Change word selector to prefered location.
1676 2018-06-25  Richard Biener  <rguenther@suse.de>
1678         PR tree-optimization/86304
1679         * tree-vectorizer.c (vectorize_loops): Walk over new possibly
1680         epilogue-if-converted loops as well.
1682 2018-06-25  Jan Hubicka  <hubicka@ucw.cz>
1684         * lto-section-out.c (lto_begin_section): Do not print section
1685         name for noaddr and unnumbered dumps.
1687 2018-06-25  Richard Biener  <rguenther@suse.de>
1689         * tree-vectorizer.h (struct vec_info_shared): New structure
1690         with parts split out from struct vec_info and loop_nest from
1691         struct _loop_vec_info.
1692         (struct vec_info): Adjust accordingly.
1693         (struct _loop_vec_info): Likewise.
1694         (LOOP_VINFO_LOOP_NEST): Adjust.
1695         (LOOP_VINFO_DATAREFS): Likewise.
1696         (LOOP_VINFO_DDRS): Likewise.
1697         (struct _bb_vec_info): Likewise.
1698         (BB_VINFO_DATAREFS): Likewise.
1699         (BB_VINFO_DDRS): Likewise.
1700         (struct _stmt_vec_info): Add dr_aux member.
1701         (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
1702         (DR_MISALIGNMENT_UNINITIALIZED): New.
1703         (set_dr_misalignment): Adjust.
1704         (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
1705         (vect_analyze_loop): Adjust prototype.
1706         (vect_analyze_loop_form): Likewise.
1707         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
1708         Compute dependences lazily.
1709         (vect_record_base_alignments): Use shared datarefs/ddrs.
1710         (vect_verify_datarefs_alignment): Likewise.
1711         (vect_analyze_data_refs_alignment): Likewise.
1712         (vect_analyze_data_ref_accesses): Likewise.
1713         (vect_analyze_data_refs): Likewise.
1714         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
1715         constructor parameter for shared part.
1716         (vect_analyze_loop_form): Pass in shared part and adjust.
1717         (vect_analyze_loop_2): Pass in storage for the number of
1718         stmts.  Move loop nest finding to the caller.  Compute
1719         datarefs lazily.
1720         (vect_analyze_loop): Pass in shared part.
1721         (vect_transform_loop): Verify shared datarefs are unchanged.
1722         * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
1723         constructor parameter for shared part.
1724         (vect_slp_analyze_bb_1): Pass in shared part and adjust.
1725         (vect_slp_bb): Verify shared datarefs are unchanged before
1726         transform.
1727         * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
1728         change.
1729         (new_stmt_vec_info): Initialize DR_AUX misalignment to
1730         DR_MISALIGNMENT_UNINITIALIZED.
1731         * tree-vectorizer.c (vec_info::vec_info): Add constructor
1732         parameter for shared part.
1733         (vec_info::~vec_info): Adjust.
1734         (vec_info_shared::vec_info_shared): New.
1735         (vec_info_shared::~vec_info_shared): Likewise.
1736         (vec_info_shared::save_datarefs): Likewise.
1737         (vec_info_shared::check_datarefs): Likewise.
1738         (try_vectorize_loop_1): Construct shared part live for analyses
1739         of a single loop for multiple vector sizes.
1740         * tree-parloops.c (gather_scalar_reductions): Adjust.
1742 2018-06-25  Richard Biener  <rguenther@suse.de>
1744         * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
1745         DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
1746         (vect_analyze_data_refs): Remove similar code from here and
1747         simplify accordingly.
1749 2018-06-25  Richard Biener  <rguenther@suse.de>
1751         * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
1752         for reverse storage order accesses rather than asserting
1753         they cannot happen here.
1755 2018-06-25  Tom de Vries  <tdevries@suse.de>
1757         PR debug/86257
1758         * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
1759         Use data16 instead of .byte for insn prefix.
1761 2018-06-25  Andreas Krebbel  <krebbel@linux.ibm.com>
1763         PR C++/86082
1764         * parser.c (make_char_string_pack): Pass this literal chars
1765         through cpp_interpret_string.
1766         (cp_parser_userdef_numeric_literal): Check the result of
1767         make_char_string_pack.
1769 2018-06-24  Maya Rashish  <coypu@sdf.org>
1771         * ginclude/stddef.h: Simplify conditions around avoiding
1772         re-definition of __size_t.
1774 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1776         * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
1777         unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
1779 2018-06-22  Maya Rashish  <coypu@sdf.org>
1781         * doc/invoke.texi (mno-fancy-math-387): Update for changes
1782         made to OpenBSD and NetBSD through the years.
1784 2018-06-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1786         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
1787         behavior of vec_pack (vector double, vector double) to match
1788         behavior of vec_float2 (vector double, vector double).
1790 2018-06-22  Olivier Hainque  <hainque@adacore.com>
1792         * gimplify.c (gimplify_function_tree): Prevent creation
1793         of a trampoline for the address of the current function
1794         passed to entry/exit instrumentation hooks.
1796 2018-06-22  Aaron Sawdey  <acsawdey@linux.ibm.com>
1798         PR target/86222
1799         * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
1800         correctly.
1802 2018-06-22  Martin Liska  <mliska@suse.cz>
1804         PR tree-optimization/86263
1805         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
1806         Bail out if is_enabled is false.
1807         * tree-switch-conversion.h (jump_table_cluster::is_enabled):
1808         New declaration.
1809         (jump_table_cluster::is_enabled): New function.
1811 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1813         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
1814         BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
1815         * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
1816         (lto_input_ts_binfo_tree_pointers): Likewise.
1817         * tree-streamer-out.c (streamer_write_tree_bitfields,
1818         write_ts_binfo_tree_pointers): Likewise.
1819         * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
1821 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1823         * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
1825 2018-06-22  Martin Liska  <mliska@suse.cz>
1827         * symbol-summary.h (get): Make it pure and inline move
1828         functionality from ::get function.
1829         (get): Remove and inline into ::get and ::get_create.
1830         (get_create): Move code from ::get function.
1832 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1834         PR target/85994
1835         * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
1836         -x assembler-with-cpp.
1838 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1840         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
1841         _FILE_OFFSET_BITS=64 for C++.
1843 2018-06-21  Michael Meissner  <meissner@linux.ibm.com>
1845         * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
1846         conversion insn that shows up when pr85657-3.c is compiled using
1847         IEEE 128-bit long double.
1848         (neg<mode>2_internal): Use the correct mode to check whether the
1849         mode is IBM extended.
1850         * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
1851         multiply and divide external functions from being created more
1852         than once.
1854 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1856         * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
1857         functions.
1858         (rtl_merge_blocks): Likewise.  Do not emit a NOP if the location of
1859         the edge can be forwarded.
1860         (cfg_layout_merge_blocks): Likewise.
1862 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1864         * except.c (finish_eh_generation): Commit edge insertions only after
1865         the EH edges have been redirected from post-landing to landing pads.
1867 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1869         * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
1870         create_tmp_var_for to create the FRAME decl.
1871         (finalize_nesting_tree_1): Do not unchain the FRAME decl.
1873 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1875         * tree-inline.c (copy_edges_for_bb): Minor tweak.
1876         (maybe_move_debug_stmts_to_successors): Also reset the locus of the
1877         debug statement when resetting its value.
1878         (expand_call_inline): Copy the locus of the call onto the assignment
1879         of the return value, if any.  Use local variable in more cases.
1881 2018-06-21  Martin Liska  <mliska@suse.cz>
1883         * ipa-pure-const.c (propagate_nothrow): Use
1884         funct_state_summaries->get.
1885         (dump_malloc_lattice): Likewise.
1886         (propagate_malloc): Likewise.
1888 2018-06-21  Richard Biener  <rguenther@suse.de>
1890         * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
1891         comment.  Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
1892         * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
1893         comment.
1894         * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
1895         BLOCK_ABSTRACT_ORIGIN unconditionally.
1897 2018-06-21  David Malcolm  <dmalcolm@redhat.com>
1899         * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
1900         deleting it.
1901         * ipa-reference.c (ipa_reference_c_finalize): Delete
1902         ipa_ref_opt_sum_summaries and set it to NULL.
1904 2018-06-21  Tom de Vries  <tdevries@suse.de>
1906         PR tree-optimization/85859
1907         * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
1908         test with comment from bb_no_side_effects_p.
1910 2018-06-21  Richard Biener  <rguenther@suse.de>
1912         PR tree-optimization/86232
1913         * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
1914         max for constant niter.
1916 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1918         * config/aarch64/aarch64-simd.md
1919         (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
1921 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1923         * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
1924         Make opernads of the unspec commutative.
1926 2018-06-21  Richard Biener  <rguenther@suse.de>
1928         * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
1929         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
1930         Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
1931         (vect_analyze_data_ref_dependence): Re-order checks to deal with
1932         NULL DR_STEP.
1933         (vect_record_base_alignments): Do not record base alignment
1934         for gathers or scatters.
1935         (vect_compute_data_ref_alignment): Drop return value that is always
1936         true.  Bail out early for gathers or scatters.
1937         (vect_enhance_data_refs_alignment): Bail out early for gathers
1938         or scatters.
1939         (vect_find_same_alignment_drs): Likewise.
1940         (vect_analyze_data_refs_alignment): Remove dead code.
1941         (vect_slp_analyze_and_verify_node_alignment): Likewise.
1942         (vect_analyze_data_refs): For possible gathers or scatters do
1943         not create an alternate DR, just check their possible validity
1944         and mark them.  Adjust DECL_NONALIASED handling to not rely
1945         on DR_BASE_ADDRESS.
1946         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
1947         update inits of gathers or scatters.
1948         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
1949         Also copy gather/scatter flag to pattern vinfo.
1951 2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1953         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
1954         behavior of vec_packsu (vector unsigned long long, vector unsigned
1955         long long) to match behavior of vec_packs with same signature.
1957 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
1958             Thomas Schwinge <thomas@codesourcery.com>
1959             Cesar Philippidis  <cesar@codesourcery.com>
1961         * gimplify.c (gimplify_scan_omp_clauses): Add support for
1962         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
1963         (gimplify_adjust_omp_clauses): Likewise.
1964         (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
1965         support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
1966         (gimplify_omp_target_update): Update handling of acc update and
1967         enter/exit data.
1968         * omp-low.c (install_var_field): Remove unused parameter
1969         base_pointers_restrict.
1970         (scan_sharing_clauses): Remove base_pointers_restrict parameter.
1971         Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
1972         FINALIZE}
1973         (omp_target_base_pointers_restrict_p): Delete.
1974         (scan_omp_target): Update call to scan_sharing_clauses.
1975         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
1976         FINALIZE}.
1977         * tree-nested.c (convert_nonlocal_omp_clauses): Handle
1978         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
1979         (convert_local_omp_clauses): Likewise.
1980         * tree-pretty-print.c (dump_omp_clause): Likewise.
1981         * tree.c (omp_clause_num_ops): Add entries for  OMP_CLAUSE_{IF_PRESENT,
1982         FINALIZE}.
1983         (omp_clause_code_name): Likewise.
1985 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
1987         PR debug/86194
1988         * var-tracking.c (use_narrower_mode_test): Check if shift amount can
1989         be narrowed.
1991         PR tree-optimization/86231
1992         * tree-vrp.c (union_ranges): For (  [  )  ] or (   )[   ] range and
1993         anti-range don't overwrite *vr0min before using it to compute *vr0max.
1995 2018-06-20  Tom de Vries  <tdevries@suse.de>
1997         PR tree-optimization/86097
1998         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
1999         iv type if signedness of iv type is not the same as that of *nit.
2001 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
2003         * cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
2004         EDGE_EH edges, verify they are all EDGE_EH.
2006 2018-06-20  Maya Rashish  <coypu@sdf.org>
2008         * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
2010 2018-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2012         * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
2013         * config/aarch64/aarch64.c (xgene1_tunings): Add
2014         AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
2015         (aarch64_mode_valid_for_sched_fusion_p):
2016         Allow 16-byte modes.
2017         (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
2018         * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
2019         128-bit modes.
2020         * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
2021         New pattern.
2022         (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
2023         * config/aarch64/iterators.md (VQ2): New mode iterator.
2025 2018-06-20  Martin Liska  <mliska@suse.cz>
2027         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
2028         Change default ratio from 10 to 8.
2030 2018-06-20  Martin Liska  <mliska@suse.cz>
2032         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
2033         New.
2034         (bit_test_cluster::find_bit_tests): Likewise.
2035         (switch_decision_tree::analyze_switch_statement): Find clusters.
2036         * tree-switch-conversion.h (struct jump_table_cluster): Document
2037         hierarchy.
2039 2018-06-20  Martin Liska  <mliska@suse.cz>
2041         * tree-switch-conversion.c (switch_conversion::collect):
2042         Record m_uniq property.
2043         (switch_conversion::expand): Bail out for special conditions.
2044         (group_cluster::~group_cluster): New.
2045         (group_cluster::group_cluster): Likewise.
2046         (group_cluster::dump): Likewise.
2047         (jump_table_cluster::emit): New.
2048         (switch_decision_tree::fix_phi_operands_for_edges): New.
2049         (struct case_node): Remove struct.
2050         (jump_table_cluster::can_be_handled): New.
2051         (case_values_threshold): Moved to header.
2052         (reset_out_edges_aux): Likewise.
2053         (jump_table_cluster::is_beneficial): New.
2054         (bit_test_cluster::can_be_handled): Likewise.
2055         (add_case_node): Remove.
2056         (bit_test_cluster::is_beneficial): New.
2057         (case_bit_test::cmp): New.
2058         (bit_test_cluster::emit): New.
2059         (expand_switch_as_decision_tree_p): Remove.
2060         (bit_test_cluster::hoist_edge_and_branch_if_true): New.
2061         (fix_phi_operands_for_edge): Likewise.
2062         (switch_decision_tree::analyze_switch_statement): New.
2063         (compute_cases_per_edge): Move ...
2064         (switch_decision_tree::compute_cases_per_edge): ... here.
2065         (try_switch_expansion): Likewise.
2066         (switch_decision_tree::try_switch_expansion): Likewise.
2067         (record_phi_operand_mapping): Likewise.
2068         (switch_decision_tree::record_phi_operand_mapping): Likewise.
2069         (emit_case_decision_tree): Likewise.
2070         (switch_decision_tree::emit): Likewise.
2071         (balance_case_nodes): Likewise.
2072         (switch_decision_tree::balance_case_nodes): Likewise.
2073         (dump_case_nodes): Likewise.
2074         (switch_decision_tree::dump_case_nodes): Likewise.
2075         (emit_jump): Likewise.
2076         (switch_decision_tree::emit_jump): Likewise.
2077         (emit_cmp_and_jump_insns): Likewise.
2078         (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
2079         (emit_case_nodes): Likewise.
2080         (switch_decision_tree::emit_case_nodes): Likewise.
2081         (conditional_probability): Remove.
2082         * tree-switch-conversion.h (enum cluster_type): New.
2083         (PRINT_CASE): New.
2084         (struct cluster): Likewise.
2085         (cluster::cluster): Likewise.
2086         (struct simple_cluster): Likewise.
2087         (simple_cluster::simple_cluster): Likewise.
2088         (struct group_cluster): Likewise.
2089         (struct jump_table_cluster): Likewise.
2090         (struct bit_test_cluster): Likewise.
2091         (struct min_cluster_item): Likewise.
2092         (struct case_tree_node): Likewise.
2093         (case_tree_node::case_tree_node): Likewise.
2094         (jump_table_cluster::case_values_threshold): Likewise.
2095         (struct case_bit_test): Likewise.
2096         (struct switch_decision_tree): Likewise.
2097         (struct switch_conversion): Likewise.
2098         (switch_decision_tree::reset_out_edges_aux): Likewise.
2100 2018-06-20  Martin Liska  <mliska@suse.cz>
2102         * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
2103         (hoist_edge_and_branch_if_true): Likewise.
2104         (expand_switch_using_bit_tests_p): Likewise.
2105         (struct case_bit_test): Likewise.
2106         (case_bit_test_cmp): Likewise.
2107         (emit_case_bit_tests): Likewise.
2108         (switch_conversion::switch_conversion): New class.
2109         (struct switch_conv_info): Remove old struct.
2110         (collect_switch_conv_info): More to ...
2111         (switch_conversion::collect): ... this.
2112         (check_range): Likewise.
2113         (switch_conversion::check_range): Likewise.
2114         (check_all_empty_except_final): Likewise.
2115         (switch_conversion::check_all_empty_except_final): Likewise.
2116         (check_final_bb): Likewise.
2117         (switch_conversion::check_final_bb): Likewise.
2118         (create_temp_arrays): Likewise.
2119         (switch_conversion::create_temp_arrays): Likewise.
2120         (free_temp_arrays): Likewise.
2121         (gather_default_values): Likewise.
2122         (switch_conversion::gather_default_values): Likewise.
2123         (build_constructors): Likewise.
2124         (switch_conversion::build_constructors): Likewise.
2125         (constructor_contains_same_values_p): Likewise.
2126         (switch_conversion::contains_same_values_p): Likewise.
2127         (array_value_type): Likewise.
2128         (switch_conversion::array_value_type): Likewise.
2129         (build_one_array): Likewise.
2130         (switch_conversion::build_one_array): Likewise.
2131         (build_arrays): Likewise.
2132         (switch_conversion::build_arrays): Likewise.
2133         (gen_def_assigns): Likewise.
2134         (switch_conversion::gen_def_assigns): Likewise.
2135         (prune_bbs): Likewise.
2136         (switch_conversion::prune_bbs): Likewise.
2137         (fix_phi_nodes): Likewise.
2138         (switch_conversion::fix_phi_nodes): Likewise.
2139         (gen_inbound_check): Likewise.
2140         (switch_conversion::gen_inbound_check): Likewise.
2141         (process_switch): Use the newly created class.
2142         (switch_conversion::expand): New.
2143         (switch_conversion::~switch_conversion): New.
2144         * tree-switch-conversion.h: New file.
2146 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2148         * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
2149         tree-vect-patterns.c.
2150         * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
2151         (vect_recog_dot_prod_pattern): Use it.  Remove the type_in argument.
2152         (vect_recog_sad_pattern): Likewise.
2153         (vect_recog_widen_sum_pattern): Likewise.
2154         (vect_recog_pow_pattern): Likewise.  Check for a null vectype.
2155         (vect_recog_widen_shift_pattern): Remove the type_in argument.
2156         (vect_recog_rotate_pattern): Likewise.
2157         (vect_recog_mult_pattern): Likewise.
2158         (vect_recog_vector_vector_shift_pattern): Likewise.
2159         (vect_recog_divmod_pattern): Likewise.
2160         (vect_recog_mixed_size_cond_pattern): Likewise.
2161         (vect_recog_bool_pattern): Likewise.
2162         (vect_recog_mask_conversion_pattern): Likewise.
2163         (vect_try_gather_scatter_pattern): Likewise.
2164         (vect_recog_widen_mult_pattern): Likewise.  Check for a null vectype.
2165         (vect_recog_over_widening_pattern): Likewise.
2166         (vect_recog_gather_scatter_pattern): Likewise.
2167         (vect_recog_func_ptr): Move from tree-vectorizer.h
2168         (vect_vect_recog_func_ptrs): Move further down the file.
2169         (vect_recog_func): Likewise.  Remove the third argument.
2170         (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
2171         (vect_pattern_recog_1): Expect the pattern function to do any
2172         necessary target tests.  Also expect it to provide a vector type.
2173         Remove the type_in handling.
2175 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2177         * tree-vect-patterns.c (vect_pattern_detected): New function.
2178         (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
2179         (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
2180         (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
2181         (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
2182         (vect_recog_mult_pattern, vect_recog_divmod_pattern)
2183         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
2184         (vect_recog_mask_conversion_pattern)
2185         (vect_try_gather_scatter_pattern): Likewise.
2187 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2189         * tree-vect-patterns.c (vect_get_internal_def): New function.
2190         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
2191         (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
2192         (search_type_for_mask_1): Use it.
2194 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2196         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
2197         redundant WIDEN_SUM_EXPR handling.
2198         (vect_recog_sad_pattern): Likewise.
2200 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2202         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
2203         redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
2204         (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
2205         (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
2206         (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
2208 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2210         * tree-vect-stmts.c (vectorizable_call): Make sure that we
2211         use the stmt_vec_info of the original bb statement for the
2212         new zero assignment, even if the call is part of a pattern.
2214 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2216         * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
2217         that the sequence is attached to the original statement rather
2218         than the pattern statement.
2219         * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
2220         PATTERN_DEF_SEQ from the original statement rather than
2221         the main pattern statement.
2222         * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
2223         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
2224         (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
2226 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2228         * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
2229         definition statements before the early exit for statements that aren't
2230         live or relevant.
2231         * tree-vect-loop.c (vect_transform_loop_stmt): New function,
2232         split out from...
2233         (vect_transform_loop): ...here.  Process pattern definition
2234         statements without first checking whether the main pattern
2235         statement is live or relevant.
2237 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2239         * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
2240         -O0 if the locus represent UNKNOWN_LOCATION but have different values.
2242 2018-06-19  Aaron Sawdey  <acsawdey@linux.ibm.com>
2244         * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
2245         TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
2246         (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
2247         (expand_block_compare): Change select_block_compare_mode call.
2248         (expand_strncmp_align_check): Use new functions, fix comment.
2249         (emit_final_str_compare_gpr): New function.
2250         (expand_strn_compare): Refactor and clean up code.
2251         * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
2253 2018-06-19  Tony Reix  <tony.reix@atos.com>
2254             Damien Bergamini  <damien.bergamini@atos.com>
2255             David Edelsohn  <dje.gcc@gmail.com>
2257         * collect2.c (static_obj): New variable.
2258         (static_libs): New variable.
2259         (is_in_list): Uncomment declaration.
2260         (main): Track AIX libraries linked statically.
2261         (is_in_list): Uncomment definition.
2262         (scan_prog_file): Don't add AIX shared libraries initializer
2263         to constructor list if linking statically.
2265 2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
2267         * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
2268         constant.
2269         (allocate_stack, frame_blockage, *frame_blockage): New patterns.
2271 2018-06-19  Jan Hubicka  <hubicka@ucw.cz>
2273         * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
2274         blocks.
2276 2018-06-19  Martin Liska  <mliska@suse.cz>
2278         * config/i386/i386.c (ix86_can_inline_p): Do not use
2279         ipa_fn_summaries::get_create.
2280         * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
2281         get.
2282         (devirtualization_time_bonus): Likewise.
2283         (ipcp_propagate_stage): Likewise.
2284         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
2285         (edge_set_predicate): Likewise.
2286         (evaluate_conditions_for_known_args): Likewise.
2287         (evaluate_properties_for_edge): Likewise.
2288         (ipa_call_summary::reset): Tranform to ...
2289         (ipa_call_summary::~ipa_call_summary): ... this.
2290         (ipa_fn_summary::reset): Transform to ...
2291         (ipa_fn_summary::~ipa_fn_summary): ... this.
2292         (ipa_fn_summary_t::remove): Rename to ...
2293         (ipa_fn_summary_t::remove_callees): ... this.
2294         (ipa_fn_summary_t::duplicate): Use placement new
2295         instead of memory copy.
2296         (ipa_call_summary_t::duplicate): Likewise.
2297         (ipa_call_summary_t::remove): Remove.
2298         (dump_ipa_call_summary): Change get_create to get.
2299         (ipa_dump_fn_summary): Dump only when summary exists.
2300         (analyze_function_body): Use symbol_summary::get instead
2301         of get_create.
2302         (compute_fn_summary): Likewise.
2303         (estimate_edge_devirt_benefit): Likewise.
2304         (estimate_edge_size_and_time): Likewise.
2305         (inline_update_callee_summaries): Likewise.
2306         (remap_edge_change_prob): Likewise.
2307         (remap_edge_summaries): Likewise.
2308         (ipa_merge_fn_summary_after_inlining): Likewise.
2309         (write_ipa_call_summary): Likewise.
2310         (ipa_fn_summary_write): Likewise.
2311         (ipa_free_fn_summary): Likewise.
2312         * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
2313         (struct ipa_call_summary): Likewise.
2314         * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
2315         of get_create.
2316         * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
2317         (estimate_size_after_inlining): Likewise.
2318         (estimate_growth): Likewise.
2319         (growth_likely_positive): Likewise.
2320         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
2321         (inline_call): Likewise.
2322         * ipa-inline.c (caller_growth_limits): Likewise.
2323         (can_inline_edge_p): Likewise.
2324         (can_inline_edge_by_limits_p): Likewise.
2325         (compute_uninlined_call_time): Likewise.
2326         (compute_inlined_call_time): Likewise.
2327         (want_inline_small_function_p): Likewise.
2328         (edge_badness): Likewise.
2329         (update_caller_keys): Likewise.
2330         (update_callee_keys): Likewise.
2331         (inline_small_functions): Likewise.
2332         (inline_to_all_callers_1): Likewise.
2333         (dump_overall_stats): Likewise.
2334         (early_inline_small_functions): Likewise.
2335         (early_inliner): Likewise.
2336         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
2337         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
2338         * ipa-pure-const.c (malloc_candidate_p): Likewise.
2339         * ipa-split.c (execute_split_functions): Likewise.
2340         * symbol-summary.h: Likewise.
2341         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
2343 2018-06-19  Richard Biener  <rguenther@suse.de>
2345         * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
2346         (vectorize_loops): ... here.  Fix dbgcnt handling.
2347         (try_vectorize_loop): Wrap try_vectorize_loop_1.
2349 2018-06-19  Segher Boessenkool  <segher@kernel.crashing.org>
2351         PR target/86197
2352         * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
2353         ieee128 argument takes up only one (vector) register, not two (floating
2354         point) registers.
2356 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2358         * gimplify.c (gimplify_init_constructor): Really never clear for an
2359         incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
2361 2018-06-19  Richard Biener  <rguenther@suse.de>
2363         PR tree-optimization/86179
2364         * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
2365         after failed recognition.
2367 2018-06-18  Martin Sebor  <msebor@redhat.com>
2369         PR middle-end/85602
2370         * calls.c (maybe_warn_nonstring_arg): Handle strncat.
2371         * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
2372         Handle integer subtraction.
2373         (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
2374         * tree-ssa-strlen.h (is_strlen_related_p): Declare.
2376 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
2378         * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
2379         param from rtx to rtx_insn *.
2380         * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
2381         param.
2382         (frv_ifcvt_modify_insn): Likwise.
2383         (frv_ifcvt_modify_final): Likwise for local "existing_insn",
2384         adding an as_a <rtx_insn *> cast.  Likewise for local "insn".
2385         * config/mips/mips.c (r10k_insert_cache_barriers): Add an
2386         as_a <rtx_insn *> cast to local "unprotected_region" once
2387         it's been established that it's not NULL or pc_rtx.
2388         * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
2389         param "sethi" from rtx to rtx_insn *.
2390         (nds32_group_float_insns): Likewise for param "insn".
2391         * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
2392         param.
2393         (vax_output_int_subtract): Likewise.
2394         * config/vax/vax.c (vax_output_int_add): Likewise for param
2395         "insn".
2396         (vax_output_int_subtract): Likewise.
2397         * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
2398         (emit_pattern_after): Likewise for param "after".
2399         (emit_insn_after): Likewise.
2400         (emit_jump_insn_after): Likewise.
2401         (emit_call_insn_after): Likewise.
2402         (emit_debug_insn_after): Likewise.
2403         (emit_pattern_before): Likewise for param "before".
2404         (emit_insn_before): Likewise.
2405         (emit_jump_insn_before): Likewise.
2406         * final.c (get_insn_template): Likewise for param "insn", removing
2407         a cast.
2408         * output.h (get_insn_template): Likewise for 2nd param.
2409         * rtl.h (emit_insn_before): Likewise.
2410         (emit_jump_insn_before): Likewise.
2411         (emit_debug_insn_before_noloc): Likewise.
2412         (emit_insn_after): Likewise.
2413         (emit_jump_insn_after): Likewise.
2414         (emit_call_insn_after): Likewise.
2415         (emit_debug_insn_after): Likewise.
2416         (set_insn_deleted): Likewise for param.
2418 2018-06-18  Michael Meissner  <meissner@linux.ibm.com>
2420         PR target/85358
2421         * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
2422         floating point modes, so that IFmode is numerically greater than
2423         TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
2424         to declare the ordering.  This prevents IFmode from being
2425         converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
2426         machine.  Include rs6000-modes.h to share the fractional values
2427         between genmodes* and the rest of the compiler.
2428         (IFmode): Likewise.
2429         (KFmode): Likewise.
2430         (TFmode): Likewise.
2431         * config/rs6000/rs6000-modes.h: New file.
2432         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
2433         meaning of rs6000_long_double_size so that 126..128 selects an
2434         appropriate 128-bit floating point type.
2435         (rs6000_option_override_internal): Likewise.
2436         * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
2437         (TARGET_LONG_DOUBLE_128): Change the meaning of
2438         rs6000_long_double_size so that 126..128 selects an appropriate
2439         128-bit floating point type.
2440         (LONG_DOUBLE_TYPE_SIZE): Update comment.
2441         * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
2442         source and destination to match the standard usage.
2443         (truncifkf2): Likewise.
2444         (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
2445         ISA 2.07 to use an explicit clobber, instead of passing in a
2446         temporary.
2447         (copysign<mode>3_soft): Likewise.
2449 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
2451         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
2452         Replace dump_printf_loc call with DUMP_VECT_SCOPE.
2453         (vect_slp_analyze_instance_dependence): Likewise.
2454         (vect_enhance_data_refs_alignment): Likewise.
2455         (vect_analyze_data_refs_alignment): Likewise.
2456         (vect_slp_analyze_and_verify_instance_alignment
2457         (vect_analyze_data_ref_accesses): Likewise.
2458         (vect_prune_runtime_alias_test_list): Likewise.
2459         (vect_analyze_data_refs): Likewise.
2460         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
2461         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
2462         (vect_analyze_scalar_cycles_1): Likewise.
2463         (vect_get_loop_niters): Likewise.
2464         (vect_analyze_loop_form_1): Likewise.
2465         (vect_update_vf_for_slp): Likewise.
2466         (vect_analyze_loop_operations): Likewise.
2467         (vect_analyze_loop): Likewise.
2468         (vectorizable_induction): Likewise.
2469         (vect_transform_loop): Likewise.
2470         * tree-vect-patterns.c (vect_pattern_recog): Likewise.
2471         * tree-vect-slp.c (vect_analyze_slp): Likewise.
2472         (vect_make_slp_decision): Likewise.
2473         (vect_detect_hybrid_slp): Likewise.
2474         (vect_slp_analyze_operations): Likewise.
2475         (vect_slp_bb): Likewise.
2476         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
2477         (vectorizable_bswap): Likewise.
2478         (vectorizable_call): Likewise.
2479         (vectorizable_simd_clone_call): Likewise.
2480         (vectorizable_conversion): Likewise.
2481         (vectorizable_assignment): Likewise.
2482         (vectorizable_shift): Likewise.
2483         (vectorizable_operation): Likewise.
2484         * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
2486 2018-06-18  Martin Sebor  <msebor@redhat.com>
2488         PR tree-optimization/81384
2489         * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
2490         * builtins.c (expand_builtin_strnlen): New function.
2491         (expand_builtin): Call it.
2492         (fold_builtin_n): Avoid setting TREE_NO_WARNING.
2493         * builtins.def (BUILT_IN_STRNLEN): New.
2494         * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
2495         Warn for bounds in excess of maximum object size.
2496         * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
2497         single-value ranges.  Handle strnlen.
2498         (handle_builtin_strlen): Handle strnlen.
2499         (strlen_check_and_optimize_stmt): Same.
2500         * doc/extend.texi (Other Builtins): Document strnlen.
2502 2018-06-18  Maya Rashish  <coypu@sdf.org>
2504         * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
2505         (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
2506         (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
2508         * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
2509         here to ...
2510         * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
2512 2018-06-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2514         * tree.c (escaped_string::escape): Replace cast to char * by
2515         const_cast<char *> (unescaped).
2517 2018-06-18  Nick Clifton  <nickc@redhat.com>
2519         PR 84195
2520         * tree.c (escaped_string): New class.  Converts an unescaped
2521         string into its escaped equivalent.
2522         (warn_deprecated_use): Use the new class to convert the
2523         deprecation message, if present.
2524         (test_escaped_strings): New self test.
2525         (test_c_tests): Add test_escaped_strings.
2526         * doc/extend.texi (deprecated): Add a note that the
2527         deprecation message is affected by the -fmessage-length
2528         option, and that control characters will be escaped.
2529         (#pragma GCC error): Document this pragma.
2530         (#pragma GCC warning): Likewise.
2531         * doc/invoke.texi (-fmessage-length): Document this option's
2532         effect on the #warning and #error preprocessor directives and
2533         the deprecated attribute.
2535 2018-06-18  Eric Botcazou  <ebotcazou@adacore.com>
2537         * tree.c (decl_value_expr_lookup): Revert latest change.
2538         (decl_value_expr_insert): Likewise.
2540 2018-06-17  Eric Botcazou  <ebotcazou@adacore.com>
2542         * gimplify.c (nonlocal_vlas): Delete.
2543         (nonlocal_vla_vars): Likewise.
2544         (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
2545         referenced VLAs.
2546         (gimplify_body): Do not create and destroy nonlocal_vlas.
2547         * tree-nested.c: Include diagnostic.h.
2548         (use_pointer_in_frame): Tweak.
2549         (lookup_field_for_decl): Add assertion and declare the transformation.
2550         (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
2551         internal error when the reference is in a wrong context.  Do not
2552         create a debug decl by default.
2553         (note_nonlocal_block_vlas): Delete.
2554         (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
2555         (convert_local_reference_op) <PARM_DECL>: Skip the frame decl.  Do not
2556         create a debug decl by default.
2557         (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
2558         call is in a wrong context.
2559         (fixup_vla_decls): New function.
2560         (finalize_nesting_tree_1): Adjust comment.  Call fixup_vla_decls if no
2561         debug variables were created.
2562         * tree.c (decl_value_expr_lookup): Add checking assertion.
2563         (decl_value_expr_insert): Likewise.
2565 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
2567         PR middle-end/82479
2568         * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
2569         * tree-scalar-evolution.c (interpret_expr): Likewise.
2570         (expression_expensive_p): Likewise.
2571         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
2572         * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
2573         (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
2574         (ssa_defined_by_minus_one_stmt_p): New.
2576 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
2578         PR middle-end/64946
2579         * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
2580         * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
2581         * dojump.c (do_jump): Likewise.
2582         * expr.c (expand_expr_real_2): Check operand type's sign.
2583         * fold-const.c (const_unop): Handle ABSU_EXPR.
2584         (fold_abs_const): Likewise.
2585         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2586         * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
2587         (strip_sign_op_1): Likesise.
2588         * match.pd: Add new pattern to generate ABSU_EXPR.
2589         * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
2590         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2591         * tree-eh.c (operation_could_trap_helper_p): Likewise.
2592         * tree-inline.c (estimate_operator_cost): Likewise.
2593         * tree-pretty-print.c (dump_generic_node): Likewise.
2594         * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
2595         * tree.def (ABSU_EXPR): New.
2597 2018-06-16  Jakub Jelinek  <jakub@redhat.com>
2599         PR middle-end/86095
2600         * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
2601         documented as preserved for backward compatibility only.
2602         * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
2604         PR rtl-optimization/86108
2605         * bb-reorder.c (create_forwarder_block): Renamed to ...
2606         (create_eh_forwarder_block): ... this.  Split OLD_BB after labels and
2607         jump from new landing pad to the second part.
2608         (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
2609         Adjust callers.
2611 2018-06-15  Jakub Jelinek  <jakub@redhat.com>
2613         PR middle-end/85878
2614         * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
2615         check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
2616         Only call store_expr for halves if the mode is the same.
2618         PR middle-end/86123
2619         * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
2620         Fix up comment formatting.
2622 2018-06-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2624         * typed-splay-tree.h (typed_splay_tree::remove): New function.
2625         (typed_splay_tree::closure,
2626         typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
2627         (typed_splay_tree::typed_splay_tree,
2628         typed_splay_tree::operator =): Declared private.
2629         (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
2630         typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
2631         typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
2632         typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
2633         typed_splay_tree::splay_tree_splay,
2634         typed_splay_tree::splay_tree_foreach_helper,
2635         typed_splay_tree::splay_tree_insert,
2636         typed_splay_tree::splay_tree_remove,
2637         typed_splay_tree::splay_tree_lookup,
2638         typed_splay_tree::splay_tree_predecessor,
2639         typed_splay_tree::splay_tree_successor,
2640         typed_splay_tree::splay_tree_min,
2641         typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
2642         (typed_splay_tree::root, typed_splay_tree::comp,
2643         typed_splay_tree::delete_key,
2644         typed_splay_tree::delete_value): New data members.
2645         * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
2646         typed_splay_tree::remove.
2648 2018-06-15  Matthew Fortune  <matthew.fortune@mips.com>
2650         * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
2651         -mginv and -mno-ginv to the assembler.
2652         * config/mips/mips.opt (-mcrc): New option.
2653         (-mginv): Likewise.
2654         * doc/invoke.text (-mcrc): Document.
2655         (-mginv): Likewise.
2657 2018-06-15  Nick Clifton  <nickc@redhat.com>
2659         PR 84195
2660         * tree.c (escaped_string): New class.  Converts an unescaped
2661         string into its escaped equivalent.
2662         (warn_deprecated_use): Use the new class to convert the
2663         deprecation message, if present.
2664         (test_escaped_strings): New self test.
2665         (test_c_tests): Add test_escaped_strings.
2666         * doc/extend.texi (deprecated): Add a note that the
2667         deprecation message is affected by the -fmessage-length
2668         option, and that control characters will be escaped.
2669         (#pragma GCC error): Document this pragma.
2670         (#pragma GCC warning): Likewise.
2671         * doc/invoke.texi (-fmessage-length): Document this option's
2672         effect on the #warning and #error preprocessor directives and
2673         the deprecated attribute.
2675 2018-06-15  Richard Biener  <rguenther@suse.de>
2677         * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
2678         here, also noting vector size used.
2679         * tree-vectorizer.c (vectorize_loops): Adjust.  Note vector
2680         size used in MSG_OPTIMIZED_LOCATIONS dump.
2681         (pass_slp_vectorize::execute): Adjust.
2683 2018-06-15  Claudiu Zissulescu  <claziss@synopsys.com>
2685         PR target/85968
2686         * config/arc/arc.c (arc_return_address_register): Fix
2687         if-condition.
2689 2018-06-15  Richard Biener  <rguenther@suse.de>
2691         PR middle-end/86159
2692         * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
2693         leave useless conversion stripping to force_gimple_operand_gsi.
2694         (gimplify_build2): Likewise.
2695         (gimplify_build1): Likewise.
2697 2018-06-15  Richard Biener  <rguenther@suse.de>
2699         PR middle-end/86076
2700         * tree-cfg.c (move_stmt_op): unshare invariant addresses
2701         before adjusting their block.
2703 2018-06-15  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2705         * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
2706         multilibs for *-*-rtems*.
2707         * config/riscv/t-rtems: New file.
2709 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
2711         PR middle-end/86122
2712         * match.pd ((A +- CST1) +- CST2): Punt if last resort
2713         unsigned_type_for returns NULL.
2715         PR target/85945
2716         * lower-subreg.c (find_decomposable_subregs): Don't decompose float
2717         subregs of multi-word pseudos unless the float mode has word size.
2719 2018-06-14  Richard Biener  <rguenther@suse.de>
2721         PR middle-end/86139
2722         * tree-vect-generic.c (build_word_mode_vector_type): Remove
2723         duplicate and harmful type_hash_canon.
2724         * tree.c (type_hash_canon): Assert we didn't find ourselves.
2726 2018-06-14  Richard Biener  <rguenther@suse.de>
2728         PR ipa/86124
2729         * tree-ssa-struct-alias.c (create_variable_info_for): Handle
2730         NULL cgraph_node.
2732 2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2734         * config/rtems.h (STDINT_LONG32): Define.
2736 2018-06-13  Matthew Fortune  <matthew.fortune@mips.com>
2737             Prachi Godbole  <prachi.godbole@imgtec.com>
2739         * config/mips/mips-cpus.def: Define P6600.
2740         * config/mips/mips-tables.opt: Regenerate.
2741         * config/mips/mips.c (mips_ucbranch_type): New enum.
2742         (mips_rtx_cost_data): Add support for P6600.
2743         (mips_issue_rate): Likewise.
2744         (mips_multipass_dfa_lookahead): Likewise.
2745         (mips_avoid_hazard): Likewise.
2746         (mips_reorg_process_insns): Likewise.
2747         (mips_classify_branch_p6600): New function.
2748         * config/mips/mips.h (TUNE_P6600): New define.
2749         (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
2750         (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
2751         * config/mips/mips.md: Include p6600.md.
2752         (processor): Add p6600.
2753         * config/mips/p6600.md: New file.
2754         * doc/invoke.texi: Add p6600 to supported architectures.
2756 2018-06-13  Martin Sebor  <msebor@redhat.com>
2758         PR tree-optimization/86114
2759         * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
2760         of integer types.
2761         * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
2763 2018-06-13  Richard Biener  <rguenther@suse.de>
2765         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
2766         Properly set vector type of the intermediate stmt.
2767         * tree-vect-stmts.c (vectorizable_operation): The destination
2768         var always has vectype_out type.
2770 2018-06-13  Jeff Law  <law@redhat.com>
2772         * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
2773         integer 0 for argument to print_rtl_with_bb.
2774         (rl78_reorg): Likewise.
2776 2018-06-13  David Malcolm  <dmalcolm@redhat.com>
2778         * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
2779         from rtx to rtx_insn *.
2780         * config/bfin/bfin.c (hwloop_optimize): Likewise for local
2781         "label".
2782         (add_sched_insns_for_speculation): Likewise for local "target",
2783         converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
2784         * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
2785         from rtx_insn ** to rtx_code_label **.
2786         (reorg_emit_nops): Likewise.
2787         (c6x_reorg): Likewise for local "call_labels".
2788         * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
2789         rtx to rtx_insn *.
2790         * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
2791         rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
2792         the loops over LABEL_REFS.
2793         (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
2794         braf_label.
2795         (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
2796         (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
2797         (split_branches): Strengthen local "olabel" from rtx to
2798         rtx_insn *, adding a safe_as_a cast.
2799         * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
2800         to "rtx_insn *".
2801         (add_insn_after): Likewise for first two params.
2802         (add_insn_before): Likewise.
2803         (remove_insn): Likewise for param.
2804         (emit_pattern_before_noloc): Likewise for second and third params.
2805         (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
2806         (emit_call_insn_before_noloc): Likewise.
2807         (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
2808         to "rtx_insn *".
2809         (emit_barrier_before): Likewise.
2810         (emit_label_before): Strengthen "label" param from "rtx" to
2811         "rtx_code_label *".  Strengthen "before" param from "rtx" to
2812         "rtx_insn *".
2813         (emit_insn_after_1): Strengthen "after" param from "rtx" to
2814         "rtx_insn *".
2815         (emit_pattern_after_noloc): Likewise.
2816         (emit_insn_after_noloc): Likewise.
2817         (emit_jump_insn_after_noloc): Likewise.
2818         (emit_call_insn_after_noloc): Likewise.
2819         (emit_debug_insn_after_noloc): Likewise.
2820         (emit_barrier_after): Likewise.
2821         (emit_label_after): Likewise for both params.
2822         (emit_pattern_after_setloc): Likewise for "after" param.  Convert
2823         "loc" param from "int" to "location_t".
2824         (emit_insn_after_setloc): Likewise.
2825         (emit_jump_insn_after_setloc): Likewise.
2826         (emit_call_insn_after_setloc): Likewise.
2827         (emit_debug_insn_after_setloc): Likewise.
2828         (emit_pattern_before_setloc): Likewise for "before" param.  Convert
2829         "loc" param from "int" to "location_t".
2830         (emit_pattern_before): Convert NULL_RTX to NULL.
2831         (emit_insn_before_setloc): Convert "loc" param from "int" to
2832         "location_t".
2833         (emit_jump_insn_before_setloc): Likewise.
2834         (emit_call_insn_before_setloc): Likewise.
2835         (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
2836         rtx_insn *.  Convert "loc" param from "int" to "location_t".
2837         * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
2838         emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
2839         Convert 3rd param from "int" to "location_t".
2840         (emit_barrier_before, emit_barrier_after, next_real_insn):
2841         Strengthen param from rtx to rtx_insn *.
2842         (emit_label_before): Strengthen 1st param from "rtx" to
2843         "rtx_code_label *".  Strengthen 2nd param from "rtx" to
2844         "rtx_insn *".
2845         (emit_insn_after_noloc, emit_jump_insn_after_noloc,
2846         emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
2847         Strengthen 2nd param from "rtx" to "rtx_insn *".
2848         (emit_insn_after_setloc, emit_jump_insn_after_setloc)
2849         emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
2850         Likewise. Convert 3rd param from "int" to "location_t".
2851         (emit_label_after): Strengthen 1st param from "rtx" to
2852         "rtx_code_label *".
2853         (next_real_insn, remove_insn): Strengthen param from "rtx" to
2854         "rtx_insn *".
2855         (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
2856         from "rtx" to "rtx_insn *".
2858 2018-06-13  Jan Hubicka  <hubicka@gcc.gnu.org>
2860         * cgraph.c (cgraph_node::get_untransformed_body): Dump function
2861         bodies streamed in with -Q.
2862         * dumpfile.c (dump_files): Add lto-stream-out dump file.
2863         * dumpfile.h (tree_dump_index): Add lto_stream_out.
2864         * gimple-streamer-out.c: Include gimple-pretty-print.h
2865         (output_bb): Dump stmts streamed.
2866         * lto-section-out.c: Include print-tree.h
2867         (lto_begin_section): Dump sections created.
2868         (lto_output_decl_index): Dump decl encoded.
2869         * lto-streamer-out.c: Include print-tree.h
2870         (create_output_block): Dump output block created.
2871         (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
2872         (output_function): Dump function output.
2873         (output_constructor): Dump constructor streamed.
2874         (write_global_stream): Output indexes encoded.
2875         (produce_asm_for_decls): Dump streams encoded.
2876         * lto-streamer.c (streamer_dump_file): New global var.
2877         * lto-streamer.h (streamer_dump_file): Declare.
2878         * passes.c (ipa_write_summaries): Initialize streamer dump.
2879         * varpool.c (varpool_node::get_constructor): Dump constructors streamed
2880         in.
2882 2018-06-13  Eric Botcazou  <ebotcazou@adacore.com>
2884         PR target/86048
2885         * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
2886         offsets for register save directives.  Emit a second batch of save
2887         directives, if need be, when the function accesses prior frames.
2889 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2891         * config/arc/fpu.md (fmasf4): Force operand to register.
2892         (fnmasf4): Likewise.
2894 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2896         * config/arc/arc-protos.h (arc_pad_return): Remove.
2897         * config/arc/arc.c (machine_function): Remove force_short_suffix
2898         and size_reason.
2899         (arc_print_operand): Adjust printing of '&'.
2900         (arc_verify_short): Remove conditional printing of short suffix.
2901         (arc_final_prescan_insn): Remove reference to size_reason.
2902         (pad_return): New function.
2903         (arc_reorg): Call pad_return.
2904         (arc_pad_return): Remove.
2905         (arc_init_machine_status): Remove reference to force_short_suffix.
2906         * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
2907         (attr length): When attribute iscompact is true force to 2
2908         regardless; in the case of maybe check if we want to force the
2909         instruction to have 4 bytes length.
2910         (nopv): Change it to generate 4 byte long nop as well.
2911         (blockage): New pattern.
2912         (simple_return): Remove call to arc_pad_return.
2913         (p_return_i): Likewise.
2915 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2917         * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
2919 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2921         * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
2922         ARC cores.
2924 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2926         * config/arc/arc.c (atomic_exchangesi): EX instruction is default
2927         for ARC700 and ARCv2.
2929 2018-06-13  Chenghua Xu <paul.hua.gm@gmail.com>
2931         PR target/86076
2932         * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
2933         operands[2] instead of operands[1].
2936 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
2938         * lra-constraints.c (simplify_operand_subreg): In the paradoxical
2939         case, check whether the outer register overlaps an unallocatable
2940         register, not just whether it fits the required class.
2942 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
2944         * poly-int.h (can_div_trunc_p): Add new overload in which all values
2945         are poly_ints.
2946         * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
2947         (memrefs_conflict_p): Likewise.
2948         (init_alias_analysis): Likewise.
2949         * cfgexpand.c (expand_debug_expr): Likewise.
2950         * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
2951         * cse.c (fold_rtx): Likewise.
2952         * explow.c (adjust_stack, anti_adjust_stack): Likewise.
2953         * expr.c (emit_block_move_hints): Likewise.
2954         (clear_storage_hints, push_block, emit_push_insn): Likewise.
2955         (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
2956         (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
2957         (emit_group_store): Likewise.
2958         (find_args_size_adjust): Use strip_offset.  Use rtx_to_poly_int64
2959         to read the PRE/POST_MODIFY increment.
2960         * calls.c (store_one_arg): Use strip_offset.
2961         * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
2962         poly_int_rtx_p.
2963         (set_noop_p): Use rtx_to_poly_int64 for the elements selected
2964         by a VEC_SELECT.
2965         * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
2966         (simplify_binary_operation_1): Extend CONST_INT handling to
2967         poly_int_rtx_p.
2968         * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
2969         than a HOST_WIDE_INT.
2970         (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
2971         poly_int64.
2972         (adjust_mems, add_stores): Update accodingly.
2973         (vt_canonicalize_addr): Track polynomial offsets.
2974         (emit_note_insn_var_location): Likewise.
2975         (vt_add_function_parameter): Likewise.
2976         (vt_initialize): Likewise.
2978 2018-06-12  Jeff Law  <law@redhat.com>
2980         * config.gcc (alpha*-*-freebsd*): Remove.
2981         * config/alpha/freebsd.h: Remove.
2983 2018-06-12  David Malcolm  <dmalcolm@redhat.com>
2985         PR other/69968
2986         * spellcheck-tree.c (levenshtein_distance): Rename to...
2987         (get_edit_distance): ...this, and update for underlying renaming.
2988         * spellcheck-tree.h (levenshtein_distance): Rename to...
2989         (get_edit_distance): ...this.
2990         * spellcheck.c (levenshtein_distance): Rename to...
2991         (get_edit_distance): ...this.  Convert from Levenshtein distance
2992         to Damerau-Levenshtein distance by supporting transpositions of
2993         adjacent characters.  Rename "v1" to "v_next" and "v0" to
2994         "v_one_ago".
2995         (selftest::levenshtein_distance_unit_test_oneway): Rename to...
2996         (selftest::test_edit_distance_unit_test_oneway): ...this, and
2997         update for underlying renaming.
2998         (selftest::levenshtein_distance_unit_test): Rename to...
2999         (selftest::test_get_edit_distance_unit): ...this, and update for
3000         underlying renaming.
3001         (selftest::test_find_closest_string): Add example from PR 69968
3002         where transposition helps
3003         (selftest::test_metric_conditions): Update for renaming.
3004         (selftest::test_metric_conditions): Likewise.
3005         (selftest::spellcheck_c_tests): Likewise.
3006         * spellcheck.h (levenshtein_distance): Rename both overloads to...
3007         (get_edit_distance): ...this.
3008         (best_match::consider): Update for renaming.
3010 2018-06-12  Martin Sebor  <msebor@redhat.com>
3012         PR tree-optimization/85259
3013         * builtins.c (compute_objsize): Handle constant offsets.
3014         * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
3015         true iff a warning has been issued.
3016         * gimple.h (gimple_nonartificial_location): New function.
3017         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
3018         gimple_nonartificial_location and handle -Wno-system-headers.
3019         (handle_builtin_stxncpy): Same.
3021 2018-06-12  Martin Sebor  <msebor@redhat.com>
3023         PR c/85931
3024         * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
3026 2018-06-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
3028         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
3029         BUILTIN_VEC_XST entries for pointer to double and long long.
3031 2018-06-12  H.J. Lu  <hongjiu.lu@intel.com>
3033         PR target/85990
3034         * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
3035         Update comments.
3036         * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
3037         Likewise.
3039 2018-06-12  Martin Liska  <mliska@suse.cz>
3041         * doc/options.texi: Document IntegerRange.
3043 2018-06-12  Martin Liska  <mliska@suse.cz>
3045         * config/i386/i386.opt: Make MPX-related options as Deprecated.
3046         * opt-functions.awk: Handle Deprecated flag.
3047         * opts-common.c (decode_cmdline_option): Handle cl_deprecated
3048         and report error.
3049         (read_cmdline_option): Report warning for a deprecated option.
3050         * opts.h (struct cl_option): Add new field cl_deprecated.
3051         (CL_ERR_DEPRECATED): New.
3053 2018-06-12  Martin Liska  <mliska@suse.cz>
3055         * doc/options.texi: Document Deprecated option flag.
3057 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
3059         * config/arc/arc-arch.h (arc_extras): New enum.
3060         (arc_cpu_t):Add field extra.
3061         (arc_cpu_types): Consider the extras.
3062         * config/arc/arc-cpus.def: Add extras info.
3063         * config/arc/arc-opts.h (processor_type): Consider extra field.
3064         * config/arc/arc.c (arc_override_options): Handle extra field.
3066 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
3068         * config/arc/arc-arch.h: Update ARC_OPTX macro.
3069         * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
3070         field.
3071         * config/arc/arc.c (arc_init): Update pic warning.
3072         (irq_range): Update irq range parsing warnings.
3073         (arc_override_options): Update various warning messages.
3074         (arc_handle_aux_attribute): Likewise.
3076 2018-06-12  Robert Suchanek  <robert.suchanek@mips.com>
3078         * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
3080 2018-06-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3082         * doc/sourcebuild.texi: Document usage of line number 0 in verify
3083         compiler messages directives.
3085 2018-06-12  Matthew Fortune  <mfortune@gmail.com>
3087         * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
3088         * config/mips/mips-tables.opt: Regenerate.
3089         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
3090         mips64r6.
3091         * doc/invoke.texi: Document -march=i6500.
3093 2018-06-12  Prachi Godbole  <prachi.godbole@imgtec.com>
3095         * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
3096         (i6400_gpmul): Add cpu_unit.
3097         (i6400_gpdiv): Likewise.
3098         (i6400_msa_add_d): Update reservations.
3099         (i6400_msa_int_add) Likewise.
3100         (i6400_msa_short_logic3) Likewise.
3101         (i6400_msa_short_logic2) Likewise.
3102         (i6400_msa_short_logic) Likewise.
3103         (i6400_msa_move) Likewise.
3104         (i6400_msa_cmp) Likewise.
3105         (i6400_msa_short_float2) Likewise.
3106         (i6400_msa_div_d) Likewise.
3107         (i6400_msa_long_logic1) Likewise.
3108         (i6400_msa_long_logic2) Likewise.
3109         (i6400_msa_mult) Likewise.
3110         (i6400_msa_long_float2) Likewise.
3111         (i6400_msa_long_float4) Likewise.
3112         (i6400_msa_long_float5) Likewise.
3113         (i6400_msa_long_float8) Likewise.
3114         (i6400_fpu_fadd): Include frint type.
3115         (i6400_fpu_store): New define_insn_reservation.
3116         (i6400_fpu_load): Likewise.
3117         (i6400_fpu_move): Likewise.
3118         (i6400_fpu_fcmp): Likewise.
3119         (i6400_fpu_fmadd): Likewise.
3120         (i6400_int_mult): Include imul3nc type and update reservation.
3121         (i6400_int_div): Include idiv3 type and update reservation.
3122         (i6400_int_load): Update to check type not move_type.
3123         (i6400_int_store): Likewise.
3124         (i6400_int_prefetch): Set zero latency.
3126 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
3128         * gcc.c: Document new %@{...} sequence.
3129         (LINK_COMMAND_SPEC): Use it for the -L switches.
3130         (cpp_unique_options): Use it for the -I switches.
3131         (at_file_argbuf): New global variable.
3132         (in_at_file): Likewise.
3133         (alloc_args): Create at_file_argbuf.
3134         (clear_args): Truncate at_file_argbuf.
3135         (store_arg): If in_at_file, push the argument onto at_file_argbuf.
3136         (open_at_file): New function.
3137         (close_at_file): Likewise.
3138         (create_at_file): Delete.
3139         (do_spec_1) <'i'>: Use open_at_file/close_at_file.
3140         <'o'>: Likewise.
3141         <'@'>: New case.
3142         (validate_switches_from_spec): Deal with %@{...} sequence.
3143         (validate_switches): Likewise.
3144         (driver::finalize): Call clear_args.
3146 2018-06-11  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
3148         * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
3150 2018-06-11  Martin Sebor  <msebor@redhat.com>
3152         * doc/invoke.texi (-Wall): List -Wc++17-compat.
3153         (Wno-class-memaccess): Add @opindex.
3154         (Wno-templates, Wno-multiple-inheritance): Same.
3155         (Wno-virtual-inheritance, Wno-namespaces): Same.
3156         (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
3157         (Wno-format-overflow, Wno-format-truncation): Same.
3158         (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
3159         (Wno-alloc-size-larger-than, Wframe-larger-than): Same
3160         (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
3161         (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
3162         (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
3163         (Wno-misspelled-isr): Same.
3165 2018-06-11  Martin Sebor  <msebor@redhat.com>
3167         * PR tree-optimization/86083
3168         * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
3170 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
3172         * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
3174 2018-06-11  Segher Boessenkool  <segher@kernel.crashing.org>
3176         PR target/85755
3177         * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
3178         on the correct operand.
3179         (*movdi_internal64): Ditto.
3181 2018-06-11  Martin Liska  <mliska@suse.cz>
3183         PR tree-optimization/86089
3184         * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
3186 2018-06-11  Julia Koval  <julia.koval@intel.com>
3188         * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
3189         _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
3190         * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
3192 2018-06-11  Olivier Hainque  <hainque@adacore.com>
3194         * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
3195         for Ada with strict dwarf2.
3197 2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
3199         PR target/85755
3200         * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
3201         addresses.
3203 2018-06-08  Jan Hubicka  <hubicka@ucw.cz>
3205         * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
3207 2018-06-08  David Edelsohn  <dje.gcc@gmail.com>
3209         * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
3210         TARGET_ELF.
3212 2018-06-08  Martin Liska  <mliska@suse.cz>
3214         * tree-cfg.h (debug_function): Fix argument type to match
3215         implementation.
3217 2018-06-08  Martin Liska  <mliska@suse.cz>
3219         * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
3220         Remove usage of MPX-related (and removed) fields.
3221         * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
3223 2018-06-08  David Malcolm  <dmalcolm@redhat.com>
3225         * cfg.c (debug): Use TDF_NONE rather than 0.
3226         * cfghooks.c (debug): Likewise.
3227         * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
3228         (struct dump_option_value_info): Convert to...
3229         (struct kv_pair): ...this template type.
3230         (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
3231         rather than 0.
3232         (optinfo_verbosity_options): Likewise.
3233         (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
3234         OPTGROUP_NONE.
3235         (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
3236         than int for "optgroup_flags" param.
3237         (dump_generic_expr_loc): Use dump_flags_t rather than int for
3238         "dump_kind" param.
3239         (dump_dec): Likewise.
3240         (dump_finish): Use TDF_NONE rather than 0.
3241         (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
3242         rather than int for "optgroup_flags" param.  Use TDF_NONE rather
3243         than 0.  Update for change to option_ptr.
3244         (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
3245         to optgroup_flags_t *.  Use TDF_NONE and OPTGROUP_NONE rather than
3246         0.  Update for changes to optinfo_verbosity_options and
3247         optgroup_options.
3248         (opt_info_switch_p): Convert optgroup_flags from int to
3249         optgroup_flags_t.
3250         (dump_basic_block): Use dump_flags_t rather than int
3251         for "dump_kind" param.
3252         * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
3253         TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
3254         TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
3255         TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
3256         TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
3257         MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
3258         TDF_NONE): Convert from macros to...
3259         (enum dump_flag): ...this new enum.
3260         (dump_flags_t): Update to use enum.
3261         (operator|, operator&, operator~, operator|=, operator&=):
3262         Implement for dump_flags_t.
3263         (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
3264         OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
3265         Convert from macros to...
3266         (enum optgroup_flag): ...this new enum.
3267         (optgroup_flags_t): New typedef.
3268         (operator|, operator|=): Implement for optgroup_flags_t.
3269         (struct dump_file_info): Convert field "alt_flags" to
3270         dump_flags_t.  Convert field "optgroup_flags" to
3271         optgroup_flags_t.
3272         (dump_basic_block): Use dump_flags_t rather than int for param.
3273         (dump_generic_expr_loc): Likewise.
3274         (dump_dec): Likewise.
3275         (dump_register): Convert param "optgroup_flags" to
3276         optgroup_flags_t.
3277         (opt_info_enable_passes): Likewise.
3278         * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
3279         than 0.
3280         * gimple-pretty-print.c (debug): Likewise.
3281         * gimple-ssa-store-merging.c (bswap_replace): Likewise.
3282         (merged_store_group::apply_stores): Likewise.
3283         * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
3284         * gimple.c (verify_gimple_pp): Likewise.
3285         * graphite-poly.c (print_pbb_body): Likewise.
3286         * passes.c (pass_manager::register_one_dump_file): Convert
3287         local "optgroup_flags" to optgroup_flags_t.
3288         * print-tree.c (print_node): Use TDF_NONE rather than 0.
3289         (debug): Likewise.
3290         (debug_body): Likewise.
3291         * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
3292         to optgroup_flags_t.
3293         * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
3294         than 0.
3295         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
3296         (convert_mult_to_fma): Likewise.
3297         * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
3298         * tree-ssa-sccvn.c (vn_eliminate): Likewise.
3299         * tree-vect-data-refs.c (dump_lower_bound): Convert param
3300         "dump_kind" to dump_flags_t.
3302 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
3304         * config/rs6000/rs6000.c (min, max): Delete.
3306 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
3308         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
3309         -mabi=spe and -mabi=no-spe.
3311 2018-06-08  Martin Liska  <mliska@suse.cz>
3313         * ipa-pure-const.c (propagate_pure_const): Use ::get at places
3314         where we expect an existing summary.
3316 2018-06-08  Martin Liska  <mliska@suse.cz>
3318         * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
3319         * ipa-inline.h (estimate_edge_growth): Likewise.
3321 2018-06-08  Martin Liska  <mliska@suse.cz>
3323         * cgraph.c (function_version_hasher::hash): Use
3324         cgraph_node::get_uid ().
3325         (function_version_hasher::equal):
3326         * cgraph.h (cgraph_node::get_uid): New method.
3327         * ipa-inline.c (update_caller_keys): Use
3328         cgraph_node::get_uid ().
3329         (update_callee_keys): Likewise.
3330         * ipa-utils.c (searchc): Likewise.
3331         (ipa_reduced_postorder): Likewise.
3332         * lto-cgraph.c (input_node): Likewise.
3333         * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
3334         * symbol-summary.h (symtab_insertion): Likewise.
3335         (symtab_removal): Likewise.
3336         (symtab_duplication): Likewise.
3337         * tree-pretty-print.c (dump_function_header): Likewise.
3338         * tree-sra.c (convert_callers_for_node): Likewise.
3340 2018-06-08  Martin Liska  <mliska@suse.cz>
3342         * cgraph.c (symbol_table::create_edge): Always assign a new
3343         unique number.
3344         (symbol_table::free_edge): Do not recycle numbers.
3345         * cgraph.h (cgraph_edge::get): New method.
3346         * symbol-summary.h (symtab_removal): Use it.
3347         (symtab_duplication): Likewise.
3348         (call_summary::hashable_uid): Remove.
3350 2018-06-08  Martin Liska  <mliska@suse.cz>
3352         * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
3353         (initialize_growth_caches): Remove.
3354         (free_growth_caches): Likewise.
3355         (do_estimate_edge_time): Use edge_growth_cache.
3356         (do_estimate_edge_size): Likewise.
3357         (do_estimate_edge_hints): Likewise.
3358         * ipa-inline.c (reset_edge_caches): Likewise.
3359         (recursive_inlining): Likewise.
3360         (inline_small_functions): Likewise.
3361         * ipa-inline.h (initialize_growth_caches): Remove.
3362         (estimate_edge_size): Likewise.
3363         (estimate_edge_time): Likewise.
3364         (estimate_edge_hints): Likewise.
3365         (reset_edge_growth_cache): Likewise.
3366         * symbol-summary.h (call_summary::remove): New method.
3368 2018-06-08  Martin Liska  <mliska@suse.cz>
3370         * ipa-cp.c (class edge_clone_summary): New summary.
3371         (grow_edge_clone_vectors): Remove.
3372         (ipcp_edge_duplication_hook): Remove.
3373         (class edge_clone_summary_t): New call_summary class.
3374         (ipcp_edge_removal_hook): Remove.
3375         (edge_clone_summary_t::duplicate): New function.
3376         (get_next_cgraph_edge_clone): Use edge_clone_summaries.
3377         (create_specialized_node): Likewise.
3378         (ipcp_driver): Initialize edge_clone_summaries and do not
3379         register hooks.
3381 2018-06-08  Martin Liska  <mliska@suse.cz>
3383         * symbol-summary.h (get): New function.
3384         (call_summary::m_initialize_when_cloning): New class member.
3386 2018-06-08  Martin Liska  <mliska@suse.cz>
3388         * cgraph.c (cgraph_node::remove): Do not recycle uid.
3389         * cgraph.h (symbol_table::release_symbol): Do not pass uid.
3390         (symbol_table::allocate_cgraph_symbol): Do not set uid.
3391         * passes.c (uid_hash_t): Record removed_nodes by their uids.
3392         (remove_cgraph_node_from_order): Use the removed_nodes set.
3393         (do_per_function_toporder): Likwise.
3394         * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
3395         instead of summary_uid.
3396         (symtab_removal): Likewise.
3397         (symtab_duplication): Likewise.
3399 2018-06-08  Martin Liska  <mliska@suse.cz>
3401         * ipa-cp.c (ipcp_store_bits_results): Use
3402         ipcp_transformation_sum.
3403         (ipcp_store_vr_results): Likewise.
3404         * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
3405         to ...
3406         (ipcp_transformation_initialize): ... this.
3407         (ipa_set_node_agg_value_chain):
3408         (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
3409         (write_ipcp_transformation_info): Likewise.
3410         (read_ipcp_transformation_info): Likewise.
3411         (ipcp_update_bits): Likewise.
3412         (ipcp_update_vr): Likewise.
3413         (ipcp_transform_function): Likewise.
3414         * ipa-prop.h: Rename ipcp_transformation_summary to
3415         ipcp_transformation.
3416         (class ipcp_transformation_t): New function summary.
3417         (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
3418         (ipa_get_agg_replacements_for_node): Likewise.
3420 2018-06-08  Martin Liska  <mliska@suse.cz>
3422         * ipa-pure-const.c (struct funct_state_d): Do it class instead
3423         of struct.
3424         (class funct_state_summary_t): New function_summary class.
3425         (has_function_state): Remove.
3426         (get_function_state): Likewise.
3427         (set_function_state): Likewise.
3428         (add_new_function): Likewise.
3429         (funct_state_summary_t::insert): New function.
3430         (duplicate_node_data): Remove.
3431         (remove_node_data): Remove.
3432         (funct_state_summary_t::duplicate): New function.
3433         (register_hooks): Create new funct_state_summaries.
3434         (pure_const_generate_summary): Use it.
3435         (pure_const_write_summary): Likewise.
3436         (pure_const_read_summary): Likewise.
3437         (propagate_pure_const): Likewise.
3438         (propagate_nothrow): Likewise.
3439         (dump_malloc_lattice): Likewise.
3440         (propagate_malloc): Likewise.
3441         (execute): Do not register hooks, just remove summary
3442         instead.
3443         (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
3444         constructor.
3446 2018-06-08  Martin Liska  <mliska@suse.cz>
3448         * ipa-reference.c (remove_node_data): Remove.
3449         (duplicate_node_data): Likewise.
3450         (class ipa_ref_var_info_summary_t): New class.
3451         (class ipa_ref_opt_summary_t): Likewise.
3452         (get_reference_vars_info): Use ipa_ref_var_info_summaries.
3453         (get_reference_optimization_summary): Use
3454         ipa_ref_opt_sum_summaries.
3455         (set_reference_vars_info): Remove.
3456         (set_reference_optimization_summary): Likewise.
3457         (ipa_init): Create summaries.
3458         (init_function_info): Use function summary.
3459         (ipa_ref_opt_summary_t::duplicate): New function.
3460         (ipa_ref_opt_summary_t::remove): New function.
3461         (get_read_write_all_from_node): Fix GNU coding style.
3462         (propagate): Use function summary.
3463         (write_node_summary_p): Fix GNU coding style.
3464         (stream_out_bitmap): Likewise.
3465         (ipa_reference_read_optimization_summary): Use function summary.
3466         (ipa_reference_c_finalize): Do not release hooks.
3468 2018-06-08  Martin Liska  <mliska@suse.cz>
3470         * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
3471         (analyze_function_body): Extract multiple calls of get_create.
3472         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
3473         * ipa-inline.c (recursive_inlining): Use ::get method.
3474         * ipa-inline.h (estimate_edge_growth): Likewise.
3476 2018-06-08  Martin Liska  <mliska@suse.cz>
3478         * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
3479         HSA_INVALID.
3480         (hsa_function_summary::hsa_function_summary): Use the new enum
3481         value.
3482         (hsa_gpu_implementation_p): Use hsa_summaries::get.
3483         * hsa-gen.c (hsa_get_host_function): Likewise.
3484         (get_brig_function_name): Likewise.
3485         * ipa-hsa.c (process_hsa_functions): Likewise.
3486         (ipa_hsa_write_summary): Likewise.
3487         * symbol-summary.h (symtab_duplication): Use ::get function/
3488         (get): New function.
3490 2018-06-08  Martin Liska  <mliska@suse.cz>
3492         * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
3493         of get.
3494         * hsa-common.c (hsa_summary_t::link_functions): Likewise.
3495         (hsa_register_kernel): Likewise.
3496         * hsa-common.h (hsa_gpu_implementation_p): Likewise.
3497         * hsa-gen.c (hsa_get_host_function): Likewise.
3498         (get_brig_function_name): Likewise.
3499         (generate_hsa): Likewise.
3500         (pass_gen_hsail::execute): Likewise.
3501         * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
3502         (devirtualization_time_bonus): Likewise.
3503         (ipcp_propagate_stage): Likewise.
3504         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
3505         (edge_set_predicate): Likewise.
3506         (evaluate_conditions_for_known_args): Likewise.
3507         (evaluate_properties_for_edge): Likewise.
3508         (ipa_fn_summary::reset): Likewise.
3509         (ipa_fn_summary_t::duplicate): Likewise.
3510         (dump_ipa_call_summary): Likewise.
3511         (ipa_dump_fn_summary): Likewise.
3512         (analyze_function_body): Likewise.
3513         (compute_fn_summary): Likewise.
3514         (estimate_edge_devirt_benefit): Likewise.
3515         (estimate_edge_size_and_time): Likewise.
3516         (estimate_calls_size_and_time): Likewise.
3517         (estimate_node_size_and_time): Likewise.
3518         (inline_update_callee_summaries): Likewise.
3519         (remap_edge_change_prob): Likewise.
3520         (remap_edge_summaries): Likewise.
3521         (ipa_merge_fn_summary_after_inlining): Likewise.
3522         (ipa_update_overall_fn_summary): Likewise.
3523         (read_ipa_call_summary): Likewise.
3524         (inline_read_section): Likewise.
3525         (write_ipa_call_summary): Likewise.
3526         (ipa_fn_summary_write): Likewise.
3527         (ipa_free_fn_summary): Likewise.
3528         * ipa-hsa.c (process_hsa_functions): Likewise.
3529         (ipa_hsa_write_summary): Likewise.
3530         (ipa_hsa_read_section): Likewise.
3531         * ipa-icf.c (sem_function::merge): Likewise.
3532         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
3533         (do_estimate_edge_time): Likewise.
3534         (estimate_size_after_inlining): Likewise.
3535         (estimate_growth): Likewise.
3536         (growth_likely_positive): Likewise.
3537         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
3538         (inline_call): Likewise.
3539         * ipa-inline.c (caller_growth_limits): Likewise.
3540         (can_inline_edge_p): Likewise.
3541         (can_inline_edge_by_limits_p): Likewise.
3542         (compute_uninlined_call_time): Likewise.
3543         (compute_inlined_call_time): Likewise.
3544         (want_inline_small_function_p): Likewise.
3545         (edge_badness): Likewise.
3546         (update_caller_keys): Likewise.
3547         (update_callee_keys): Likewise.
3548         (recursive_inlining): Likewise.
3549         (inline_small_functions): Likewise.
3550         (inline_to_all_callers_1): Likewise.
3551         (dump_overall_stats): Likewise.
3552         (early_inline_small_functions): Likewise.
3553         (early_inliner): Likewise.
3554         * ipa-inline.h (estimate_edge_growth): Likewise.
3555         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
3556         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
3557         * ipa-prop.h (IPA_NODE_REF): Likewise.
3558         (IPA_EDGE_REF): Likewise.
3559         * ipa-pure-const.c (malloc_candidate_p): Likewise.
3560         (propagate_malloc): Likewise.
3561         * ipa-split.c (execute_split_functions): Likewise.
3562         * symbol-summary.h: Rename get to get_create.
3563         (get): Likewise.
3564         (get_create): Likewise.
3565         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
3567 2018-06-08  Martin Liska  <mliska@suse.cz>
3569         * symbol-summary.h (release): Move definition out of class
3570         declaration.
3571         (symtab_removal): Likewise.
3572         (symtab_duplication): Likewise.
3574 2018-06-08  Martin Liska  <mliska@suse.cz>
3576         * symbol-summary.h (function_summary): Move constructor
3577         implementation out of class declaration.
3578         (release): Likewise.
3579         (symtab_insertion): Likewise.
3580         (symtab_removal): Likewise.
3581         (symtab_duplication): Likewise.
3582         (get): Likewise.
3584 2018-06-08  Martin Liska  <mliska@suse.cz>
3586         * Makefile.in: Remove support for MPX (macros, related functions,
3587         fields in cgraph_node, ...).
3588         * builtin-types.def (BT_BND): Likewise.
3589         (BT_FN_BND_CONST_PTR): Likewise.
3590         (BT_FN_CONST_PTR_BND): Likewise.
3591         (BT_FN_VOID_PTR_BND): Likewise.
3592         (BT_FN_BND_CONST_PTR_SIZE): Likewise.
3593         (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
3594         * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
3595         (expand_builtin_mempcpy_with_bounds): Likewise.
3596         (expand_builtin_memset_with_bounds): Likewise.
3597         (expand_builtin_memset_args): Likewise.
3598         (std_expand_builtin_va_start): Likewise.
3599         (expand_builtin): Likewise.
3600         (expand_builtin_with_bounds): Likewise.
3601         * builtins.def (DEF_BUILTIN_CHKP): Likewise.
3602         (DEF_LIB_BUILTIN_CHKP): Likewise.
3603         (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
3604         (DEF_CHKP_BUILTIN): Likewise.
3605         (BUILT_IN_MEMCPY): Likewise.
3606         (BUILT_IN_MEMMOVE): Likewise.
3607         (BUILT_IN_MEMPCPY): Likewise.
3608         (BUILT_IN_MEMSET): Likewise.
3609         (BUILT_IN_STPCPY): Likewise.
3610         (BUILT_IN_STRCAT): Likewise.
3611         (BUILT_IN_STRCHR): Likewise.
3612         (BUILT_IN_STRCPY): Likewise.
3613         (BUILT_IN_STRLEN): Likewise.
3614         (BUILT_IN_MEMCPY_CHK): Likewise.
3615         (BUILT_IN_MEMMOVE_CHK): Likewise.
3616         (BUILT_IN_MEMPCPY_CHK): Likewise.
3617         (BUILT_IN_MEMSET_CHK): Likewise.
3618         (BUILT_IN_STPCPY_CHK): Likewise.
3619         (BUILT_IN_STRCAT_CHK): Likewise.
3620         (BUILT_IN_STRCPY_CHK): Likewise.
3621         * calls.c (store_bounds): Likewise.
3622         (emit_call_1): Likewise.
3623         (special_function_p): Likewise.
3624         (maybe_warn_nonstring_arg): Likewise.
3625         (initialize_argument_information): Likewise.
3626         (finalize_must_preallocate): Likewise.
3627         (compute_argument_addresses): Likewise.
3628         (expand_call): Likewise.
3629         * cfgexpand.c (expand_call_stmt): Likewise.
3630         (expand_return): Likewise.
3631         (expand_gimple_stmt_1): Likewise.
3632         (pass_expand::execute): Likewise.
3633         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
3634         (cgraph_node::remove): Likewise.
3635         (cgraph_node::dump): Likewise.
3636         (cgraph_node::verify_node): Likewise.
3637         * cgraph.h (chkp_function_instrumented_p): Likewise.
3638         (symtab_node::get_alias_target): Likewise.
3639         (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
3640         (cgraph_local_p): Likewise.
3641         * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
3642         (cgraph_edge::rebuild_references): Likewise.
3643         * cgraphunit.c (varpool_node::finalize_decl): Likewise.
3644         (walk_polymorphic_call_targets): Likewise.
3645         (cgraph_node::expand_thunk): Likewise.
3646         (symbol_table::output_weakrefs): Likewise.
3647         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
3648         (ix86_handle_option): Likewise.
3649         * config/i386/constraints.md: Likewise.
3650         * config/i386/i386-builtin-types.def (BND): Likewise.
3651         (VOID): Likewise.
3652         (PVOID): Likewise.
3653         (ULONG): Likewise.
3654         * config/i386/i386-builtin.def (BDESC_END): Likewise.
3655         (BDESC_FIRST): Likewise.
3656         (BDESC): Likewise.
3657         * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
3658         * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
3659         * config/i386/i386.c (enum reg_class): Likewise.
3660         (ix86_target_string): Likewise.
3661         (ix86_option_override_internal): Likewise.
3662         (ix86_conditional_register_usage): Likewise.
3663         (ix86_valid_target_attribute_inner_p): Likewise.
3664         (ix86_set_indirect_branch_type): Likewise.
3665         (ix86_set_current_function): Likewise.
3666         (ix86_function_arg_regno_p): Likewise.
3667         (init_cumulative_args): Likewise.
3668         (ix86_function_arg_advance): Likewise.
3669         (ix86_function_arg): Likewise.
3670         (ix86_pass_by_reference): Likewise.
3671         (ix86_function_value_regno_p): Likewise.
3672         (ix86_function_value_1): Likewise.
3673         (ix86_function_value_bounds): Likewise.
3674         (ix86_return_in_memory): Likewise.
3675         (ix86_setup_incoming_vararg_bounds): Likewise.
3676         (ix86_va_start): Likewise.
3677         (indirect_thunk_need_prefix): Likewise.
3678         (print_reg): Likewise.
3679         (ix86_print_operand): Likewise.
3680         (ix86_expand_call): Likewise.
3681         (ix86_output_function_return): Likewise.
3682         (reg_encoded_number): Likewise.
3683         (BDESC_VERIFYS): Likewise.
3684         (ix86_init_mpx_builtins): Likewise.
3685         (ix86_init_builtins): Likewise.
3686         (ix86_emit_cmove): Likewise.
3687         (ix86_emit_move_max): Likewise.
3688         (ix86_expand_builtin): Likewise.
3689         (ix86_builtin_mpx_function): Likewise.
3690         (ix86_get_arg_address_for_bt): Likewise.
3691         (ix86_load_bounds): Likewise.
3692         (ix86_store_bounds): Likewise.
3693         (ix86_load_returned_bounds): Likewise.
3694         (ix86_store_returned_bounds): Likewise.
3695         (ix86_class_likely_spilled_p): Likewise.
3696         (ix86_hard_regno_mode_ok): Likewise.
3697         (x86_order_regs_for_local_alloc): Likewise.
3698         (ix86_mitigate_rop): Likewise.
3699         (ix86_bnd_prefixed_insn_p): Likewise.
3700         (ix86_mpx_bound_mode): Likewise.
3701         (ix86_make_bounds_constant): Likewise.
3702         (ix86_initialize_bounds): Likewise.
3703         (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
3704         (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
3705         (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
3706         (TARGET_STORE_RETURNED_BOUNDS): Likewise.
3707         (TARGET_CHKP_BOUND_MODE): Likewise.
3708         (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
3709         (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
3710         (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
3711         (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
3712         * config/i386/i386.h (TARGET_MPX): Likewise.
3713         (TARGET_MPX_P): Likewise.
3714         (VALID_BND_REG_MODE): Likewise.
3715         (FIRST_BND_REG): Likewise.
3716         (LAST_BND_REG): Likewise.
3717         (enum reg_class): Likewise.
3718         (BND_REG_P): Likewise.
3719         (BND_REGNO_P): Likewise.
3720         (BNDmode): Likewise.
3721         (ADJUST_INSN_LENGTH): Likewise.
3722         * config/i386/i386.md: Likewise.
3723         * config/i386/i386.opt: Likewise.
3724         * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
3725         (defined): Likewise.
3726         (LINK_MPX): Likewise.
3727         (MPX_SPEC): Likewise.
3728         (LIBMPX_SPEC): Likewise.
3729         (LIBMPXWRAPPERS_SPEC): Likewise.
3730         (CHKP_SPEC): Likewise.
3731         * config/i386/predicates.md: Likewise.
3732         * dbxout.c (dbxout_type): Likewise.
3733         * doc/extend.texi: Likewise.
3734         * doc/invoke.texi: Likewise.
3735         * doc/md.texi: Likewise.
3736         * doc/tm.texi: Likewise.
3737         * doc/tm.texi.in: Likewise.
3738         * dwarf2out.c (is_base_type): Likewise.
3739         (gen_formal_types_die): Likewise.
3740         (gen_subprogram_die): Likewise.
3741         (gen_type_die_with_usage): Likewise.
3742         (gen_decl_die): Likewise.
3743         (dwarf2out_late_global_decl): Likewise.
3744         * expr.c (expand_assignment): Likewise.
3745         (emit_storent_insn): Likewise.
3746         (store_expr_with_bounds): Likewise.
3747         (store_expr): Likewise.
3748         (expand_expr_real_1): Likewise.
3749         * expr.h (store_expr_with_bounds): Likewise.
3750         * function.c (use_register_for_decl): Likewise.
3751         (struct bounds_parm_data): Likewise.
3752         (assign_parms_augmented_arg_list): Likewise.
3753         (assign_parm_find_entry_rtl): Likewise.
3754         (assign_parm_is_stack_parm): Likewise.
3755         (assign_parm_load_bounds): Likewise.
3756         (assign_bounds): Likewise.
3757         (assign_parms): Likewise.
3758         (expand_function_start): Likewise.
3759         * gcc.c (CHKP_SPEC): Likewise.
3760         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
3761         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
3762         (wrestrict_dom_walker::check_call): Likewise.
3763         * gimple.c (gimple_build_call_from_tree): Likewise.
3764         * gimple.h (enum gf_mask): Likewise.
3765         (gimple_call_with_bounds_p): Likewise.
3766         (gimple_call_set_with_bounds): Likewise.
3767         * gimplify.c (gimplify_init_constructor): Likewise.
3768         * ipa-cp.c (initialize_node_lattices): Likewise.
3769         (propagate_constants_across_call): Likewise.
3770         (find_more_scalar_values_for_callers_subset): Likewise.
3771         * ipa-hsa.c (process_hsa_functions): Likewise.
3772         * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
3773         * ipa-icf.c (sem_function::merge): Likewise.
3774         * ipa-inline.c (early_inliner): Likewise.
3775         * ipa-pure-const.c (warn_function_noreturn): Likewise.
3776         (warn_function_cold): Likewise.
3777         (propagate_pure_const): Likewise.
3778         * ipa-ref.h (enum GTY): Likewise.
3779         * ipa-split.c (find_retbnd): Likewise.
3780         (consider_split): Likewise.
3781         (split_function): Likewise.
3782         * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
3783         * ipa.c (walk_polymorphic_call_targets): Likewise.
3784         (symbol_table::remove_unreachable_nodes): Likewise.
3785         (process_references): Likewise.
3786         (cgraph_build_static_cdtor_1): Likewise.
3787         * lto-cgraph.c (lto_output_node): Likewise.
3788         (output_refs): Likewise.
3789         (compute_ltrans_boundary): Likewise.
3790         (input_overwrite_node): Likewise.
3791         (input_node): Likewise.
3792         (input_cgraph_1): Likewise.
3793         * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
3794         * passes.c (pass_manager::execute_early_local_passes): Likewise.
3795         (class pass_chkp_instrumentation_passes): Likewise.
3796         (make_pass_chkp_instrumentation_passes): Likewise.
3797         * passes.def: Likewise.
3798         * rtl.h (struct GTY): Likewise.
3799         (CALL_EXPR_WITH_BOUNDS_P): Likewise.
3800         * stor-layout.c (layout_type): Likewise.
3801         * symtab.c: Likewise.
3802         * target.def: Likewise.
3803         * targhooks.c (default_chkp_bound_type): Likewise.
3804         (default_chkp_bound_mode): Likewise.
3805         (default_builtin_chkp_function): Likewise.
3806         (default_chkp_function_value_bounds): Likewise.
3807         (default_chkp_make_bounds_constant): Likewise.
3808         (default_chkp_initialize_bounds): Likewise.
3809         * targhooks.h (default_chkp_bound_type): Likewise.
3810         (default_chkp_bound_mode): Likewise.
3811         (default_builtin_chkp_function): Likewise.
3812         (default_chkp_function_value_bounds): Likewise.
3813         (default_chkp_make_bounds_constant): Likewise.
3814         (default_chkp_initialize_bounds): Likewise.
3815         * toplev.c (compile_file): Likewise.
3816         (process_options): Likewise.
3817         * tree-core.h (DEF_BUILTIN): Likewise.
3818         (DEF_BUILTIN_CHKP): Likewise.
3819         * tree-inline.c (declare_return_variable): Likewise.
3820         (remap_gimple_stmt): Likewise.
3821         (copy_bb): Likewise.
3822         (initialize_inlined_parameters): Likewise.
3823         (expand_call_inline): Likewise.
3824         * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
3825         (make_pass_ipa_chkp_early_produce_thunks): Likewise.
3826         (make_pass_ipa_chkp_produce_thunks): Likewise.
3827         (make_pass_chkp): Likewise.
3828         (make_pass_chkp_opt): Likewise.
3829         (make_pass_chkp_instrumentation_passes): Likewise.
3830         * tree-pretty-print.c (dump_generic_node): Likewise.
3831         * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
3832         * tree-ssa-dce.c (propagate_necessity): Likewise.
3833         (eliminate_unnecessary_stmts): Likewise.
3834         * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
3835         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
3836         * tree-ssa-sccvn.h: Likewise.
3837         * tree-ssa-strlen.c (get_string_length): Likewise.
3838         (valid_builtin_call): Likewise.
3839         (adjust_last_stmt): Likewise.
3840         (handle_builtin_strchr): Likewise.
3841         (handle_builtin_strcpy): Likewise.
3842         (handle_builtin_stxncpy): Likewise.
3843         (handle_builtin_memcpy): Likewise.
3844         (handle_builtin_strcat): Likewise.
3845         (strlen_check_and_optimize_stmt): Likewise.
3846         * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
3847         * tree-streamer-in.c: Likewise.
3848         * tree-streamer.c (record_common_node): Likewise.
3849         * tree.c (tree_code_size): Likewise.
3850         (wide_int_to_tree_1): Likewise.
3851         (type_contains_placeholder_1): Likewise.
3852         (build_common_tree_nodes): Likewise.
3853         * tree.def (POINTER_BOUNDS_TYPE): Likewise.
3854         * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
3855         (POINTER_BOUNDS_P): Likewise.
3856         (BOUNDED_TYPE_P): Likewise.
3857         (BOUNDED_P): Likewise.
3858         (CALL_WITH_BOUNDS_P): Likewise.
3859         (pointer_bounds_type_node): Likewise.
3860         * value-prof.c (gimple_ic): Likewise.
3861         * var-tracking.c (vt_add_function_parameters): Likewise.
3862         * varasm.c (make_decl_rtl): Likewise.
3863         (assemble_start_function): Likewise.
3864         (output_constant): Likewise.
3865         (maybe_assemble_visibility): Likewise.
3866         * varpool.c (ctor_for_folding): Likewise.
3867         * chkp-builtins.def: Remove.
3868         * ipa-chkp.c: Remove.
3869         * ipa-chkp.h: Remove.
3870         * rtl-chkp.c: Remove.
3871         * rtl-chkp.h: Remove.
3872         * tree-chkp-opt.c: Remove.
3873         * tree-chkp.c: Remove.
3874         * tree-chkp.h: Remove.
3876 2018-06-07  Carl Love  <cel@us.ibm.com>
3878         * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
3879         vextract_fp_from_shortl): Add BE support.
3881 2018-06-07  Paul Koning  <ni1d@arrl.net>
3883         * compare-elim.c (try_merge_compare): Don't merge compare if
3884         address contains a side effect.
3885         (try_eliminate_compare): Likewise.
3887 2018-06-07  Olga Makhotina  <olga.makhotina@intel.com>
3889         * config.gcc: Support "tremont".
3890         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
3891         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3892         PROCESSOR_TREMONT.
3893         * config/i386/i386.c (m_TREMONT): Define.
3894         (processor_target_table): Add "tremont".
3895         (PTA_TREMONT): Define.
3896         (ix86_lea_outperforms): Add TARGET_TREMONT.
3897         (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
3898         (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
3899         and M_INTEL_GOLDMONT_PLUS.
3900         (fold_builtin_cpu): Add "tremont".
3901         (ix86_add_stmt_cost): Add TARGET_TREMONT.
3902         (ix86_option_override_internal): Add "tremont".
3903         * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
3904         (processor_type): Add PROCESSOR_TREMONT.
3905         * config/i386/x86-tune.def: Add m_TREMONT.
3906         * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
3908 2018-06-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3910         * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
3911         symbol defined for msp430i* devices to be lower case.
3913         gcc/testsuite/gcc.target/msp430/
3914         * msp430i-device-symbol.c: New test.
3915         * msp430f-device-symbol.c: New test.
3916         * msp430.h: New test header file.
3918 2018-06-07  Richard Biener  <rguenther@suse.de>
3920         * graphite-sese-to-poly.c (extract_affine): Avoid unneded
3921         wrapping.  Properly wrap the result of a BIT_NOT_EXPR.
3922         Properly wrap signed arithmetic if overflow wraps.
3924 2018-06-07  Jakub Jelinek  <jakub@redhat.com>
3926         PR tree-optimization/69615
3927         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
3928         of a cast from a same precision integral SSA_NAME in a bb dominated
3929         by first_bb, retry with rhs2 set to the rhs1 of the cast.  Don't emit
3930         cast to utype if rhs2 has already a compatible type.
3932 2018-06-07  Richard Biener  <rguenther@suse.de>
3934         PR tree-optimization/85935
3935         * graphite-scop-detection.c (find_params_in_bb): Analyze
3936         condition operands with respect to the correct loop.  Assert
3937         the analysis doesn't fail.
3939 2018-06-04  Carl Love  <cel@us.ibm.com>
3941         * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
3942         using natural element order.  Use gen_lshrsi3 instead of gen_ashrsi3
3943         as it is slightly cheaper.
3944         (first_match_or_eos_index_<mode>):
3945         Calculate index using natural element order.
3946         (first_match_index_<mode>):
3947         Calculate index using natural element order.
3948         (first_match_or_eos_index_<mode>):
3949         Calculate index using natural order.
3950         (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
3951         for BE and LE modes.
3952         * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
3953         P9V_BUILTIN_VCLZLSBB_V16QI.
3954         * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
3955         specific.
3957 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3959         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
3960         indentation and line wrap for many prototypes.  Add missing
3961         @smallexample directives around block of prototypes for vec_xl and
3962         vec_xst.
3964 2018-06-05  Michael Meissner  <meissner@linux.ibm.com>
3966         * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
3967         track if we pass or return IEEE 128-bit floating point.
3968         (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
3969         C++ mangling that is compatible with GCC 8.1.
3970         (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
3971         (init_cumulative_args): Note if we pass or return IEEE 128-bit
3972         floating point types.
3973         (rs6000_function_arg_advance_1): Likewise.
3974         (rs6000_mangle_type): Optionally generate mangled names that match
3975         what GCC 8.1 generated for IEEE 128-bit floating point types.
3976         (rs6000_globalize_decl_name): If we have an external function that
3977         passes or returns IEEE 128-bit types, generate a weak reference
3978         from the mangled name used in GCC 8.1 to the current mangled
3979         name.
3980         (rs6000_init_builtins): Make __ibm128 use the long double type if
3981         long double is IBM extended double.  Make __float128 use the long
3982         double type if long double is IEEE 128-bit.
3984         PR target/85657
3985         * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
3986         macro for __ibm128 built-in functions.
3987         (PACK_IF): Add __ibm128 pack/unpack functions.
3988         (UNPACK_IF): Likewise.
3989         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
3990         enable long double built-in functions if long double is IEEE
3991         128-bit floating point.
3992         (rs6000_invalid_builtin): Update long double built-in function
3993         error message.
3994         (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
3995         functions, adjust the built-in function to use the long double
3996         built-in function if __ibm128 and long double are the same type.
3997         * doc/extend.texi (PowerPC builtins): Update documention for
3998         __builtin_{,un}pack_longdouble.  Add documentation for
3999         __builtin_{,un}pack_ibm128.
4001 2018-06-06  Jim Wilson  <jimw@sifive.com>
4003         * config/riscv/riscv.c (enum riscv_privilege_levels): New.
4004         (struct machine_function): New field interrupt_mode.
4005         (riscv_handle_type_attribute): New function.  Add forward declaration.
4006         (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
4007         (riscv_expand_epilogue): Check interrupt_mode field.
4008         (riscv_set_current_function): Check interrupt attribute args and
4009         set interrupt_mode field.
4010         * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
4011         (riscv_sret, riscv_uret): New.
4012         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
4013         new arguments to interrupt attribute.
4015 2018-06-06  Peter Bergner  <bergner@vnet.ibm.com>
4017         PR target/63177
4018         * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
4019         Don't handle -mcpu=power8 if -mpower9-vector is also used.
4021 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4023         * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
4024         VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
4025         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4026         several redundant entries.
4028 2018-06-06  David Malcolm  <dmalcolm@redhat.com>
4030         * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
4031         type from "rtx" to "rtx_insn *".
4032         * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
4033         for local "call_insn", removing cast.
4034         (ix86_expand_call): Likewise, introducing a "call_insn" local.
4036 2018-06-06  Eric Botcazou  <ebotcazou@adacore.com>
4038         PR tree-optimization/86066
4039         * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
4040         for BIT_INSERT_EXPR stores.
4042 2018-06-06  Richard Biener  <rguenther@suse.de>
4044         PR tree-optimization/86062
4045         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
4046         component refs ontop
4047         of to be offsetted base.
4049 2018-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4051         * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
4052         to be static and remove check on interrupt attribute name.
4054         gcc/testsuite/gcc.target/msp430/
4055         * function-attributes-4.c: New test.
4056         * static-interrupts.c: New test.
4058 2018-06-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4060         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
4061         volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
4063 2018-06-05  Steve Ellcey  <sellcey@cavium.com>
4065         PR target/79924
4066         * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
4067         second argument.
4068         * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
4069         Remove second argument, change how error is called.
4070         (aarch64_layout_arg): Remove second argument from
4071         aarch64_err_no_fpadvsimd call.
4072         (aarch64_init_cumulative_args): Ditto.
4073         (aarch64_gimplify_va_arg_expr): Ditto.
4074         * config/aarch64/aarch64.md (mov<mode>): Ditto.
4076 2018-06-05  Uros Bizjak  <ubizjak@gmail.com>
4078         * config/i386/i386.md (simple_return_indirect_internal): New expander.
4079         (*simple_return_indirect_internal<mode>): Rename from
4080         simple_return_indirect_internal.  Use W mode iterator.
4081         (rstorssp): New expander.
4082         (*rstorssp<mode>): Rename from rstorssp.  Use P mode iterator.
4083         (clrssbsy): New expander.
4084         (*clrssbsy<mode>): Rename from clrssbsy.  Use P mode iterator.
4086 2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4088         * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
4089         __typeof__.
4090         (cmse_check_pointed_object): Likewise.
4092 2018-06-05  Martin Liska  <mliska@suse.cz>
4094         PR gcov-profile/47618
4095         * doc/invoke.texi: Document how -fprofile-dir format
4096         is extended.
4098 2018-06-05  Richard Biener  <rguenther@suse.de>
4100         * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
4101         removal pretend DOM info isn't available so we do not update
4102         it and only remove edges, not dominated blocks.  Actually free
4103         DOM info in case we removed something.  Remove unreachable blocks.
4104         (mfb_keep_latches): Work with either DOM info or marked backedges.
4105         (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
4106         first.  Mark backedges if DOM info isn't available.
4107         (Re-)compute DOM info after cleanup_control_flow_pre.
4109 2018-06-05  Richard Biener  <rguenther@suse.de>
4111         * tree-cfg.c (struct locus_discrim_map): Store line, not location.
4112         (locus_discrim_hasher::hash): Adjust.
4113         (locus_discrim_hasher::equal): Likewise.
4114         (next_discriminator_for_locus): Work on line directly.
4115         (same_line_p): Pass in expanded locus1 as well.
4116         (assign_discriminators): Avoid redundant location expansions.
4118 2018-06-05  Richard Biener  <rguenther@suse.de>
4120         PR tree-optimization/86046
4121         * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
4122         if required after clearing TREE_ADDRESSABLE.
4124 2018-06-05  Richard Biener  <rguenther@suse.de>
4126         PR tree-optimization/86047
4127         * tree-ssa-loop.c (for_each_index): Glob handling of all
4128         decls and constants and really handle all of them.
4130 2018-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4132         PR target/81497
4133         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
4134         qualifier_void_pointer and qualifier_const_void_pointer.
4135         (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
4136         (arm_init_builtins): Handle the above.
4137         * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
4138         __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
4139         __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
4140         void intrinsics.
4142 2018-06-05  Martin Liska  <mliska@suse.cz>
4144         * auto-profile.c (read_autofdo_file): Do not use
4145         gcov_ctr_summary struct.
4146         (afdo_callsite_hot_enough_for_early_inline): Likewise.
4147         * coverage.c (struct counts_entry): Likewise.
4148         (read_counts_file): Read just single summary entry.
4149         (get_coverage_counts): Use gcov_summary struct.
4150         * coverage.h (get_coverage_counts): Likewise.
4151         * gcov-dump.c (dump_working_sets): Likewise.
4152         (tag_summary): Dump just single summary.
4153         * gcov-io.c (gcov_write_summary): Write just histogram
4154         summary.
4155         (gcov_read_summary): Read just single summary.
4156         (compute_working_sets): Use gcov_summary struct.
4157         * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
4158         of GCOV_COUNTERS_SUMMABLE.
4159         (GCOV_COUNTERS_SUMMABLE): Remove.
4160         (GCOV_FIRST_VALUE_COUNTER): Replace with
4161         GCOV_COUNTER_V_INTERVAL.
4162         (struct gcov_ctr_summary): Remove.
4163         (struct gcov_summary): Directly use fields of former
4164         gcov_ctr_summary.
4165         (compute_working_sets): Use gcov_summary struct.
4166         * gcov.c (read_count_file): Do not use ctrs fields.
4167         * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
4168         struct.
4169         * lto-streamer.h (struct GTY): Make profile_info gcov_summary
4170         struct.
4171         * profile.c: Likewise.
4172         * profile.h: Likewise.
4174 2018-06-05  Martin Liska  <mliska@suse.cz>
4176         PR gcov-profile/84846
4177         * gcov.c (output_lines): Print working directory only
4178         in intermediate format.
4180 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
4182         * config/s390/s390-builtin-types.def: Add void function type.
4183         * config/s390/s390-builtins.def: Use the function type for the
4184         tbeginc builtin.
4186 2018-06-04  Jim Wilson  <jimw@sifive.com>
4188         * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
4189         to int.
4190         * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
4191         and maybe_eh_return.  Change regno to unsigned int.  Use new args to
4192         handle EH_RETURN_DATA_REGNO registers properly.
4193         (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
4194         (riscv_expand_epilogue): Update comment.  Change argument name and
4195         type.  Update code to use new name and type.  Pass new args to
4196         riscv_for_each_saved_reg.  Only use EH_RETURN_STACKADJ_RTX when
4197         EXCEPTION_RETURN.
4198         * config/riscv/riscv.md (NORMAL_RETURN): New.
4199         (SIBCALL_RETURN, EXCEPTION_RETURN): New.
4200         (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
4201         (eh_return): Call gen_eh_return_internal and emit barrier.
4202         (eh_return_internal): Call riscv_expand_epilogue.
4204 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
4206         * gimple-ssa-store-merging.c (struct merged_store_group): Move up
4207         bit_insertion field and declare can_be_merged_into method.
4208         (merged_store_group::can_be_merged_into): New method.
4209         (imm_store_chain_info::coalesce_immediate): Call it to decide whether
4210         consecutive non-overlapping stores can be merged.  Turn MEM_REF stores
4211         into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
4213 2018-06-04  Richard Biener  <rguenther@suse.de>
4215         PR tree-optimization/85955
4216         * builtins.c (fold_builtin_sincos): Convert pointers to
4217         destination to appropriate type before dereferencing.
4219 2018-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
4221         * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
4223 2018-06-04  Richard Sandiford  <richard.sandiford@linaro.org>
4225         * expr.c (expand_expr_real_1): Force the operand into memory if
4226         its TYPE_MODE is BLKmode and if there is no integer mode for
4227         the number of bits being extracted.
4229 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
4231         PR target/85832
4232         PR target/86036
4233         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
4234         Use vptestnm rather than vptestm in (=Yc,v,C) variant.
4236 2018-06-04  Richard Biener  <rguenther@suse.de>
4238         * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
4239         (cleanup_tree_cfg_noloop): ... single caller.  Do
4240         start_recording_case_labels later.
4242 2018-06-04  Sebastian Peryt  <sebastian.peryt@intel.com>
4244         * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
4245         to _IMMINTRIN_H_INCLUDED.
4246         * config/i386/pconfigintrin.h: Ditto.
4247         * config/i386/waitpkgintrin.h: Ditto.
4248         * config/i386/immintrin.h: Add includes for sgxintrin.h,
4249         pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
4250         * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
4251         emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
4252         bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
4253         waitpkgintrin.h and cldemoteintrin.h.
4255 2018-06-04  Richard Biener  <rguenther@suse.de>
4257         PR tree-optimization/86038
4258         * tracer.c (find_best_successor): Check probability for
4259         being initialized, bail out if not.
4261 2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
4263         PR target/86003
4264         * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
4265         of bits to ignore when comparing architectures.
4267 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
4269         PR tree-optimization/69615
4270         * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
4271         maximum or minimum of the type, try to merge it also as if
4272         range1 is + [-, x - 1] or + [x + 1, -].
4274         PR c++/86025
4275         * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
4277 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
4279         PR tree-optimization/86034
4280         * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
4281         the unsigned bitfield type in a bit insertion sequence if it does not
4282         have a larger precision than the bitfield size.
4283         (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
4285 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
4287         * config/nds32/nds32-peephole2.md: Add new patterns for code size.
4289 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
4291         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
4292         * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
4293         * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
4294         * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
4296 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
4298         * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
4299         Disable -fdelete-null-pointer-checks for ELF toolchain.
4301 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4302             Kito Cheng  <kito.cheng@gmail.com>
4304         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
4305         (nds32le-*-*, nds32be-*-*): Integrate checking process.
4306         (nds32*-*-*): Add glibc and uclibc conditions.
4307         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
4308         (TARGET_EXCEPT_UNWIND_INFO): Define.
4309         * config/nds32/elf.h: New file.
4310         * config/nds32/linux.h: New file.
4311         * config/nds32/nds32-elf.opt: New file.
4312         * config/nds32/nds32-linux.opt: New file.
4313         * config/nds32/nds32-fp-as-gp.c
4314         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
4315         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
4316         TARGET_LINUX_ABI.
4317         (nds32_asm_file_end): Ditto.
4318         (nds32_print_operand): Ditto.
4319         (nds32_insert_attributes): Ditto.
4320         (nds32_init_libfuncs): New function.
4321         (TARGET_HAVE_TLS): Define.
4322         (TARGET_INIT_LIBFUNCS): Define.
4323         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
4324         spec content.
4325         (TARGET_ELF): Apply different mcmodel setting.
4326         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
4327         been migrated into elf.h and linux.h files.
4328         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
4329         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
4330         (mcmodel): The content has been migrated into nds32-elf.opt and
4331         nds32-linux.opt files.
4332         * config/nds32/t-elf: New file.
4333         * config/nds32/t-linux: New file.
4335 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4336             Shiva Chen  <shiva0217@gmail.com>
4338         * config/nds32/constants.md (unspec_volatile_element): Add
4339         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
4340         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
4341         optimization.
4342         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
4343         (make_pass_nds32_fp_as_gp): Declare.
4344         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
4345         optmization pass.
4346         (nds32_asm_function_end_prologue): Remove unused asm output.
4347         (nds32_asm_function_begin_epilogue): Remove unused asm output.
4348         (nds32_asm_file_start): Output necessary fp_as_gp information.
4349         (nds32_option_override): Adjust register usage.
4350         (nds32_expand_prologue): Consider fp_as_gp situation.
4351         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
4352         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
4353         (epilogue): Ditto.
4354         (return): Ditto.
4355         (simple_return): Ditto.
4356         (omit_fp_begin): Output special directive for fp_as_gp.
4357         (omit_fp_end): Output special directive for fp_as_gp.
4358         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
4359         mforbid-fp-as-gp): New options.
4361 2018-06-01  Mark Wielaard  <mark@klomp.org>
4363         * dwarf2out.c (dwarf2out_finish): Remove generation of
4364         DW_AT_loclists_base.
4366 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
4368         * gimple-ssa-store-merging.c: Include gimple-fold.h.
4369         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
4370         (struct merged_store_group): Add bit_insertion field.
4371         (dump_char_array): Use standard hexadecimal format.
4372         (merged_store_group::merged_store_group): Set bit_insertion to false.
4373         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
4374         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
4375         also print the mask in the dump file.
4376         (pass_store_merging::gate): Minor tweak.
4377         (imm_store_chain_info::coalesce_immediate): Fix wrong association
4378         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
4379         stores with INTEGER_CST stores.
4380         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
4381         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
4382         and use it throughout.  Generate bit insertion sequences if need be.
4383         (pass_store_merging::process_store): Remove redundant condition.
4384         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
4386 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
4388         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
4389         the 128-bit floating point types.  Fix function comment.
4391 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4393         * config/aarch64/aarch64-simd.md
4394         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
4395         mnemonics.
4396         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
4397         mnemonics.
4399 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
4401         PR tree-optimization/85989
4402         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
4403         variable.
4404         (backprop::intersect_uses): Check it when deciding whether this
4405         is a backedge reference.
4406         (backprop::process_block): Add each phi to m_visited_phis
4407         after visiting it, then clear it at the end.
4409 2018-06-01  Richard Biener  <rguenther@suse.de>
4411         * tree-vectorizer.h (vect_dr_stmt): New function.
4412         (vect_get_load_cost): Adjust.
4413         (vect_get_store_cost): Likewise.
4414         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
4415         Use vect_dr_stmt instead of DR_SMTT.
4416         (vect_record_base_alignments): Likewise.
4417         (vect_calculate_target_alignment): Likewise.
4418         (vect_compute_data_ref_alignment): Likewise and make static.
4419         (vect_update_misalignment_for_peel): Likewise.
4420         (vect_verify_datarefs_alignment): Likewise.
4421         (vector_alignment_reachable_p): Likewise.
4422         (vect_get_data_access_cost): Likewise.  Pass down
4423         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
4424         (vect_get_peeling_costs_all_drs): Likewise.
4425         (vect_peeling_hash_get_lowest_cost): Likewise.
4426         (vect_enhance_data_refs_alignment): Likewise.
4427         (vect_find_same_alignment_drs): Likewise.
4428         (vect_analyze_data_refs_alignment): Likewise.
4429         (vect_analyze_group_access_1): Likewise.
4430         (vect_analyze_group_access): Likewise.
4431         (vect_analyze_data_ref_access): Likewise.
4432         (vect_analyze_data_ref_accesses): Likewise.
4433         (vect_vfa_segment_size): Likewise.
4434         (vect_small_gap_p): Likewise.
4435         (vectorizable_with_step_bound_p): Likewise.
4436         (vect_prune_runtime_alias_test_list): Likewise.
4437         (vect_analyze_data_refs): Likewise.
4438         (vect_supportable_dr_alignment): Likewise.
4439         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
4440         (vect_gen_prolog_loop_niters): Likewise.
4441         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
4442         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
4443         modify DR_STMT.
4444         (vect_recog_mask_conversion_pattern): Likewise.
4445         (vect_try_gather_scatter_pattern): Likewise.
4446         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
4447         to vect_get_store_cost.
4448         (vect_get_store_cost): Get stmt_info instead of DR.
4449         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
4450         (vect_get_load_cost): Get stmt_info instead of DR.
4452 2018-06-01  Richard Biener  <rguenther@suse.de>
4454         PR middle-end/86017
4455         * gimple-fold.c (var_decl_component_p): Also allow offsetted
4456         vars wrapped in MEM_REFs.
4458 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
4460         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
4461         Fix subreg tests so that we only return a choice between
4462         GENERAL_REGS and FP_REGS if the original classes included both.
4464 2018-06-01  Richard Biener  <rguenther@suse.de>
4466         PR ipa/85960
4467         * tree-ssa-structalias.c (get_function_part_constraint):
4468         Handle NULL fi->decl.
4469         (find_func_aliases_for_call): Properly handle indirect
4470         fi from direct call.
4471         (find_func_clobbers): Likewise.
4472         (ipa_pta_execute): Likewise.
4473         (create_variable_info_for): For functions that are ifunc_resolver
4474         resolve to a varinfo that contains the result of the resolver call.
4475         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
4476         aliases.
4478 2018-05-31  Michael Collison  <michael.collison@arm.com>
4480         * config/aarch64/aarch64.md:
4481         (*fix_to_zero_extenddfdi2): New pattern.
4482         * gcc.target/aarch64/fix_extend1.c: New testcase.
4484 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
4486         PR middle-end/78809
4487         PR middle-end/83026
4488         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
4489         and BUILT_IN_STRNCMP_EQ.
4490         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
4491         BUILT_IN_STRNCMP_EQ.
4492         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
4493         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
4494         (gimple_fold_builtin): Likewise.
4495         * tree-ssa-strlen.c (compute_string_length): New function.
4496         (determine_min_obsize): New function.
4497         (handle_builtin_string_cmp): New function to handle calls to
4498         string compare functions.
4499         (strlen_optimize_stmt): Add handling to builtin string compare
4500         calls.
4501         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
4502         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
4503         * tree.c (build_common_builtin_nodes): Add new defines of
4504         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
4506 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
4508         PR target/85984
4509         * bb-reorder.c (pass_partition_blocks::gate): Return false for
4510         functions with naked attribute.
4512 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
4514         * config/i386/sse.md (avx_vec_concat<mode>):
4515         Substitute concat_tg_mode mode attribute with xtg_mode.
4516         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
4517         (concat_tg_mode): Remove mode attribute.
4519 2018-05-31  Martin Sebor  <msebor@redhat.com>
4521         PR c/82063
4522         * calls.c (alloc_max_size): Correct a logic error/typo.
4523         Treat excessive arguments as infinite.  Warn for invalid arguments.
4524         * doc/invoke.texi (-Walloc-size-larger-than): Update.
4526 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
4528         PR target/85829
4529         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
4530         and movx for Haswell.
4532 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
4533             Cesar Philippidis  <cesar@codesourcery.com>
4535         PR middle-end/85879
4536         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
4537         when emitting error on private/firstprivate reductions.
4538         * omp-low.c (lower_omp_target): Avoid reference-type processing
4539         on pointers for firstprivate clause.
4541 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
4543         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
4544         (st1x2): Likewise.
4545         (st1x3): Likewise.
4546         * config/aarch64/aarch64-simd.md
4547         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
4548         (aarch64_ld1_x3_<mode>): Likewise
4549         (aarch64_st1x2<VALLDIF:mode>): Likewise
4550         (aarch64_st1_x2_<mode>): Likewise
4551         (aarch64_st1x3<VALLDIF:mode>): Likewise
4552         (aarch64_st1_x3_<mode>): Likewise
4553         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
4554         (vld1_s8_x3): Likewise.
4555         (vld1_u16_x3): Likewise.
4556         (vld1_s16_x3): Likewise.
4557         (vld1_u32_x3): Likewise.
4558         (vld1_s32_x3): Likewise.
4559         (vld1_u64_x3): Likewise.
4560         (vld1_s64_x3): Likewise.
4561         (vld1_f16_x3): Likewise.
4562         (vld1_f32_x3): Likewise.
4563         (vld1_f64_x3): Likewise.
4564         (vld1_p8_x3): Likewise.
4565         (vld1_p16_x3): Likewise.
4566         (vld1_p64_x3): Likewise.
4567         (vld1q_u8_x3): Likewise.
4568         (vld1q_s8_x3): Likewise.
4569         (vld1q_u16_x3): Likewise.
4570         (vld1q_s16_x3): Likewise.
4571         (vld1q_u32_x3): Likewise.
4572         (vld1q_s32_x3): Likewise.
4573         (vld1q_u64_x3): Likewise.
4574         (vld1q_s64_x3): Likewise.
4575         (vld1q_f16_x3): Likewise.
4576         (vld1q_f32_x3): Likewise.
4577         (vld1q_f64_x3): Likewise.
4578         (vld1q_p8_x3): Likewise.
4579         (vld1q_p16_x3): Likewise.
4580         (vld1q_p64_x3): Likewise.
4581         (vst1_s64_x2): Likewise.
4582         (vst1_u64_x2): Likewise.
4583         (vst1_f64_x2): Likewise.
4584         (vst1_s8_x2): Likewise.
4585         (vst1_p8_x2): Likewise.
4586         (vst1_s16_x2): Likewise.
4587         (vst1_p16_x2): Likewise.
4588         (vst1_s32_x2): Likewise.
4589         (vst1_u8_x2): Likewise.
4590         (vst1_u16_x2): Likewise.
4591         (vst1_u32_x2): Likewise.
4592         (vst1_f16_x2): Likewise.
4593         (vst1_f32_x2): Likewise.
4594         (vst1_p64_x2): Likewise.
4595         (vst1q_s8_x2): Likewise.
4596         (vst1q_p8_x2): Likewise.
4597         (vst1q_s16_x2): Likewise.
4598         (vst1q_p16_x2): Likewise.
4599         (vst1q_s32_x2): Likewise.
4600         (vst1q_s64_x2): Likewise.
4601         (vst1q_u8_x2): Likewise.
4602         (vst1q_u16_x2): Likewise.
4603         (vst1q_u32_x2): Likewise.
4604         (vst1q_u64_x2): Likewise.
4605         (vst1q_f16_x2): Likewise.
4606         (vst1q_f32_x2): Likewise.
4607         (vst1q_f64_x2): Likewise.
4608         (vst1q_p64_x2): Likewise.
4609         (vst1_s64_x3): Likewise.
4610         (vst1_u64_x3): Likewise.
4611         (vst1_f64_x3): Likewise.
4612         (vst1_s8_x3): Likewise.
4613         (vst1_p8_x3): Likewise.
4614         (vst1_s16_x3): Likewise.
4615         (vst1_p16_x3): Likewise.
4616         (vst1_s32_x3): Likewise.
4617         (vst1_u8_x3): Likewise.
4618         (vst1_u16_x3): Likewise.
4619         (vst1_u32_x3): Likewise.
4620         (vst1_f16_x3): Likewise.
4621         (vst1_f32_x3): Likewise.
4622         (vst1_p64_x3): Likewise.
4623         (vst1q_s8_x3): Likewise.
4624         (vst1q_p8_x3): Likewise.
4625         (vst1q_s16_x3): Likewise.
4626         (vst1q_p16_x3): Likewise.
4627         (vst1q_s32_x3): Likewise.
4628         (vst1q_s64_x3): Likewise.
4629         (vst1q_u8_x3): Likewise.
4630         (vst1q_u16_x3): Likewise.
4631         (vst1q_u32_x3): Likewise.
4632         (vst1q_u64_x3): Likewise.
4633         (vst1q_f16_x3): Likewise.
4634         (vst1q_f32_x3): Likewise.
4635         (vst1q_f64_x3): Likewise.
4636         (vst1q_p64_x3): Likewise.
4638 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4640         * config/msp430/msp430.c (msp430_output_labelref): Prepend
4641         user_label_prefix to name.
4643         * tree-core.h: Update comment about the format of NAME string
4644         passed to handler in attribute_spec.
4646         * config/msp430/msp430.md: Remove erroneous subreg expression from
4647         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
4648         zero_extend{q,h}isi2.
4650 2018-05-30  Borislav Petkov  <bp@suse.de>
4652         * doc/extend.texi: Document some architecture specific
4653         constraints and sort entries.
4655 2018-05-30  Martin Sebor  <msebor@redhat.com>
4657         PR middle-end/85369
4658         * builtins.c (expand_builtin_stpcpy_1): New function.
4659         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
4660         only if the former succeeds.
4662 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
4664         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
4665         in saphira.
4667 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4669         * doc/invoke.texi (-flinker-output): Document
4671 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4673         * passes.c (ipa_write_summaries): Only modify statements if body
4674         is in memory.
4675         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
4676         incrementally linking.
4677         (ipa_passes): Likewise.
4678         * lto-cgraph.c (lto_output_node): When incrementally linking do not
4679         pass down resolution info.
4680         * common.opt (flag_incremental_link): Update info.
4681         * gcc.c (plugin specs): Turn flinker-output=* to
4682         -plugin-opt=-linker-output-known
4683         * toplev.c (compile_file): Also cut compilation when doing incremental
4684         link.
4685         * flag-types. (enum lto_partition_model): Add
4686         LTO_LINKER_OUTPUT_NOLTOREL.
4687         (invoke.texi): Add -flinker-output docs.
4688         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
4689         link same way as WPA; do not stream in dead initializers.
4691         * dwarf2out.c (dwarf2out_die_ref_for_decl,
4692         darf2out_register_external_decl): Support incremental link.
4694 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4696         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
4698 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
4700         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
4701         it down to simple_object_copy_lto_debug_sections.
4702         (run_gcc): Determine incremental LTO link time and configure
4703         lto1 into non-wpa mode, disable renaming of debug sections.
4705 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4707         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
4708         descriptions of various incorrectly documented functions.
4710 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4712         Revert:
4713         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
4714         address check not strict.
4716 2018-05-30  Richard Biener  <rguenther@suse.de>
4718         PR tree-optimization/85964
4719         * tracer.c (better_p): Drop initialized count check, we only
4720         call the function with initialized counts now.
4721         (find_best_successor): Do find a best edge if one
4722         has uninitialized count.
4723         (find_best_predecessor): Likewise.  Do BB frequency check only
4724         if count is initialized.
4726 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
4728         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
4729         (aarch64_ldrstr_offset_compare): New.
4730         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
4731         load/store orderings.
4732         (aarch64_gen_adjusted_ldpstp): Likewise.
4734 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
4736         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
4737         Check for subset of GENERAL_REGS and FP_REGS.
4738         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
4739         r=w alternative.
4741 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
4743         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
4744         and wi::to_poly_offset.  Add the current offset and then check
4745         whether the sum fits, rather than using an unchecked addition of
4746         a checked term.  Check for a shwi rather than a uhwi.
4747         * expr.c (get_bit_range): Use tree_to_poly_uint64.
4748         (store_constructor): Use poly_int_tree_p.
4749         (expand_expr_real_1): Likewise.
4750         * function.c (assign_temp): Likewise.
4751         * fold-const.c (const_binop): Use poly_int_tree_p and
4752         wi::to_poly_offset.
4753         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
4754         division.
4755         * ipa-icf-gimple.c (func_checker::compare_operand): Use
4756         to_poly_offset for MEM offsets.
4757         * ipa-icf.c (sem_variable::equals): Likewise.
4758         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
4759         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
4760         wi::to_poly_offset for BIT_FIELD_REF offsets.
4761         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
4762         wi::to_poly_offset.
4763         * var-tracking.c (emit_note_insn_var_location): Use
4764         tree_to_poly_uint64.
4766 2018-05-29  Jim Wilson  <jimw@sifive.com>
4768         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
4770 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
4772         PR target/85950
4773         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
4774         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
4775         sequence.
4776         (sse4_1_round<mode>2): Use nonimmediate_operand
4777         for operand 1 predicate.
4779 2018-05-29  Martin Sebor  <msebor@redhat.com>
4780             Richard Biener  <rguenther@suse.de>
4782         PR testsuite/85888
4783         * calls.c (get_size_range): Call determine_value_range instead
4784         of get_value_range..
4785         * tree-vrp.h (determine_value_range): Declared new function.
4786         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
4788 2018-05-29  Richard Biener  <rguenther@suse.de>
4790         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
4791         sure to use non-pattern stmts for get_earlier_stmt arguments.
4792         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
4793         called on pattern stmts.
4794         (get_later_stmt): Likewise.
4796 2018-05-29  Martin Liska  <mliska@suse.cz>
4798         PR gcov-profile/85759
4799         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
4800         env variables.
4802 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
4804         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
4805         VEC_UNPACK_*_EXPR.
4806         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
4807         VEC_PACK_*_EXPR.
4809         PR target/85918
4810         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
4811         VEC_PACK_FLOAT_EXPR): New tree codes.
4812         * tree-pretty-print.c (op_code_prio): Handle
4813         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
4814         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4815         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4816         * tree-inline.c (estimate_operator_cost): Likewise.
4817         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
4818         * fold-const.c (const_binop): Likewise.
4819         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
4820         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
4821         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4822         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
4823         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4824         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4825         * expr.c (expand_expr_real_2): Likewise.
4826         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
4827         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
4828         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
4829         optabs.
4830         * optabs.c (expand_widen_pattern_expr): For
4831         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
4832         sign from result type rather than operand's type.
4833         (expand_binop_directly): For vec_packu_float_optab and
4834         vec_packs_float_optab allow result type to be different from operand's
4835         type.
4836         * optabs-tree.c (optab_for_tree_code): Handle
4837         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4838         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
4839         * tree-vect-generic.c (expand_vector_operations_1):  Handle
4840         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4841         VEC_PACK_FLOAT_EXPR.
4842         * tree-vect-stmts.c (supportable_widening_operation): Handle
4843         FIX_TRUNC_EXPR.
4844         (supportable_narrowing_operation): Handle FLOAT_EXPR.
4845         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
4846         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
4847         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
4848         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
4849         mode attributes.
4850         (vec_pack<floatprefix>_float_<mode>): New expander.
4851         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
4852         attributes.
4853         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
4854         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
4855         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
4856         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
4857         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
4858         Document.
4859         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
4860         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
4861         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
4862         VEC_PACK_FLOAT_EXPR): Document.
4864 2018-05-29  Richard Biener  <rguenther@suse.de>
4866         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
4867         member.
4868         (stmt_vec_info_vec): Make pointer.
4869         (init_stmt_vec_info_vec): Remove.
4870         (free_stmt_vec_info_vec): Likewise.
4871         (set_stmt_vec_info_vec): New function.
4872         (free_stmt_vec_infos): Likewise.
4873         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
4874         (set_vinfo_for_stmt): Likewise.
4875         (get_earlier_stmt): Likewise.
4876         (get_later_stmt): Likewise.
4877         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
4878         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
4879         (vec_info::~vec_info): Free stmt_vec_infos.
4880         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
4881         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
4882         (pass_slp_vectorize::execute): Likewise.
4883         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
4884         (free_stmt_vec_info_vec): Likewise.
4885         (set_stmt_vec_info_vec): New function.
4886         (free_stmt_vec_infos): Likewise.
4887         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
4888         the global stmt_vec_info_vec.
4889         * tree-parloops.c (gather_scalar_reductions): Use
4890         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
4891         vector.
4893 2018-05-29  Richard Biener  <rguenther@suse.de>
4895         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
4897 2018-05-29  Martin Liska  <mliska@suse.cz>
4898             David Malcolm  <dmalcolm@redhat.com>
4900         * vec.c (test_reverse): New.
4901         (vec_c_tests): Add new test.
4902         * vec.h (vl_ptr>::reverse): New function.
4904 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
4906         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
4908         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
4909         and later.
4911 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
4913         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
4915 2018-05-28  Richard Biener  <rguenther@suse.de>
4917         PR tree-optimization/85933
4918         * tree-vect-data-refs.c (vect_record_base_alignments): Only
4919         look at stmts marked as vectorizable.
4921 2018-05-28  Richard Biener  <rguenther@suse.de>
4923         PR tree-optimization/85934
4924         * tree-vect-generic.c (expand_vector_operations_1): Hoist
4925         vector boolean check before scalar optimization.
4927 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
4929         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
4930         for armv5te.
4932 2018-05-28  Mark Wielaard  <mark@klomp.org>
4934         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
4935         if it is an expression containing a minus sign.
4937 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
4939         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
4941 2018-05-27  Paul Koning  <ni1d@arrl.net>
4943         * config/pdp11/pdp11.md (truncsihi2): Remove.
4945 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
4946             Chung-Ju Wu  <jasonwucj@gmail.com>
4948         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
4949         implementation.
4950         (unaligned_store_dw): Ditto.
4951         * config/nds32/nds32-memory-manipulation.c
4952         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
4953         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
4954         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
4955         (emit_setmem_word_loop): Rename to ...
4956         (emit_setmem_doubleword_loop): ... this.
4957         (nds32_gen_dup_4_byte_to_word_value): New function.
4958         (nds32_gen_dup_8_byte_to_double_word_value): New function.
4959         (nds32_expand_setmem_loop): Refine implementation.
4960         (nds32_expand_setmem_loop_v3m): Ditto.
4961         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
4962         pattern.
4964 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4966         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
4968 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4970         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
4971         (nds32_init_machine_status): Initialize machine->attr_naked_p and
4972         machine->attr_no_prologue_p.
4973         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
4974         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
4975         (nds32_expand_epilogue): Consider attr_naked_p.
4976         (nds32_expand_epilogue_v3pop): Likewise.
4977         (nds32_can_use_return_insn): Likewise.
4978         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
4979         attr_no_prologue_p fields.
4980         * config/nds32/nds32.opt (mret-in-naked-func): New option.
4982 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
4984         PR target/85918
4985         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
4986         attributes.
4987         * config/i386/sse.md
4988         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
4989         Rename to ...
4990         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
4991         ... this.
4992         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
4993         Rename to ...
4994         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
4995         ... this.
4996         (*<floatsuffix>floatv2div2sf2): Rename to ...
4997         (*float<floatunssuffix>v2div2sf2): ... this.
4998         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
4999         (float<floatunssuffix>v2div2sf2_mask): ... this.
5000         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
5001         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
5002         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
5003         to ...
5004         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
5005         ... this.
5006         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
5007         Rename to ...
5008         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
5009         ... this.
5010         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
5011         Rename to ...
5012         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
5013         ... this.
5014         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
5015         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
5016         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
5017         gen_ufix_truncv8dfv8si2.
5018         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
5019         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
5020         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
5021         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
5022         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
5023         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
5024         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
5025         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
5027 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5029         PR target/85900
5030         PR target/85345
5031         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
5033 2018-05-25  Jim Wilson  <jimw@sifive.com>
5035         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
5036         * config/riscv/riscv.c (struct machine_function): Add
5037         interrupt_handler_p and attribute_checked_p fields.
5038         (riscv_attribute_table): Add interrupt.
5039         (riscv_interrupt_type_p): New.
5040         (riscv_save_reg_p): Save extra regs for interrupt handler.
5041         (riscv_use_save_libcall): Return false  for interrupt handler.
5042         (riscv_first_stack_step): Add forward declaration.
5043         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
5044         for interrupt handler with large frame.  Use it for saved reg list.
5045         (riscv_expand_prologue): Move flag_stack_usage_info support to
5046         eliminate duplication.
5047         (riscv_expand_epilogue): Generate mret for interrupt handler.
5048         (riscv_epilogue_uses): New.
5049         (riscv_can_use_return_insn): Return false for interrupt handler.
5050         (riscv_function_ok_for_sibcall): Likewise.
5051         (riscv_set_current_function): Add interrupt handler support.
5052         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
5053         * config/riscv/riscv.md (UNSPECV_MRET): New.
5054         (GP_REGNUM): New.
5055         (riscv_frflags, riscv_fsflags): Use tab after opcode.
5056         (riscv_mret): New.
5057         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
5059 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
5061         PR tree-optimization/85712
5062         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
5063         this candidate has already been replaced in-situ by a copy.
5065 2018-05-25  Jason Merrill  <jason@redhat.com>
5067         PR c++/80485 - inline function non-zero address.
5068         * symtab.c (nonzero_address): Check DECL_COMDAT.
5070 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
5072         PR target/83628
5073         * config/alpha/alpha.md (ashlsi3): New insn pattern.
5074         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
5075         extension of SImode operation.  Use const123_operand predicate.
5076         (*saddsi_1): Remove.
5077         (*saddl_se_1): Ditto.
5078         (*ssubsi_1): Ditto.
5079         (*ssubl_se_1): Ditto.
5080         * config/alpha/predicates.md (const123_operand): New predicate.
5081         * config/alpha/constraints.md (P): Use IN_RANGE.
5083 2018-05-25  Richard Biener  <rguenther@suse.de>
5085         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
5086         defaulted to true.
5087         (ref_maybe_used_by_stmt_p): Likewise.
5088         (stmt_may_clobber_ref_p): Likewise.
5089         (stmt_may_clobber_ref_p_1): Likewise.
5090         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
5091         and pass it along.
5092         (ref_maybe_used_by_stmt_p): Likewise.
5093         (stmt_may_clobber_ref_p): Likewise.
5094         (stmt_may_clobber_ref_p_1): Likewise.
5095         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
5096         the alias oracle to disambiguate DRs with stmts DR analysis
5097         couldn't handle.
5098         (vect_analyze_data_refs): Do not give up on not analyzable
5099         DRs for BB vectorization.  Remove code truncating the dataref
5100         vector.
5102 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
5104         PR target/85832
5105         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
5106         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
5107         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
5109 2018-05-25  Richard Biener  <rguenther@suse.de>
5111         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
5112         function, combining stmt data ref gathering and fatal analysis
5113         parts.
5114         (vect_analyze_data_refs): Remove now redudnant code and simplify.
5115         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
5116         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
5117         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
5118         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
5120 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5122         PR tree-optimization/85720
5123         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
5124         SCC if all partitions are builtins.
5125         (version_loop_by_alias_check): New parameter.  Generate cancelable
5126         runtime alias check if all partitions are builtins.
5127         (distribute_loop): Update call to above function.
5129 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5131         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
5132         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
5133         (parm_default_def_partition_arg): Ditto.
5134         (set_parm_default_def_partition): Ditto.
5135         (get_parm_default_def_partitions): Ditto and make it static.
5136         (get_undefined_value_partitions): Ditto and make it static.
5137         (remove_ssa_form): Refactor call to init_var_map here.
5138         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
5139         computation for loop region.
5140         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
5141         (register_default_def): Delete.
5142         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
5143         (parm_default_def_partition_arg): Ditto.
5144         (set_parm_default_def_partition): Ditto.
5145         (get_parm_default_def_partitions): Ditto and make it static.
5146         (get_undefined_value_partitions): Ditto and make it static.
5147         (coalesce_with_default, coalesce_with_default): Update comment.
5148         (create_coalesce_list_for_region): New func factored out from
5149         create_outofssa_var_map.
5150         (populate_coalesce_list_for_outofssa): New func factored out from
5151         create_outofssa_var_map and coalesce_ssa_name.
5152         (create_outofssa_var_map): Delete.
5153         (coalesce_ssa_name): Refactor to support live range computation.
5154         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
5155         (get_parm_default_def_partitions): Delete.
5156         (get_undefined_value_partitions): Ditto.
5157         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
5158         computation for loop region.
5159         (new_tree_live_info, loe_visit_block): Ditto.
5160         (live_worklist, set_var_live_on_entry): Ditto.
5161         (calculate_live_on_exit, verify_live_on_entry): Ditto.
5162         * tree-ssa-live.h (struct _var_map): New fields.
5163         (init_var_map): Change decl.
5164         (region_contains_p): New.
5166 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
5168         * tree-ssa-live.h (live_merge_and_clear): Delete.
5170 2018-05-25  Richard Biener  <rguenther@suse.de>
5172         PR c++/85912
5173         * tree-dump.c (dequeue_and_dump): Remove access to removed
5174         operand 2 of a SWITCH_EXPR.
5176 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5178         * doc/sourcebuild.texi (vect_double_cond_arith): Include
5179         multiplication and division.
5180         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
5181         (cond_udiv@var{m}, cond_umod@var{m}): Document.
5182         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
5183         (cond_udiv_optab, cond_umod_optab): New optabs.
5184         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
5185         (IFN_COND_RDIV): New internal functions.
5186         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
5187         TRUNC_MOD_EXPR and RDIV_EXPR.
5188         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
5189         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
5190         New unspecs.
5191         (SVE_INT_BINARY): Include mult.
5192         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
5193         (optab, sve_int_op): Handle mult.
5194         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
5195         UNSPEC_COND_DIV.
5196         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
5197         for SVE_INT_BINARY_SD.
5199 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5201         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
5202         (optab, sve_int_op): Handle div and udiv.
5203         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
5204         for SVE_INT_BINARY_SD.
5205         (*<optab><mode>3): New insn for the same.
5207 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5209         * tree-vect-patterns.c: Include predict.h.
5210         (vect_recog_divmod_pattern): Restrict check for division support
5211         to when optimizing for size.
5213 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5215         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
5216         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
5217         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
5218         (gimple_match_op::set_op): Likewise.
5219         (gimple_resimplify4): Declare.
5220         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
5221         (expr::gen_transform): Likewise.
5222         (decision_tree::gen): Generate a simplification routine for 4 operands.
5223         * gimple-match-head.c (gimple_simplify): Add an overload for
5224         4 operands.  In the top-level function, handle up to 4 call
5225         arguments and call gimple_resimplify4.
5226         (gimple_resimplify4): New function.
5227         (build_call_internal): Pass a fourth operand.
5228         (maybe_push_to_seq): Likewise.
5229         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
5230         Fold VEC_COND_EXPRs of an operation and a default value into
5231         an IFN_COND_* function if possible.
5232         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
5233         New unspecs.
5234         (SVE_COND_FP_BINARY): Include them.
5235         (optab, sve_fp_op): Handle them.
5236         (SVE_INT_BINARY_REV): New code iterator.
5237         (SVE_COND_FP_BINARY_REV): New int iterator.
5238         (commutative): New int attribute.
5239         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
5240         Declare.
5241         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
5242         function.
5243         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
5244         (*cond_<optab><mode>): New patterns for reversed operands.
5246 2018-05-25  Richard Biener  <rguenther@suse.de>
5248         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
5249         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
5250         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
5251         (STMT_VINFO_GROUPED_ACCESS): Adjust.
5252         * tree-vect-data-refs.c (everywhere): Adjust users.
5253         * tree-vect-loop.c (everywhere): Likewise.
5254         * tree-vect-slp.c (everywhere): Likewise.
5255         * tree-vect-stmts.c (everywhere): Likewise.
5256         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
5258 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5260         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
5261         Rename to...
5262         (gcc_cv_as_section_exclude): ... this.
5263         Try Solaris as #exclude syntax.
5264         * configure: Regenerate.
5265         * config.in: Regenerate.
5266         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
5267         SECTION_EXCLUDE.
5268         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
5269         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
5271         * varasm.c (default_elf_asm_named_section): Don't check if
5272         HAVE_GAS_SECTION_EXCLUDE is defined.
5274 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5276         * doc/md.texi: Update the documentation of the cond_* optabs
5277         to mention the new final operand.  Fix GET_MODE_NUNITS call.
5278         Describe the scalar case too.
5279         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
5280         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
5281         instead of 2.
5282         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
5283         (get_conditional_internal_fn): Update comment.
5284         * tree-vect-loop.c (vectorizable_reduction): Pass the original
5285         accumulator value as a final argument to conditional functions.
5286         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
5287         a define_expand and add an "else" operand.  Assert for now that
5288         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
5289         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
5290         (*cond_<optab><mode>): New patterns.
5291         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
5292         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
5293         (UNSPEC_COND_EOR): Delete.
5294         (optab): Remove associated mappings.
5295         (SVE_INT_BINARY): New code iterator.
5296         (sve_int_op): Remove int attribute and add "minus" to the code
5297         attribute.
5298         (SVE_COND_INT_OP): Delete.
5299         (SVE_COND_FP_OP): Rename to...
5300         (SVE_COND_FP_BINARY): ...this.
5302 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
5304         * optabs.c (can_reuse_operands_p): New function.
5305         (maybe_legitimize_operands): Try to reuse the results for
5306         earlier operands.
5308 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
5310         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
5311         Add {q} suffix to insn mnemonic.
5313 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
5315         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
5316         (msp430_warn_func_return): New.
5318 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
5320         * fold-const.c (tree_nonzero_bits): New function.
5321         * fold-const.h (tree_nonzero_bits): Likewise.
5322         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
5323         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
5325 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5327         PR target/85900
5328         PR target/85345
5329         * varasm.c (assemble_alias): Check ifunc_resolver only on
5330         FUNCTION_DECL.
5332 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
5334         PR target/85903
5335         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
5336         when memory input operand is handled.
5338 2018-05-24  Luis Machado  <luis.machado@linaro.org>
5340         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
5341         global.
5342         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
5344 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
5346         * match.pd: Delay FMA folds until after vectorization.
5348 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5350         PR target/83009
5351         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
5352         address check not strict.
5354 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
5356         * gimple-match.h (gimple_match_op): New class.
5357         (mprts_hook): Replace parameters with a gimple_match_op *.
5358         (maybe_build_generic_op): Likewise.
5359         (gimple_simplified_result_is_gimple_val): Replace parameters with
5360         a const gimple_match_op *.
5361         (gimple_simplify): Replace code_helper * and tree * parameters with
5362         a gimple_match_op * parameter.
5363         (gimple_resimplify1): Replace code_helper *, tree and tree *
5364         parameters with a gimple_match_op * parameter.
5365         (gimple_resimplify2): Likewise.
5366         (gimple_resimplify3): Likewise.
5367         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
5368         parameters with a gimple_match_op * parameter.
5369         * gimple-match-head.c (gimple_simplify): Change prototypes of
5370         auto-generated functions to take a gimple_match_op * instead of
5371         separate code_helper * and tree * parameters.  Make the same
5372         change in the top-level overload and update calls to the
5373         gimple_resimplify routines.  Update calls to the auto-generated
5374         functions and to maybe_push_res_to_seq in the publicly-facing
5375         operation-specific gimple_simplify overloads.
5376         (gimple_match_op::MAX_NUM_OPS): Define.
5377         (gimple_resimplify1): Replace rcode and ops with a single res_op
5378         parameter.  Update call to gimple_simplify.
5379         (gimple_resimplify2): Likewise.
5380         (gimple_resimplify3): Likewise.
5381         (mprts_hook): Replace parameters with a gimple_match_op *.
5382         (maybe_build_generic_op): Likewise.
5383         (build_call_internal): Replace type, nargs and ops with
5384         a gimple_match_op *.
5385         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
5386         with a single gimple_match_op *.  Update calls to mprts_hook,
5387         build_call_internal and gimple_simplified_result_is_gimple_val.
5388         Factor out code that is common to the tree_code and combined_fn cases.
5389         * genmatch.c (expr::gen_transform): Replace tem_code and
5390         tem_ops with a gimple_match_op called tem_op.  Update calls
5391         to the gimple_resimplify functions and maybe_push_res_to_seq.
5392         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
5393         res_ops.  Update call to the gimple_resimplify functions.
5394         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
5395         (decision_tree::gen): Make the functions take a gimple_match_op *
5396         called res_op instead of separate res_code and res_ops parameters.
5397         Update call accordingly.
5398         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
5399         and ops with a single res_op parameter.  Update calls to
5400         maybe_build_generic_op and maybe_push_res_to_seq.
5401         (fold_stmt_1): Update calls to gimple_simplify and
5402         replace_stmt_with_simplification.
5403         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
5404         and gimple_simplified_result_is_gimple_val.
5405         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
5406         gimple_simplify.
5407         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
5408         with a gimple_match_op *.
5409         (vn_nary_build_or_lookup): Likewise.  Update call to
5410         vn_nary_build_or_lookup_1.
5411         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
5412         gimple_match_op *.  Update calls to the gimple_resimplify routines
5413         and to gimple_simplified_result_is_gimple_val.
5414         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
5415         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
5416         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
5417         (visit_nary_op): Likewise.
5418         (visit_reference_op_load): Likewise.
5420 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5422         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
5423         modifier for printing the step amount.
5425 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
5427         PR target/78849
5428         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
5429         types.
5431 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
5433         * doc/sourcebuild.texi (Endianness): New subsubsection.
5435 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5437         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
5438         <prefetch_dynamic_strides>: New const bool field.
5439         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
5440         prefetch_dynamic_strides.
5441         (exynosm1_prefetch_tune): Likewise.
5442         (thunderxt88_prefetch_tune): Likewise.
5443         (thunderx_prefetch_tune): Likewise.
5444         (thunderx2t99_prefetch_tune): Likewise.
5445         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
5446         false.
5447         (aarch64_override_options_internal): Update to set
5448         PARAM_PREFETCH_DYNAMIC_STRIDES.
5449         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
5450         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
5451         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
5452         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
5453         prefetch-dynamic-strides setting.
5455 2018-05-23  Luis Machado  <luis.machado@linaro.org>
5457         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
5458         <minimum_stride>: New const int field.
5459         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
5460         minimum_stride field defaulting to -1.
5461         (exynosm1_prefetch_tune): Likewise.
5462         (thunderxt88_prefetch_tune): Likewise.
5463         (thunderx_prefetch_tune): Likewise.
5464         (thunderx2t99_prefetch_tune): Likewise.
5465         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
5466         <default_opt_level>: Set to 3.
5467         (aarch64_override_options_internal): Update to set
5468         PARAM_PREFETCH_MINIMUM_STRIDE.
5469         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
5470         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
5471         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
5472         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
5473         stride is constant and is below the minimum stride threshold.
5475 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5477         * config/arm/arm-cpus.in (mode26): Delete.
5478         (armv4): Delete mode26 reference.
5479         * config/arm/arm.c (arm_configure_build_target): Delete use of
5480         isa_bit_mode26.
5482 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
5484         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
5485         New insn pattern.
5486         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
5487         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
5488         for non-SSE modes.
5489         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
5490         (floatunsdidf2): Ditto.
5492 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
5494         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
5495         (fixuns_trunc<mode>si2_avx512f): Ditto.
5496         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
5497         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
5498         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
5500 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
5502         PR rtl-optimization/79985
5503         * df-scan.c (df_insn_refs_collect): Remove special case for
5504         global registers and asm statements.
5506 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
5508         * extend.texi (Global Register Variables): Rewrite the bullet list.
5509         Note that the register is available for allocation. Note that access
5510         via inline asm must use constraints. Add note about async-signal
5511         handlers. Remove paragraph about automagic register selection.
5513 2018-05-23  Richard Biener  <rguenther@suse.de>
5515         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
5516         of fixed offset from memset VN.
5518 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
5520         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
5521         first_interp field.
5522         (alloc_cand_and_find_basis): Initialize first_interp field.
5523         (slsr_process_mul): Modify first_interp field.
5524         (slsr_process_add): Likewise.
5525         (slsr_process_cast): Modify first_interp field for each new
5526         interpretation.
5527         (slsr_process_copy): Likewise.
5528         (dump_candidate): Dump first_interp field.
5529         (replace_mult_candidate): Process all interpretations, not just
5530         subsequent ones.
5531         (replace_rhs_if_not_dup): Likewise.
5532         (replace_one_candidate): Likewise.
5534 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
5536         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
5537         Add new boolean.
5538         (aarch64_needs_frame_chain): New function.
5539         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
5541 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
5543         PR target/84882
5544         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
5545         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
5546         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
5547         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
5548         as true for strict-align.
5549         (aarch64_can_inline_p): Perform checks even when callee has no
5550         attributes to check for strict alignment.
5551         * doc/extend.texi (AArch64 Function Attributes): Document
5552         no-strict-align.
5553         * doc/invoke.texi: (AArch64 Options): Likewise.
5555 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
5557         PR tree-optimization/85853
5558         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
5559         the handling of the root of the node to...
5560         (vect_slp_analyze_node_operations_1): ...this new function,
5561         and run the whole thing with the child nodes' def types
5562         set according to their SLP node's def type.
5564 2018-05-23  Richard Biener  <rguenther@suse.de>
5566         PR middle-end/85874
5567         * tree-data-ref.c (create_runtime_alias_checks): Defer
5568         and ignore overflow warnings.
5570 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
5572         PR tree-optimization/85822
5573         * tree-vrp.c (is_masked_range_test): Fix handling of negative
5574         constants.
5576 2018-05-23  Richard Biener  <rguenther@suse.de>
5578         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
5579         memset constants via native_interpret_expr.
5581 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
5583         PR target/85345
5584         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
5585         attribute.
5586         (cgraph_node::create_alias): Likewise.
5587         (cgraph_node::get_availability): Check ifunc_resolver instead
5588         of looking up ifunc attribute.
5589         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
5590         * varasm.c (do_assemble_alias): Likewise.
5591         (assemble_alias): Likewise.
5592         (default_binds_local_p_3): Likewise.
5593         * cgraph.h (cgraph_node): Add ifunc_resolver.
5594         (cgraph_node::only_called_directly_or_aliased_p): Return false
5595         for IFUNC resolver.
5596         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
5597         attribute.
5598         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
5599         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
5600         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
5601         instead of looking up ifunc attribute.
5603 2018-05-22  Luis Machado  <luis.machado@linaro.org>
5605         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
5607 2018-05-22  Martin Sebor  <msebor@redhat.com>
5609         PR middle-end/85359
5610         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
5611         only when expasion succeeds.
5612         (expand_builtin_strcmp): Same.
5613         (expand_builtin_strncmp): Same.
5615 2018-05-22  Martin Sebor  <msebor@redhat.com>
5617         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
5619 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
5620             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5622         * config/aarch64/aarch64-ldpstp.md: Replace uses of
5623         aarch64_mem_pair_operand with memory_operand and delete operand swapping
5624         code.
5625         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
5626         Add check for legitimate_address.
5627         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
5628         (aarch64_swap_ldrstr_operands): New.
5629         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
5630         Define prototype.
5632 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
5633             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5635         * config/aarch64/aarch64.md: New patterns to generate stp
5636         and ldp.
5637         (store_pair_sw, store_pair_dw): New patterns to generate stp for
5638         single words and double words.
5639         (load_pair_sw, load_pair_dw): Likewise.
5640         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
5641         Delete.
5642         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
5643         Delete.
5644         * config/aarch64/aarch64-ldpstp.md: Modify peephole
5645         for different mode ldpstp and add peephole for merged zero stores.
5646         Likewise for loads.
5647         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
5648         Add size check.
5649         (aarch64_gen_store_pair): Rename calls to match new patterns.
5650         (aarch64_gen_load_pair): Rename calls to match new patterns.
5651         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
5652         (load_pair<DREG:mode><DREG2:mode>): ... This.
5653         (store_pair<mode>): Rename to...
5654         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
5655         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
5656         New mode iterators.
5657         (V_INT_EQUIV): Handle SImode.
5658         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
5659         New predicate.
5661 2018-05-22  Martin Sebor  <msebor@redhat.com>
5663         PR c/85623
5664         * calls.c (maybe_warn_nonstring_arg): Use string length to set
5665         or ajust the presumed bound on an operation to avoid unnecessary
5666         warnings.
5668 2018-05-22  Martin Sebor  <msebor@redhat.com>
5670         PR tree-optimization/85826
5671         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
5672         assuming that a DECL necesarily has a constant size.
5674 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
5676         PR middle-end/85862
5677         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
5679 2018-05-22  Richard Biener  <rguenther@suse.de>
5681         PR tree-optimization/85834
5682         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
5683         non-constant and non-zero memset arguments.
5685 2018-05-22  Martin Liska  <mliska@suse.cz>
5687         PR ipa/85607
5688         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
5690 2018-05-22  Richard Biener  <rguenther@suse.de>
5692         PR tree-optimization/85863
5693         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
5694         comparisons when vectype is specified.
5695         (vectorizable_condition): Do not specify vectype for
5696         vect_is_simple_cond when SLP vectorizing.
5698 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
5700         PR target/85657
5701         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
5702         define __ibm128 as long double.
5703         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
5704         as a distinct type when IEEE 128-bit support is enabled.
5705         (init_float128_ieee): Fix up conversions between IFmode and IEEE
5706         128-bit types to use the correct functions.
5707         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
5708         convert between 128-bit floating point types that have different
5709         modes but the same representation, instead of using gen_lowpart to
5710         makean alias.
5711         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
5712         KFmode.
5713         (IFKF_reg): New attributes to give the register constraints for
5714         IFmode and KFmode.
5715         (extend<mode>tf2_internal): New insns to mark an explicit
5716         conversion between 128-bit floating point types that have a
5717         different mode but share the same representation.
5719 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
5721         PR tree-optimization/85814
5722         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
5723         a null return from get_strinfo when unsharing the next
5724         strinfo in the chain.
5726 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
5728         PR gcc/84923
5729         * varasm.c (weak_finish): Clean up weak_decls.
5731 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5733         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
5734         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
5735         UNSPEC_UADALP values.
5736         * config/aarch64/iterators.md (ABAL): New int iterator.
5737         (ABDL2): Likewise.
5738         (ADALP): Likewise.
5739         (sur): Add mappings for the above.
5740         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
5741         New define_insn.
5742         (aarch64_<sur>abal<mode>_4): Likewise.
5743         (aarch64_<sur>adalp<mode>_3): Likewise.
5744         (<sur>sadv16qi): New define_expand.
5746 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
5748         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
5749         (*movdf_internal): Ditto.
5750         (*rcpsf2_sse): Ditto.
5751         (*rsqrtsf2_sse): Ditto.
5752         (*sqrt<mode>2_sse): Ditto.
5754 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
5756         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
5757         eor3q<mode>4.
5758         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
5759         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
5760         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
5761         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
5762         vbcaxq_s64): New.
5763         * config/aarch64/arm_neon.h: Likewise.
5764         * config/aarch64/iterators.md (VQ_I): New.
5766 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
5768         * config.gcc: Add arc/t-multilib-linux to tmake_file for
5769         arc*-*-linux*.
5770         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
5771         MULTILIB_DIRNAMES
5773 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
5775         * config/nds32/constraints.md (S): New constraint.
5776         * config/nds32/nds32.md (call_internal): Use constraint S.
5777         (call_value_internal): Likewise.
5778         (sibcall_internal): Likewise.
5779         (sibcall_value_internal): Likewise.
5781 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
5782             Chung-Ju Wu  <jasonwucj@gmail.com>
5784         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
5785         into consideration.
5787 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
5788             Chung-Ju Wu  <jasonwucj@gmail.com>
5790         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
5791         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
5792         (nds32_rtx_costs_impl): Simplify.
5793         (nds32_address_cost_impl): Simplify.
5794         (nds32_init_rtx_costs): New function.
5795         (nds32_rtx_costs_speed_prefer): Likewise.
5796         (nds32_rtx_costs_size_prefer): Likewise.
5797         (nds32_address_cost_speed_prefer): Likewise.
5798         (nds32_address_cost_speed_fwprop): Likewise.
5799         (nds32_address_cost_size_prefer): Likewise.
5800         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
5801         * config/nds32/nds32.c (nds32_option_override): Use
5802         nds32_init_rtx_costs function.
5804 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
5806         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
5807         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
5808         (TARGET_PIPELINE_N8): Likewise.
5809         (TARGET_PIPELINE_N10): Likewise.
5810         (TARGET_PIPELINE_N13): Likewise.
5811         (TARGET_PIPELINE_GRAYWOLF): Likewise.
5813 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
5815         * config/nds32/nds32-fpu.md: Update copyright year.
5817 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5819         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
5821 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5823         * config/nds32/nds32.c
5824         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
5825         * config/nds32/nds32.opt (minline-asm-r15): New option.
5827 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5829         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
5830         MASK_HW_ABS.
5831         * config/nds32/nds32.md (abssi2): New pattern.
5833 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
5835         * config/i386/i386.md (rex64namesuffix): New mode attribute.
5836         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
5837         Merge insn pattern from sse_cvtsi2ss<round_name> and
5838         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
5839         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
5840         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
5841         using SWI48 mode iterator.
5842         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
5843         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
5844         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
5845         pattern from sse_cvttss2si<round_saeonly_name>
5846         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
5847         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
5848         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
5849         using SWI48 mode iterator.
5850         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
5851         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
5852         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
5853         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
5854         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
5855         using SWI48 mode iterator.
5856         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
5857         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
5858         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
5859         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
5860         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
5861         SWI48 mode iterator.
5862         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
5863         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
5864         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
5865         pattern from sse_cvttsd2si<round_saeonly_name>
5866         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
5868 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5870         * config/nds32/nds32-md-auxiliary.c
5871         (nds32_valid_smw_lwm_base_p): Refine.
5872         (nds32_output_smw_single_word): Refine.
5873         (nds32_output_smw_double_word): New.
5874         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
5876 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5878         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
5879         (nds32_output_stack_pop): Refine.
5880         (nds32_expand_unaligned_load): Refine.
5881         (nds32_expand_unaligned_store): Refine.
5883 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5884             Chung-Ju Wu  <jasonwucj@gmail.com>
5886         * config/nds32/constants.md: Add TP_REGNUM constant.
5887         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
5888         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
5889         UNSPEC_ADD32.
5890         * config/nds32/nds32-doubleword.md: Consider flag_pic.
5891         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
5892         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
5893         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
5894         and PIC code generation.
5895         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
5896         code generation.
5897         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
5898         optimization.
5899         * config/nds32/nds32.md: Support TLS and PIC.
5900         * config/nds32/nds32.c: Support TLS and PIC.
5901         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
5902         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
5903         predicate.
5905 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5907         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
5908         mode with E_ prefix.
5910 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5911             Chung-Ju Wu  <jasonwucj@gmail.com>
5913         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
5914         * config/nds32/nds32-md-auxiliary.c
5915         (symbolic_reference_mentioned_p): New.
5916         (nds32_legitimize_ict_address): New.
5917         (nds32_expand_ict_move): New.
5918         (nds32_indirect_call_referenced_p): New.
5919         (nds32_symbol_binds_local_p): Delete.
5920         (nds32_long_call_p): Modify.
5921         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
5922         * config/nds32/nds32-protos.h
5923         (symbolic_reference_mentioned_p): Declare.
5924         (nds32_legitimize_ict_address): Declare.
5925         (nds32_expand_ict_move): Declare.
5926         (nds32_indirect_call_referenced_p): Declare.
5927         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
5928         (nds32_relax_group): Use nds32_ict_const_p as condition.
5929         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
5930         (nds32_asm_file_start): Output ict_model directive in asm code.
5931         (nds32_legitimate_address_p): Consider indirect call.
5932         (nds32_print_operand): Consider indirect call.
5933         (nds32_print_operand_address): Consider indirect call.
5934         (nds32_insert_attributes): Handle "indirect_call" attribute.
5935         (TARGET_LEGITIMATE_ADDRESS_P): Define.
5936         (TARGET_LEGITIMATE_CONSTANT_P): Define.
5937         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
5938         (TARGET_DELEGITIMIZE_ADDRESS): Define.
5939         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
5940         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
5941         (TARGET_ICT_MODEL_SMALL): Define.
5942         (TARGET_ICT_MODEL_LARGE): Define.
5943         * config/nds32/nds32.md (movsi): Consider ict model.
5944         (call, call_value): Consider ict model.
5945         (sibcall, sibcall_value): Consider ict model.
5946         * config/nds32/nds32.opt (mict-model): New option.
5947         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
5948         model.
5950 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
5951             Monk Chiang  <sh.chiang04@gmail.com>
5952             Jim Wilson <jimw@sifive.com>
5954         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
5955         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
5956         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
5957         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
5958         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
5959         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
5960         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
5961         compute save_libcall_adjustment properly.
5962         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
5963         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
5964         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
5965         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
5966         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
5967         (ABI_SPEC): Handle mabi=ilp32e.
5968         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
5969         (RVE): Add RVE mask.
5970         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
5971         <-march>: Add rv32e as an example.
5973 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
5975         PR c++/82899
5976         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
5977         (intra_create_variable_infos): Handle C++ constructors.
5979 2018-05-18  Martin Liska  <mliska@suse.cz>
5981         * passes.def: Remove a redundant pass.
5983 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
5985         PR bootstrap/85838
5986         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
5988 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5990         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
5991         (ARMv4): Update.
5992         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
5993         (ARMv6m): Update.
5994         (armv2, armv2a, armv3, armv3m): Delete architectures.
5995         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
5996         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
5997         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
5998         Delete cpus.
5999         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
6000         (*mulsidi3adddi): Likewise.
6001         (mulsidi3): Likewise.
6002         (*mulsidi3_nov6): Likewise.
6003         (umulsidi3): Likewise.
6004         (umulsidi3_nov6): Likewise.
6005         (umaddsidi4): Likewise.
6006         (*umulsidi3adddi): Likewise.
6007         (smulsi3_highpart): Likewise.
6008         (*smulsi3_highpart_nov6): Likewise.
6009         (umulsi3_highpart): Likewise.
6010         (*umulsi3_highpart_nov6): Likewise.
6011         * config/arm/arm.h (arm_arch3m): Delete.
6012         * config/arm/arm.c (arm_arch3m): Delete.
6013         (arm_option_override_internal): Update armv3-related comment.
6014         (arm_configure_build_target): Delete use of isa_bit_mode32.
6015         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
6016         (arm_rtx_costs_internal): Delete check of arm_arch3m.
6017         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
6018         (mulsa3): Likewise.
6019         (mulusa3): Likewise.
6020         * config/arm/arm-protos.h (arm_arch3m): Delete.
6021         * config/arm/arm-tables.opt: Regenerate.
6022         * config/arm/arm-tune.md: Likewise.
6023         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
6024         deleted architectures.
6026 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6028         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
6029         (armv5t, armv5te): New features.
6030         (ARMv5, ARMv5e): Delete fgroups.
6031         (ARMv5t, ARMv5te): Adjust for above changes.
6032         (ARMv6m): Likewise.
6033         (armv5, armv5e): Delete arches.
6034         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
6035         arm_arch5.
6036         (*call_reg_arm): Likewise.
6037         (*call_value_reg_armv5): Likewise.
6038         (*call_value_reg_arm): Likewise.
6039         (*call_symbol): Likewise.
6040         (*call_value_symbol): Likewise.
6041         (*sibcall_insn): Likewise.
6042         (*sibcall_value_insn): Likewise.
6043         (clzsi2): Likewise.
6044         (prefetch): Likewise.
6045         (define_split and define_peephole2 dependent on arm_arch5):
6046         Likewise.
6047         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
6048         arm_arch5e.
6049         (TARGET_ARM_QBIT): Likewise.
6050         (TARGET_DSP_MULTIPLY): Likewise.
6051         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
6052         (arm_arch5, arm_arch5e): Delete.
6053         (arm_arch5t, arm_arch5te): Declare.
6054         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
6055         (arm_arch5t): Declare.
6056         (arm_option_reconfigure_globals): Update for the above.
6057         (arm_options_perform_arch_sanity_checks): Update comment, replace
6058         use of arm_arch5 with arm_arch5t.
6059         (use_return_insn): Likewise.
6060         (arm_emit_call_insn): Likewise.
6061         (output_return_instruction): Likewise.
6062         (arm_final_prescan_insn): Likewise.
6063         (arm_coproc_builtin_available): Likewise.
6064         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
6065         arm_arch5e with arm_arch5t and arm_arch5te.
6066         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
6067         (arm_arch5t, arm_arch5te): Declare.
6068         * config/arm/arm-tables.opt: Regenerate.
6069         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
6070         * config/arm/t-multilib: Likewise.
6071         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
6072         instead of arm_arch5.
6073         (*call_reg_thumb1): Likewise.
6074         (*call_value_reg_thumb1_v5): Likewise.
6075         (*call_value_reg_thumb1): Likewise.
6076         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
6077         unreachable path.
6078         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
6080 2018-05-18  Martin Liska  <mliska@suse.cz>
6082         PR gcov-profile/84846
6083         * doc/gcov.texi: Document -t option of gcov tool.
6085 2018-05-18  Martin Liska  <mliska@suse.cz>
6087         PR gcov-profile/84846
6088         * gcov.c (print_usage): Add new -t option.
6089         (process_args): Handle the option.
6090         (generate_results): Use stdout as output when requested by
6091         the option.
6093 2018-05-18  Martin Liska  <mliska@suse.cz>
6095         PR gcov-profile/84846
6096         * coverage.c (coverage_init): Write PWD to .gcno file.
6097         * doc/gcov.texi: Document how working directory is printed.
6098         * gcov-dump.c (dump_gcov_file): Print PWD.
6099         * gcov.c (output_intermediate_file): Likewise.
6100         (read_graph_file): Read PWD string.
6101         (output_lines): Print PWD.
6103 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6105         PR middle-end/85817
6106         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
6107         for retval and return false if all args to phi are zero.
6109 2018-05-18  Richard Biener  <rguenther@suse.de>
6111         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
6112         method.
6113         (evrp_dom_walker::before_dom_children): Call it.
6115 2018-05-18  Richard Biener  <rguenther@suse.de>
6117         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
6118         results when processing array refs with variable index.
6120 2018-05-18  Toon Moene  <toon@moene.org>
6122         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
6123         directly after that of -floop-interchange. Indicate that both
6124         options are enabled by default when specifying -O3.
6126 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6128         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
6129         iterator.  Delete separate integer-mode vec_set<mode> expander.
6130         (aarch64_simd_vec_setv2di): Delete.
6131         (vec_setv2di): Delete.
6132         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
6133         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
6134         the "w, r" alternative.
6136 2018-05-18  Martin Liska  <mliska@suse.cz>
6138         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
6139         * tree-pass.h (make_pass_lower_switch_O0): New function.
6140         * tree-switch-conversion.c (node_has_low_bound): Remove.
6141         (node_has_high_bound): Likewise.
6142         (node_is_bounded): Likewise.
6143         (class pass_lower_switch): Make it a template type and create
6144         two instances.
6145         (pass_lower_switch::execute): Add template argument.
6146         (make_pass_lower_switch): New function.
6147         (make_pass_lower_switch_O0): New function.
6148         (do_jump_if_equal): Remove.
6149         (emit_case_nodes): Simplify to just handle all 3 cases and leave
6150         all the hard work to tree optimization passes.
6152 2018-05-18  Martin Liska  <mliska@suse.cz>
6154         * dbgcnt.c (limit_low): Renamed from limit.
6155         (limit_high): New variable.
6156         (dbg_cnt_is_enabled): Check for upper limit.
6157         (dbg_cnt): Adjust dumping.
6158         (dbg_cnt_set_limit_by_index): Add new argument for high
6159         value.
6160         (dbg_cnt_set_limit_by_name): Likewise.
6161         (dbg_cnt_process_single_pair): Parse new format.
6162         (dbg_cnt_process_opt): Use strtok.
6163         (dbg_cnt_list_all_counters): Remove 'value' and add
6164         'limit_high'.
6165         * doc/invoke.texi: Document changes.
6167 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
6169         * doc/sourcebuild.texi (scalar_all_fma): Document.
6170         * tree.def (FMA_EXPR): Delete.
6171         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
6172         * internal-fn.c (ternary_direct): New macro.
6173         (expand_ternary_optab_fn): Likewise.
6174         (direct_ternary_optab_supported_p): Likewise.
6175         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
6176         * builtins.c (fold_builtin_fma): Delete.
6177         (fold_builtin_3): Don't call it.
6178         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
6179         * expr.c (expand_expr_real_2): Likewise.
6180         * fold-const.c (operand_equal_p): Likewise.
6181         (fold_ternary_loc): Likewise.
6182         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
6183         * gimple.c (DEFTREECODE): Likewise.
6184         * gimplify.c (gimplify_expr): Likewise.
6185         * optabs-tree.c (optab_for_tree_code): Likewise.
6186         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
6187         * tree-eh.c (operation_could_trap_p): Likewise.
6188         (stmt_could_throw_1_p): Likewise.
6189         * tree-inline.c (estimate_operator_cost): Likewise.
6190         * tree-pretty-print.c (dump_generic_node): Likewise.
6191         (op_code_prio): Likewise.
6192         * tree-ssa-loop-im.c (stmt_cost): Likewise.
6193         * tree-ssa-operands.c (get_expr_operands): Likewise.
6194         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
6195         * fold-const-call.h (fold_fma): Delete.
6196         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
6197         CFN_FNMA and CFN_FNMS.
6198         (fold_fma): Delete.
6199         * genmatch.c (combined_fn): New enum.
6200         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
6201         (commutative_op): New function.
6202         (commutate): Use it.  Handle more than 2 operands.
6203         (dt_operand::gen_gimple_expr): Use commutative_op.
6204         (parser::parse_expr): Allow :c to be used with non-binary
6205         operators if the commutative operand is known.
6206         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
6207         CFN_FMS, CFN_FNMA and CFN_FNMS.
6208         (backprop::process_assign_use): Remove FMA_EXPR handling.
6209         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
6210         (gen_hsa_fma): New function.
6211         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
6212         IFN_FNMA and IFN_FNMS.
6213         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
6214         * gimple-fold.h (follow_all_ssa_edges): Declare.
6215         * gimple-fold.c (follow_all_ssa_edges): New function.
6216         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
6217         gimple_build interface and use follow_all_ssa_edges to fold the result.
6218         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
6219         instead of checking for optabs directly.
6220         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
6221         rather than FMA_EXPRs.
6222         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
6223         call to IFN_FMA instead of an FMA_EXPR.
6225 2018-05-17  Jim Wilson  <jimw@sifive.com>
6227         * expr.c (do_tablejump): When converting index to Pmode, if we have a
6228         sign extended promoted subreg, and the range does not have the sign bit
6229         set, then do a sign extend.
6231         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
6232         test, check for sign extended subreg and/or constant operands, and
6233         do a sign extend in that case.
6235 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
6237         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
6238         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
6239         Add untyped.
6240         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
6241         Change logics_shift_reg to logics_shift_imm.
6242         (thunderx2t99_fp_loadpair_basic): Delete.
6243         (thunderx2t99_fp_storepair_basic): Delete.
6244         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
6245         (thunderx2t99_asimd_polynomial): Delete.
6246         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
6247         and neon_fp_mul_d_scalar_q.
6248         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
6249         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
6250         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
6251         (thunderx2t99_asimd_lut): Add missing tbl types.
6252         (thunderx2t99_asimd_ext): Delete.
6253         (thunderx2t99_asimd_load1_1_mult): Delete.
6254         (thunderx2t99_asimd_load1_2_mult): Delete.
6255         (thunderx2t99_asimd_load1_ldp): New.
6256         (thunderx2t99_asimd_load1): New.
6257         (thunderx2t99_asimd_load2): Add missing *load2* types.
6258         (thunderx2t99_asimd_load3): New.
6259         (thunderx2t99_asimd_load4): New.
6260         (thunderx2t99_asimd_store1_1_mult): Delete.
6261         (thunderx2t99_asimd_store1_2_mult): Delete.
6262         (thunderx2t99_asimd_store2_mult): Delete.
6263         (thunderx2t99_asimd_store2_onelane): Delete.
6264         (thunderx2t99_asimd_store_stp): New.
6265         (thunderx2t99_asimd_store1): New.
6266         (thunderx2t99_asimd_store2): New.
6267         (thunderx2t99_asimd_store3): New.
6268         (thunderx2t99_asimd_store4): New.
6270 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
6272         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
6273         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
6275 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
6276             Segher Boessenkool  <segher@kernel.crashing.org>
6278         PR target/85698
6279         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
6280         operand.
6282 2018-05-17  Richard Biener  <rguenther@suse.de>
6284         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
6285         for pruning loop and prune defs feeding only already visited PHIs.
6287 2018-05-17  Richard Biener  <rguenther@suse.de>
6289         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
6291 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
6292             Richard Biener  <rguenther@suse.de>
6294         PR tree-optimization/85793
6295         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
6296         for VMAT_ELEMENTWISE.
6298 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
6300         * internal-fn.h (lookup_internal_fn): Declare
6301         * internal-fn.c (lookup_internal_fn): New function.
6302         * gimple.c (gimple_build_call_from_tree): Handle calls to
6303         internal functions.
6304         * gimple-pretty-print.c (dump_gimple_call): Print "." before
6305         internal function names.
6306         * tree-pretty-print.c (dump_generic_node): Likewise.
6307         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
6309 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
6311         * gimple-fold.h (gimple_build): Make the function forms take
6312         combined_fn rather than built_in_function.
6313         (gimple_simplify): Likewise.
6314         * gimple-match-head.c (gimple_simplify): Likewise.
6315         * gimple-fold.c (gimple_build): Likewise.
6316         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
6317         rather than gimple_build_call_internal.
6318         (get_initial_defs_for_reduction): Likewise.
6319         (vect_create_epilog_for_reduction): Likewise.
6320         (vectorizable_live_operation): Likewise.
6322 2018-05-17  Martin Liska  <mliska@suse.cz>
6324         * gimple-ssa-sprintf.c (format_directive): Do not use
6325         space in between 'G_' and '('.
6327 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
6329         PR target/85323
6330         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
6331         even if the mask is not all ones.
6333         PR target/85323
6334         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
6335         vector.
6336         (ix86_gimple_fold_builtin): Likewise.
6338         PR target/85323
6339         * config/i386/i386.c: Include tree-vector-builder.h.
6340         (ix86_vector_shift_count): New function.
6341         (ix86_fold_builtin): Fold shift builtins by scalar count.
6342         (ix86_gimple_fold_builtin): Likewise.
6344         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
6345         _mm512_setzero): New intrinsics.
6347 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
6348             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6350         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
6351         code generation for cases where splatting a value is not useful.
6352         * simplify-rtx.c (simplify_ternary_operation): Simplify
6353         vec_merge across a vec_duplicate and a paradoxical subreg forming
6354         a vector mode to a vec_concat.
6356 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
6358         * config.gcc: Support "goldmont-plus".
6359         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
6360         "goldmont-plus".
6361         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6362         PROCESSOR_GOLDMONT_PLUS.
6363         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
6364         (processor_target_table): Add "goldmont-plus".
6365         (PTA_GOLDMONT_PLUS): Define.
6366         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
6367         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
6368         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
6369         (fold_builtin_cpu): Add "goldmont-plus".
6370         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
6371         (ix86_option_override_internal): Add "goldmont-plus".
6372         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
6373         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
6374         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
6375         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
6377 2018-05-17  Richard Biener  <rguenther@suse.de>
6379         PR tree-optimization/85757
6380         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
6381         remove defs that only feed that PHI from further processing.
6383 2018-05-16  Jim Wilson  <jimw@sifive.com>
6385         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
6386         asterisk to name.
6387         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
6389 2018-05-16  Mark Wielaard  <mark@klomp.org>
6391         * dwarf2out.c (count_index_strings): New function.
6392         (output_indirect_strings): Call count_index_strings and generate
6393         header for dwarf_version >= 5.
6395 2018-05-16  Mark Wielaard  <mark@klomp.org>
6397         * dwarf2out.c (dwarf_FORM): New function.
6398         (set_indirect_string): Use dwarf_FORM.
6399         (reset_indirect_string): Likewise.
6400         (size_of_die): Likewise.
6401         (value_format): Likewise.
6402         (output_die): Likewise.
6403         (add_skeleton_AT_string): Likewise.
6404         (output_macinfo_op): Likewise.
6405         (index_string): Likewise.
6406         (output_index_string_offset): Likewise.
6407         (output_index_string): Likewise.
6408         (count_index_strings): Likewise.
6410 2018-05-16  Carl Love  <cel@us.ibm.com>
6412         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
6413         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
6415 2018-05-16  Martin Jambor  <mjambor@suse.cz>
6417         * ipa-prop.c (ipa_free_all_edge_args): Remove.
6418         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
6420 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
6422         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
6423         (fnma<mode>4): Likewise.
6424         (fms<mode>4): Likewise.
6425         (fnms<mode>4): Likewise.
6426         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
6427         (aarch64_fnma<mode>4): Likewise.
6428         (aarch64_fms<mode>4): Likewise.
6429         (aarch64_fnms<mode>4): Likewise.
6430         (aarch64_fnmadd<mode>4): Likewise.
6432 2018-05-16  Jason Merrill  <jason@redhat.com>
6434         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
6436 2018-05-16  Richard Biener  <rguenther@suse.de>
6438         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
6439         (dump_stmt_cost): Declare.
6440         (add_stmt_cost): Dump cost we add.
6441         (add_stmt_costs): New function.
6442         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
6443         No longer exported.
6444         (vect_analyze_stmt): Adjust prototype.
6445         (vectorizable_condition): Likewise.
6446         (vectorizable_live_operation): Likewise.
6447         (vectorizable_reduction): Likewise.
6448         (vectorizable_induction): Likewise.
6449         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
6450         cost vector to pass to vectorizable_ and record afterwards.
6451         (vect_model_reduction_cost): Take cost vector argument and adjust.
6452         (vect_model_induction_cost): Likewise.
6453         (vectorizable_reduction): Likewise.
6454         (vectorizable_induction): Likewise.
6455         (vectorizable_live_operation): Likewise.
6456         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
6457         SLP_TREE_NUMBER_OF_VEC_STMTS.
6458         (vect_analyze_slp_cost_1): Remove.
6459         (vect_analyze_slp_cost): Likewise.
6460         (vect_slp_analyze_node_operations): Take visited args and
6461         a target cost vector.  Avoid processing already visited stmt sets.
6462         (vect_slp_analyze_operations): Use a local cost vector to gather
6463         costs and register those of non-discarded instances.
6464         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
6465         (vect_schedule_slp_instance): Remove copying of
6466         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
6467         zero.
6468         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
6469         adding cost.  Record cost entry location.
6470         (vect_prologue_cost_for_slp_op): Function to compute cost of
6471         a constant or invariant generated for SLP vect in the prologue,
6472         split out from vect_analyze_slp_cost_1.
6473         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
6474         (vect_model_promotion_demotion_cost): Likewise.
6475         (vect_model_store_cost): Likewise, make static.
6476         (vect_model_load_cost): Likewise.
6477         (vectorizable_bswap): Add cost vector arg and adjust.
6478         (vectorizable_call): Likewise.
6479         (vectorizable_simd_clone_call): Likewise.
6480         (vectorizable_conversion): Likewise.
6481         (vectorizable_assignment): Likewise.
6482         (vectorizable_shift): Likewise.
6483         (vectorizable_operation): Likewise.
6484         (vectorizable_store): Likewise.
6485         (vectorizable_load): Likewise.
6486         (vectorizable_condition): Likewise.
6487         (vectorizable_comparison): Likewise.
6488         (can_vectorize_live_stmts): Likewise.
6489         (vect_analyze_stmt): Likewise.
6490         (vect_transform_stmt): Adjust calls to vectorizable_*.
6491         * tree-vectorizer.c: Include gimple-pretty-print.h.
6492         (dump_stmt_cost): New function.
6494 2018-05-16  Richard Biener  <rguenther@suse.de>
6496         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
6497         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
6498         * tree-ssa-dse.c: Include tree-ssa-loop.h.
6499         (check_name): New callback.
6500         (dse_classify_store): Track cycles via a visited bitmap of PHI
6501         defs and simplify handling of in-loop and across loop dead stores
6502         and properly fail for loop-variant refs.  Handle byte-tracking with
6503         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
6504         limiting the walk.
6506 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
6508         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
6509         (vect_get_mask_type_for_stmt): Likewise.
6510         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
6511         split out from...
6512         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
6513         to determine the statement's vector type and the vector type that
6514         should be used for calculating nunits.  Deal with cases in which
6515         the type has to be deferred.
6516         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
6517         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
6518         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
6519         (vect_determine_vf_for_stmt): New functions, split out from...
6520         (vect_determine_vectorization_factor): ...here.
6521         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
6522         (vect_get_mask_type_for_stmt): New functions, split out from
6523         vect_determine_vectorization_factor.
6525 2018-05-16  Richard Biener  <rguenther@suse.de>
6527         * tree-cfg.c (verify_gimple_assign_ternary): Properly
6528         verify the [VEC_]COND_EXPR embedded comparison.
6530 2018-05-15  Martin Sebor  <msebor@redhat.com>
6532         PR tree-optimization/85753
6533         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
6534         RECORD_TYPE in addition to ARRAY_TYPE.
6536 2018-05-15  Martin Sebor  <msebor@redhat.com>
6538         PR middle-end/85643
6539         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
6541 2018-05-15  Richard Biener  <rguenther@suse.de>
6543         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
6544         add by_clobber_p one.  Change algorithm to collect all defs
6545         representing uses we need to walk and try reducing them to
6546         a single one before failing.
6547         (dse_dom_walker::dse_optimize_stmt): Adjust.
6549 2018-05-13  Mark Wielaard  <mark@klomp.org>
6551         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
6552         (size_of_loc_descr): Likewise.
6553         (output_loc_operands): Likewise.
6554         (output_loc_operands_raw): Likewise.
6555         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
6556         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
6557         (hash_loc_operands): Likewise.
6558         (compare_loc_operands): Likewise.
6560 2018-05-14  Mark Wielaard  <mark@klomp.org>
6562         * dwarf2out.c (count_index_addrs): New function.
6563         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
6565 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6567         PR tree-optimization/83648
6568         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
6569         return value as malloc candidate.
6571 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6573         PR ipa/85734
6574         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
6575         param as true in call to suggest_attribute.
6577 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
6579         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
6580         -mreadonly-in-sdata.
6582 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6584         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
6585         New pattern.
6586         (aarch64_crypto_aesd_fused): Likewise.
6588 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
6590         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
6591         (movsi_aarch64): Likewise.
6592         (load_pairsi): Likewise.
6593         (load_pairdi): Likewise.
6594         (store_pairsi): Likewise.
6595         (store_pairdi): Likewise.
6596         (load_pairsf): Likewise.
6597         (load_pairdf): Likewise.
6598         (store_pairsf): Likewise.
6599         (store_pairdf): Likewise.
6600         (zero_extend): Likewise.
6601         (trunc): Swap alternatives.
6602         (fcvt_target): Add '?' to prefer w over r.
6604 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
6606         PR target/85756
6607         * config/i386/i386.md: Disallow non-commutative arithmetics in
6608         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
6609         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
6610         in the peephole2 before it.
6612 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
6614         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
6615         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
6616         (ix86_handle_option): Handle -mcldemote.
6617         * config.gcc: New header.
6618         * config/i386/cldemoteintrin.h: New file.
6619         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
6620         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
6621         -mcldemote.
6622         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6623         OPTION_MASK_ISA_CLDEMOTE.
6624         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
6625         (ix86_valid_target_attribute_inner_p): Ditto.
6626         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
6627         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
6628         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
6629         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
6630         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
6631         (cldemote): New.
6632         * config/i386/i386.opt: Add -mcldemote.
6633         * config/i386/x86intrin.h: New header.
6634         * doc/invoke.texi: Add -mcldemote.
6636 2018-05-14  Richard Biener  <rguenther@suse.de>
6638         * doc/match-and-simplify.texi: Adjust :s documentation.
6640 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
6642         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
6643         intended memcpy size.
6644         (REORDER_45): Likewise.
6646 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
6648         * sort.cc: New file.
6649         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
6650         * vec.c (qsort_chk): Use gcc_qsort.
6651         * Makefile.in (OBJS-libcommon): Add sort.o.
6652         (build/sort.o): New target.  Use it...
6653         (BUILD_RTL): ... here, and...
6654         (build/gencfn-macros): ... here, and...
6655         (build/genmatch): ... here.
6657 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6658             Chung-Ju Wu  <jasonwucj@gmail.com>
6660         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
6661         * config/nds32/nds32-graywolf.md: New file.
6662         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
6663         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
6664         pipeline.
6665         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
6666         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
6667         * config/nds32/nds32.md (pipeline_model): Add graywolf.
6668         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
6669         * config/nds32/pipelines.md: Include n15 settings.
6671 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6672             Chung-Ju Wu  <jasonwucj@gmail.com>
6674         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
6675         * config/nds32/nds32-n13.md: New file.
6676         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
6677         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
6678         pipeline.
6679         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
6680         * config/nds32/nds32.md (pipeline_model): Add n13.
6681         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
6682         * config/nds32/pipelines.md: Include n13 settings.
6684 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
6685             Chung-Ju Wu  <jasonwucj@gmail.com>
6687         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
6688         * config/nds32/nds32-n10.md: New file.
6689         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
6690         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
6691         pipeline.
6692         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
6693         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
6694         * config/nds32/nds32.md (pipeline_model): Add n10.
6695         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
6696         * config/nds32/pipelines.md: Include n10 settings.
6698 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
6699             Kito Cheng  <kito.cheng@gmail.com>
6700             Chung-Ju Wu  <jasonwucj@gmail.com>
6702         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
6703         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6704         Add enum values for DSP extension instructions.
6705         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
6706         New constraints.
6707         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
6708         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
6709         New code iterators.
6710         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
6711         * config/nds32/nds32-dspext.md: New file for DSP implementation.
6712         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
6713         * config/nds32/nds32-intrinsic.md: Likewise.
6714         * config/nds32/nds32_intrinsic.h: Likewise.
6715         * config/nds32/nds32-md-auxiliary.c: Likewise.
6716         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
6717         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
6718         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
6719         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
6720         * config/nds32/nds32-protos.h: New declarations for DSP extension.
6721         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
6722         TYPE_DMAC in switch statement.
6723         * config/nds32/nds32.c: New checking and implementation for DSP
6724         extension instructions.
6725         * config/nds32/nds32.h: Likewise.
6726         * config/nds32/nds32.md: Likewise.
6727         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
6728         * config/nds32/predicates.md: Implement new predicates for DSP
6729         extension.
6731 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
6733         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
6734         Reformat alternatives and attributes so it is easier to identify
6735         which constraints/attributes go with which instruction.
6736         (mov<mode>_hardfloat32, FMOVE64): Likewise.
6737         (mov<mode>_softfloat32, FMOVE64): Likewise.
6738         (mov<mode>_hardfloat64, FMOVE64): Likewise.
6739         (mov<mode>_softfloat64, FMOVE64): Likewise.
6741 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6743         * doc/extend.texi (PowerPC Built-in Functions): Rename this
6744         subsection.
6745         (Basic PowerPC Built-in Functions): The new name of the
6746         subsection previously known as "PowerPC Built-in Functions".
6747         (Basic PowerPC Built-in Functions Available on all Configurations):
6748         New subsubsection.
6749         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
6750         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
6751         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
6752         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
6754 2018-05-11  Martin Jambor  <mjambor@suse.cz>
6756         PR ipa/85655
6757         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
6758         single const.
6760 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
6762         PR target/85733
6763         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
6765 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
6767         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
6768         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
6769         (ix86_handle_option): Handle -mwaitpkg.
6770         * config.gcc: New header.
6771         * config/i386/cpuid.h (bit_WAITPKG): New bit.
6772         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
6773         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
6774         function type.
6775         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6776         OPTION_MASK_ISA_WAITPKG.
6777         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
6778         (ix86_option_override_internal): Add PTA_WAITPKG.
6779         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
6780         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
6781         IX86_BUILTIN_TPAUSE.
6782         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
6783         __builtin_ia32_umwait and __builtin_ia32_tpause.
6784         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
6785         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
6786         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
6787         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
6788         UNSPECV_TPAUSE): New.
6789         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
6790         * config/i386/i386.opt: Add -mwaitpkg.
6791         * config/i386/waitpkgintrin.h: New file.
6792         * config/i386/x86intrin.h: New header.
6793         * doc/invoke.texi: Add -mwaitpkg.
6795 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
6797         PR target/85606
6798         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
6799         equivalent.
6800         (cortex-m0): Use armv6s-m isa.
6801         (cortex-m0plus): Likewise.
6802         (cortex-m1): Likewise.
6803         (cortex-m0.small-multiply): Likewise.
6804         (cortex-m0plus.small-multiply): Likewise.
6805         (cortex-m1.small-multiply): Likewise.
6807 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
6808             Jakub Jelinek  <jakub@redhat.com>
6810         PR tree-optimization/85692
6811         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
6812         source permute as well.
6814 2018-05-11  Martin Liska  <mliska@suse.cz>
6816         PR sanitizer/85556
6817         * doc/extend.texi: Document LLVM style format for no_sanitize
6818         attribute.
6820 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6822         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
6823         mode_supports_vsx_dform_quad to mode_supports_dq_form.
6824         (mode_supports_vsx_dform_quad): Likewise.
6825         (mode_supports_vmx_dform): Move these functions to be next to the
6826         other mode_supports functions.
6827         (mode_supports_dq_form): Likewise.
6828         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
6829         mode_supports_dq_form.
6830         (reg_offset_addressing_ok_p): Likewise.
6831         (offsettable_ok_by_alignment): Likewise.
6832         (rs6000_legitimate_offset_address_p): Likewise.
6833         (legitimate_lo_sum_address_p): Likewise.
6834         (rs6000_legitimize_address): Likewise.
6835         (rs6000_legitimize_reload_address): Likewise.
6836         (rs6000_secondary_reload_inner): Likewise.
6837         (rs6000_preferred_reload_class): Likewise.
6838         (rs6000_output_move_128bit): Likewise.
6840 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6842         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
6843         Generate SImode target register for null target.
6844         <case IX86_BUILTIN_XGETBV>: Ditto.
6845         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
6846         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
6848 2018-05-10  Carl Love  <cel@us.ibm.com>
6850         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
6851         dcbtt and dcbtstt if operands[2] is 0.
6853 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6855         PR target/85693
6856         * config/i386/sse.md (usadv64qi): New expander.
6858 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
6860         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
6861         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
6862         -maltivec=be support.
6863         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
6864         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
6865         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
6866         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
6867         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
6868         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
6869         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
6870         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
6871         altivec_vsumsws): Adjust.
6872         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
6873         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
6874         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
6875         support.
6876         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
6877         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
6878         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
6879         (altivec_lve<VI_char>x): Delete expand.
6880         (*altivec_lve<VI_char>x_internal): Rename to...
6881         (altivec_lve<VI_char>x): ... this.
6882         (altivec_lvxl_<mode>): Delete expand.
6883         (*altivec_lvxl_<mode>_internal): Rename to ...
6884         (altivec_lvxl_<mode>): ... this.
6885         (altivec_stvxl_<mode>): Delete expand.
6886         (*altivec_stvxl_<mode>_internal): Rename to ...
6887         (altivec_stvxl_<mode>): ... this.
6888         (altivec_stve<VI_char>x): Delete expand.
6889         (*altivec_stve<VI_char>x_internal): Rename to ...
6890         (altivec_stve<VI_char>x): ... this.
6891         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
6892         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
6893         reduc_plus_scal_<mode>): Adjust.
6894         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
6895         comment.
6896         (rs6000_cpu_cpp_builtins): Adjust.
6897         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
6898         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
6899         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
6900         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
6901         -maltivec=be support.
6902         (rs6000_split_vec_extract_var): Adjust.
6903         (rs6000_split_v4si_init): Adjust.
6904         (swap_selector_for_mode): Delete.
6905         (altivec_expand_lvx_be, altivec_expand_stvx_be,
6906         altivec_expand_stvex_be): Delete.
6907         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
6908         -maltivec=be support.
6909         (rs6000_gimple_fold_builtin): Ditto.
6910         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
6911         Adjust.
6912         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
6913         (TARGET_DIRECT_MOVE_64BIT): Adjust.
6914         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
6915         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
6916         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
6917         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
6918         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
6919         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
6920         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
6921         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
6922         anonymous split): Adjust.
6923         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
6924         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
6926 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
6928         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
6929         when --with-gxx-include-dir is also specified.
6930         * configure: Regenerate.
6932 2018-05-09  Jim Wilson  <jimw@sifive.com>
6934         PR target/84797
6935         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
6936         * config/riscv/t-withmultilib: New.
6937         * config/riscv/withmultilib.h: New.
6938         * doc/install.texi: Document RISC-V --with-multilib-list support.
6940 2018-05-09  Richard Biener  <rguenther@suse.de>
6942         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
6943         vector.
6944         (vect_bb_vectorization_profitable_p): Adjust.  Compute
6945         actual scalar cost using the cost vector and the add_stmt_cost
6946         machinery.
6948 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6950         PR rtl-optimization/85645
6951         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
6952         in the REG_CFA_REGISTER note for LR, don't leave it empty.
6954 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6956         PR rtl-optimization/85645
6957         * shrink-wrap.c (spread_components): Return a boolean saying if
6958         anything was changed.
6959         (try_shrink_wrapping_separate): Iterate spread_components until
6960         nothing changes anymore.
6962 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6964         PR rtl-optimization/85645
6965         * regrename.c (build_def_use): Also kill the chains that include the
6966         destination of a REG_CFA_REGISTER note.
6968 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6970         PR rtl-optimization/85645
6971         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
6972         insn that has a REG_CFA_REGISTER note.
6974 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
6976         * cfgexpand.c (expand_clobber): New function.
6977         (expand_gimple_stmt_1): Use it.
6978         * tree-vect-stmts.c (vect_clobber_variable): New function,
6979         split out from...
6980         (vectorizable_simd_clone_call): ...here.
6981         (vectorizable_store): Emit a clobber either side of an
6982         IFN_STORE_LANES sequence.
6983         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
6985 2018-05-09  Tom de Vries  <tom@codesourcery.com>
6987         PR target/85626
6988         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
6989         (define_insn "trap_if_false"): Add exit after trap.
6991 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
6993         PR rtl-optimization/85638
6994         * bb-reorder.c: Include common/common-target.h.
6995         (create_forwarder_block): New function extracted from...
6996         (fix_up_crossing_landing_pad): ...here.  Rename into...
6997         (dw2_fix_up_crossing_landing_pad): ...this.
6998         (sjlj_fix_up_crossing_landing_pad): New function.
6999         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
7000         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
7001         from both partitions and exit the loop after one iteration.
7003 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7005         Revert:
7006         * doc/extend.texi (PowerPC Built-in Functions): Rename this
7007         subsection.
7008         (Basic PowerPC Built-in Functions): The new name of the
7009         subsection previously known as "PowerPC Built-in Functions".
7010         (Basic PowerPC Built-in Functions Available on all Configurations):
7011         New subsubsection.
7012         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
7013         subsubsection.
7014         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
7015         subsubsection.
7016         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
7017         subsubsection.
7018         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
7019         subsubsection.
7021 2018-05-08  Jim Wilson  <jimw@sifive.com>
7023         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
7024         (LD_EMUL_SUFFIX): New.
7025         (LINK_SPEC): Use it.
7027 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7029         * doc/extend.texi (PowerPC Built-in Functions): Rename this
7030         subsection.
7031         (Basic PowerPC Built-in Functions): The new name of the
7032         subsection previously known as "PowerPC Built-in Functions".
7033         (Basic PowerPC Built-in Functions Available on all Configurations):
7034         New subsubsection.
7035         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
7036         subsubsection.
7037         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
7038         subsubsection.
7039         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
7040         subsubsection.
7041         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
7042         subsubsection.
7044 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
7046         PR target/85683
7047         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
7048         after cmpelim optimization.
7050 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
7052         * config.gcc: Support "goldmont".
7053         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
7054         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
7055         PROCESSOR_GOLDMONT.
7056         * config/i386/i386.c (m_GOLDMONT): Define.
7057         (processor_target_table): Add "goldmont".
7058         (PTA_GOLDMONT): Define.
7059         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
7060         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
7061         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
7062         (fold_builtin_cpu): Add "goldmont".
7063         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
7064         (ix86_option_override_internal): Add "goldmont".
7065         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
7066         (processor_type): Add PROCESSOR_GOLDMONT.
7067         * config/i386/i386.md: Add CPU "glm".
7068         * config/i386/glm.md: New file.
7069         * config/i386/x86-tune.def: Add m_GOLDMONT.
7070         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
7072 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
7074         PR target/85572
7075         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
7076         E_V4DImode.
7077         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
7078         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
7079         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
7081         PR target/85317
7082         * config/i386/i386.c (ix86_fold_builtin): Handle
7083         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
7085         PR target/85480
7086         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
7087         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
7089 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
7091         PR target/85658
7092         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
7093         (check_arch): Likewise.
7094         (check_fpu): Return the result rather than printing it.
7095         (end arch): Fix operator precedence.
7096         (end cpu): Likewise.
7097         (END): Print the result from check_fpu.
7099 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
7100             Alan Hayward  <alan.hayward@arm.com>
7101             David Sherwood  <david.sherwood@arm.com>
7103         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
7104         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
7105         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
7106         (*fcmuo<mode>_and): New patterns.
7108 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
7110         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
7111         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
7112         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
7113         (cmp_op, sve_imm_con): New code attributes.
7114         (SVE_COND_INT_CMP, imm_con): Delete.
7115         (cmp_op): Remove above unspecs from int attribute.
7116         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
7117         to...
7118         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
7119         comparison-specific unspecs.
7120         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
7121         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
7122         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
7123         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
7124         (*vec_fcm<cmp_op><mode>): Rename to...
7125         (*fcm<cmp_op><mode>): ...this and adjust likewise.
7126         (*vec_fcmuo<mode>): Rename to...
7127         (*fcmuo<mode>): ...this and adjust likewise.
7128         (*pred_fcm<cmp_op><mode>): New pattern.
7129         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
7130         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
7131         functions.
7132         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
7133         and UNORDERED.
7134         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
7135         (aarch64_emit_sve_predicated_cond): New function.
7136         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
7137         (aarch64_emit_unspec_cond_or): Replace with...
7138         (aarch64_emit_sve_or_conds): ...this new function.  Use
7139         aarch64_emit_sve_ptrue_op for the individual comparisons and
7140         aarch64_emit_binop to OR them together.
7141         (aarch64_emit_inverted_unspec_cond): Replace with...
7142         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
7143         aarch64_emit_sve_ptrue_op for the comparison and
7144         aarch64_emit_unop to invert the result.
7145         (aarch64_expand_sve_vec_cmp_float): Update after the above
7146         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
7148 2018-05-07  Nathan Sidwell  <nathan@acm.org>
7150         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
7151         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
7152         (Backwards Compatibility): Likewise.
7154 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7156         PR bootstrap/85681
7157         Revert:
7158         2018-05-07  Luis Machado  <luis.machado@linaro.org>
7160         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7161         <prefetch_dynamic_strides>: New const bool field.
7162         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7163         prefetch_dynamic_strides.
7164         (exynosm1_prefetch_tune): Likewise.
7165         (thunderxt88_prefetch_tune): Likewise.
7166         (thunderx_prefetch_tune): Likewise.
7167         (thunderx2t99_prefetch_tune): Likewise.
7168         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
7169         to false.
7170         (aarch64_override_options_internal): Update to set
7171         PARAM_PREFETCH_DYNAMIC_STRIDES.
7172         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
7173         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
7174         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
7175         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
7176         prefetch-dynamic-strides setting.
7178         2018-05-07  Luis Machado  <luis.machado@linaro.org>
7180         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7181         <minimum_stride>: New const int field.
7182         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7183         minimum_stride field.
7184         (exynosm1_prefetch_tune): Likewise.
7185         (thunderxt88_prefetch_tune): Likewise.
7186         (thunderx_prefetch_tune): Likewise.
7187         (thunderx2t99_prefetch_tune): Likewise.
7188         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
7189         (aarch64_override_options_internal): Update to set
7190         PARAM_PREFETCH_MINIMUM_STRIDE.
7191         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
7192         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
7193         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
7194         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
7195         stride is constant and is below the minimum stride threshold.
7197 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7199         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
7200         to 512.
7202 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7204         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7205         <prefetch_dynamic_strides>: New const bool field.
7206         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7207         prefetch_dynamic_strides.
7208         (exynosm1_prefetch_tune): Likewise.
7209         (thunderxt88_prefetch_tune): Likewise.
7210         (thunderx_prefetch_tune): Likewise.
7211         (thunderx2t99_prefetch_tune): Likewise.
7212         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
7213         to false.
7214         (aarch64_override_options_internal): Update to set
7215         PARAM_PREFETCH_DYNAMIC_STRIDES.
7216         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
7217         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
7218         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
7219         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
7220         prefetch-dynamic-strides setting.
7222 2018-05-07  Luis Machado  <luis.machado@linaro.org>
7224         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
7225         <minimum_stride>: New const int field.
7226         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
7227         minimum_stride field.
7228         (exynosm1_prefetch_tune): Likewise.
7229         (thunderxt88_prefetch_tune): Likewise.
7230         (thunderx_prefetch_tune): Likewise.
7231         (thunderx2t99_prefetch_tune): Likewise.
7232         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
7233         (aarch64_override_options_internal): Update to set
7234         PARAM_PREFETCH_MINIMUM_STRIDE.
7235         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
7236         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
7237         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
7238         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
7239         stride is constant and is below the minimum stride threshold.
7241 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
7243         PR c++/85659
7244         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
7245         the type is addressable.  Don't force op into register if it has
7246         BLKmode.
7248 2018-05-05  Roland McGrath  <mcgrathr@google.com>
7250         PR other/77609
7251         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
7252         any section for which we don't know a specific type it should have,
7253         regardless of name.  Previously this was done only for the exact
7254         names ".init_array", ".fini_array", and ".preinit_array".
7255         (default_elf_asm_named_section): Add comment about
7256         relationship with default_section_type_flags and SECTION_NOTYPE.
7257         (get_section): Don't consider it a type conflict if one side has
7258         SECTION_NOTYPE and the other doesn't, as long as neither has the
7259         SECTION_BSS et al used in the default_section_type_flags logic.
7261 2018-05-05  Tom de Vries  <tom@codesourcery.com>
7263         PR target/85653
7264         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
7265         (workaround_barsyncs): New function.
7266         (nvptx_reorg): Use workaround_barsyncs.
7267         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
7268         (define_expand "nvptx_membar_cta"): New define_expand.
7269         (define_insn "*nvptx_membar_cta"): New insn.
7271 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
7273         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
7274         To improve optimization opportunities.
7275         * builtin-types.def: The new needed builtin types for the above.
7277 2018-05-04  Richard Biener  <rguenther@suse.de>
7279         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
7280         * gimple-ssa-store-merging.c
7281         (imm_store_chain_info::output_merged_store): Remove redundant create,
7282         release split_store vector contents on failure.
7283         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
7284         scalar stmt vector on cache hit.
7286 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
7288         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
7289         Xilinx FP support.
7290         * config.gcc (powerpc-xilinx-eabi*): Remove.
7291         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
7292         support.
7293         (fusion_addis_mem_combo_load): Ditto.
7294         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
7295         FP support.
7296         (rs6000_cpu_cpp_builtins): Ditto.
7297         * config/rs6000/rs6000-linux.c
7298         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
7299         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
7300         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
7301         support.
7302         (rs6000_setup_reg_addr_masks): Ditto.
7303         (rs6000_init_hard_regno_mode_ok): Ditto.
7304         (rs6000_option_override_internal): Ditto.
7305         (legitimate_lo_sum_address_p): Ditto.
7306         (rs6000_legitimize_address): Ditto.
7307         (rs6000_legitimize_reload_address): Ditto.
7308         (rs6000_legitimate_address_p): Ditto.
7309         (abi_v4_pass_in_fpr): Ditto.
7310         (setup_incoming_varargs): Ditto.
7311         (rs6000_gimplify_va_arg): Ditto.
7312         (rs6000_split_multireg_move): Ditto.
7313         (rs6000_savres_strategy): Ditto.
7314         (rs6000_emit_prologue_components): Ditto.
7315         (rs6000_emit_epilogue_components): Ditto.
7316         (rs6000_emit_prologue): Ditto.
7317         (rs6000_emit_epilogue): Ditto.
7318         (rs6000_elf_file_end): Ditto.
7319         (rs6000_function_value): Ditto.
7320         (rs6000_libcall_value): Ditto.
7321         * config/rs6000/rs6000.h: Ditto.
7322         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
7323         (TARGET_MINMAX): ... this.  New.
7324         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
7325         * config/rs6000/rs6000.md: Remove Xilinx FP support.
7326         (*movsi_internal1_single): Delete.
7327         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
7328         mfpu=, mxilinx-fpu): Delete.
7329         * config/rs6000/singlefp.h: Delete.
7330         * config/rs6000/sysv4.h: Remove Xilinx FP support.
7331         * config/rs6000/t-rs6000: Ditto.
7332         * config/rs6000/t-xilinx: Delete.
7333         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
7334         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
7335         (VStype_simple): Delete.
7336         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
7337         * config/rs6000/xfpu.h: Delete.
7338         * config/rs6000/xfpu.md: Delete.
7339         * config/rs6000/xilinx.h: Delete.
7340         * config/rs6000/xilinx.opt: Delete.
7341         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
7342         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
7344 2018-05-04  Tom de Vries  <tom@codesourcery.com>
7346         PR libgomp/85639
7347         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
7348         if ignore == 0.
7350 2018-05-04  Richard Biener  <rguenther@suse.de>
7352         PR middle-end/85627
7353         * tree-complex.c (update_complex_assignment): We are always in SSA form.
7354         (expand_complex_div_wide): Likewise.
7355         (expand_complex_operations_1): Likewise.
7356         (expand_complex_libcall): Preserve EH info of the original stmt.
7357         (tree_lower_complex): Handle removed blocks.
7358         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
7359         on complex multiplication and division libcall builtins.
7361 2018-05-04  Richard Biener  <rguenther@suse.de>
7363         PR middle-end/85574
7364         * fold-const.c (negate_expr_p): Restrict negation of operand
7365         zero of a division to when we know that can happen without
7366         overflow.
7367         (fold_negate_expr_1): Likewise.
7369 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
7371         PR libstdc++/85466
7372         * real.h (real_nextafter): Declare.
7373         * real.c (real_nextafter): New function.
7374         * fold-const-call.c (fold_const_nextafter): New function.
7375         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
7376         CASE_CFN_NEXTTOWARD.
7377         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
7378         even when arg1_mode is different from arg0_mode.
7380 2018-05-03  Nathan Sidwell  <nathan@acm.org>
7382         * doc/extend.texi (Deprecated Features): Remove
7383         -ffriend-injection.
7384         (Backwards Compatibility): Likewise.
7385         * doc/invoke.texi (C++ Language Options): Likewise.
7386         (C++ Dialect Options): Likewise.
7388 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
7390         PR target/85530
7391         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
7392         _mm512_mask_mullox_epi64): New intrinsics.
7394 2018-05-03  Tom de Vries  <tom@codesourcery.com>
7396         PR testsuite/85106
7397         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7398         dump files): Add offload-tree.
7400 2018-05-03  Richard Biener  <rguenther@suse.de>
7402         PR tree-optimization/85615
7403         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
7404         to loops not nested in BBs loop father to avoid creating multi-entry
7405         loops.
7407 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7409         PR tree-optimization/70291
7410         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
7411         arguments.  Change return type to tree.  Emit libcall as a new
7412         statement rather than replacing existing one when inplace_p is true.
7413         (expand_complex_multiplication_components): New function.
7414         (expand_complex_multiplication): Expand floating-point complex
7415         multiplication using the above.
7416         (expand_complex_division): Rename inner_type parameter to type.
7417         Update expand_complex_libcall call-site.
7418         (expand_complex_operations_1): Update expand_complex_multiplication
7419         and expand_complex_division call-sites.
7421 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
7423         PR target/85582
7424         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
7425         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
7426         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
7427         the highest significant bit of the shift count mask is clear.  In
7428         check whether and[sq]i3 is needed verify that all significant bits
7429         of the shift count other than the highest are set.
7431 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7433         PR libgomp/82428
7434         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
7435         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
7436         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
7437         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
7438         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
7439         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
7440         __builtin_goacc_parlevel_size.
7442 2018-05-02  Richard Biener  <rguenther@suse.de>
7444         PR tree-optimization/85597
7445         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
7446         do not use split vect_get_vec_defs call but call vect_get_slp_defs
7447         directly.
7449 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7451         PR testsuite/85106
7452         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7453         dump files): Add ltrans-tree.
7455 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7457         PR testsuite/85106
7458         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
7459         dump files): Add wpa-ipa.
7461 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
7463         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
7464         powerpc*-*-linux*paired* target.
7465         * config/rs6000/750cl.h: Delete.
7466         * config/rs6000/paired.h: Delete.
7467         * config/rs6000/paired.md: Delete.
7468         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
7469         float support.
7470         * config/rs6000/rs6000-builtin.def: Remove paired float support.
7471         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
7472         comment.  Remove paired float support.
7473         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
7474         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
7475         VECTOR_PAIRED.
7476         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
7477         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
7478         declarations.
7479         * config/rs6000/rs6000.c: Remove paired float support.
7480         (paired_expand_vector_init, paired_expand_vector_move,
7481         paired_emit_vector_compare, paired_emit_vector_cond_expr,
7482         (paired_expand_lv_builtin, paired_expand_stv_builtin,
7483         paired_expand_builtin, paired_expand_predicate_builtin,
7484         paired_init_builtins): Delete.
7485         * config/rs6000/rs6000.h: Remove paired float support.
7486         * config/rs6000/rs6000.md: Remove paired float support.
7487         (move_from_CR_ov_bit): Delete.
7488         * config/rs6000/rs6000.opt (mpaired): Delete.
7489         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
7490         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
7492 2018-05-02  Richard Biener  <rguenther@suse.de>
7494         PR middle-end/85567
7495         * gimplify.c (gimplify_save_expr): When in SSA form allow
7496         SAVE_EXPRs to compute to SSA vars.
7498 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
7500         PR target/85582
7501         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
7502         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
7503         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
7504         clobber operands[2], instead use a new pseudo.  Formatting fixes.
7506 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
7508         PR tree-optimization/85586
7509         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
7510         exit early for statements in the same group if the accesses are
7511         not strided.
7513 2018-05-02  Tom de Vries  <tom@codesourcery.com>
7515         PR lto/85451
7516         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
7517         error message.
7519 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
7521         PR tree-optimization/85143
7522         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
7524 2018-05-01  Tom de Vries  <tom@codesourcery.com>
7526         PR lto/85451
7527         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
7528         not found" error message.
7530 2018-05-01  Tom de Vries  <tom@codesourcery.com>
7532         PR other/83786
7533         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
7534         * vec.c (test_ordered_remove_if): New function.
7535         (vec_c_tests): Call test_ordered_remove_if.
7536         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
7537         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
7538         * tree-vect-patterns.c (vect_pattern_recog_1): Use
7539         VEC_ORDERED_REMOVE_IF.
7541 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
7543         PR tree-optimization/82665
7544         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
7545         pointer subtraction where arguments come from a memchr call.
7547 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
7549         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
7550         --push-state --as-needed and --pop-state instead of --as-needed and
7551         --no-as-needed if ld supports it.
7552         * configure: Regenerated.
7554         PR web/85578
7555         * doc/install.texi2html: Replace _002d with - and _002a with * in
7556         generated html files using sed.
7558 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7560         PR c++/85523
7561         * gcc-rich-location.c (blank_line_before_p): New function.
7562         (use_new_line): New function.
7563         (gcc_rich_location::add_fixit_insert_formatted): New function.
7564         * gcc-rich-location.h
7565         (gcc_rich_location::add_fixit_insert_formatted): New function.
7567 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7569         * selftest.c (assert_streq): Rename "expected" and "actual" to
7570         "val1" and "val2".  Extend NULL-handling to cover both inputs
7571         symmetrically, while still requiring both to be non-NULL for a pass.
7572         * selftest.h (assert_streq): Rename "expected" and "actual" to
7573         "val1" and "val2".
7574         (ASSERT_EQ): Likewise.
7575         (ASSERT_EQ_AT): Likewise.
7576         (ASSERT_KNOWN_EQ): Likewise.
7577         (ASSERT_KNOWN_EQ_AT): Likewise.
7578         (ASSERT_NE): Likewise.
7579         (ASSERT_MAYBE_NE): Likewise.
7580         (ASSERT_MAYBE_NE_AT): Likewise.
7581         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
7582         the assertion to pass.
7583         (ASSERT_STREQ_AT): Likewise.
7585 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
7587         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
7588         interaction with -pie.
7590 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7592         * selftest.h: Fix alphabetization of per-source-file selftest
7593         declarations.
7595 2018-04-30  Jason Merrill  <jason@redhat.com>
7597         PR c++/61982 - dead stores to destroyed objects.
7598         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
7599         of clobber.
7601 2018-04-30  Jason Merrill  <jason@redhat.com>
7603         * tree.c (build_clobber): New.
7604         * tree.h: Declare it.
7605         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
7607 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7609         * diagnostic-show-locus.c (layout::layout): Update for
7610         location_get_source_line returning a char_span.
7611         (struct char_span): Move to input.h.
7612         (struct correction): Update for fields in char_span becoming
7613         private.
7614         (struct source_line): Update for location_get_source_line
7615         returning a char_span.
7616         (layout::print_line): Likewise.
7617         * edit-context.c (edited_file::print_content): Likewise.
7618         (edited_file::print_diff_hunk): Likewise.
7619         (edited_file::print_run_of_changed_lines): Likewise.
7620         (edited_file::get_num_lines): Likewise.
7621         (edited_line::edited_line): Likewise.
7622         * final.c (asm_show_source): Likewise.
7623         * input.c (location_get_source_line): Convert return type
7624         from const char * to char_span, losing the final "line_len"
7625         param.
7626         (dump_location_info): Update for the above.
7627         (get_substring_ranges_for_loc): Likewise.  Use a char_span
7628         when handling the literal within the line.
7629         (test_reading_source_line): Update for location_get_source_line
7630         returning a char_span.
7631         * input.h (class char_span): Move here from
7632         diagnostic-show-locus.c, converting from a struct to a class.
7633         Make data members private.
7634         (char_span::operator bool): New.
7635         (char_span::length): New.
7636         (char_span::get_buffer): New.
7637         (char_span::operator[]): New.
7638         (char_span::subspan): Make const.
7639         (char_span::xstrdup): New.
7640         (location_get_source_line): Convert return type from const char *
7641         to char_span, losing the final "line_size" param.
7643 2018-04-30  Jan Hubicka  <jh@suse.cz>
7645         * lto-wrapper.c (ltrans_priorities): New static var.
7646         (cmp_priority): New.
7647         (run_gcc): Read priorities and if doing parallel build order
7648         the Makefile by them.
7650 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
7652         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
7654 2018-04-30  Richard Biener  <rguenther@suse.de>
7656         * tree-cfg.c (verify_address): Remove base argument, add
7657         flag whether to check TREE_ADDRESSABLE and do that.
7658         (verify_expr): Remove.
7659         (verify_types_in_gimple_reference): Add pieces from verify_expr.
7660         (verify_gimple_assign_single): Likewise.
7661         (verify_gimple_switch): Likewise.
7662         (verify_expr_location_1): Dereference tp once.  Add (disabled)
7663         piece from verify_expr.
7664         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
7666 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7668         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
7670 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7672         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
7673         (small_data_pattern): Likewise.
7674         (arc_rewrite_small_data): Likewise.
7675         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
7676         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
7677         (get_symbol_alignment): New function.
7678         (legitimate_small_data_address_p): Likewise.
7679         (legitimate_scaled_address): Update, call
7680         legitimate_small_data_address_p.
7681         (output_sdata): New static variable.
7682         (arc_print_operand): Update how we handle small data operands.
7683         (arc_print_operand_address): Likewise.
7684         (arc_legitimate_address_p): Update, use
7685         legitimate_small_data_address_p.
7686         (arc_rewrite_small_data_p): Remove.
7687         (arc_rewrite_small_data_1): Likewise.
7688         (arc_rewrite_small_data): Likewise.
7689         (small_data_pattern): Likewise.
7690         (compact_sda_memory_operand): Update to use
7691         legitimate_small_data_address_p and get_symbol_alignment.
7692         (prepare_move_operands): Don't rewite sdata pattern.
7693         (prepare_extend_operands): Remove.
7694         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
7695         pattern.
7696         (zero_extendqisi2): Likewise.
7697         (zero_extendhisi2): Likewise.
7698         (extendqihi2): Likewise.
7699         (extendqisi2): Likewise.
7700         (extendhisi2): Likewise.
7701         (addsi3): Likewise.
7702         (subsi3): Likewise.
7703         (andsi3): Likewise.
7704         * config/arc/constraints.md (Usd): Change it to memory constraint.
7706 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
7708         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
7709         as source of std instructions.
7710         * config/arc/arc.md (movsi_insn): Update pattern predicate to
7711         allow 6-bit constants as source for store instructions.
7712         (movdi_insn): Update instruction pattern to allow 6-bit constants
7713         as source for store instructions.
7715 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
7717         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
7719 2018-04-30  Nathan Sidwell  <nathan@acm.org>
7720             Sandra Loosemore <sandra@codesourcery.com>
7722         * dumpfile.c (dump_open): Allow '-' for stdout.
7723         * doc/invoke.texi (Developer Options): Document dump filename
7724         determination early.  Document stdin/stdout selection.
7726 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
7728         Microblaze Target: PIC data text relative
7730         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
7731         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
7732         Add declaration.
7733         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
7734         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
7735         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
7736         New addressing mode for data-text relative position indepenedent code.
7737         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
7738         'ADDRESS_SYMBOLIC_TXT_REL'.
7739         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
7740         (microblaze_legitimate_pic_operand): Exclude function calls from
7741         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
7742         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
7743         addresses cases.
7744         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
7745         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
7746         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
7747         for 'address + offset'.
7748         (microblaze_expand_prologue): Add new function prologue call for
7749         'r20' assignation.
7750         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
7751         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
7752         table in case of TARGET_PIC_DATA_TEXT_REL.
7753         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
7754         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
7755         Add new macros 'UNSPEC_TEXT',
7756         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
7757         + exclude function calls from 'UNSPEC_PLT' in case of data text
7758         relative mode.
7759         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
7760         new target hook for generating address diff vector tables in case of
7761         flag_pic.
7762         * doc/tm.texi : Regenerate.
7763         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
7764         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
7765         of addr diff vector generation.
7766         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
7767         target hook definition.
7768         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
7769         Add default function for generate_pic_addr_diff_vec -> flag_pic.
7770         * doc/invoke.texi (Add new pic option): Add new microblaze pic
7771         option for data text relative.
7773 2018-04-30  Richard Biener  <rguenther@suse.de>
7775         * tree-chrec.h (evolution_function_is_constant_p): Remove
7776         redundant check.
7777         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
7779 2018-04-30  Richard Biener  <rguenther@suse.de>
7781         PR bootstrap/85571
7782         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
7784 2018-04-30  Richard Biener  <rguenther@suse.de>
7786         PR tree-optimization/28364
7787         PR tree-optimization/85275
7788         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
7789         copying first exit test.
7791 2018-04-28  Mark Wielaard  <mark@klomp.org>
7793         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
7794         dwarf_version >= 5.
7795         (dwarf_AT): Handle DW_AT_addr_base.
7796         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
7798 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
7800         PR target/84431
7801         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
7802         (*ashl<dwi>3_doubleword_mask_1): Ditto.
7803         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
7804         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
7806 2018-04-28  Richard Biener  <rguenther@suse.de>
7808         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
7809         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
7810         to reflect use.  Only add interesting stmts.
7812 2018-04-27  Martin Jambor  <mjambor@suse.cz>
7814         PR ipa/85549
7815         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
7816         the jump function allows for passing through aggregate values.
7818 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
7820         * input.h (in_system_header_at): Convert from macro to inline
7821         function.
7822         (from_macro_expansion_at): Likewise.
7823         (from_macro_definition_at): Likewise.
7825 2018-04-27  Jeff Law  <law@redhat.com>
7827         * config.gcc: Mark tile* targets as deprecated/obsolete.
7829 2018-04-27  Richard Biener  <rguenther@suse.de>
7831         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
7832         fix for ILP32.
7834 2018-04-27  Richard Biener  <rguenther@suse.de>
7836         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
7838 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
7840         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
7841         with Yd constraint. Set "preferred_for_speed" attribute from
7842         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
7843         with Yd constraint.
7844         (*movdi_internal): Ditto.
7845         (movti_interunit splitters): Remove
7846         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
7847         (movdi_interunit splitters): Ditto.
7848         * config/i386/constraints.md (Ye): Remove.
7849         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
7851 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7853         PR target/85512
7854         * config/aarch64/constraints.md (Usg): Limit to 31.
7855         (Usj): Limit to 63.
7857 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
7859         PR tree-optimization/85529
7860         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
7861         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
7862         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
7863         zero extension or masking of the MSB bit.
7864         (optimize_range_tests): Add FIRST_BB argument, pass it through
7865         to optimize_range_tests_var_bound.
7866         (maybe_optimize_range_tests, reassociate_bb): Adjust
7867         optimize_range_tests callers.
7869 2018-04-26  Richard Biener  <rguenther@suse.de>
7870             Jakub Jelinek  <jakub@redhat.com>
7872         * cgraph.h (symbol_table): Just declare debug method here.
7873         * symtab.c (symbol_table::debug): Define.
7875 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
7877         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
7879 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
7881         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
7882         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
7883         (*movdi_internal): Substitute Yi and Yj constraint with x
7884         and Ym and Yn constraint with y constraint.  Update "isa"
7885         attribute and set "preferred_for_speed" attribute from
7886         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
7887         (*movsi_internal): Ditto.
7888         (*movdf_internal): Ditto.
7889         (*movsf_internal): Ditto.
7890         (*zero_extendsidi2): Ditto.
7891         * config/i386/sse.md (vec_set<mode>_0): Ditto.
7892         (sse2_loadld): Ditto.
7893         (*vec_extract<ssevecmodelower>_0): Ditto.
7894         (*vec_extractv4si_0_zext_sse4): Ditto.
7895         (vec_concatv2di): Ditto.
7896         (*vec_dup<mode>): Ditto.
7897         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
7898         * config/i386/constraints.md (Yi): Remove.
7899         (Yj): Remove.
7900         (Ym): Remove.
7901         (Yn): Remove.
7903 2018-04-26  Nathan Sidwell  <nathan@acm.org>
7905         * dumpfile.c (dump_open): New.
7906         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
7907         (dump_finish): Detect stdio/stderr by value not name.
7909 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
7911         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
7913 2018-04-26  Tom de Vries  <tom@codesourcery.com>
7915         PR target/84952
7916         * config/nvptx/nvptx.c (verify_neutering_jumps)
7917         (verify_neutering_labels): New function
7918         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
7920 2018-04-26  Tom de Vries  <tom@codesourcery.com>
7922         PR target/84025
7923         * config/nvptx/nvptx.c (needs_neutering_p): New function.
7924         (nvptx_single): Use needs_neutering_p to skip over insns that do not
7925         need neutering.
7927 2018-04-26  Richard Biener <rguenther@suse.de>
7928             Tom de Vries  <tom@codesourcery.com>
7930         PR lto/85422
7931         * lto-streamer-out.c (output_function): Fixup loops if required to match
7932         discovery done in the reader.
7934 2018-04-26  Richard Biener  <rguenther@suse.de>
7936         PR tree-optimization/85116
7937         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
7938         have a loop exit from the single latch predecessor.  Remove
7939         case of header with just condition.
7940         (ch_base::copy_headers): Exclude infinite loops from any
7941         processing.
7942         (pass_ch::execute): Record exits.
7944 2018-04-26  Richard Biener  <rguenther@suse.de>
7946         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
7947         prologue cost vector and pass it to vect_get_load_cost.
7948         (vect_get_peeling_costs_all_drs): Likewise.
7949         (vect_peeling_hash_get_lowest_cost): Likewise.
7950         (vect_enhance_data_refs_alignment): Likewise.
7952 2018-04-26  Richard Biener  <rguenther@suse.de>
7954         PR middle-end/85450
7955         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
7956         checking of integer<->pointer conversions.
7957         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
7958         sign-/zero-extending pointer types.
7959         (expand_omp_for_static_chunk): Likewise.
7961 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
7962             Jean Lee  <xiaoyur347@gmail.com>
7964         * config/mips/mips.c (mips_asan_shadow_offset): New function.
7965         (TARGET_ASAN_SHADOW_OFFSET): Define.
7966         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
7967         true for -fsanitize=address.
7969 2018-04-25  Mark Wielaard  <mark@klomp.org>
7971         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
7972         shorter ones.
7974 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
7976         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
7977         than "alu", remove explicit "memory" and "imm_disp" attributes.
7978         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
7980         PR middle-end/85414
7981         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
7982         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
7983         gen_lowpart_no_emit.
7985 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
7987         PR target/85473
7988         * config/i386/i386.c (ix86_expand_builtin): Change memory
7989         operand to XI, extend p0 to Pmode.
7990         * config/i386/i386.md: Change unspec volatile and operand
7991         1 mode to XI, change operand 0 mode to P.
7993 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
7995         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
7996         GET_MODE_MASK before any checking.
7997         (nds32_can_use_bset_p): Likewise.
7998         (nds32_can_use_btgl_p): Likewise.
8000 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8002         * config/nds32/nds32-doubleword.md: New define_split pattern for
8003         illegal register number.
8005 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8007         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
8009 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
8011         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
8013 2018-04-25  Richard Biener  <rguenther@suse.de>
8015         * lto-streamer.h (LTO_major_version): Bump to 8.
8017 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
8019         * BASE-VER: Set to 9.0.0.
8021 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
8023         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
8024         in __abskf2 and __powikf2.
8026 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8028         PR target/85512
8029         * config/aarch64/constraints.md (Usg, Usj): New constraints.
8030         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
8031         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
8032         Use the above on operand 2.  Reindent.
8033         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
8035 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
8037         PR target/85485
8038         * common/config/i386/i386-common.c (ix86_handle_option): Don't
8039         handle OPT_mcet.
8040         * config/i386/i386.opt (mcet): Removed.
8041         * doc/install.texi: Remove -mcet documentation.
8042         * doc/invoke.texi: Likewise.
8044 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
8046         PR target/85485
8047         * doc/install.texi: Remove -mcet from bootstrap-cet.
8049 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8051         PR target/85511
8052         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
8053         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
8054         if TARGET_64BIT.
8056         PR target/85503
8057         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
8058         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
8059         containing a CONST_VECTOR.
8061 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
8063         * doc/install.texi: Update newlib dependency for nvptx.
8065 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8067         PR target/85508
8068         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
8069         instead of INTVAL when shifting x left.
8071 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
8073         PR tree-optimization/85478
8074         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
8075         vect_grouped_store_supported for single element vectors.
8077 2018-04-24  Richard Biener  <rguenther@suse.de>
8079         PR target/85491
8080         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
8081         load cost increase to the case of non-constant step.
8083 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
8085         PR target/84828
8086         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
8087         destination if any_malformed_asm.
8089 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
8091         PR middle-end/85496
8092         * expr.c (store_field): In the bitfield case, if the value comes from
8093         a function call and is returned in registers by means of a PARALLEL,
8094         do not change the mode of the temporary unless BLKmode and VOIDmode.
8096 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
8098         PR rtl-optimization/85423
8099         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
8100         dependencies to debug insns when the previous insn is non-debug.
8102 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
8104         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
8105         enums into a single definition.
8106         (fls): Fix predicates and printing.
8107         (seti): Likewise.
8109 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
8111         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
8112         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
8113         and short u6 immediate.
8114         (check_if_valid_sleep_operand): Remove.
8115         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
8117 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8119         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
8120         flag_always_save_lp condition.
8121         * config/nds32/nds32.opt (malways-save-lp): New option.
8123 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8125         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
8126         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
8127         * config/nds32/nds32.h
8128         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
8129         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
8131 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8133         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
8134         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
8136 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
8137             Chung-Ju Wu  <jasonwucj@gmail.com>
8139         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
8140         Declare.
8141         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
8142         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
8144 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8146         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
8148 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8150         * config/nds32/nds32-protos.h (nds32_data_alignment,
8151         nds32_local_alignment): Declare.
8152         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
8153         nds32_local_alignment): New functions.
8154         (TARGET_CONSTANT_ALIGNMENT): Define.
8155         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
8157 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8159         * config/nds32/nds32.c
8160         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
8161         (TARGET_MODES_TIEABLE_P): Likewise.
8163 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
8165         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
8166         level Ofast and Og.
8168 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
8169             Chung-Ju Wu  <jasonwucj@gmail.com>
8171         * config/nds32/constants.md (unspec_volatile_element): Add enum values
8172         for unaligned access.
8173         * config/nds32/nds32-intrinsic.c: Implementation of expanding
8174         unaligned access.
8175         * config/nds32/nds32-intrinsic.md: Likewise.
8176         * config/nds32/nds32_intrinsic.h: Likewise.
8177         * config/nds32/nds32.h (nds32_builtins): Likewise.
8178         * config/nds32/nds32.opt (munaligned-access): New option.
8179         * config/nds32/nds32.c (nds32_asm_file_start): Display
8180         flag_unaligned_access status.
8182 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
8184         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
8185         -mno-relax is present.
8186         * config/riscv/linux.h (LINK_SPEC): Ditto.
8188 2018-04-20  Martin Sebor  <msebor@redhat.com>
8190         PR c/85365
8191         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
8192         for null pointers.
8193         (gimple_fold_builtin_stxcpy_chk): Same.
8194         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
8196 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
8198         PR target/85456
8199         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
8200         __powikf2 when long double is IEEE 128-bit.
8202 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
8204         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
8205         step to make sure stack always aligned.
8207 2018-04-20  Carl Love  <cel@us.ibm.com>
8209         PR target/83402
8210         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
8211         size check for arg0.
8213 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
8214             Tom de Vries  <tom@codesourcery.com>
8216         PR target/85445
8217         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
8218         Emit insns for calls too.
8219         (nvptx_find_par): Always look for worker-level predecessor insn.
8220         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
8221         calls.
8222         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
8223         (nvptx_process_pars): Propagate frames for calls.
8225 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
8227         PR target/85469
8228         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
8229         Removed.
8230         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
8231         (ix86_handle_option): Don't handle OPT_mibt.
8232         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
8233         __SHSTK__.
8234         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
8235         has_ibt and ibt.
8236         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
8237         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
8238         (ix86_target_macros): Define __CET__ with flag_cf_protection
8239         for -fcf-protection.
8240         * config/i386/i386.c (isa2_opts): Remove -mibt.
8241         * config/i386/i386.h (TARGET_IBT): Removed.
8242         (TARGET_IBT_P): Likewise.
8243         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
8244         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
8245         * config/i386/i386.opt (mcet): Update help message.
8246         (mshstk): Likewise.
8247         (mibt): Removed.
8248         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
8249         -mcet as an alias for -mshstk.
8251 2018-04-20  Richard Biener <rguenther@suse.de>
8253         PR middle-end/85475
8254         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
8255         complexity by forcing a single use of the multiply operand.
8257 2018-04-20  Martin Jambor  <mjambor@suse.cz>
8259         ipa/85449
8260         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
8261         recursion dependency to only apply to non-clones.
8263 2018-04-20  Martin Jambor  <mjambor@suse.cz>
8265         ipa/85447
8266         * ipa-cp.c (create_specialized_node): Check that clones of
8267         self-recursive edges exist during IPA-CP.
8269 2018-04-19  Toon Moene  <toon@moene.org>
8271         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
8272         by -O3.
8274 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
8276         PR tree-optimization/85467
8277         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
8278         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
8279         VECTOR_CST element to type.
8281 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8283         PR target/85397
8284         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
8285         * config/i386/i386.md (builtin_setjmp_setup): Removed.
8286         (builtin_longjmp): Likewise.
8287         (save_stack_nonlocal): New pattern.
8288         (restore_stack_nonlocal): Likewise.
8290 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8292         PR target/85404
8293         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
8294         Replace ASM_OUTPUT_LABEL with fprintf.
8296 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
8298         PR target/85417
8299         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
8300         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
8301         * config/i386/i386-c.c (ix86_target_macros_internal): Also
8302         define __IBT__ and __SHSTK__ for -fcf-protection.
8303         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
8304         TARGET_IBT.
8305         (ix86_trampoline_init): Likewise.
8306         (x86_output_mi_thunk): Likewise.
8307         (ix86_notrack_prefixed_insn_p): Likewise.
8308         (ix86_option_override_internal): Don't disallow -fcf-protection.
8309         * config/i386/i386.md (rdssp<mode>): Also enable for
8310         -fcf-protection.
8311         (incssp<mode>): Likewise.
8312         (nop_endbr): Likewise.
8313         * config/i386/i386.opt (mcet): Change help message to built-in
8314         functions only.
8315         (mibt): Likewise.
8316         (mshstk): Likewise.
8317         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
8318         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
8319         enable CET built-in functions.
8321 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
8323         * common/config/i386/i386-common.c
8324         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
8325         OPTION_MASK_ISA_MOVDIRI_UNSET,
8326         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
8327         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
8328         * config.gcc (movdirintrin.h): New header.
8329         * config/i386/cpuid.h (bit_MOVDIRI,
8330         bit_MOVDIR64B): New bits.
8331         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
8332         and -mmvodir64b.
8333         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
8334         (VOID, PVOID, PCVOID)): New function types.
8335         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
8336         __builtin_ia32_directstoreu_u64,
8337         __builtin_ia32_movdir64b): New builtins.
8338         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
8339         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
8340         and -mmovdiri.
8341         (ix86_valid_target_attribute_inner_p): Ditto.
8342         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
8343         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
8344         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
8345         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
8346         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
8347         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
8348         (movdiri<mode>, movdir64b_<mode>): New.
8349         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
8350         * config/i386/immintrin.h: Include movdirintrin.h.
8351         * config/i386/movdirintrin.h: New file.
8352         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
8354 2018-04-19  Richard Biener  <rguenther@suse.de>
8356         PR middle-end/85455
8357         * cfg.c (clear_bb_flags): When loop state says we have
8358         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
8360 2018-04-19  Richard Biener  <rguenther@suse.de>
8362         PR tree-optimization/84737
8363         * tree-vect-data-refs.c (vect_copy_ref_info): New function
8364         copying restrict info.
8365         (vect_setup_realignment): Use it.
8366         * tree-vectorizer.h (vect_copy_ref_info): Declare.
8367         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
8368         the first DR to all generated stores.
8369         (vectorizable_load): Likewise for loads.
8371 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
8373         PR tree-optimization/85446
8374         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
8375         the integral and pointer types to have the same precision.
8377         * doc/install.texi: Document --disable-cet being the default and
8378         --enable-cet=auto.
8380 2018-04-18  Martin Liska  <mliska@suse.cz>
8382         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
8383         style.
8385 2018-04-18  Martin Liska  <mliska@suse.cz>
8387         Revert
8388         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8390         PR ipa/83983
8391         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
8392         arguments if they are comparable.
8394 2018-04-18  Martin Liska  <mliska@suse.cz>
8396         Revert
8397         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
8399         PR lto/84805
8400         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
8401         incomplete types.
8403 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
8405         PR target/85388
8406         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
8407         ENDBR after calling __morestack.
8409 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
8411         PR jit/85384
8412         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
8413         by using gcc_base_ver to generate a gcc_driver_version, and use
8414         it when generating GCC_DRIVER_NAME.
8415         * configure: Regenerate.
8417 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
8419         PR target/81084
8420         * config.gcc: Obsolete powerpc*-*-*spe*.
8422 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8424         PR debug/84637
8425         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
8426         (stabstr_D): Change type of unum from unsigned int to
8427         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
8428         type.
8430 2018-04-17  Jim Wilson  <jimw@sifive.com>
8432         PR 84856
8433         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
8434         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
8435         Set arg_pointer_offset after using pretend_args_size.
8437 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8439         PR rtl-optimization/85431
8440         * dse.c (record_store): Ignore zero width stores.
8442         PR sanitizer/85230
8443         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
8444         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
8445         __builtin_stack_restore rather than after it.
8446         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
8447         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
8448         argument instead of virtual_dynamic_stack_rtx.
8450 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8452         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
8453         New prototype.
8454         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
8455         Add note to error message to explain internal mapping of overloaded
8456         built-in function name to non-overloaded built-in function name.
8457         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
8458         function.
8460 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
8462         PR target/85424
8463         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
8464         where the inputs overlap with the output.
8466 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8468         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
8469         (=v, v) alternative and explicit "memory" attribute.
8470         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
8471         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8472         attributes.
8473         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
8474         "sselog1" type instead of "sselog".
8475         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
8476         "sselog".  Remove explicit "memory" attribute.
8477         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
8478         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8479         attributes.
8480         (vec_extract_hi_v32hi): Merge all alternatives into one, use
8481         "sselog1" type instead of "sselog".  Remove explicit "memory"
8482         attribute.
8483         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
8484         use "sselog1" type instead of "sselog".  Remove explicit "memory"
8485         attribute.
8486         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
8487         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
8488         attributes.
8489         (vec_extract_hi_v64qi): Merge all alternatives into one, use
8490         "sselog1" type instead of "sselog".  Remove explicit "memory"
8491         attribute.
8492         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
8493         use "sselog1" type instead of "sselog".  Remove explicit "memory"
8494         attribute.
8496         PR target/85430
8497         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
8499         PR middle-end/85414
8500         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
8501         on a SUBREG.
8503 2018-04-17  Martin Jambor  <mjambor@suse.cz>
8505         PR ipa/85421
8506         * ipa-cp.c (create_specialized_node): Call
8507         expand_all_artificial_thunks if necessary.
8509 2018-04-17  Martin Liska  <mliska@suse.cz>
8511         PR lto/85405
8512         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
8513         in message, remote space in between '_G' and '('.
8515 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
8517         PR target/85281
8518         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
8519         avx512f_vmcmp<mode>3<round_saeonly_name>,
8520         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
8521         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
8522         avx512f_rndscale<mode><round_saeonly_name>,
8523         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
8524         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
8525         Use %<iptr>2 instead of %2 for -masm=intel.
8526         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
8527         avx512f_vcvttss2usi<round_saeonly_name>,
8528         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
8529         -masm=intel.
8530         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
8531         avx512f_vcvttsd2usi<round_saeonly_name>,
8532         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
8533         Use %q1 instead of %1 for -masm=intel.
8534         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
8535         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
8536         of %3 for -masm=intel.
8537         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
8538         -masm=intel.
8539         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
8540         -masm=intel.
8541         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
8542         -masm=intel.
8543         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
8544         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
8545         %g1.
8546         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
8547         -masm=intel.
8548         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
8549         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
8550         %g1 and one with %0 and %1.
8551         (avx512er_vmrcp28<mode><round_saeonly_name>,
8552         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
8553         %1 for -masm=intel.
8554         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
8555         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
8556         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
8557         of %0 and %{%4%} for -masm=intel.
8558         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
8559         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
8560         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
8561         order of %0 and %{%5%}%{z%} for -masm=intel.
8563 2018-04-17  Jan Hubicka  <jh@suse.cz>
8565         PR lto/85405
8566         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
8568 2018-04-17  Martin Liska  <mliska@suse.cz>
8570         PR ipa/85329
8571         * multiple_target.c (create_dispatcher_calls): Set apostrophes
8572         for target_clone error message.  Make default implementation
8573         clone to be a local declaration.
8574         (separate_attrs): Add new argument and check for an empty
8575         string.
8576         (expand_target_clones): Handle it.
8577         (ipa_target_clone): Make redirection just for target_clones
8578         functions.
8580 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
8581             Tom de Vries  <tom@codesourcery.com>
8583         PR middle-end/84955
8584         * omp-expand.c (expand_oacc_for): Add dummy false branch for
8585         tiled basic blocks without omp continue statements.
8587 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
8589         PR target/83660
8590         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
8591         vec_extract expression as having side effects to make sure it gets
8592         a cleanup point.
8594 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
8596         PR target/85403
8597         * config/i386/i386.c (get_builtin_code_for_version): Check
8598         error_mark_node.
8600 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
8602         PR target/84331
8603         * gcc/config.gcc: Support "skylake".
8604         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
8605         PROCESSOR_SKYLAKE.
8606         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
8607         (processor_target_table): Add "skylake".
8608         (ix86_option_override_internal): Add "skylake".
8609         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
8610         PROCESSOR_CANNONLAKE.
8611         (get_builtin_code_for_version): Fix priority for
8612         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
8613         PROCESSOR_SKYLAKE-AVX512.
8614         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
8615         (processor_type): Add PROCESSOR_SKYLAKE.
8617 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
8618             Jason Merrill  <jason@redhat.com>
8620         PR c++/85112
8621         * convert.c (convert_to_integer_1): Use direct recursion for
8622         enumeral types and types with a precision less than the number
8623         of bits in their mode.
8625 2018-04-16  Julia Koval  <julia.koval@intel.com>
8627         PR target/84413
8628         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
8629         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
8631 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
8633         PR target/85293
8634         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
8635         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
8636         and -mno-direct-move.
8638 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
8640         PR target/83402
8641         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
8642         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
8643         Ensure negative shifts result in {0}.
8645 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
8647         PR rtl-optimization/79916
8648         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
8649         regs (if any) to define how to gnerate SD moves when LRA is in
8650         progress.
8652 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
8654         PR rtl-optimization/85393
8655         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
8656         * except.c (expand_dw2_landing_pad_for_region): Make static.
8657         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
8658         a label and unconditional jump to old_bb, rather than
8659         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
8660         basic block.
8662         PR rtl-optimization/85376
8663         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
8664         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
8665         instead of a specific value.
8667 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
8668             Bin Cheng  <bin.cheng@arm.com>
8670         PR tree-optimization/82965
8671         PR tree-optimization/83991
8672         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
8673         by_profile_only parameter.
8674         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
8675         information if the loop was predicted to iterate too many times.
8676         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
8678 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
8680         PR lto/71991
8681         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
8682         always inline.
8684 2018-04-13  Martin Liska  <mliska@suse.cz>
8685             Jakub Jelinek  <jakub@redhat.com>
8687         PR middle-end/81657
8688         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
8689         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
8690         * builtins.c (expand_builtin_memory_copy_args): Use
8691         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
8692         handle dest_addr == pc_rtx.
8694 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
8696         PR target/85291
8697         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
8698         asked to not generate direct moves.
8699         (fix_trunc<mode>si2_stfiwx): Similar.
8700         (fix_trunc<mode>si2_internal): Similar.
8702 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8704         PR debug/83157
8705         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
8706         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
8707         lookup if dest in some wider mode is known to be const0_rtx and
8708         if so, record permanent equivalence for it to be ZERO_EXTEND of
8709         the narrower mode destination.
8711 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
8713         * lto-streamer-out.c (output_function): Revert 259346.
8714         * omp-expand.c (expand_oacc_for): Likewise.
8716 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
8718         PR rtl-optimization/85354
8719         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
8720         * sel-sched.c (sel_global_init): ... here.
8722 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
8724         PR target/85238
8725         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
8726         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
8727         mode for PE-COFF targets.
8728         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
8729         (i386_pe_asm_lto_end): Likewise.
8730         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
8731         (TARGET_ASM_LTO_END): Likewise.
8732         * config/i386/winnt.c (saved_debug_info_level): New static variable.
8733         (i386_pe_asm_lto_start): New function.
8734         (i386_pe_asm_lto_end): Likewise.
8736 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
8737             Richard Biener  <rguenther@suse.de>
8739         PR middle-end/84955
8740         * lto-streamer-out.c (output_function): Fix CFG loop state before
8741         streaming out.
8742         * omp-expand.c (expand_oacc_for): Handle calls to internal
8743         functions like regular functions.
8745 2018-04-12  Richard Biener  <rguenther@suse.de>
8747         PR lto/85371
8748         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
8749         for the early LTO debug to properly generate references to it
8750         during DIE emission.  Do not re-use that for the skeleton for
8751         split-dwarf.
8752         (dwarf2out_early_finish): Likewise.
8754 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8756         PR target/85328
8757         * config/i386/sse.md
8758         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
8759         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
8760         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
8761         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
8762         and output is a reg, avoid creating invalid lowpart subreg, but
8763         instead split into a 512-bit move.  Don't split if not AVX512VL,
8764         input is xmm16+ reg and output is a mem.
8765         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
8766         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
8767         xmm16+ reg and output is a mem.
8769 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8771         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
8772         also for flag_dwarf2_cfi_asm.
8774 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
8776         PR rtl-optimization/85342
8777         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
8778         a bool scalar var inside of the loop instead.  Don't try to update
8779         recog_data.operand after failed apply_change_group.
8781 2018-04-12  Tom de Vries  <tom@codesourcery.com>
8783         PR target/85296
8784         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
8785         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
8786         array with flexible array member as array without given dimension.
8787         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
8788         argument for undefined param to true.
8790 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
8792         PR target/85321
8793         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
8794         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
8795         from PowerPC section.
8796         * config/rs6000/sysv4.opt (mcall-): Improve help text.
8797         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
8798         help text that is too long.
8799         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
8800         help text that is too long.
8801         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
8802         help text that is too long.
8804 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
8806         * config/alpha/alpha.md (stack_probe_internal): Rename
8807         from "probe_stack".  Update all callers.
8809 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8811         PR rtl-optimization/84566
8812         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
8813         sched_macro_fuse_insns.
8815 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8817         PR target/84301
8818         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
8819         (compute_block_dependences): ... from here.
8821 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8823         PR tree-optimization/85331
8824         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
8825         from int to HOST_WIDE_INT.
8827 2018-04-11  Martin Jambor  <mjambor@suse.cz>
8829         PR ipa/84149
8830         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
8831         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
8832         not the same as the source val.
8833         (cgraph_edge_brings_value_p): New parameter.
8834         (gather_edges_for_value): Pass destination value to
8835         cgraph_edge_brings_value_p.
8836         (perhaps_add_new_callers): Likewise.
8837         (get_info_about_necessary_edges): Likewise and exclude values brought
8838         only by self-recursive edges.
8839         (create_specialized_node): Redirect only clones of self-calling edges.
8840         (+self_recursive_pass_through_p): New function.
8841         (find_more_scalar_values_for_callers_subset): Use it.
8842         (find_aggregate_values_for_callers_subset): Likewise.
8843         (known_aggs_to_agg_replacement_list): Removed.
8844         (decide_whether_version_node): Re-calculate known constants for all
8845         remaining context clones.
8847 2018-04-11  Richard Biener  <rguenther@suse.de>
8849         PR lto/85339
8850         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
8851         from early DWARF output.
8852         (dwarf2out_early_finish): Output line info unconditionally into
8853         early DWARF and add reference to it.
8855 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8857         PR target/85281
8858         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
8859         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
8860         other than V2DFmode using iptr mode attribute.
8861         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
8863 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8865         PR rtl-optimization/84659
8866         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
8868 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8870         PR debug/85302
8871         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
8872         SIZEP is NULL.
8873         (output_loc_list): Pass address of a dummy size variable even in the
8874         locview handling loop.
8875         (index_location_lists): Add comment on why skip_loc_list_entry can't
8876         call size_of_locs.
8878 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
8880         PR target/85261
8881         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
8882         into register.
8884 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
8886         PR target/85321
8887         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
8888         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
8889         and -mstring-compare-inline-limit.
8891 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8893         PR target/85287
8894         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
8895         for stack clash protection in a register whenever we need it to be in
8896         a register.
8898 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8900         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
8901         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
8903 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8905         PR target/85321
8906         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
8907         the help text.
8908         (mlong-double-): Ditto.
8909         * config/rs6000/sysv4.opt (msdata=): Ditto.
8910         (mtls-size=): Ditto.
8912 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8914         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
8915         erroneous entries for
8916         "vector int vec_ldl (int, long int *)", and
8917         "vector unsigned int vec_ldl (int, unsigned long int *)".
8918         Add comments and entries for
8919         "vector bool char vec_ldl (int, bool char *)",
8920         "vector bool short vec_ldl (int, bool short *)",
8921         "vector bool int vec_ldl (int, bool int *)",
8922         "vector bool long long vec_ldl (int, bool long long *)",
8923         "vector pixel vec_ldl (int, pixel *)",
8924         "vector long long vec_ldl (int, long long *)",
8925         "vector unsigned long long vec_ldl (int, unsigned long long *)".
8926         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
8927         type tree bool_long_long_type_node and correct definition of
8928         bool_V2DI_type_node to make reference to this new type tree.
8929         (rs6000_mangle_type): Replace erroneous reference to
8930         bool_long_type_node with bool_long_long_type_node.
8931         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
8932         comments to emphasize sign distinctions for char and int types and
8933         replace RS6000_BTI_bool_long constant with
8934         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
8935         use of RS6000_BTI_pixel.
8936         (bool_long_type_node): Remove this macro definition.
8937         (bool_long_long_type_node): New macro definition
8939 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
8941         PR rtl-optimization/85300
8942         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
8943         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
8944         simplify_unary_operation fails.
8946 2018-04-10  Martin Liska  <mliska@suse.cz>
8948         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
8949         cgraph_edge and ipa_ref.
8951 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
8953         PR target/85177
8954         PR target/85255
8955         * config/i386/sse.md
8956         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
8957         computation of the VEC_MERGE selector from mask.
8958         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
8959         Fix decoding of the VEC_MERGE selector into mask.
8961 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
8963         PR tree-optimization/85286
8964         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
8966 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
8968         * final.c (final_1): Set insn_last_address as well as
8969         insn_current_address.
8971 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8973         PR target/85173
8974         * explow.c (emit_stack_probe): Call validize_mem on memory location
8975         before passing it to gen_probe_stack.  Create address operand and
8976         legitimize it for the probe_stack_address case.
8978 2018-04-09  Jan Hubicka  <jh@suse.cz>
8980         PR lto/85078
8981         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
8982         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
8983         * tree.c (free_lang_data_in_type): Fix handling of binfos;
8984         walk basetypes.
8985         (free_lang_data): Rebuild type inheritance graph.
8987 2018-04-09  Martin Sebor  <msebor@redhat.com>
8989         * invoke.texi (-finline-small-functions): Mention other optimization
8990         options.
8991         (-findirect-inlining, -fpartial-inlining): Same.
8992         (-finline-functions-called-once): Same.
8993         (-freorder-blocks-and-partition): Same.
8995 2018-04-09  Jan Hubicka  <jh@suse.cz>
8997         PR rtl/84058
8998         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
8999         jumps; choose last target that matches the criteria (i.e.
9000         no partition changes for non-crossing jumps).
9001         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
9002         support for redirecting crossing jumps to non-crossing.
9004 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
9006         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
9007         also for naked functions.
9009 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
9011         * config/arc/arc.md (add_shift): New pattern.
9012         (add_shift2): Likewise.
9013         (sub_shift): Likewise.
9014         (sub_shift_cmp0_noout): Likewise.
9015         (compare_si_ashiftsi): Likewise.
9016         (xbfu_cmp0_noout): New combine pattern.
9017         (xbfu_cmp0"): Likewise.
9018         (movsi_set_cc_insn): Place the predicable variant first.
9019         (commutative_binary_cmp0_noout): Remove clobber.
9020         (commutative_binary_cmp0): New pattern.
9021         (noncommutative_binary_cmp0): Likewise.
9022         (noncommutative_binary_cmp0_noout): Likewise.
9023         (noncommutative_binary_comparison_result_used): Removed.
9024         (rsub_cmp0): New pattern.
9025         (rsub_cmp0_noout): Likewise.
9026         (extzvsi): Changed, keep only meaningful variants.
9027         (SQH, SEZ): New iterators.
9028         (SQH_postfix): New mode attribute.
9029         (SEZ_prefix): New code attribute.
9030         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
9031         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
9032         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
9033         of numerical value.
9034         (noncommutative_operator): Check the availability of barrel
9035         shifter option.
9037 2018-04-09  Richard Biener  <rguenther@suse.de>
9039         PR tree-optimization/85284
9040         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
9041         Only use the niter constraining form of simple_iv when the exit
9042         is always executed.
9044 2018-04-09  Tom de Vries  <tom@codesourcery.com>
9046         PR target/84041
9047         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
9048         (define_expand "*memory_barrier"): New define_expand.
9049         (define_insn "memory_barrier"): New insn.
9051 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9053         PR rtl-optimization/80463
9054         PR rtl-optimization/83972
9055         PR rtl-optimization/83480
9057         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
9058         correct producer for the insn.
9059         (tidy_control_flow): Fixup seqnos in case of debug insns.
9061 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9063         PR rtl-optimization/83913
9065         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
9066         different sched-times when merging exprs.
9068 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9070         PR rtl-optimization/83962
9072         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
9073         tidy_fallthru_edge and tidy_control_flow.
9075 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
9077         PR rtl-optimization/83530
9079         * sel-sched.c (force_next_insn): New global variable.
9080         (remove_insn_for_debug): When force_next_insn is true, also leave only
9081         next insn in the ready list.
9082         (sel_sched_region): When the region wasn't scheduled, make another pass
9083         over it with force_next_insn set to 1.
9085 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
9087         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
9088         into tm_file.
9089         * config/nds32/constants.md (unspec_volatile_element): Add enum values
9090         for interrupt control.
9091         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
9092         functions for interrupt control.
9093         * config/nds32/nds32-intrinsic.md: Likewise.
9094         * config/nds32/nds32_intrinsic.h: Likewise.
9095         * config/nds32/nds32.h (nds32_builtins): Likewise.
9097 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
9099         * config/nds32/nds32.c (nds32_init_machine_status,
9100         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
9101         strict_aligned_p field.
9102         (nds32_expand_to_rtl_hook): New function.
9103         (TARGET_EXPAND_TO_RTL_HOOK): Define.
9104         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
9106 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9107             Chung-Ju Wu  <jasonwucj@gmail.com>
9109         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
9110         * config/nds32/nds32-n7.md: New file.
9111         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
9112         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
9113         pipeline.
9114         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
9115         * config/nds32/nds32.md (pipeline_model): Add n7.
9116         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
9117         * config/nds32/pipelines.md: Include n7 settings.
9119 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9120             Chung-Ju Wu  <jasonwucj@gmail.com>
9122         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
9123         * config/nds32/nds32-e8.md: New file.
9124         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
9125         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
9126         pipeline.
9127         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
9128         * config/nds32/nds32.md (pipeline_model): Add e8.
9129         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
9130         * config/nds32/pipelines.md: Include e8 settings.
9132 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9133             Chung-Ju Wu  <jasonwucj@gmail.com>
9135         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
9136         * config/nds32/nds32-n8.md: New file.
9137         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
9138         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
9139         pipeline.
9140         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
9141         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
9142         * config/nds32/nds32.md (pipeline_model): Add n8.
9143         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
9144         * config/nds32/pipelines.md: Include n8 settings.
9146 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
9147             Chung-Ju Wu  <jasonwucj@gmail.com>
9149         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
9150         * config/nds32/nds32-n9-2r1w.md: New file.
9151         * config/nds32/nds32-n9-3r2w.md: New file.
9152         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
9153         nds32_register_ports): New or modify for cpu n9.
9154         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
9155         pipeline.
9156         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
9157         * config/nds32/nds32-utils.c: New file.
9158         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
9159         TARGET_MUL_SLOW): Define.
9160         * config/nds32/nds32.md (pipeline_model): New attribute.
9161         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
9162         New options that support cpu n9.
9163         * config/nds32/pipelines.md: Include n9 settings.
9164         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
9166 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
9168         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
9169         information if necessary.
9170         (output_cond_branch_compare_zero): Likewise.
9171         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
9172         (nds32_target_alignment): Refine for alignment.
9173         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
9174         (FUNCTION_BOUNDARY): Modify.
9175         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
9176         align case.
9177         * config/nds32/nds32.opt (malways-align, malign-functions): New.
9179 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
9181         * config/nds32/constants.md (unspec_volatile_element): Add values for
9182         TLB operation and data prefetch.
9183         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
9184         functions for TLB operation and data prefetch.
9185         * config/nds32/nds32-intrinsic.md: Likewise.
9186         * config/nds32/nds32_intrinsic.h: Likewise.
9187         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
9188         (nds32_print_operand): Likewise.
9189         * config/nds32/nds32.h (nds32_builtins): Likewise.
9191 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
9192         Andrew Pinski <pinsika@gcc.gnu.org>
9194         PR middle-end/82976
9195         * match.pd: Use constant_boolean_node of correct type instead of
9196         boolean_true_node or boolean_false_node for simplifying
9197         pointer comparisons to zero.
9199 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
9201         PR tree-optimization/80021
9202         * tree.c (verify_type_variant): Make error call in verify_variant_match
9203         translatable and remove final full stop.
9205 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9207         * config/nds32/constants.md (unspec_volatile_element): Add
9208         UNSPEC_VOLATILE_EH_RETURN.
9209         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
9210         nds32_output_stack_pop): Support dwarf exception handling process.
9211         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
9212         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
9213         exception handling process.
9214         (nds32_compute_stack_frame): Likewise.
9215         (nds32_return_addr_rtx): Likewise.
9216         (nds32_initial_elimination_offset): Likewise.
9217         (nds32_expand_prologue): Likewise.
9218         (nds32_expand_epilogue): Likewise.
9219         (nds32_dynamic_chain_address): New function.
9220         * config/nds32/nds32.h (machine_function): Add fields for dwarf
9221         exception handling.
9222         (DYNAMIC_CHAIN_ADDRESS): Define.
9223         (EH_RETURN_DATA_REGNO): Define.
9224         (EH_RETURN_STACKADJ_RTX): Define.
9225         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
9226         patterns for dwarf exception handling.
9228 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9230         * config/nds32/nds32.h: Clean up obsolete macros.
9232 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9234         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
9235         Add enum values for particular instructions.
9236         * config/nds32/nds32-intrinsic.c: Implementation of expanding
9237         particular intrinsic functions.
9238         * config/nds32/nds32-intrinsic.md: Likewise.
9239         * config/nds32/nds32_intrinsic.h: Likewise.
9240         * config/nds32/nds32.h (nds32_builtins): Likewise.
9241         * config/nds32/nds32.md (type): Add pbsad and pbsada.
9242         (btst, ave): New patterns for particular instructions.
9244 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9246         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
9247         Add enum values for atomic load/store and memory sync.
9248         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
9249         and memory sync.
9250         * config/nds32/nds32-intrinsic.md: Likewise.
9251         * config/nds32/nds32_intrinsic.h: Likewise.
9252         * config/nds32/nds32.h (nds32_builtins): Likewise.
9254 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
9256         PR tree-optimization/85257
9257         * fold-const.c (native_encode_vector): If not all elts could fit
9258         and off is -1, return 0 rather than offset.
9259         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
9260         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
9261         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
9262         adjust buffer in native_interpret_expr call.
9264 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9266         * config/nds32/constants.md (unspec_volatile_element): Add cache
9267         control enum values.
9268         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
9269         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
9270         * config/nds32/nds32.c (nds32_cctl_names): New.
9271         (nds32_print_operand): Handle cache control register names.
9272         * config/nds32/nds32.h (nds32_builtins): New enum values.
9273         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
9274         macros.
9275         * config/nds32/nds32.md (type): Add mmu.
9276         * config/nds32/pipelines.md (simple_insn): Add mmu.
9278 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9280         * config/nds32/nds32.md (type): Remove call.
9281         * config/nds32/pipelines.md (simple_insn): Likewise.
9283 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9285         * config/nds32/constants.md (unspec_volatile_element): Add
9286         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
9287         UNSPEC_VOLATILE_FMFCFG.
9288         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
9289         description for fmfcfg and fmfcsr.
9290         (bdesc_1arg): Add fmtcsr.
9291         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
9292         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
9293         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
9294         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
9295         unspec_fmfcfg): New patterns.
9296         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
9297         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
9298         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
9299         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
9300         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
9301         __nds32__fmfcfg): Define.
9303 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
9305         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
9306         intrinsic register names.
9307         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
9308         intrinsic register enum values and macros.
9310 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
9312         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
9313         for load/store addressing form.
9314         (nds32_print_operand_address): Likewise.
9316 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
9318         PR target/85196
9319         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
9320         based on LABEL_REF.  Remove useless assertion.
9321         (pic_address_needs_scratch): Fix formatting.
9322         (sparc_legitimize_pic_address): Minor tweaks.
9323         (sparc_delegitimize_address): Adjust assertion accordingly.
9324         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
9325         into symbolic_operand.
9326         (movsi_high_pic_label_ref): Likewise.
9327         (movsi_lo_sum_pic_label_ref): Likewise.
9328         (movdi_pic_label_ref): Likewise.
9329         (movdi_high_pic_label_ref): Likewise.
9330         (movdi_lo_sum_pic_label_ref): Likewise.
9332 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
9334         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
9335         custom LIB_SPEC setup.
9337 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
9338             Kito Cheng  <kito.cheng@gmail.com>
9340         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
9341         * config/riscv/freebsd.h: New.
9343 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9345         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
9346         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
9347         file.
9349 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9350             Kito Cheng  <kito.cheng@gmail.com>
9352         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
9353         nds32_output_call, nds32_symbol_binds_local_p): New functions.
9354         * config/nds32/nds32-protos.h (nds32_output_call,
9355         nds32_output_return): Declare.
9356         * config/nds32/nds32.md: Refine all the call and return patterns.
9358 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
9360         PR debug/85252
9361         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
9362         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
9364         PR rtl-optimization/84872
9365         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
9366         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
9367         EDGE_CROSSING edge.
9369 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
9371         * expr.c (copy_blkmode_to_reg): Revert 254862.
9372         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
9374 2018-04-06  Richard Biener  <rguenther@suse.de>
9376         PR middle-end/85244
9377         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
9378         after seeing a component reference with an adjacent field.  Treat
9379         refs to arrays at struct end of external decls similar to
9380         refs to unconstrained commons.
9382 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
9384         PR sanitizer/85213
9385         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
9386         look through SAVE_EXPRs with non-side-effects argument.  Adjust
9387         recursive calls.
9388         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
9389         save_p here.
9391 2018-04-06  Richard Biener  <rguenther@suse.de>
9393         PR middle-end/85180
9394         * alias.c (find_base_term): New wrapper around find_base_term
9395         unwinding CSELIB_VAL_PTR changes.
9396         (find_base_term): Do not restore CSELIB_VAL_PTR during the
9397         recursion.
9399 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
9401         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
9402         instructions.
9403         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
9404         constant definitions.
9405         ("nop"): lr 0,0 -> nopr r0
9406         ("nop_lr0", "nop_lr1"): New insn definitions.
9408 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
9410         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
9411         NDS32_V3PUSH_AVAILABLE_P macro.
9413 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
9414             Chung-Ju Wu  <jasonwucj@gmail.com>
9416         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
9417         (nds32*-*-*): Add float and fpu_config into supported_defaults.
9418         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
9419         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
9420         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
9421         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
9422         * config/nds32/constraints.md: New constraints and checking for hard
9423         float configuration.
9424         * config/nds32/iterators.md: New mode iterator and attribute for hard
9425         float configuration.
9426         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
9427         patterns.
9428         * config/nds32/nds32-fpu.md: New file.
9429         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
9430         deal with hard float code generation.
9431         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
9432         ARCH_V3S.
9433         (abi_type, float_reg_number): New enum type.
9434         * config/nds32/nds32-predicates.c: New predicates for hard float.
9435         * config/nds32/nds32-protos.h: Declare functions for hard float.
9436         * config/nds32/nds32.c: Implementation for hard float configuration.
9437         * config/nds32/nds32.h: Definitions for hard float configuration.
9438         * config/nds32/nds32.md: Include hard float machine description and
9439         modify patterns for hard float configuration.
9440         * config/nds32/nds32.opt: New options for hard float configuration.
9441         * config/nds32/predicates.md: New predicates for hard float
9442         configuration.
9444 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
9446         * common/config/nds32/nds32-common.c
9447         (nds32_option_optimization_table): Enable -mreleax-hint by default.
9449 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
9451         PR middle-end/85195
9452         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
9453         CONSTRUCTOR_ELT (ctor, ...)->value.
9455 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
9457         PR target/85193
9458         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
9460 2018-04-05  Tom de Vries  <tom@codesourcery.com>
9462         PR target/85204
9463         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
9464         cond jump.
9466 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
9467             Kito Cheng  <kito.cheng@gmail.com>
9469         * config/nds32/constraints.md (U33): Fine-tune checking condition.
9470         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
9471         * config/nds32/nds32.h (nds32_16bit_address_type): Add
9472         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
9474 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
9475             Kito Cheng  <kito.cheng@gmail.com>
9477         * config/nds32/constraints.md (Ufe): New memory constraint.
9478         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
9479         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
9480         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
9481         operands.
9482         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
9483         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
9485 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9487         * config/nds32/nds32.md: Use optimize_size in the condition for
9488         alu-shift instructions.
9490 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9492         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
9494 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9496         * config/nds32/nds32.md (negsi2): Refine pattern.
9498 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
9499             Chung-Ju Wu  <jasonwucj@gmail.com>
9501         * config/nds32/iterators.md (shift_rotate): New code iterator.
9502         (shift): New code attribute.
9503         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
9504         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
9505         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
9506         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
9507         bit-wise operations.
9508         (andsi3, *andsi3): Ditto.
9509         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
9510         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
9511         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
9512         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
9513         nds32_ior_operand, nds32_xor_operand): New predicates.
9515 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9517         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
9518         (addsi3, subsi3): ... this.
9520 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9522         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
9524 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9526         * config/nds32/nds32.md: Adjust indention.
9528 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
9530         * config/nds32/nds32.md (feature): New attribute.
9532 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
9534         * config/nds32/nds32.md (subtype): New attribute.
9536 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
9538         PR target/85203
9539         * config/arm/arm-builtins.c (arm_expand_builtin): Change
9540         expansion to perform a bitwise AND of the argument followed by a
9541         boolean negation of the result.
9543 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
9545         PR rtl-optimization/84878
9546         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
9547         the basic block.  Assert the use reference is not artificial and that
9548         it has an associated insn.
9550 2018-04-04  Michael Matz  <matz@suse.de>
9552         * builtins.c (compute_objsize): Pass correct operand
9553         to array_at_struct_end_p.
9555 2018-04-04  Richard Biener  <rguenther@suse.de>
9557         PR lto/85176
9558         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
9559         from contexts for DINFO_LEVEL_TERSE and below.
9561 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9563         * config/nds32/nds32-doubleword.md (move_<mode>): Require
9564         resiter_operand condition.
9565         * config/nds32/nds32.md (*move<mode>): Ditto.
9567 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9568             Monk Chiang  <sh.chiang04@gmail.com>
9570         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
9572 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9574         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
9576 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9577             Kito Cheng  <kito.cheng@gmail.com>
9579         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
9580         nds32_cond_code_str, output_cond_branch,
9581         output_cond_branch_compare_zero, nds32_expand_cbranch,
9582         nds32_expand_cstore, nds32_expand_movcc,
9583         nds32_output_cbranchsi4_equality_zero,
9584         nds32_output_cbranchsi4_equality_reg,
9585         nds32_output_cbranchsi4_equality_reg_or_const_int,
9586         nds32_output_cbranchsi4_greater_less_zero: New functions.
9587         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
9588         nds32_expand_cstore, nds32_expand_movcc,
9589         nds32_output_cbranchsi4_equality_zero,
9590         nds32_output_cbranchsi4_equality_reg,
9591         nds32_output_cbranchsi4_equality_reg_or_const_int,
9592         nds32_output_cbranchsi4_greater_less_zero): Declare.
9593         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
9594         nds32_rimm11s_operand): New predicates.
9595         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
9596         * config/nds32/nds32.md: Rewrite all the branch and conditional move
9597         patterns.
9599 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
9601         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
9602         * config/nds32/nds32.md: Ditto.
9603         * config/nds32/pipelines.md: Ditto.
9605 2018-04-04  Richard Biener  <rguenther@suse.de>
9607         PR tree-optimization/85168
9608         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
9609         propagating abnormals.
9611 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9613         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
9615 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
9616             Kito Cheng  <kito.cheng@gmail.com>
9618         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
9619         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
9620         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
9621         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
9622         * config/nds32/nds32.md (sibcall_internal): New.
9623         (sibcall_register): Remove.
9624         (sibcall_immediate): Remove.
9625         (sibcall_value_internal): New.
9626         (sibcall_value_register): Remove.
9627         (sibcall_value_immediate): Remove.
9628         * config/nds32/predicates.md (nds32_general_register_operand): New.
9629         (nds32_call_address_operand): New.
9631 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
9633         PR rtl-optimization/85167
9634         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
9635         bb_defs if *split_p, instead preinitialize it to NULL.
9637         PR tree-optimization/85156
9638         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
9639         evaluating the argument multiple times.
9641 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
9643         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
9644         than vector.
9645         (_mm_cvtpd_ps): Likewise.
9646         (_mm_cvttpd_epi32): Likewise.
9647         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
9648         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
9649         vector, pixel, and bool following altivec.h include.
9651 2018-04-03  Martin Sebor  <msebor@redhat.com>
9653         * doc/extend.texi (Common Function Attributes): Clarify.
9654         (const attribute): Likewise.
9655         (pure attribute): Likewise.
9657 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
9659         PR target/85169
9660         * config/i386/i386.c (ix86_expand_vector_set): Use
9661         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
9663 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
9665         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
9666         instructions when changing rounding bits to preserve precision bits
9667         in the x87 control word.
9669 2018-04-03  Martin Liska  <mliska@suse.cz>
9671         PR tree-optimization/82491
9672         * rtl.h (strip_offset_and_add): Replace += suboffset with
9673         poly_uint64 () + suboffset.
9675 2018-03-29  Martin Liska  <mliska@suse.cz>
9676             Martin Jambor  <mjambor@suse.cz>
9678         PR ipa/84947
9679         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
9680         param_type is not an integral or pointer type.
9682 2018-04-03  Richard Biener  <rguenther@suse.de>
9684         * sese.h (recompute_all_dominators): Remove.
9686 2018-04-02  Martin Sebor  <msebor@redhat.com>
9688         * doc/invoke.texi (-Wrestrict): Fix typos.
9690 2018-04-02  Jim Wilson  <jimw@sifive.com>
9692         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
9693         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
9694         (<optab>di3, <optab>si3_extend): Likewise.
9695         (<optab>si3_mask, <optab>si3_mask_1): New.
9696         (<optab>di3_mask, <optab>di3_mask_1): New.
9697         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
9698         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
9699         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
9701 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
9703         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
9704         example.
9706 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
9708         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
9709         (nds32_canonicalize_comparison): New function.
9711 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9712             Kito Cheng  <kito.cheng@gmail.com>
9713             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
9715         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
9716         * config/nds32/constants.md (unspec_volatile_element): Add
9717         UNSPEC_VOLATILE_RELAX_GROUP.
9718         * config/nds32/nds32-relax-opt.c: New file.
9719         * config/nds32/nds32-predicates.c
9720         (nds32_symbol_load_store_p): New function.
9721         * config/nds32/nds32-protos.h
9722         (nds32_symbol_load_store_p): Declare function.
9723         (make_pass_nds32_relax_opt): Declare new rtl pass function.
9724         * config/nds32/nds32.c
9725         (nds32_register_pass): New function to register pass.
9726         (nds32_register_passes): New function to register passes.
9727         * config/nds32/nds32.md (relax_group): New pattern.
9728         * config/nds32/nds32.opt (mrelax-hint): New option.
9729         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
9731 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
9733         * config/nds32/t-nds32: Modify files dependency.
9735 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9737         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
9738         (PROFILE_HOOK): Define its implementation.
9740 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
9742         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
9743         type and 32-bit size.
9745 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
9747         PR middle-end/85090
9748         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
9749         (V_128_256): New mode iterator.
9750         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
9751         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
9752         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
9753         of V.
9754         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
9755         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
9757 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
9759         PR target/83315
9760         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
9761         NaN inputs correctly.
9763 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
9765         PR target/80546
9766         * config/rs6000/vsx.md (??r): New mode attribute.
9767         (*vsx_mov<mode>_64bit): Use it.
9768         (*vsx_mov<mode>_32bit): Likewise.
9770 2018-03-30  Martin Sebor  <msebor@redhat.com>
9772         PR tree-optimization/84818
9773         * builtins.c (check_access): Use warning_n.
9775 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9777         PR target/83822
9778         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
9779         condition.
9780         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
9781         condition.
9783 2018-03-30  Julia Koval  <julia.koval@intel.com>
9785         PR target/84413
9786         * x86-tune.def (movx, partial_reg_dependency): Enable for
9787         m_SKYLAKE_AVX512.
9789 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
9791         PR inline-asm/84985
9792         * lra-constraints.c (process_alt_operands): Move setting
9793         this_alternative_matches below.
9795 2018-03-29  Martin Liska  <mliska@suse.cz>
9797         PR lto/84995.
9798         * doc/invoke.texi: Document how LTO works with debug info.
9799         Describe auto-load support of binutils.  Mention 'x86-64'
9800         as valid option value of -march option.
9802 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
9804         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
9806         PR c/85094
9807         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
9808         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
9809         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
9810         checking.
9812 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
9814         PR target/84912
9815         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
9816         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
9817         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
9818         for RS6000_BTM_POWERPC64.
9819         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
9820         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
9821         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
9822         definition.
9823         (DIVDE): Use it.
9824         (DIVDEU): Likewise.
9826 2018-03-28 Carl Love  <cel@us.ibm.com>
9828         Revert
9829         2017-09-27  Carl Love  <cel@us.ibm.com>
9831         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
9832         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
9833         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
9834         fctiw instruction.
9836 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9838         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
9839         instead of __vector bool.
9840         (_mm_max_pu8): Likewise.
9841         (_mm_min_pi16): Likewise.
9843 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
9845         PR target/84912
9846         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
9847         (DIVWEUO): Likewise.
9848         (DIVDEO): Likewise.
9849         (DIVDEUO): Likewise.
9850         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
9851         DIVWEUO and DIVDEUO.
9852         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
9853         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
9854         (div_extend): Likewise.
9855         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
9856         builtin function.
9857         (__builtin_divweuo): Likewise.
9858         (__builtin_divdeo): Likewise.
9859         (__builtin_divdeuo): Likewise.
9861 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9863         PR target/85095
9864         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
9865         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
9867         PR tree-optimization/82004
9868         * gimple-match-head.c (optimize_pow_to_exp): New function.
9869         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
9870         Don't fold to exp if optimize_pow_to_exp is false.
9872 2018-03-28  Martin Liska  <mliska@suse.cz>
9874         PR other/84819
9875         * calls.c (initialize_argument_information): Fix trailing space.
9876         * common.opt: Fix typo and provide better explanation for
9877         -fsanitize-coverage option.
9878         * config/i386/i386.opt: Fix typo.
9880 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9881             Martin Liska  <mliska@suse.cz>
9883         PR sanitizer/85081
9884         * gimplify.c (asan_poison_variable): Don't do the check for
9885         gimplify_omp_ctxp here.
9886         (gimplify_decl_expr): Do it here.
9887         (gimplify_target_expr): Likewise.
9889 2018-03-28  Martin Liska  <mliska@suse.cz>
9891         PR target/84988
9892         * config/i386/i386.c (ix86_function_arg_advance): Do not call
9893         chkp_type_bounds_count if MPX is not enabled.
9895 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
9897         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
9899 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9901         PR target/84914
9902         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
9903         function to create the function decl for complex long double
9904         multiply and divide for -mabi=ieeelongdouble.
9905         (init_float128_ieee): Call it.
9907 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
9909         PR target/85044
9910         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
9911         -fcf-protection=branch -mibt.
9912         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
9914 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9916         PR target/81863
9917         * config/arm/arm.c (arm_valid_symbolic_address): Handle
9918         arm_word_relocations.
9920 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
9922         PR target/85056
9923         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
9924         extern array declarations.
9926 2018-03-27  Richard Biener  <rguenther@suse.de>
9928         PR middle-end/84067
9929         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
9930         explicit single_use checks.
9932 2018-03-27  Richard Biener  <rguenther@suse.de>
9934         PR tree-optimization/85082
9935         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
9936         Valueize the VUSE.
9938 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9940         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
9941         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
9942         Turn on fasynchronous-unwind-tables and funwind-tables.
9944 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
9946         PR target/85073
9947         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
9948         (*bmi_blsr_<mode>_ccz): Ditto.
9950 2018-03-26  Tom de Vries  <tom@codesourcery.com>
9952         PR tree-optimization/85063
9953         * omp-general.c (offloading_function_p): New function.  Factor out
9954         of ...
9955         * omp-offload.c (pass_omp_target_link::gate): ... here.
9956         * omp-general.h (offloading_function_p): Declare.
9957         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
9958         with attribute omp declare target for offloading functions.
9960 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
9962         PR tree-optimization/84005
9963         * tree-data-ref.h (get_base_for_alignment): Declare.
9964         * tree-data-ref.c (get_base_for_alignment_1): New function.
9965         (get_base_for_alignment): Likewise.
9966         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
9967         get_base_for_alignment to find a suitable base object, instead
9968         of always using drb->base_address.
9970 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
9972         PR inline-asm/85022
9973         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
9974         known size by default.
9976 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
9978         PR inline-asm/85030
9979         * lra-constraints.c (process_alt_operands): Don't match BLKmode
9980         and non BLKmode operands.
9982 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9984         PR target/85026
9985         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
9986         Clean up attributes.
9988 2018-03-23  Richard Biener  <rguenther@suse.de>
9990         PR debug/85020
9991         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
9992         we are going to emit early debug for LTO.
9994 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
9996         PR inline-asm/85034
9997         * function.c (match_asm_constraints_1): Don't optimize if input
9998         doesn't satisfy general_operand predicate for output's mode.
10000         PR inline-asm/85022
10001         * alias.c (write_dependence_p): Don't require for x_canonicalized
10002         non-VOIDmode if x has VOIDmode.
10004         PR sanitizer/85029
10005         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
10006         just don't try to optimize it rather than assert it never happens.
10008 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10010         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
10011         macro expansions for definition of ST_INTERNAL_<mode> and
10012         LD_INTERNAL_<mode> builtins.
10013         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
10014         Remove prototype.
10015         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
10016         function.
10017         (altivec_expand_st_builtin): Likewise.
10018         (altivec_expand_builtin): Remove calls to deleted functions.
10019         (rs6000_address_for_altivec): Delete this function.
10020         * config/rs6000/vector.md: Remove expands for
10021         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
10023 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
10025         PR target/84826
10026         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
10027         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
10028         re-computing once computed.
10029         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
10030         (arm_init_machine_status): Initialize
10031         machine->static_chain_stack_bytes.
10033 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10035         PR target/84760
10036         * doc/extend.texi: Add four new prototypes for vec_ld.
10037         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
10038         definitions for more logical presentation.
10039         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
10040         entries for V1TI variants of __builtin_altivec_ld builtin.
10041         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
10042         handling of V1TI variant of LVX icode pattern.
10043         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
10044         (rs6000_gimple_fold_builtin): Likewise.
10045         (altivec_init_builtins): Add code to define
10046         __builtin_altivec_lvx_v1ti function.
10048 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
10050         PR inline-asm/84941
10051         * function.c (match_asm_constraints_1): Don't do the optimization
10052         if input isn't a REG, SUBREG, MEM or constant.
10054 2018-03-22  Tom de Vries  <tom@codesourcery.com>
10056         PR tree-optimization/84956
10057         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
10058         bb_has_abnormal_pred.
10060 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
10062         PR sanitizer/85018
10063         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
10064         DECL_INITIAL (decl) to decl at the end.
10065         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
10066         adjust the comment.
10068 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
10070         * doc/extend.texi (__builtin_tgmath): Document when complex
10071         integer types are treated as _Complex _Float64.
10073 2018-03-21  Tom de Vries  <tom@codesourcery.com>
10075         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
10077 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10079         PR tree-optimization/84960
10080         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
10081         if it is ENTRY block, move them into single succ of ENTRY in that case.
10083 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
10085         PR tree-optimization/84811
10086         * poly-int.h (poly_span_traits): Remove the T3 parameter and
10087         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
10088         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
10089         (known_subrange_p): Update accordingly.  Cast each value involved
10090         in the size comparison, rather than casting the result of the
10091         subtraction.
10093 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10095         PR tree-optimization/84982
10096         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
10097         by flipping the least significant bit rather than all bits from
10098         bitpos to bitpos + bitsize - 1.
10100 2018-03-21  Nathan Sidwell  <nathan@acm.org>
10102         * doc/extend.texi (Deprecated Features): Remove mention of
10103         long-deleted deprecations.
10105 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10107         PR jit/84288
10108         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
10109         * configure: Regenerate.
10111 2018-03-21  Tom de Vries  <tom@codesourcery.com>
10113         PR tree-optimization/83126
10114         * tree-parloops.c (num_phis): New function.
10115         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
10117 2018-03-21  Nathan Sidwell  <nathan@acm.org>
10119         * doc/extend.texi (Deprecated Features): Update deprecated flags,
10120         mention anon-struct/union members and trailing attributes.
10122 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
10124         PR tree-optimization/84969
10125         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
10126         builtin memset partitions if they set different rhs values.
10128 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
10130         PR rtl-optimization/84989
10131         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
10132         VEC_DUPLICATE with scalar result mode.
10134 2018-03-21  Martin Liska  <mliska@suse.cz>
10136         PR ipa/84963
10137         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
10138         not intended return statement.
10140 2018-03-21  Martin Liska  <mliska@suse.cz>
10142         PR target/84988
10143         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
10144         (chkp_find_bound_slots_1): Limit number of iterations.
10146 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
10148         PR target/84838
10149         * Minor grammar fixes for x86 options.
10151 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10153         PR debug/84875
10154         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
10155         holding REG_CFA_RESTORE notes, instead turn them into a USE.
10157 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
10159         PR target/83789
10160         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
10161         (altivec_lvx_<mode>_1op): Likewise.
10162         (altivec_stvx_<mode>_2op): Likewise.
10163         (altivec_stvx_<mode>_1op): Likewise.
10164         (altivec_lvx_<VM2:mode>): New define_expand.
10165         (altivec_stvx_<VM2:mode>): Likewise.
10166         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
10167         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
10168         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
10169         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
10170         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
10171         (rs6000_gen_lvx): Likewise.
10172         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
10173         (altivec_expand_stv_builtin): Likewise.
10174         (altivec_expand_builtin): Likewise.
10175         * config/rs6000/vector.md: Likewise.
10177 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10179         PR target/82518
10180         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
10181         BYTES_BIG_ENDIAN.
10183 2018-03-20  Richard Biener  <rguenther@suse.de>
10185         PR target/84986
10186         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
10187         sign-conversions as zero, fall back to standard scalar_stmt
10188         cost for the rest.
10190 2018-03-20  Martin Liska  <mliska@suse.cz>
10192         PR ipa/84825
10193         * predict.c (rebuild_frequencies): Handle case when we have
10194         PROFILE_ABSENT, but flag_guess_branch_prob is false.
10196 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10198         PR target/84990
10199         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
10200         flag_section_anchors.
10201         * varasm.c (use_blocks_for_decl_p): Remove hack for
10202         dw2_force_const_mem.
10204         PR target/84845
10205         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
10206         to ...
10207         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
10208         be created, use lowpart_subreg of operands[0] rather than operands[0]
10209         itself.
10210         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
10211         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
10212         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
10213         and n constraint instead of aarch64_shift_imm_di and Usd.
10214         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
10215         (*aarch64_<optab>_reg_minus<mode>3): ... this.
10217 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
10219         PR target/82989
10220         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
10221         to favor GPR over NEON registers.
10222         (<shift>di3_neon): Likewise.
10224 2018-03-20  Tom de Vries  <tom@codesourcery.com>
10226         PR target/84952
10227         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
10228         (nvptx_process_pars): Emit bar.sync asap and alap.
10230 2018-03-20  Tom de Vries  <tom@codesourcery.com>
10232         PR target/84954
10233         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
10234         seen_label if seen_label is already set.
10236 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
10238         PR target/84945
10239         * config/i386/i386.c (fold_builtin_cpu): For features above 31
10240         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
10241         Use 1U instead of 1.  Formatting fixes.
10243         PR c/84953
10244         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
10245         instead of TREE_TYPE (s1) for the return value.
10247 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
10249         PR tree-optimization/84946
10250         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
10251         bitsize + bitsize in poly_uint64 rather than poly_int64.
10253         PR sanitizer/78651
10254         * dwarf2asm.c: Include fold-const.c.
10255         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
10256         of decl rather than decl itself.
10258         PR rtl-optimization/84643
10259         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
10261 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
10263         PR sanitizer/78651
10264         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
10265         calling assemble_variable.
10267 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
10269         PR target/81647
10270         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
10271         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
10273 2018-03-19  Jim Wilson  <jimw@sifive.com>
10275         PR bootstrap/84856
10276         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
10277         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
10278         (riscv_first_stack_step): Likewise.
10279         (riscv_option_override): Use STACK_BOUNDARY instead of
10280         MIN_STACK_BOUNDARY.
10281         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
10282         MIN_STACK_BOUNDARY.
10283         (BIGGEST_ALIGNMENT): Set to 128.
10284         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
10285         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
10286         STACK_BOUNDARY.
10288 2018-03-19  Richard Biener  <rguenther@suse.de>
10290         PR tree-optimization/84933
10291         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
10292         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
10294 2018-03-19  Richard Biener  <rguenther@suse.de>
10296         PR tree-optimization/84859
10297         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
10298         (cond_if_else_store_replacement): Perform sinking operation on
10299         single-store BBs regardless of MAX_STORES_TO_SINK setting.
10300         Generalize what a BB with a single eligible store is.
10302 2018-03-19  Richard Biener  <rguenther@suse.de>
10304         PR tree-optimization/84929
10305         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
10306         chrec_is_positive against non-chrec arg.
10308 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
10310         PR target/84711
10311         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
10313 2018-03-18  Martin Liska  <mliska@suse.cz>
10315         PR rtl-optimization/84635
10316         * regrename.c (build_def_use): Use matches_mode only when
10317         matches >= 0.
10319 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
10321         PR tree-optimization/84913
10322         * tree-vect-loop.c (vectorizable_reduction): Don't try to
10323         vectorize chains of COND_EXPRs.
10325 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10327         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
10329 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10331         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
10333 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
10335         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
10337 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
10338             Kito Cheng  <kito.cheng@gmail.com>
10340         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
10341         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
10342         (nds32_adjust_reg_alloc_order): New function.
10343         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
10345 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
10347         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
10348         nds32_print_operand, nds32_print_operand_address): Use
10349         HOST_WIDE_INT_PRINT_DEC instead.
10351 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
10353         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
10355 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
10357         PR target/84902
10358         * config/i386/i386.c (initial_ix86_tune_features,
10359         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
10360         unsigned long long.
10361         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
10362         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
10363         rather than 1u << ix86_tune.  Formatting fix.
10364         (ix86_option_override_internal): Change ix86_arch_mask from
10365         unsigned int to unsigned HOST_WIDE_INT, initialize to
10366         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
10367         (ix86_function_specific_restore): Likewise.
10369 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10371         PR target/84899
10372         * postreload.c (reload_combine_recognize_pattern): Perform
10373         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
10374         truncate_int_for_mode the result for the destination's mode.
10376         PR c/84909
10377         * hsa-gen.c (mem_type_for_type): Fix comment typo.
10378         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
10379         Likewise.
10380         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
10381         Likewise.
10383 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
10385         PR target/84876
10386         * lra-assigns.c (lra_split_hard_reg_for): Don't use
10387         regno_allocno_class_array and sorted_pseudos.
10388         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
10389         insns where regno is used.
10391 2018-03-16  Martin Liska  <mliska@suse.cz>
10393         PR ipa/84833
10394         * multiple_target.c (create_dispatcher_calls): Redirect
10395         reference in the symbol table.
10397 2018-03-16  Martin Liska  <mliska@suse.cz>
10399         PR ipa/84722
10400         * multiple_target.c (create_dispatcher_calls): Redirect also
10401         an alias.
10403 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10405         PR c++/79937
10406         PR c++/82410
10407         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
10408         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
10409         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
10411 2018-03-16  Julia Koval  <julia.koval@intel.com>
10413         * doc/invoke.texi (Skylake Server): Add CLWB.
10414         Cannonlake): Remove CLWB.
10416 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
10418         PR tree-optimization/84841
10419         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
10420         1 << 3.
10421         (FLOAT_ONE_CONST_TYPE): Define.
10422         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
10423         (sort_by_operand_rank): Put entries with higher constant_type last
10424         rather than first to match comments.
10426 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
10428         * config/nios2/nios2.md (movsi_internal): Fix thinko in
10429         split predicate.
10431 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
10433         PR c++/79085
10434         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
10435         check and use address of target always.
10437 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
10439         PR target/84574
10440         * config/i386/i386.c (indirect_thunk_needed): Update comments.
10441         (indirect_thunk_bnd_needed): Likewise.
10442         (indirect_thunks_used): Likewise.
10443         (indirect_thunks_bnd_used): Likewise.
10444         (indirect_return_needed): New.
10445         (indirect_return_bnd_needed): Likewise.
10446         (output_indirect_thunk_function): Add a bool argument for
10447         function return.
10448         (output_indirect_thunk_function): Don't generate alias for
10449         function return thunk.
10450         (ix86_code_end): Call output_indirect_thunk_function to generate
10451         function return thunks.
10452         (ix86_output_function_return): Set indirect_return_bnd_needed
10453         and indirect_return_needed instead of indirect_thunk_bnd_needed
10454         and indirect_thunk_needed.
10456 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
10458         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
10459         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
10460         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
10462 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
10463             Paul Hua <paul.hua.gm@gmail.com>
10465         PR c/84852
10466         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
10468 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
10470         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
10471         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
10472         resp. SFmode cases.
10474 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
10476         PR target/84711
10477         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
10478         instead of GET_MODE_SIZE when comparing Units.
10480 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
10482         PR target/68256
10483         * varasm.c (hash_section): Return an unchangeble hash value
10484         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
10485         Return !aarch64_can_use_per_function_literal_pools_p ().
10487 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
10489         PR target/84860
10490         * optabs.c (emit_conditional_move): Pass address of cmode's copy
10491         rather than address of cmode as last argument to prepare_cmp_insn.
10493 2018-03-15  Julia Koval  <julia.koval@intel.com>
10495         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
10496         F_AVX512VNNI, F_AVX512BITALG): New.
10498 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
10500         PR target/83451
10501         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
10502         insn for floating-point loads and stores.
10504 2018-03-14  Carl Love  <cel@us.ibm.com>
10506         * config/rs6000/rs6000-c.c: Add macro definitions for
10507         ALTIVEC_BUILTIN_VEC_PERMXOR.
10508         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
10509         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
10510         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
10511         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
10512         UNSPEC_VPERMXOR.
10513         * config/doc/extend.texi: Add prototypes for vec_permxor.
10515 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
10517         PR c/84852
10518         * diagnostic-show-locus.c (class layout_point): Convert m_line
10519         from int to linenum_type.
10520         (line_span::comparator): Use linenum "compare" function when
10521         comparing line numbers.
10522         (test_line_span): New function.
10523         (layout_range::contains_point): Convert param "row" from int to
10524         linenum_type.
10525         (layout_range::intersects_line_p): Likewise.
10526         (layout::will_show_line_p): Likewise.
10527         (layout::print_source_line): Likewise.
10528         (layout::should_print_annotation_line_p): Likewise.
10529         (layout::print_annotation_line): Likewise.
10530         (layout::print_leading_fixits): Likewise.
10531         (layout::annotation_line_showed_range_p): Likewise.
10532         (struct line_corrections): Likewise for field m_row.
10533         (line_corrections::line_corrections): Likewise for param "row".
10534         (layout::print_trailing_fixits): Likewise.
10535         (layout::get_state_at_point): Likewise.
10536         (layout::get_x_bound_for_row): Likewise.
10537         (layout::print_line): Likewise.
10538         (diagnostic_show_locus): Likewise for locals "last_line" and "row".
10539         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
10540         * input.c (selftest::test_linenum_comparisons): New function.
10541         (selftest::input_c_tests): Call it.
10542         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
10543         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
10544         * selftest.h (ASSERT_GT): New macro.
10545         (ASSERT_GT_AT): New macro.
10546         (ASSERT_LT): New macro.
10547         (ASSERT_LT_AT): New macro.
10549 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
10551         PR rtl-optimization/84780
10552         * combine.c (distribute_links): Don't make a link based on pc_rtx.
10554 2018-03-14  Martin Liska  <mliska@suse.cz>
10556         * tree.c (record_node_allocation_statistics): Use
10557         get_stats_node_kind.
10558         (get_stats_node_kind): New function extracted from
10559         record_node_allocation_statistics.
10560         (free_node): Use get_stats_node_kind.
10562 2018-03-14  Richard Biener  <rguenther@suse.de>
10564         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
10565         that the value-set of ANTIC_IN doesn't grow.
10567         Revert
10568         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
10569         member.
10570         (BB_VISITED_WITH_VISITED_SUCCS): New define.
10571         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
10573 2018-03-14  Julia Koval  <julia.koval@intel.com>
10575         * config.gcc (icelake-client, icelake-server): New.
10576         (icelake): Remove.
10577         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
10578         (initial_ix86_arch_features): Ditto.
10579         (PTA_SKYLAKE): Add SGX.
10580         (PTA_ICELAKE): Remove.
10581         (PTA_ICELAKE_CLIENT): New.
10582         (PTA_ICELAKE_SERVER): New.
10583         (ix86_option_override_internal): Split up icelake on icelake client and
10584         icelake server.
10585         (get_builtin_code_for_version): Ditto.
10586         (fold_builtin_cpu): Ditto.
10587         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
10588         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
10589         * config/i386/i386.h (processor_type): Ditto.
10590         * doc/invoke.texi: Ditto.
10592 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
10594         PR sanitizer/83392
10595         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
10596         INTEGER_CST offset, add it together with bitpos / 8 and
10597         sign extend based on POINTER_SIZE.
10599         PR target/84844
10600         Revert
10601         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
10603         PR target/78090
10604         * config/i386/constraints.md (Yc): New register constraint.
10605         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
10606         Use Yc constraint for alternative 2 of operand 0.  Remove
10607         preferred_for_speed attribute.
10609 2018-03-14  Richard Biener  <rguenther@suse.de>
10611         PR tree-optimization/84830
10612         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
10613         with the old one to avoid oscillations.
10615 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
10617         PR target/83712
10618         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
10619         pseudos.
10620         (assign_by_spills): Return a flag of reload assignment failure.
10621         Do not process the reload assignment failures.  Do not spill other
10622         reload pseudos if they has the same reg class.  Update n if
10623         necessary.
10624         (lra_assign): Add a return arg.  Set up from the result of
10625         assign_by_spills call.
10626         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10627         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10628         usage_insns if it is not NULL.
10629         (spill_hard_reg_in_range): New function.
10630         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10631         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10632         function prototypes.
10633         (lra_assign): Change prototype.
10634         * lra.c (lra): Add code to deal with fails by splitting hard reg
10635         live ranges.
10637 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
10639         * config/riscv/riscv.opt (mrelax): New option.
10640         * config/riscv/riscv.c (riscv_file_start): Emit ".option
10641         "norelax" when riscv_mrelax is disabled.
10642         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
10644 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10646         PR target/84743
10647         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
10648         reassociation for int modes.
10650 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10652         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
10653         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
10654         for big-endian.
10655         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
10656         * config/aarch64/aarch64-sve.md
10657         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
10658         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
10659         (*extend<mode><Vwide>2): Rename to...
10660         (aarch64_sve_extend<mode><Vwide>2): ...this.
10661         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
10662         renaming the old pattern to...
10663         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
10664         unsigned packs.
10665         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
10666         define_expand, renaming the old pattern to...
10667         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
10668         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
10669         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
10670         account when deciding which SVE instruction the optab should use.
10671         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
10673 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10675         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
10676         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
10677         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
10678         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
10679         (tlsdesc_small_<mode>): Turn a define_expand and use
10680         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
10681         (tlsdesc_small_advsimd_<mode>): ...this.
10682         (tlsdesc_small_sve_<mode>): New pattern.
10684 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
10686         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
10687         (UNSPEC_UMUL_HIGHPART): New constants.
10688         (MUL_HIGHPART): New int iteraor.
10689         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
10690         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
10691         define_expand.
10692         (*<su>mul<mode>3_highpart): New define_insn.
10694 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
10696         PR lto/84805
10697         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
10698         incomplete types.
10700 2018-03-13  Martin Liska  <mliska@suse.cz>
10702         PR ipa/84658.
10703         * (sem_item_optimizer::sem_item_optimizer): Initialize new
10704         vector.
10705         (sem_item_optimizer::~sem_item_optimizer): Release it.
10706         (sem_item_optimizer::merge_classes): Register variable aliases.
10707         (sem_item_optimizer::fixup_pt_set): New function.
10708         (sem_item_optimizer::fixup_points_to_sets): Likewise.
10709         * ipa-icf.h: Declare new variables and functions.
10711 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
10713         PR middle-end/84834
10714         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
10715         integer_pow2p@2 and test integer_pow2p in condition.
10716         (A < 0 ? C : 0): Similarly for @1.
10718         PR middle-end/84831
10719         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
10720         characters starting at p contain '\0' character, don't look beyond
10721         that.
10723         PR target/84827
10724         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
10725         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
10727         PR target/84828
10728         * reg-stack.c (change_stack): Change update_end var from int to
10729         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
10730         also call set_block_for_insn on the newly added insns and rescan.
10732         PR target/84786
10733         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
10734         on the last operand.
10736         PR c++/84704
10737         * tree.c (stabilize_reference_1): Return save_expr (e) for
10738         STATEMENT_LIST even if it doesn't have side-effects.
10740 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
10742         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
10744 2018-03-12  Renlin Li  <renlin.li@arm.com>
10746         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
10747         aarch64_output_scalar_simd_mov_immediate.
10749 2018-03-12  Martin Sebor  <msebor@redhat.com>
10751         PR tree-optimization/83456
10752         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
10753         for perfectly overlapping calls to memcpy.
10754         (gimple_fold_builtin_memory_chk): Same.
10755         (gimple_fold_builtin_strcpy): Handle no-warning.
10756         (gimple_fold_builtin_stxcpy_chk): Same.
10757         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
10759 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
10761         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
10762         parameter.  Use it for SFmode.
10763         (rs6000_function_arg_advance_1): Adjust.
10764         (rs6000_function_arg): Adjust.
10765         (rs6000_gimplify_va_arg): Pass false for that new parameter.
10767 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
10769         PR rtl-optimization/84169
10770         PR rtl-optimization/84780
10771         * combine.c (can_combine_p): Check for a 2-insn combination whether
10772         the destination register is used between the two insns, too.
10774 2018-03-12  Richard Biener  <rguenther@suse.de>
10776         PR tree-optimization/84803
10777         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
10778         for refs DR analysis didn't process.
10780 2018-03-12  Richard Biener  <rguenther@suse.de>
10782         PR tree-optimization/84777
10783         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
10784         force-vectorize loops ignore whether we are optimizing for size.
10786 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
10788         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
10789         (TARGET_MD_ASM_ADJUST): Define.
10791 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
10792             Kito Cheng  <kito.cheng@gmail.com>
10793             Chung-Ju Wu  <jasonwucj@gmail.com>
10795         * config/nds32/nds32.c (nds32_compute_stack_frame,
10796         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
10797         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
10798         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
10799         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
10800         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
10801         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
10802         * config/nds32/nds32.md (prologue, epilogue): Use macro
10803         NDS32_V3PUSH_AVAILABLE_P to do checking.
10805 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
10807         PR debug/58150
10808         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
10809         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
10810         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
10811         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
10812         addition of most attributes on !orig_type_die or the attribute not
10813         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
10815 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10816             Chung-Ju Wu  <jasonwucj@gmail.com>
10818         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
10819         __NDS32_VH__ macro.
10820         * config/nds32/nds32.opt (mvh): New option.
10822 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10823             Chung-Ju Wu  <jasonwucj@gmail.com>
10825         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
10826         function.
10827         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
10828         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
10829         definition.
10831 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10832             Chung-Ju Wu  <jasonwucj@gmail.com>
10834         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
10835         function.
10836         * config/nds32/nds32-multiple.md (strlensi): New pattern.
10837         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
10839 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
10840             Kito Cheng  <kito.cheng@gmail.com>
10841             Chung-Ju Wu  <jasonwucj@gmail.com>
10843         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
10844         UNSPEC_FFMISM and UNSPEC_FLMISM.
10845         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
10846         for ffb, ffmism and flmism.
10847         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
10848         (unspec_ffmism): Ditto.
10849         (unspec_flmism): Ditto.
10850         (nds32_expand_builtin_impl): Check if string extension is available.
10851         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
10852         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
10854 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
10856         Reverting patch:
10857         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
10859         PR target/83712
10860         * lra-assigns.c (assign_by_spills): Return a flag of reload
10861         assignment failure.  Do not process the reload assignment
10862         failures.  Do not spill other reload pseudos if they has the same
10863         reg class.
10864         (lra_assign): Add a return arg.  Set up from the result of
10865         assign_by_spills call.
10866         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10867         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10868         usage_insns if it is not NULL.
10869         (spill_hard_reg_in_range): New function.
10870         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10871         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10872         function prototypes.
10873         (lra_assign): Change prototype.
10874         * lra.c (lra): Add code to deal with fails by splitting hard reg
10875         live ranges.
10877 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
10879         PR target/84807
10880         * config/i386/i386.opt: Replace Enforcment with Enforcement.
10882 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
10884         PR debug/84620
10885         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
10886         (dw_val_node): Add val_symbolic_view.
10887         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
10888         (symview_upper_bound): New.
10889         (new_line_info_table): Initialize symviews_since_reset.
10890         (dwarf2out_source_line): Count symviews_since_reset and set
10891         symview_upper_bound.
10892         (dw_val_equal_p): Handle symview.
10893         (add_AT_symview): New.
10894         (print_dw_val): Handle symview.
10895         (attr_checksum, attr_checksum_ordered): Likewise.
10896         (same_dw_val_p, size_of_die): Likewise.
10897         (value_format, output_die): Likewise.
10898         (add_high_low_attributes): Use add_AT_symview for entry_view.
10899         (dwarf2out_finish): Reset symview_upper_bound, clear
10900         zero_view_p.
10902 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
10904         PR target/83969
10905         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
10906         Add strict argument and use it.
10907         (rs6000_split_multireg_move): Update for new strict argument.
10908         (mem_operand_gpr): Disallow all non-offsettable addresses.
10909         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
10911 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
10913         PR target/84772
10914         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
10915         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
10916         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
10918         PR c++/84767
10919         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
10920         decl, use remap_type if we want to use the type.
10922 2018-03-09  Martin Sebor  <msebor@redhat.com>
10924         PR tree-optimization/84526
10925         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
10926         Remove dead code.
10927         (builtin_access::generic_overlap): Be prepared to handle non-array
10928         base objects.
10930 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
10932         PR rtl-optimization/84682
10933         * lra-constraints.c (process_address_1): Check is_address flag
10934         for address constraints.
10935         (process_alt_operands): Likewise.
10936         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
10937         preprocess_constraints.
10938         * recog.h (preprocess_constraints): Add oploc parameter.
10939         Adjust callers.
10940         * recog.c (preprocess_constraints): Test address_operand for
10941         CT_ADDRESS constraints.
10943 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
10945         PR target/83712
10946         * lra-assigns.c (assign_by_spills): Return a flag of reload
10947         assignment failure.  Do not process the reload assignment
10948         failures.  Do not spill other reload pseudos if they has the same
10949         reg class.
10950         (lra_assign): Add a return arg.  Set up from the result of
10951         assign_by_spills call.
10952         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10953         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10954         usage_insns if it is not NULL.
10955         (spill_hard_reg_in_range): New function.
10956         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10957         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10958         function prototypes.
10959         (lra_assign): Change prototype.
10960         * lra.c (lra): Add code to deal with fails by splitting hard reg
10961         live ranges.
10963 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10965         PR target/83193
10966         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
10967         Accept complain bool parameter.  Only emit errors if it is true.
10968         (arm_parse_cpu_option_name): Likewise.
10969         (arm_target_thumb_only): Adjust callers of the above.
10970         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
10971         prototype to take a default true bool parameter.
10972         (arm_parse_arch_option_name): Likewise.
10974 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
10975             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10977         PR jit/64089
10978         PR jit/84288
10979         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
10980         * configure: Regenerate.
10981         * configure.ac ("linker --version-script option"): New.
10982         ("linker soname option"): New.
10984 2018-03-09  Richard Biener  <rguenther@suse.de>
10986         PR tree-optimization/84775
10987         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
10988         immediate uses of predicate stmts and mark them modified.
10990         Revert
10991         PR tree-optimization/84178
10992         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
10993         to caller.
10994         (version_loop_for_if_conversion): Delay update_ssa call.
10995         (tree_if_conversion): Delay update_ssa until after predicate
10996         insertion.
10998 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11000         PR target/84763
11001         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
11002         when the function accesses prior frames.
11004 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
11006         PR debug/84456
11007         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
11008         gen_llsym, otherwise call maybe_gen_llsym.
11010         PR inline-asm/84742
11011         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
11012         has ',' character inside of it.
11014 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11016         PR target/84748
11017         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
11018         as clobbering CC_REGNUM.
11020 2018-03-08  Richard Biener  <rguenther@suse.de>
11022         PR middle-end/84552
11023         * tree-scalar-evolution.c: Include tree-into-ssa.h.
11024         (follow_copies_to_constant): Do not follow SSA names registered
11025         for update.
11027 2018-03-08  Richard Biener  <rguenther@suse.de>
11029         PR tree-optimization/84178
11030         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
11031         to caller.
11032         (version_loop_for_if_conversion): Delay update_ssa call.
11033         (tree_if_conversion): Delay update_ssa until after predicate
11034         insertion.
11036 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
11038         PR tree-optimization/84178
11039         * tree-if-conv.c (release_bb_predicate): Remove the
11040         the assertion that the stmts have NULL use_ops.
11041         Discard the statements, asserting that they haven't
11042         yet been added to a BB.
11044 2018-03-08  Richard Biener  <rguenther@suse.de>
11046         PR tree-optimization/84746
11047         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
11048         (phi_translate): Pass in destination ANTIC_OUT set.
11049         (phi_translate_1): Likewise.  For a simplified result lookup
11050         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
11051         (phi_translate_set): Adjust.
11052         (do_pre_regular_insertion): Likewise.
11053         (do_pre_partial_partial_insertion): Likewise.
11055 2018-03-08  Martin Liska  <mliska@suse.cz>
11057         PR gcov-profile/84735
11058         * doc/gcov.texi: Document usage of profile files.
11059         * gcov-io.h: Document changes in the format.
11061 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
11063         PR debug/84404
11064         PR debug/84408
11065         * dwarf2out.c (struct dw_line_info_table): Update comments for
11066         view == -1.
11067         (FORCE_RESET_NEXT_VIEW): New.
11068         (FORCE_RESETTING_VIEW_P): New.
11069         (RESETTING_VIEW_P): Check for -1 too.
11070         (ZERO_VIEW_P): Likewise.
11071         (new_line_info_table): Force-reset next view.
11072         (dwarf2out_begin_function): Likewise.
11073         (dwarf2out_source_line): Simplify zero_view_p initialization.
11074         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
11075         view directly.  Omit view when omitting .loc at line 0.
11077 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
11079         PR tree-optimization/84740
11080         * tree-switch-conversion.c (process_switch): Call build_constructors
11081         only if info.phi_count is non-zero.
11083         PR tree-optimization/84739
11084         * tree-tailcall.c (find_tail_calls): Check call arguments against
11085         DECL_ARGUMENTS (current_function_decl) rather than
11086         DECL_ARGUMENTS (func) when checking for tail recursion.
11088 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
11090         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
11091         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
11092         Volker Reichelt's entry and add entries for people that perform
11093         GCC fuzzy testing and report numerous bugs.
11095 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
11097         PR target/82411
11098         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
11099         readonly data in sdata, if that is disabled.
11100         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
11101         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
11102         -mreadonly-in-sdata option.
11104 2018-03-07  Martin Sebor  <msebor@redhat.com>
11106         PR tree-optimization/84468
11107         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
11108         basic block when looking for nul assignment.
11110 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
11112         PR target/84277
11113         * except.h (output_function_exception_table): Adjust prototype.
11114         * except.c (output_function_exception_table): Remove FNNAME parameter
11115         and add SECTION parameter.  Ouput one part of the table at a time.
11116         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
11117         the first part of the exception table and emit unwind directives.
11118         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
11119         (i386_pe_seh_cold_init): Likewise.
11120         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
11121         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
11122         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
11123         (ix86_output_call_insn): Emit a nop in one more case for SEH.
11124         * config/i386/winnt.c: Include except.h.
11125         (struct seh_frame_state): Add reg_offset, after_prologue and
11126         in_cold_section fields.
11127         (i386_pe_seh_end_prologue): Set seh->after_prologue.
11128         (i386_pe_seh_cold_init): New function.
11129         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
11130         to seh->in_cold_section.
11131         (seh_emit_push): Record the offset of the push.
11132         (seh_emit_save): Record the offet of the save.
11133         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
11134         Test seh->after_prologue to disregard the epilogue.
11135         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
11136         (i386_pe_end_cold_function): New function.
11138 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
11140         PR fortran/84565
11141         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
11142         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
11144         PR c++/84704
11145         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
11146         on tmp_var.
11147         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
11148         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
11150         PR middle-end/84723
11151         * multiple_target.c: Include tree-inline.h and intl.h.
11152         (expand_target_clones): Diagnose and fail if node->definition and
11153         !tree_versionable_function_p (node->decl).
11155 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
11157         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
11158         sprint_ul.
11159         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
11160         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
11161         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
11163 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
11165         PR target/84710
11166         * combine.c (try_combine): Use reg_or_subregno instead of handling
11167         just paradoxical SUBREGs and REGs.
11169 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
11171         * config/arc/arc.c (arc_finalize_pic): Remove function.
11172         (arc_must_save_register): We use single base PIC register, remove
11173         checks to save/restore the PIC register.
11174         (arc_expand_prologue): Likewise.
11175         * config/arc/arc-protos.h (arc_set_default_type_attributes):
11176         Remove.
11177         (arc_verify_short): Likewise.
11178         (arc_attr_type): Likewise.
11179         * config/arc/arc.c (arc_set_default_type_attributes): Remove.
11180         (walk_stores): Likewise.
11181         (arc_address_cost): Make it static.
11182         (arc_verify_short): Likewise.
11183         (branch_dest): Likewise.
11184         (arc_attr_type): Likewise.
11185         * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
11186         (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
11187         (arc_final_prescan_insn): Remove inserting the nops due to
11188         hardware hazards.  It is done in reorg step.
11189         (insn_length_variant_t): Remove.
11190         (insn_length_parameters_t): Likewise.
11191         (arc_insn_length_parameters): Likewise.
11192         (arc_get_insn_variants): Likewise.
11193         * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
11195 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
11197         PR inline-asm/84683
11198         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
11199         assertion failure.
11201         PR tree-optimization/84687
11202         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
11203         on new_node->decl.
11204         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
11206 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11208         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
11209         Rename to ppc_speculation_barrier.
11210         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
11211         __builtin_ppc_speculation_barrier.
11213 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
11215         PR target/84700
11216         * combine.c (combine_simplify_rtx): Don't try to simplify if
11217         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
11218         are equal to x.
11220 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
11222         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
11223         to 32 bytes when compiling for POWER9.
11225 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
11227         PR target/84564
11228         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
11229         regparm >= 3 with no arg reg available also for calls with
11230         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
11232         PR target/84524
11233         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
11234         orig,vex.
11235         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
11237 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
11239         PR target/84264
11240         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
11242 2018-03-05  Richard Biener  <rguenther@suse.de>
11244         PR tree-optimization/84486
11245         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
11246         When inserting a __builtin_assume_aligned call set the LHS
11247         SSA name alignment info accordingly.
11249 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
11251         PR tree-optimization/84114
11252         * config/aarch64/aarch64.c (aarch64_reassociation_width)
11253         Avoid reassociation of FLOAT_MODE addition.
11255 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
11257         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
11258         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
11259         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
11260         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
11261         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
11262         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
11263         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
11264         and -mwbnoinvd.
11265         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
11266         __builtin_ia32_wbinvd): New builtins.
11267         (SPECIAL_ARGS2): New.
11268         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
11269         (SPECIAL_ARGS2): New.
11270         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
11271         (ix86_valid_target_attribute_inner_p): Ditto.
11272         (ix86_init_mmx_sse_builtins): Add special_args2.
11273         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
11274         TARGET_WBNOINVD_P): New.
11275         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
11276         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
11277         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
11278         * config/i386/immintrin.h (_wbinvd): New intrinsic.
11279         * config/i386/pconfigintrin.h: New file.
11280         * config/i386/wbnoinvdintrin.h: Ditto.
11281         * config/i386/x86intrin.h: Add headers pconfigintrin.h and
11282         wbnoinvdintrin.h.
11283         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
11285 2018-03-05  Richard Biener  <rguenther@suse.de>
11287         PR tree-optimization/84670
11288         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
11289         member.
11290         (BB_VISITED_WITH_VISITED_SUCCS): New define.
11291         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
11292         (compute_antic_aux): Only assert the number of values in ANTIC_IN
11293         doesn't grow if all successors (recursively) were visited at least
11294         once.
11296 2018-03-05  Richard Biener  <rguenther@suse.de>
11298         PR tree-optimization/84650
11299         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
11300         if executed in the loop pipeline.
11302 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
11304         * doc/configfiles.texi (Configuration Files): Move info about
11305         conditionalizing $target-protos.h to...
11306         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
11307         differs from $target-protos.h.
11309 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
11310             Chung-Ju Wu  <jasonwucj@gmail.com>
11312         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
11313         * config/nds32/nds32-multiple.md (setmemsi): Define.
11314         * config/nds32/nds32-memory-manipulation.c
11315         (nds32_gen_dup_4_byte_to_word_value): New.
11316         (emit_setmem_word_loop): New.
11317         (emit_setmem_byte_loop): New.
11318         (nds32_expand_setmem_loop): New.
11319         (nds32_expand_setmem_loop_v3m): New.
11320         (nds32_expand_setmem_unroll): New.
11321         (nds32_expand_setmem): New.
11323 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11324             Chung-Ju Wu  <jasonwucj@gmail.com>
11326         * config/nds32/nds32-memory-manipulation.c
11327         (nds32_emit_load_store): New.
11328         (nds32_emit_post_inc_load_store): New.
11329         (nds32_emit_mem_move): New.
11330         (nds32_emit_mem_move_block): New.
11331         (nds32_expand_movmemsi_loop_unknown_size): New.
11332         (nds32_expand_movmemsi_loop_known_size): New.
11333         (nds32_expand_movmemsi_loop): New.
11334         (nds32_expand_movmemsi_unroll): New.
11335         (nds32_expand_movmemqi): Rename ...
11336         (nds32_expand_movmemsi): ... to this.
11337         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
11338         (movmemsi): ... to this.
11339         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
11340         (nds32_expand_movmemsi): ... to this.
11342 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11343             Monk Chiang  <sh.chiang04@gmail.com>
11344             Chung-Ju Wu  <jasonwucj@gmail.com>
11346         * config/nds32/nds32-protos.h
11347         (nds32_expand_load_multiple): New arguments.
11348         (nds32_expand_store_multiple): Ditto.
11349         (nds32_valid_multiple_load_store): Rename ...
11350         (nds32_valid_multiple_load_store_p): ... to this.
11351         * config/nds32/nds32-memory-manipulation.c
11352         (nds32_expand_load_multiple): Refine implementation.
11353         (nds32_expand_store_multiple): Ditto.
11354         * config/nds32/nds32-multiple.md
11355         (load_multiple): Update nds32_expand_load_multiple interface.
11356         (store_multiple): Update nds32_expand_store_multiple interface.
11357         * config/nds32/nds32-predicates.c
11358         (nds32_valid_multiple_load_store): Rename ...
11359         (nds32_valid_multiple_load_store_p): ... to this and refine
11360         implementation.
11361         * config/nds32/predicates.md
11362         (nds32_load_multiple_and_update_address_operation): New predicate.
11363         (nds32_store_multiple_and_update_address_operation): New predicate.
11365 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
11366             Chung-Ju Wu  <jasonwucj@gmail.com>
11368         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
11369         (combo): New attribute.
11370         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
11372 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
11374         * config/nds32/nds32.opt: Change -mcmodel= default value.
11376 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
11377             Monk Chiang  <sh.chiang04@gmail.com>
11378             Chung-Ju Wu  <jasonwucj@gmail.com>
11380         * config/nds32/constants.md (unspec_element): New enum.
11381         * config/nds32/constraints.md (Umw): New constraint.
11382         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
11383         * config/nds32/nds32-intrinsic.md: Likewise.
11384         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
11385         (nds32_valid_smw_lwm_base_p): New.
11386         (nds32_output_smw_single_word): New.
11387         (nds32_output_lmw_single_word): New.
11388         (nds32_expand_unaligned_load): New.
11389         (nds32_expand_unaligned_store): New.
11390         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
11391         (nds32_output_smw_single_word): Declare.
11392         (nds32_output_lmw_single_word): Declare.
11393         (nds32_expand_unaligned_load): Declare.
11394         (nds32_expand_unaligned_store): Declare.
11395         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
11396         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
11397         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
11398         NDS32_BUILTIN_UASTORE_DW.
11399         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
11400         predicate.
11402 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
11403             Kito Cheng  <kito.cheng@gmail.com>
11404             Chung-Ju Wu  <jasonwucj@gmail.com>
11406         * config/nds32/nds32-intrinsic.c
11407         (nds32_expand_builtin_null_ftype_reg): Delete.
11408         (nds32_expand_builtin_reg_ftype_imm): Ditto.
11409         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
11410         (nds32_read_argument): New.
11411         (nds32_legitimize_target): Ditto.
11412         (nds32_legitimize_argument): Ditto.
11413         (nds32_check_constant_argument): Ditto.
11414         (nds32_expand_unop_builtin): Ditto.
11415         (nds32_expand_unopimm_builtin): Ditto.
11416         (nds32_expand_binop_builtin): Ditto.
11417         (nds32_builtin_decl_impl): Ditto.
11418         (builtin_description): Ditto.
11419         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
11420         (nds32_init_builtins_impl): Ditto.
11421         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
11422         (nds32_builtin_decl): New.
11423         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
11424         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
11426 2018-03-02  Jeff Law  <law@redhat.com>
11428         * reorg.c (stop_search_p): Handle DEBUG_INSN.
11429         (redundant_insn, fill_simple_delay_slots): Likewise.
11430         (fill_slots_from_thread): Likewise.
11431         * resource.c (mark_referenced_resources): Likewise.
11432         (mark_set_resources, find_dead_or_set_registers): Likewise.
11434 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11436         * substring-locations.h (format_warning_va): Formatting fix for
11437         ATTRIBUTE_GCC_DIAG.
11438         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
11439         argument.
11440         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
11441         * substring-locations.c: Include intl.h.
11442         (format_warning_va): Turned into small wrapper around
11443         format_warning_n_va, renamed to ...
11444         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
11445         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
11446         use ngettext.
11447         (format_warning_at_substring_n): New function.
11448         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
11449         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
11450         format_warning_at_substring with just a shorter name instead of
11451         const function pointer.
11452         (fmtwarn_n): New function.
11453         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
11454         appropriate, get rid of all the fmtstr temporaries, move conditionals
11455         with G_() wrapped string literals directly into fmtwarn arguments,
11456         cast dir.len to (int), formatting fixes.
11458 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
11460         * doc/invoke.texi: Remove "Cilk Plus" references.
11462 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11463             Richard Biener  <rguenther@suse.de>
11465         PR ipa/84628
11466         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
11467         for error or warning attributes if CALL_FROM_THUNK_P is set.
11468         Formatting fixes.
11470 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11472         PR target/56540
11473         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
11474         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
11476         PR target/56540
11477         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
11478         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
11480         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
11481         instead of -1U in last predictors element's probability member.
11483 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
11485         PR ipa/83983
11486         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
11487         arguments if they are comparable.
11489 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
11491         PR tree-optimization/84634
11492         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
11493         masks and masked_loop_p with a single loop_masks, making sure it's
11494         null for bb vectorization.
11496 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
11498         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
11499         (vect_analyze_data_ref_access): Use loop->safe_len rather than
11500         loop->force_vectorize to check whether there is no alias.
11502 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
11504         PR target/84614
11505         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
11506         prototypes.
11507         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
11508         comments.
11509         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
11510         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
11511         instead of a loop around prev_real_insn.
11512         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
11513         prev_real_insn.
11515         PR inline-asm/84625
11516         * config/i386/i386.c (ix86_print_operand): Use conditional
11517         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
11518         zero vector.
11520 2018-03-02  Richard Biener  <rguenther@suse.de>
11522         PR tree-optimization/84427
11523         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
11524         (bitmap_set_subtract_values): Rewrite to handle multiple
11525         exprs per value.
11526         (clean): Likewise.
11527         (prune_clobbered_mems): Likewise.
11528         (phi_translate): Take edge instead of pred/phiblock.
11529         (phi_translate_1): Likewise.
11530         (phi_translate_set): Likewise.  Insert all translated
11531         exprs for a value into the set, keeping possibly multiple
11532         expressions per value.
11533         (compute_antic_aux): Adjust for phi_translate changes.
11534         When intersecting union the expressions and prune those
11535         not in the final value set, keeping possibly multiple
11536         expressions per value.  Do not use value-insertion
11537         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
11538         all expressions.  Add verification that the value-sets
11539         only shrink during iteration.
11540         (compute_partial_antic_aux): Adjust for the phi_translate changes.
11541         (do_pre_regular_insertion): Likewise.
11542         (do_pre_partial_partial_insertion): Likewise.
11544 2018-03-02  Richard Biener  <rguenther@suse.de>
11546         PR target/82005
11547         * config/darwin.c (saved_debug_info_level): New static global.
11548         (darwin_asm_lto_start): Disable debug info generation for LTO out.
11549         (darwin_asm_lto_end): Restore debug info generation settings.
11551 2018-03-01  Martin Liska  <mliska@suse.cz>
11553         PR sanitizer/82484
11554         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11555         volatile arguments.
11557 2018-03-01  Richard Biener  <rguenther@suse.de>
11559         PR debug/84645
11560         * dwarf2out.c (gen_variable_die): Properly handle late VLA
11561         type annotation with LTO when debug was disabled at compile-time.
11563 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
11565         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
11566         XINT with INTVAL.
11567         (mips_final_postscan_insn): Likewise.
11569 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
11571         PR rtl-optimization/84528
11572         * alias.c (init_alias_target): Add commentary.
11573         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
11574         a unique base value if the frame pointer is not eliminated
11575         to the stack pointer.
11577 2018-03-01  Tom de Vries  <tom@codesourcery.com>
11579         PR rtl-optimization/83327
11580         * lra-int.h (hard_regs_spilled_into): Declare.
11581         * lra.c (hard_regs_spilled_into): Define.
11582         (init_reg_info): Init hard_regs_spilled_into.
11583         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
11584         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
11585         (process_bb_lives): Handle hard_regs_spilled_into.
11586         (lra_create_live_ranges_1): Before doing liveness propagation, clear
11587         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
11589 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
11591         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
11592         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
11593         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
11594         * config/rs6000/aix72.h: New file.
11596 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
11598         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
11599         instead of warning_at with conditional singular and plural messages
11600         where possible.
11602         PR target/52991
11603         * stor-layout.c (update_alignment_for_field): For
11604         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
11605         && !DECL_PACKED (field), do the alignment update, just use
11606         only desired_align instead of MAX (type_align, desired_align)
11607         as the alignment.
11608         (place_field): Don't do known_align < desired_align handling
11609         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
11610         is non-NULL, instead do it after rli->prev_field handling and
11611         only if not within a bitfield word.  For DECL_PACKED (field)
11612         use type_align of BITS_PER_UNIT.
11614 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
11616         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
11617         superfluous parentheses and trailing spaces.
11619 2018-02-28  Richard Biener  <rguenther@suse.de>
11621         PR tree-optimization/84584
11622         * graphite-scop-detection.c (scop_detection::add_scop): Discard
11623         SCoPs with fake exit edge.
11625 2018-02-28  Martin Liska  <mliska@suse.cz>
11627         PR testsuite/84597
11628         * timevar.c (timer::print): Fix format to properly print 100%
11629         values.
11631 2018-02-28  Richard Biener  <rguenther@suse.de>
11633         PR middle-end/84607
11634         * genmatch.c (capture_info::walk_match): Do not mark
11635         captured expressions without operands as expr_p given
11636         they act more like predicates and should be subject to
11637         "lost tail" side-effect preserving.
11639 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
11641         PR rtl-optimization/81611
11642         * auto-inc-dec.c (attempt_change): Move dead note from
11643         mem_insn if it's the next use of regno
11644         (find_address): Take address use of reg holding
11645         non-incremented value.  Add parm to limit search to the named
11646         reg only.
11647         (merge_in_block): Attempt to use a mem insn that is the next
11648         use of the original regno.
11650 2018-02-27  Martin Sebor  <msebor@redhat.com>
11652         PR c++/83871
11653         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
11654         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
11656 2018-02-27  Martin Sebor  <msebor@redhat.com>
11658         PR translation/84207
11659         * diagnostic-core.h (warning_n, error_n, inform_n): Change
11660         n argument to unsigned HOST_WIDE_INT.
11661         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
11662         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
11663         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
11664         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
11666 2018-02-27  Richard Biener  <rguenther@suse.de>
11668         PR tree-optimization/84512
11669         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
11670         Do not use the estimate returned from record_stmt_cost for
11671         the scalar iteration cost but sum properly using add_stmt_cost.
11673 2018-02-27  Richard Biener  <rguenther@suse.de>
11675         PR tree-optimization/84466
11676         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
11677         Adjust last change to less strictly validate use operands.
11679 2018-02-27  Martin Liska  <mliska@suse.cz>
11681         PR gcov-profile/84548
11682         * gcov.c (process_file): Allow partial overlap and consider it
11683         also as group functions.
11684         (output_lines): Properly calculate range of lines for a group.
11686 2018-02-27  Martin Liska  <mliska@suse.cz>
11688         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
11689         'ggc' suffixes.  Change first column width.
11690         (timer::print): Fix formatting of the column.
11692 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
11694         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
11695         preserve inline entry blocks for the sake of debug inline
11696         entry point markers alone.
11697         (remove_unused_locals): Suggest in comments a better place to
11698         force the preservation of inline entry blocks that are
11699         otherwise unused, but do not preserve them.
11701 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11703         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
11705 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11707         PR target/84039
11708         * config/i386/constraints.md (Bs): Replace
11709         ix86_indirect_branch_register with
11710         TARGET_INDIRECT_BRANCH_REGISTER.
11711         (Bw): Likewise.
11712         * config/i386/i386.md (indirect_jump): Likewise.
11713         (tablejump): Likewise.
11714         (*sibcall_memory): Likewise.
11715         (*sibcall_value_memory): Likewise.
11716         Peepholes of indirect call and jump via memory: Likewise.
11717         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
11718         (*sibcall_value_GOT_32): Likewise.
11719         * config/i386/predicates.md (indirect_branch_operand): Likewise.
11720         (GOT_memory_operand): Likewise.
11721         (call_insn_operand): Likewise.
11722         (sibcall_insn_operand): Likewise.
11723         (GOT32_symbol_operand): Likewise.
11724         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
11726 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
11728         PR rtl-optimization/83496
11729         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
11730         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
11731         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
11732         redundant insn, if any.
11733         (relax_delay_slots): Likewise.
11734         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
11736 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
11738         PR tree-optimization/83965
11739         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
11740         that grouped statements are part of a reduction chain.  Return
11741         true if the statement is not marked as a reduction itself but
11742         is part of a group.
11743         (vect_recog_dot_prod_pattern): Don't check whether the statement
11744         is part of a group here.
11745         (vect_recog_sad_pattern): Likewise.
11746         (vect_recog_widen_sum_pattern): Likewise.
11748 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
11750         PR debug/84545
11751         * final.c (rest_of_clean_state): Also look for calls inside sequences.
11753 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
11755         PR target/84530
11756         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
11757         the bool argument.
11758         (ix86_output_indirect_function_return): New prototype.
11759         (ix86_split_simple_return_pop_internal): Likewise.
11760         * config/i386/i386.c (indirect_return_via_cx): New.
11761         (indirect_return_via_cx_bnd): Likewise.
11762         (indirect_thunk_name): Handle return va CX_REG.
11763         (output_indirect_thunk_function): Create alias for
11764         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
11765         (ix86_output_indirect_jmp): Remove the bool argument.
11766         (ix86_output_indirect_function_return): New function.
11767         (ix86_split_simple_return_pop_internal): Likewise.
11768         * config/i386/i386.md (*indirect_jump): Don't pass false
11769         to ix86_output_indirect_jmp.
11770         (*tablejump_1): Likewise.
11771         (simple_return_pop_internal): Change it to define_insn_and_split.
11772         Call ix86_split_simple_return_pop_internal to split it for
11773         -mfunction-return=.
11774         (simple_return_indirect_internal): Call
11775         ix86_output_indirect_function_return instead of
11776         ix86_output_indirect_jmp.
11778 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
11780         PR bootstrap/84405
11781         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
11782         memset and value initialization afterwards.
11784 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
11786         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
11788 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11790         PR target/84521
11791         * common/config/aarch64/aarch64-common.c
11792         (aarch_option_optimization_table[]): Switch
11793         off fomit-frame-pointer
11795 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
11796             Chung-Ju Wu  <jasonwucj@gmail.com>
11798         * config/nds32/nds32-multiple.md (load_multiple): Disallow
11799         volatile memory.
11800         (store_multiple): Ditto.
11802 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
11804         * config.gcc: Add --with-cpu support for nds32 target.
11805         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
11806         * config/nds32/nds32.opt: Add -mcpu= option.
11808 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
11810         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
11811         isel=yes): Warn for these deprecated options.
11813 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
11815         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
11816         ISA_2_5_MASKS_EMBEDDED.
11818 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
11820         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
11821         p->max as pointers rather than using iterative_hash_expr.
11823 2018-02-23  Carl Love  <cel@us.ibm.com>
11825         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
11826         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
11827         BU_P8V_OVERLOAD_2.
11828         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
11829         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
11830         P8V_BUILTIN_VEC_VUNSIGNED2.
11832 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
11834         PR target/81572
11835         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
11836         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
11837         LRA_UNKNOWN_ALT.
11838         * lra-constraints.c (curr_insn_transform): Set up
11839         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
11840         LRA_UNKNOWN_ALT.
11841         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
11842         * lra-eliminations.c (spill_pseudos): Ditto.
11843         (process_insn_for_elimination): Ditto.
11844         * lra-lives.c (reg_early_clobber_p): Use the new macros.
11845         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
11846         LRA_NON_CLOBBERED_ALT.
11848 2018-02-22  Martin Sebor  <msebor@redhat.com>
11850         PR tree-optimization/84480
11851         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
11852         to maybe_diag_stxncpy_trunc.  Call it.
11853         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
11854         from gimple_fold_builtin_strcpy.  Print inlining stack.
11855         (handle_builtin_stxncpy): Print inlining stack.
11856         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
11858 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
11860         PR target/84176
11861         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
11862         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
11863         and -fcheck-pointer-bounds are used together.
11864         (indirect_thunk_prefix): New enum.
11865         (indirect_thunk_need_prefix): New function.
11866         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
11867         "_nt" instead of "_bnd" for NOTRACK prefix.
11868         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
11869         (output_indirect_thunk_function): Likewise.
11870         (): Likewise.
11871         (ix86_code_end): Update output_indirect_thunk_function calls.
11872         (ix86_output_indirect_branch_via_reg): Replace
11873         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
11874         (ix86_output_indirect_branch_via_push): Likewise.
11875         (ix86_output_function_return): Likewise.
11876         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
11877         incompatible with -fcf-protection=branch and
11878         -fcheck-pointer-bounds.
11880 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11882         PR target/83335
11883         * config/aarch64/aarch64.c (aarch64_print_address_internal):
11884         Change gcc_assert call to output_operand_lossage.
11886 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11888         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
11890 2018-02-22  DJ Delorie  <dj@redhat.com>
11891             Sebastian Perta  <sebastian.perta@renesas.com>
11892             Oleg Endo  <olegendo@gcc.gnu.org>
11894         * config/rx/rx.c (rx_rtx_costs): New function.
11895         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
11897 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11899         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
11901 2018-02-22  Martin Liska  <mliska@suse.cz>
11903         PR driver/83193
11904         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
11905         Add "native" as a possible value.
11907 2018-02-22  Martin Liska  <mliska@suse.cz>
11909         PR driver/83193
11910         * config/i386/i386.c (ix86_option_override_internal):
11911         Add "native" as a possible value for -march and -mtune.
11913 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
11915         PR target/84502
11916         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
11917         to all type variants.
11919         PR tree-optimization/84503
11920         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
11921         width as info->bitpos + info->bitsize - start.
11922         (merged_store_group::merge_overlapping): Simplify width computation.
11923         (check_no_overlap): New function.
11924         (imm_store_chain_info::try_coalesce_bswap): Compute expected
11925         start + width and last_order of the group, fail if check_no_overlap
11926         fails.
11927         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
11928         to group if check_no_overlap fails.
11930 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
11932         * config/rs6000/altivec.md: Delete contraint arguments to
11933         define_expand, define_split, and define_peephole2, and in
11934         define_insn_and_split if always unused.
11935         * config/rs6000/darwin.md: Ditto.
11936         * config/rs6000/dfp.md: Ditto.
11937         * config/rs6000/rs6000.md: Ditto.
11938         * config/rs6000/sync.md: Ditto.
11939         * config/rs6000/vector.md: Ditto.
11940         * config/rs6000/vsx.md: Ditto.
11942 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
11944         * config/rs6000/altivec.md: Write output control strings as braced
11945         blocks instead of double-quoted strings.
11946         * config/rs6000/darwin.md: Ditto.
11947         * config/rs6000/rs6000.md: Ditto.
11948         * config/rs6000/vector.md: Ditto.
11949         * config/rs6000/vsx.md: Ditto.
11951 2018-02-21  Jason Merrill  <jason@redhat.com>
11953         PR c++/84314 - ICE with templates and fastcall attribute.
11954         * attribs.c (build_type_attribute_qual_variant): Remove assert.
11956 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
11958         * ipa-cp.c (determine_versionability): Fix comment typos.
11960 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
11962         PR c/84229
11963         * ipa-cp.c (determine_versionability): Do not version functions caling
11964         va_arg_pack.
11966 2018-02-21  Martin Liska  <mliska@suse.cz>
11968         PR driver/83193
11969         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
11970         Add "native" as a possible value.
11971         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
11972         the macro when native cpu detection is available.
11974 2018-02-21  Martin Liska  <mliska@suse.cz>
11976         PR driver/83193
11977         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
11978         Add "native" as a possible value.
11979         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
11980         when native cpu detection is available.
11982 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
11983             Martin Sebor  <msebor@redhat.com>
11985         PR tree-optimization/84478
11986         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
11987         false.
11988         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
11989         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
11990         support which is conservatively correct, for 2 only stay conservative
11991         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
11992         argument to the 2 argument get_range_strlen, adjust 6 arg
11993         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
11994         false.
11995         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
11996         (gimple_fold_builtin_strlen): Pass true as last argument to
11997         get_range_strlen.
11999 2018-02-20  Martin Sebor  <msebor@redhat.com>
12001         PR middle-end/84095
12002         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
12003         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
12004         (builtin_memref::builtin_memref): Factor out parts into
12005         set_base_and_offset and call it.
12007 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
12009         PR middle-end/84406
12010         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
12011         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
12012         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
12013         search at the associated MODE_INT.
12015 2018-02-20  Jeff Law  <law@redhat.com>
12017         PR middle-end/82123
12018         PR tree-optimization/81592
12019         PR middle-end/79257
12020         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
12021         for range data rather than using global data.
12022         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
12023         range data rather than using global data.
12024         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
12025         pass it to children as needed.
12026         (struct directive::fmtresult): Similarly.
12027         (struct directive::set_width): Similarly.
12028         (struct directive::set_precision): Similarly.
12029         (format_integer, format_directive, parse_directive): Similarly.
12030         (format_none): Accept unnamed vr_values parameter.
12031         (format_percent, format_floating, format_character): Similarly.
12032         (format_string, format_plain): Similarly.
12033         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
12034         the EVRP range analyzer for range data rather than using global data.
12035         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
12036         gimple-ssa-evrp-analyze.h
12037         (class sprintf_dom_walker): Add after_dom_children member function.
12038         Add evrp_range_analyzer member.
12039         (sprintf_dom_walker::before_dom_children): Call into the EVRP
12040         range analyzer as needed.
12041         (sprintf_dom_walker::after_dom_children): New member function.
12042         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
12043         if not optimizing.
12044         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
12045         (evrp_range_analyzer::pop_to_marker): Likewise.
12047 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
12049         PR tree-optimization/84419
12050         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
12051         with the required type if its current type is compatible but
12052         different.
12054 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
12056         PR middle-end/82004
12057         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
12058         after vectorization.
12060 2018-02-20  Martin Liska  <mliska@suse.cz>
12062         PR driver/83193
12063         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
12064         possible values if we don't have a hint.
12066 2018-02-20  Martin Liska  <mliska@suse.cz>
12068         PR c/84310
12069         PR target/79747
12070         * final.c (shorten_branches): Build align_tab array with one
12071         more element.
12072         * opts.c (finish_options): Add alignment option limit check.
12073         (MAX_CODE_ALIGN): Likewise.
12074         (MAX_CODE_ALIGN_VALUE): Likewise.
12075         * doc/invoke.texi: Document maximum allowed option value for
12076         all -falign-* options.
12078 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
12080         PR target/84146
12081         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
12082         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
12083         * var-tracking.c (emit_note_insn_var_location): Remove all references
12084         to NOTE_INSN_CALL_ARG_LOCATION.
12085         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
12086         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
12087         Use copy_rtx_if_shared.
12088         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
12089         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
12090         (dwarf2out_var_location): Remove handling of
12091         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
12092         on call_insn.
12093         * final.c (final_scan_insn): Remove all references to
12094         NOTE_INSN_CALL_ARG_LOCATION.
12095         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
12096         before dumping final insns.
12097         * except.c (emit_note_eh_region_end): Remove all references to
12098         NOTE_INSN_CALL_ARG_LOCATION.
12099         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
12100         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
12101         * config/arc/arc.c (hwloop_optimize): Likewise.
12102         * config/arm/arm.c (create_fix_barrier): Likewise.
12103         * config/s390/s390.c (s390_chunkify_start): Likewise.
12104         * config/sh/sh.c (find_barrier): Likewise.
12105         * config/i386/i386.c (rest_of_insert_endbranch,
12106         ix86_seh_fixup_eh_fallthru): Likewise.
12107         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
12108         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
12109         * config/frv/frv.c (frv_function_prologue): Likewise.
12110         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
12111         reg note.
12112         (note_outside_basic_block_p): Remove all references to
12113         NOTE_INSN_CALL_ARG_LOCATION.
12114         * gengtype.c (adjust_field_rtx_def): Likewise.
12115         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
12116         Likewise.
12117         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
12118         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
12120         PR c++/84444
12121         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
12122         is ADDR_EXPR.
12124         PR tree-optimization/84452
12125         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
12126         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
12127         is NULL.
12129 2018-02-19  Martin Liska  <mliska@suse.cz>
12131         PR sanitizer/82183
12132         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
12134 2018-02-19  Martin Liska  <mliska@suse.cz>
12135             Richard Sandiford  <richard.sandiford@linaro.org>
12137         PR tree-optimization/82491
12138         * gimple-fold.c (get_base_constructor): Make earlier bail out
12139         to prevent ubsan.
12141 2018-02-19  Carl Love  <cel@us.ibm.com>
12143         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
12144         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
12145         BU_P8V_OVERLOAD_1.
12146         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
12147         P8V_BUILTIN_VEC_NEG.
12149 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
12151         * config/rl78/rl78.md (movdf): New define expand.
12153 2018-02-19  Martin Liska  <mliska@suse.cz>
12155         PR other/80589
12156         * doc/invoke.texi: Fix typo.
12157         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
12159 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
12161         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
12162         handle rs6000_single_float and rs6000_double_float specially for
12163         e500 family CPUs.
12165 2018-02-16  Jeff Law  <law@redhat.com>
12167         * config/rx/rx.c (add_pop_cfi_notes): New function.;
12168         (pop_regs): Use it.
12170 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
12172         PR ipa/84425
12173         * ipa-inline.c (inline_small_functions): Fix a typo.
12175 2018-02-16  Nathan Sidwell  <nathan@acm.org>
12177         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
12179 2018-02-16  Carl Love  <cel@us.ibm.com>
12181         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
12182         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
12183         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
12184         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
12185         expansion to P8V_BUILTIN_VEC_FLOAT2.
12187 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
12189         PR rtl-optimization/70023
12190         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
12191         src_regno into account.
12193 2018-02-16  Carl Love  <cel@us.ibm.com>
12195         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
12196         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
12197         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
12198         * config/rs6000/rs6000.c: Remove case statements for
12199         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
12200         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
12201         and P9V_BUILTIN_VEC_VINSERT4B.
12202         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
12203         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
12204         * config/rs6000/vsx.md:
12205         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
12206         vec_insert4b.
12208 2018-02-16  Carl Love  <cel@us.ibm.com>
12210         * config/rs6000/altivec.h: Add builtin names vec_extract4b
12211         vec_insert4b.
12212         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
12213         definitions.
12214         * config/rs6000/rs6000-c.c: Add the definitions for
12215         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
12216         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
12217         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
12218         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
12219         definition for insert4b and define insn *insert3b_internal.
12220         * doc/extend.texi: Add documentation for vec_extract4b.
12222 2018-02-16  Nathan Sidwell  <nathan@acm.org>
12224         * doc/extend.texi (Backwards Compatibility): Mention friend
12225         injection.  Note for-scope is deprecated.
12226         * doc/invoke.texi (-ffriend-injection): Deprecate.
12228 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
12230         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
12231         that moved to I2, also allow destinations that are a paradoxical
12232         subreg (instead of a normal reg).
12234 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
12236         PR target/83831
12237         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
12238         to QImode.
12240 2018-02-16  Richard Biener  <rguenther@suse.de>
12242         PR tree-optimization/84037
12243         PR tree-optimization/84016
12244         PR target/82862
12245         * config/i386/i386.c (ix86_builtin_vectorization_cost):
12246         Adjust vec_construct for the fact we need additional higher latency
12247         128bit inserts for AVX256 and AVX512 vector builds.
12248         (ix86_add_stmt_cost): Scale vector construction cost for
12249         elementwise loads.
12251 2018-02-16  Richard Biener  <rguenther@suse.de>
12253         PR tree-optimization/84417
12254         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
12255         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
12256         (non_rewritable_lvalue_p): Likewise, use poly-ints.
12258 2018-02-16  Martin Liska  <mliska@suse.cz>
12260         PR sanitizer/84307
12261         * internal-fn.def (ASAN_CHECK): Set proper flags.
12262         (ASAN_MARK): Likewise.
12264 2018-02-16  Julia Koval  <julia.koval@intel.com>
12266         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
12267         from PTA_CANNONLAKE.
12269 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
12271         PR target/84272
12272         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
12273         Use ++iter rather than iter++ for std::list iterators.
12274         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
12275         defer deleting them until all nodes in the forest are processed.  Do
12276         free even leaf nodes.  Change to_process into auto_vec.
12278         PR bootstrap/84405
12279         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
12280         * vec.h (vec_default_construct): Use memset instead of placement new
12281         if BROKEN_VALUE_INITIALIZATION is defined.
12282         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
12283         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
12284         is defined.
12286         PR rtl-optimization/83723
12287         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
12288         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
12289         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
12290         recursive calls.
12291         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
12292         callers.
12293         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
12295 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
12297         PR rtl-optimization/81443
12298         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
12299         from inner REGs to paradoxical SUBREGs.
12301 2018-02-16  Richard Biener  <rguenther@suse.de>
12303         PR tree-optimization/84399
12304         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
12305         For operands we can analyze at their definition make sure we can
12306         analyze them at each use as well.
12308 2018-02-16  Richard Biener  <rguenther@suse.de>
12310         PR tree-optimization/84190
12311         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
12312         volatile accesses if the decl isn't volatile.
12314 2018-02-15  Jason Merrill  <jason@redhat.com>
12316         PR c++/84314 - ICE with templates and fastcall attribute.
12317         * attribs.c (build_type_attribute_qual_variant): Don't clobber
12318         TYPE_CANONICAL on an existing type.
12320 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
12322         PR tree-optimization/84383
12323         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
12324         dstoff nor call operand_equal_p if dstbase is NULL.
12326         PR tree-optimization/84334
12327         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
12328         also a CONSTANT_CLASS_P, punt.
12330 2018-02-14  Jim Wilson  <jimw@sifive.com>
12332         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
12333         first SMALL_OPERAND check.  New local min_second_step.  Move assert
12334         to where locals are set.  Add TARGET_RVC support.
12335         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
12337 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
12339         * doc/invoke.texi: Correct -Wformat-overflow code sample.
12341 2018-02-14  Martin Sebor  <msebor@redhat.com>
12343         PR tree-optimization/83698
12344         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
12345         arrays constrain the offset range to their bounds.
12346         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
12347         (builtin_access::overlap): Avoid setting the size of overlap if it's
12348         already been set.
12349         (maybe_diag_overlap): Also consider arrays when deciding what values
12350         of offsets to include in diagnostics.
12352 2018-02-14  Martin Sebor  <msebor@redhat.com>
12354         PR c/84108
12355         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
12356         that correspond to the kind of a declaration.
12358 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
12360         PR target/83984
12361         * config/pa/pa.md: Load address of PIC label using the linkage table
12362         if the label is nonlocal.
12364 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
12366         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
12367         warning message if user requests -maltivec=be.
12368         * doc/invoke.texi: Document deprecation of -maltivec=be.
12370 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
12372         PR target/84220
12373         * config/rs6000/rs6000-c.c: Update definitions for
12374         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
12375         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
12377 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
12379         PR target/84239
12380         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
12381         add _get_ssp intrinsics. Remove argument from
12382         __builtin_ia32_rdssp[d|q].
12383         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
12384         * config/i386/i386-builtin.def: Remove argument from
12385         __builtin_ia32_rdssp[d|q].
12386         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
12387         ix86_expand_special_args_builtin for _rdssp[d|q].
12388         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
12389         Clear register before usage.
12390         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
12391         Add documentation for new _get_ssp and _inc_ssp intrinsics.
12393 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
12395         PR tree-optimization/84357
12396         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
12397         operand 1 of an ARRAY_REF too.
12399 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
12401         PR target/83831
12402         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
12403         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
12404         declarations.
12405         (set_of_reg): New struct.
12406         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
12407         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
12408         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
12409         functions.
12410         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
12411         Split into bitclr, bitset, bitinvert patterns if appropriate.
12412         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
12413         use rx_fuse_in_memory_bitop.
12414         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
12415         to named insn, correct maximum insn length.
12417 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
12419         PR target/79242
12420         * machmode.def: Define a complex mode for PARTIAL_INT.
12421         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
12422         MODE_PARTIAL_INT.
12423         * doc/rtl.texi: Document CSPImode.
12424         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
12425         handling.
12426         (msp430_hard_regno_nregs_with_padding): Likewise.
12428 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
12430         PR target/84279
12431         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
12433 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
12435         PR rtl-optimization/84169
12436         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
12437         we generated a parallel as new i3 and we split that to new i2 and i3
12438         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
12439         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
12440         those to i2, not i1.  Partially rewrite this scan code.
12442 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
12444         PR c/82210
12445         * stor-layout.c (place_field): For variable length fields, adjust
12446         offset_align afterwards not just based on the field's alignment,
12447         but also on the size.
12449         PR middle-end/84309
12450         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
12451         of exps and logs in the use_exp2 case.
12453 2018-02-13  Jeff Law  <law@redhat.com>
12455         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
12456         entry for "vector".
12458         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
12459         ARGS as unused.
12461 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
12463         PR debug/84342
12464         PR debug/84319
12465         * common.opt (gas-loc-support, gas-locview-support): New.
12466         (ginline-points, ginternal-reset-location-views): New.
12467         * doc/invoke.texi: Document them.  Use @itemx where intended.
12468         (gvariable-location-views): Adjust.
12469         * target.def (reset_location_view): New.
12470         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
12471         (TARGET_RESET_LOCATION_VIEW): New.
12472         * doc/tm.texi: Rebuilt.
12473         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
12474         (dwarf2out_default_as_locview_support): New.
12475         (output_asm_line_debug_info): Use option variables.
12476         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
12477         (output_loc_list): Likewise.
12478         (add_high_low_attributes): Check option variables.
12479         Don't output entry view attribute in strict mode.
12480         (gen_inlined_subroutine_die): Check option variables.
12481         (dwarf2out_inline_entry): Likewise.
12482         (init_sections_and_labels): Likewise.
12483         (dwarf2out_early_finish): Likewise.
12484         (maybe_reset_location_view): New, from...
12485         (dwarf2out_var_location): ... here.  Call it.
12486         * debug.h (dwarf2out_default_as_loc_support): Declare.
12487         (dwarf2out_default_as_locview_support): Declare.
12488         * hooks.c (hook_int_rtx_insn_0): New.
12489         * hooks.h (hook_int_rtx_insn_0): Declare.
12490         * toplev.c (process_options): Take -gas-loc-support and
12491         -gas-locview-support from dwarf2out.  Enable
12492         -gvariable-location-views by default only with locview
12493         assembler support.  Enable -ginternal-reset-location-views by
12494         default only if the target defines the corresponding hook.
12495         Enable -ginline-points by default if location views are
12496         enabled; force it disabled if statement frontiers are
12497         disabled.
12498         * tree-inline.c (expand_call_inline): Check option variables.
12499         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
12501 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
12503         PR tree-optimization/84321
12504         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
12505         handling.  Also check whether the anti-range contains any values
12506         that satisfy the mask; switch to a VR_RANGE if not.
12508 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
12510         PR sanitizer/84340
12511         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
12513 2018-02-13  Martin Jambor  <mjambor@suse.cz>
12515         PR c++/83990
12516         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
12517         of call statements, also set location of a load to a temporary.
12519 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
12521         * config/rl78/rl78.c (add_vector_labels): New function.
12522         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
12523         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
12524         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
12525         which checks that no arguments are passed.
12526         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
12527         * doc/extend.texi: Documentation for the new attribute.
12529 2018-02-13  Andreas Schwab  <schwab@suse.de>
12531         * config/riscv/linux.h (CPP_SPEC): Define.
12533 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
12535         PR target/84335
12536         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
12537         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
12538         OPTION_MASK_ISA_AES as first argument to def_builtin_const
12539         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
12540         instead of OPTION_MASK_ISA_PCLMUL as first argument to
12541         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
12542         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
12543         temporarily for AES and PCLMUL builtins.
12545         PR tree-optimization/84339
12546         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
12547         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
12548         Formatting fixes.
12550         PR middle-end/84309
12551         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
12552         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
12553         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
12554         inline function.
12555         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
12556         inline function.
12557         * omp-simd-clone.h: New file.
12558         * omp-simd-clone.c: Include omp-simd-clone.h.
12559         (expand_simd_clones): No longer static.
12560         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
12561         cgraph.h and omp-simd-clone.h.
12562         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
12563         (vect_recog_widen_shift_pattern): Formatting fix.
12564         (vect_pattern_recog_1): Don't check optab for calls.
12566         PR target/84336
12567         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
12568         operands[2] into a REG before using gen_lowpart on it.
12570 2018-02-12  Jeff Law  <law@redhat.com>
12572         PR target/83760
12573         * config/sh/sh.c (find_barrier): Consider a sibling call
12574         a barrier as well.
12576         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
12577         successfully back substituting a reg.
12579 2018-02-12  Richard Biener  <rguenther@suse.de>
12581         PR tree-optimization/84037
12582         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
12583         parameter, move visited init to caller.
12584         (vect_slp_analyze_operations): Separate cost from validity
12585         check, initialize visited once for all instances.
12586         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
12587         for all instances.
12588         * tree-vect-stmts.c (vect_model_simple_cost): Make early
12589         out an assert.
12590         (vect_model_promotion_demotion_cost): Likewise.
12591         (vectorizable_bswap): Guard cost modeling with !slp_node
12592         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
12593         SLP stmts.
12594         (vectorizable_call): Likewise.
12595         (vectorizable_conversion): Likewise.
12596         (vectorizable_assignment): Likewise.
12597         (vectorizable_shift): Likewise.
12598         (vectorizable_operation): Likewise.
12599         (vectorizable_store): Likewise.
12600         (vectorizable_load): Likewise.
12601         (vectorizable_condition): Likewise.
12602         (vectorizable_comparison): Likewise.
12604 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
12606         PR sanitizer/84307
12607         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
12608         (ASAN_MARK): Fix fnspec to account for return value, change pointer
12609         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
12611 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
12613         PR middle-end/83665
12614         * params.def (inline-min-speedup): Increase from 8 to 15.
12615         (max-inline-insns-auto): Decrease from 40 to 30.
12616         * ipa-split.c (consider_split): Add some buffer for function to
12617         be considered inlining candidate.
12618         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
12619         default values.
12621 2018-02-12  Richard Biener  <rguenther@suse.de>
12623         PR tree-optimization/84037
12624         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
12625         matched stmts if we cannot swap the non-matched ones.
12627 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
12629         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
12630         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
12631         _mm_maskz_scalef_round_ss): New intrinsics.
12632         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
12633         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
12634         __builtin_ia32_scalefss_round): Remove.
12635         (__builtin_ia32_scalefsd_mask_round,
12636         __builtin_ia32_scalefss_mask_round): New intrinsics.
12637         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
12638         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
12639         ((match_operand:VF_128 2 "<round_nimm_predicate>"
12640         "<round_constraint>")): Changed to ...
12641         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
12642         "<round_scalar_constraint>")): ... this.
12643         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
12644         %0, %1, %2<round_op3>}"): Changed to ...
12645         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
12646         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
12647         %2<round_scalar_mask_op3>}"): ... this.
12648         * config/i386/subst.md (round_scalar_nimm_predicate): New.
12650 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
12652         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
12653         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
12654         (_mm_maskz_sqrt_round_ss): New intrinsics.
12655         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
12656         (__builtin_ia32_sqrtsd_mask_round)
12657         (__builtin_ia32_sqrtss_mask_round): New builtins.
12658         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
12659         (__builtin_ia32_sqrtss_round): Remove.
12660         (__builtin_ia32_sqrtsd_mask_round)
12661         (__builtin_ia32_sqrtss_mask_round): New builtins.
12662         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
12663         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
12664         ((match_operand:VF_128 1 "vector_operand"
12665         "xBm,<round_constraint>")): Changed to ...
12666         ((match_operand:VF_128 1 "vector_operand"
12667         "xBm,<round_scalar_constraint>")): ... this.
12668         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
12669         %0, %2, %<iptr>1<round_op3>}): Changed to ...
12670         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
12671         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
12672         %<iptr>1<round_scalar_mask_op3>}): ... this.
12673         ((set_attr "prefix" "<round_prefix>")): Changed to ...
12674         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
12676 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
12678         PR target/84266
12679         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
12680         Cast vec_cmpeq result to correct type.
12681         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
12682         Cast vec_cmpgt result to correct type.
12684 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
12686         * final.c (final_scan_insn_1): Renamed from...
12687         (final_scan_insn): ... this.  New wrapper, to recover
12688         seen from the outermost call in recursive ones.
12689         * config/sparc/sparc.c (output_return): Drop seen from call.
12690         (output_sibcall): Likewise.
12691         * config/visium/visium.c (output_branch): Likewise.
12693 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
12695         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
12696         function label.
12698 2018-02-10  Alan Modra  <amodra@gmail.com>
12700         PR target/84300
12701         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
12702         Specify LR as an input.
12704 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
12706         PR sanitizer/83987
12707         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
12708         remove_member_access_dummy_vars): New functions.
12709         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
12710         lower_omp_1, execute_lower_omp): Use them.
12712         PR rtl-optimization/84308
12713         * shrink-wrap.c (spread_components): Release todo vector.
12715 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
12717         PR rtl-optimization/57193
12718         * ira-color.c (struct allocno_color_data): Add member
12719         conflict_allocno_hard_prefs.
12720         (update_conflict_allocno_hard_prefs): New.
12721         (bucket_allocno_compare_func): Add a preference based on
12722         conflict_allocno_hard_prefs.
12723         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
12724         (color_allocnos): Remove a dead code.  Initiate
12725         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
12727 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
12729         PR target/84226
12730         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
12731         constraint from =wa to wa.  Avoid a subreg on the output operand,
12732         instead use a pseudo and subreg it in a move.
12733         (p9_xxbrd_<mode>): Changed to ...
12734         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
12735         (p9_xxbrd_v2df): New expander.
12736         (p9_xxbrw_<mode>): Changed to ...
12737         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
12738         (p9_xxbrw_v4sf): New expander.
12740 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
12742         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
12744 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
12746         PR target/83926
12747         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
12748         multiply in 32-bit mode.
12749         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
12750         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
12751         mode.
12753 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
12755         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
12756         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
12757         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
12758         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
12760 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
12762         PR lto/84213
12763         * dwarf2out.c (is_trivial_indirect_ref): New function.
12764         (dwarf2out_late_global_decl): Do not generate a location
12765         attribute for variables that have a non-trivial DECL_VALUE_EXPR
12766         and that are not defined in the current unit.
12768 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12770         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
12771         instead of a libcall for UNORDERED.
12773 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
12775         PR target/82641
12776         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
12777         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
12779 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12781         PR target/PR84295
12782         * config/s390/s390.c (s390_set_current_function): Invoke
12783         s390_indirect_branch_settings also if fndecl didn't change.
12785 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
12787         * config/rs6000/rs6000.md (blockage): Set length to zero.
12789 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12791         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
12793 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
12795         PR sanitizer/84285
12796         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
12797         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
12798         -static-lib*san.
12800         PR debug/84252
12801         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
12802         PARALLEL incoming that failed vt_get_decl_and_offset check.
12804         PR middle-end/84237
12805         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
12806         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
12807         TREE_READONLY bit.
12808         (get_variable_section): For decls in named .bss* sections pass true as
12809         second argument to bss_initializer_p.
12811 2018-02-09  Marek Polacek  <polacek@redhat.com>
12812             Jakub Jelinek  <jakub@redhat.com>
12814         PR c++/83659
12815         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
12816         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
12817         Sync some changes from cxx_fold_indirect_ref.
12819 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
12821         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
12822         markers.
12823         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
12824         (BLOCK_INLINE_ENTRY_LABEL): New.
12825         (dwarf2out_var_location): Disregard inline entry markers.
12826         (inline_entry_data): New struct.
12827         (inline_entry_data_hasher): New hashtable type.
12828         (inline_entry_data_hasher::hash): New.
12829         (inline_entry_data_hasher::equal): New.
12830         (inline_entry_data_table): New variable.
12831         (add_high_low_attributes): Add DW_AT_entry_pc and
12832         DW_AT_GNU_entry_view attributes if a pending entry is found
12833         in inline_entry_data_table.  Add old entry_pc attribute only
12834         if debug nonbinding markers are disabled.
12835         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
12836         markers are enabled.
12837         (block_within_block_p, dwarf2out_inline_entry): New.
12838         (dwarf2out_finish): Check that no entries remained in
12839         inline_entry_data_table.
12840         * final.c (reemit_insn_block_notes): Handle inline entry notes.
12841         (final_scan_insn, notice_source_line): Likewise.
12842         (rest_of_clean_state): Skip inline entry markers.
12843         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
12844         markers.
12845         * gimple.c (gimple_build_debug_inline_entry): New.
12846         * gimple.h (enum gimple_debug_subcode): Add
12847         GIMPLE_DEBUG_INLINE_ENTRY.
12848         (gimple_build_debug_inline_entry): Declare.
12849         (gimple_debug_inline_entry_p): New.
12850         (gimple_debug_nonbind_marker_p): Adjust.
12851         * insn-notes.def (INLINE_ENTRY): New.
12852         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
12853         inline entry marker notes.
12854         (print_insn): Likewise.
12855         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
12856         (INSN_DEBUG_MARKER_KIND): Likewise.
12857         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
12858         * tree-inline.c (expand_call_inline): Build and insert
12859         debug_inline_entry stmt.
12860         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
12861         inline entry blocks early, if nonbind markers are enabled.
12862         (dump_scope_block): Dump fragment info.
12863         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
12864         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
12865         (gimple_build_debug_inline_entry): New.
12866         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
12867         Enable/disable inline entry points too.
12868         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
12869         (DEBUG_INSN): Describe inline entry markers.
12871         * common.opt (gvariable-location-views): New.
12872         (gvariable-location-views=incompat5): New.
12873         * config.in: Rebuilt.
12874         * configure: Rebuilt.
12875         * configure.ac: Test assembler for view support.
12876         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
12877         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
12878         * dwarf2out.c (var_loc_view): New typedef.
12879         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
12880         (dwarf2out_locviews_in_attribute): New.
12881         (dwarf2out_locviews_in_loclist): New.
12882         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
12883         (enum dw_line_info_opcode): Add LI_adv_address.
12884         (struct dw_line_info_table): Add view.
12885         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
12886         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
12887         (zero_view_p): New variable.
12888         (ZERO_VIEW_P): New macro.
12889         (output_asm_line_debug_info): New.
12890         (struct var_loc_node): Add view.
12891         (add_AT_view_list, AT_loc_list): New.
12892         (add_var_loc_to_decl): Add view param.  Test it against last.
12893         (new_loc_list): Add view params.  Record them.
12894         (AT_loc_list_ptr): Handle loc and view lists.
12895         (view_list_to_loc_list_val_node): New.
12896         (print_dw_val): Handle dw_val_class_view_list.
12897         (size_of_die): Likewise.
12898         (value_format): Likewise.
12899         (loc_list_has_views): New.
12900         (gen_llsym): Set vl_symbol too.
12901         (maybe_gen_llsym, skip_loc_list_entry): New.
12902         (dwarf2out_maybe_output_loclist_view_pair): New.
12903         (output_loc_list): Output view list or entries too.
12904         (output_view_list_offset): New.
12905         (output_die): Handle dw_val_class_view_list.
12906         (output_dwarf_version): New.
12907         (output_compilation_unit_header): Use it.
12908         (output_skeleton_debug_sections): Likewise.
12909         (output_rnglists, output_line_info): Likewise.
12910         (output_pubnames, output_aranges): Update version comments.
12911         (output_one_line_info_table): Output view numbers in asm comments.
12912         (dw_loc_list): Determine current endview, pass it to new_loc_list.
12913         Call maybe_gen_llsym.
12914         (loc_list_from_tree_1): Adjust.
12915         (add_AT_location_description): Create view list attribute if
12916         needed, check it's absent otherwise.
12917         (convert_cfa_to_fb_loc_list): Adjust.
12918         (maybe_emit_file): Call output_asm_line_debug_info for test.
12919         (dwarf2out_var_location): Reset views as needed.  Precompute
12920         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
12921         attribute.  Set view.
12922         (new_line_info_table): Reset next view.
12923         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
12924         (dwarf2out_source_line): Likewise.  Output view resets and labels to
12925         the assembler, or select appropriate line info opcodes.
12926         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
12927         (optimize_string_length): Catch it.  Adjust.
12928         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
12929         dw_val_class_view_list, and remove it if no longer needed.
12930         (hash_loc_list): Hash view numbers.
12931         (loc_list_hasher::equal): Compare them.
12932         (optimize_location_lists): Check whether a view list symbol is
12933         needed, and whether the locview attribute is present, and
12934         whether they match.  Remove the locview attribute if no longer
12935         needed.
12936         (index_location_lists): Call skip_loc_list_entry for test.
12937         (dwarf2out_finish): Call output_asm_line_debug_info for test.
12938         Use output_dwarf_version.
12939         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
12940         (struct dw_val_node): Add val_view_list.
12941         * final.c (SEEN_NEXT_VIEW): New.
12942         (set_next_view_needed): New.
12943         (clear_next_view_needed): New.
12944         (maybe_output_next_view): New.
12945         (final_start_function): Rename to...
12946         (final_start_function_1): ... this.  Take pointer to FIRST,
12947         add SEEN parameter.  Emit param bindings in the initial view.
12948         (final_start_function): Reintroduce SEEN-less interface.
12949         (final): Rename to...
12950         (final_1): ... this.  Take SEEN parameter.  Output final pending
12951         next view at the end.
12952         (final): Reintroduce seen-less interface.
12953         (final_scan_insn): Output pending next view before switching
12954         sections or ending a block.  Mark the next view as needed when
12955         outputting variable locations.  Notify debug backend of section
12956         changes, and of location view changes.
12957         (rest_of_handle_final): Adjust.
12958         * toplev.c (process_options): Autodetect value for debug variable
12959         location views option.  Warn on incompat5 without -gdwarf-5.
12960         * doc/invoke.texi (gvariable-location-views): New.
12961         (gvariable-location-views=incompat5): New.
12962         (gno-variable-location-views): New.
12964 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
12966         PR tree-optimization/84136
12967         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
12968         that the result of find_edge is non-NULL.
12970 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
12972         PR target/83008
12973         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
12974         storing integer register in SImode.  Fix cost of 256 and 512
12975         byte aligned SSE register store.
12977 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
12979         * config/i386/i386.c (ix86_multiplication_cost): Fix
12980         multiplication cost for TARGET_AVX512DQ.
12982 2018-02-08  Marek Polacek  <polacek@redhat.com>
12984         PR tree-optimization/84238
12985         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
12986         get_range_strlen.
12988 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
12990         PR tree-optimization/84265
12991         * tree-vect-stmts.c (vectorizable_store): Don't treat
12992         VMAT_CONTIGUOUS accesses as grouped.
12993         (vectorizable_load): Likewise.
12995 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
12997         PR tree-optimization/81635
12998         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
12999         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
13000         (test_round_for_mask): New functions.
13001         (wide_int_cc_tests): Call test_round_for_mask.
13002         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
13003         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
13004         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
13005         range returned by get_range_info.
13007 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
13009         PR ipa/81360
13010         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
13011         * symtab.c: Include builtins.h
13012         (symtab_node::output_to_lto_symbol_table_p): Move here
13013         from lto-streamer-out.c:output_symbol_p.
13014         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
13015         (output_symbol_p): Move all logic to symtab.c
13016         (produce_symtab): Update.
13018 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13020         * config/s390/s390-opts.h (enum indirect_branch): Define.
13021         * config/s390/s390-protos.h (s390_return_addr_from_memory)
13022         (s390_indirect_branch_via_thunk)
13023         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
13024         (enum s390_indirect_branch_type): Define.
13025         * config/s390/s390.c (struct s390_frame_layout, struct
13026         machine_function): Remove.
13027         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
13028         (indirect_branch_table_label_no, indirect_branch_table_name):
13029         Define variables.
13030         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
13031         (enum s390_indirect_branch_option): Define.
13032         (s390_return_addr_from_memory): New function.
13033         (s390_handle_string_attribute): New function.
13034         (s390_attribute_table): Add new attribute handler.
13035         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
13036         (s390_indirect_branch_via_thunk): New function.
13037         (s390_indirect_branch_via_inline_thunk): New function.
13038         (s390_function_ok_for_sibcall): When jumping via thunk disallow
13039         sibling call optimization for non z10 compiles.
13040         (s390_emit_call): Force indirect branch target to be a single
13041         register.  Add r1 clobber for non-z10 compiles.
13042         (s390_emit_epilogue): Emit return jump via return_use expander.
13043         (s390_reorg): Handle JUMP_INSNs as execute targets.
13044         (s390_option_override_internal): Perform validity checks for the
13045         new command line options.
13046         (s390_indirect_branch_attrvalue): New function.
13047         (s390_indirect_branch_settings): New function.
13048         (s390_set_current_function): Invoke s390_indirect_branch_settings.
13049         (s390_output_indirect_thunk_function):  New function.
13050         (s390_code_end): Implement target hook.
13051         (s390_case_values_threshold): Implement target hook.
13052         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
13053         macros.
13054         * config/s390/s390.h (struct s390_frame_layout)
13055         (struct machine_function): Move here from s390.c.
13056         (TARGET_INDIRECT_BRANCH_NOBP_RET)
13057         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
13058         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
13059         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
13060         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
13061         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
13062         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
13063         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
13064         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
13065         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
13066         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
13067         (mnemonic attribute): Add values which aren't recognized
13068         automatically.
13069         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
13070         pattern for branch conversion.  Fix mnemonic attribute.
13071         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
13072         indirect branch via thunk if requested.
13073         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
13074         ("*indirect_jump"): Disable for branch conversion using out of
13075         line thunks.
13076         ("indirect_jump_via_thunk<mode>_z10")
13077         ("indirect_jump_via_thunk<mode>")
13078         ("indirect_jump_via_inlinethunk<mode>_z10")
13079         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
13080         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
13081         ("casesi_jump_via_inlinethunk<mode>_z10")
13082         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
13083         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
13084         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
13085         ("*indirect2_jump"): Disable for branch conversion.
13086         ("casesi_jump"): Turn into expander and expand patterns for branch
13087         conversion.
13088         ("return_use"): New expander.
13089         ("*return"): Emit return via thunk and rename it to ...
13090         ("*return<mode>"): ... this one.
13091         * config/s390/s390.opt: Add new options and and enum for the
13092         option values.
13094 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
13096         * lra-constraints.c (match_reload): Unconditionally use
13097         gen_lowpart_SUBREG, rather than selecting between that
13098         and equivalent gen_rtx_SUBREG code.
13100 2018-02-08  Richard Biener  <rguenther@suse.de>
13102         PR tree-optimization/84233
13103         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
13104         changed flag instead of boguously re-using phi_inserted.
13106 2018-02-08  Martin Jambor  <mjambor@suse.cz>
13108         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
13109         static local variables.
13111 2018-02-08  Richard Biener  <rguenther@suse.de>
13113         PR tree-optimization/84278
13114         * tree-vect-stmts.c (vectorizable_store): When looking for
13115         smaller vector types to perform grouped strided loads/stores
13116         make sure the mode is supported by the target.
13117         (vectorizable_load): Likewise.
13119 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
13121         * config/aarch64/aarch64.c (aarch64_components_for_bb):
13122         Increase LDP/STP opportunities by adding adjacent callee-saves.
13124 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
13126         PR rtl-optimization/84068
13127         PR rtl-optimization/83459
13128         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
13130 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
13132         PR tree-optimization/84224
13133         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
13134         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
13135         non-zero arguments.
13137 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
13139         PR target/84113
13140         * config/rs6000/altivec.md (*restore_world): Remove LR use.
13141         * config/rs6000/predicates.md (restore_world_operation): Adjust op
13142         count, remove one USE.
13144 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
13146         * doc/install.texi (Configuration): Document the
13147         --with-long-double-format={ibm,ieee} PowerPC configuration
13148         options.
13150         PR target/84154
13151         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
13152         Convert from define_expand to be define_insn_and_split.  Rework
13153         float/double/_Float128 conversions to QI/HI/SImode to work with
13154         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
13155         conversions to QI/HImode types did a store and then a load to
13156         truncate the value.  For conversions to VSX registers, don't split
13157         the insn, instead emit the code directly.  Use the code iterator
13158         any_fix to combine signed and unsigned conversions.
13159         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
13160         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
13161         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
13162         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
13163         (fix_<mode>di2_hw): Likewise.
13164         (fixuns_<mode>di2_hw): Likewise.
13165         (fix_<mode>si2_hw): Likewise.
13166         (fixuns_<mode>si2_hw): Likewise.
13167         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
13168         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
13169         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
13170         fix<uns>_trunc<SFDF:mode>si2_p8.
13171         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
13172         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
13173         (fix<uns>_<mode>_mem): Likewise.
13174         (fctiw<u>z_<mode>_mem): Likewise.
13175         (fix<uns>_<mode>_mem): Likewise.
13176         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
13177         the register allocator from doing a direct move to the GPRs to do
13178         a store, and instead use the ISA 3.0 store byte/half-word from
13179         vector register instruction.  For IEEE 128-bit floating point,
13180         also optimize stores of 32-bit ints.
13181         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
13183 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
13185         * genextract.c (push_pathstr_operand): New function to support
13186         [a-zA-Z].
13187         (walk_rtx): Call push_pathstr_operand.
13188         (print_path): Support [a-zA-Z].
13190 2018-02-07  Richard Biener  <rguenther@suse.de>
13192         PR tree-optimization/84037
13193         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
13194         (cse_and_gimplify_to_preheader): Declare.
13195         (vect_get_place_in_interleaving_chain): Likewise.
13196         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
13197         ivexpr_map.
13198         (_loop_vec_info::~_loop_vec_info): Delete it.
13199         (cse_and_gimplify_to_preheader): New function.
13200         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
13201         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
13202         (vectorizable_load): Likewise.  For grouped stores always base
13203         the IV on the first element.
13204         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
13205         condition before gimplifying.
13207 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
13209         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
13210         *DIV_EXPR and *MOD_EXPR.
13212 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
13214         PR target/84248
13215         * config/i386/i386.c (ix86_option_override_internal): Mask out
13216         the CF_SET bit when checking -fcf-protection.
13218 2018-02-07  Tom de Vries  <tom@codesourcery.com>
13220         PR libgomp/84217
13221         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
13222         enough.
13224 2018-02-07  Richard Biener  <rguenther@suse.de>
13226         PR tree-optimization/84204
13227         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
13228         this place.
13230         PR tree-optimization/84205
13231         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
13232         special-case isl_ast_op_zdiv_r.
13234         PR tree-optimization/84223
13235         * graphite-scop-detection.c (gather_bbs::before_dom_children):
13236         Only add conditions from within the region.
13237         (gather_bbs::after_dom_children): Adjust.
13239 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
13241         PR target/84209
13242         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
13243         * config/avr/avr.md: Only post-reload split REG-REG moves if
13244         either register is GENERAL_REG_P.
13246 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
13248         PR tree-optimization/84235
13249         * tree-ssa-scopedtables.c
13250         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
13251         if the subtraction is performed in floating point type where NaNs are
13252         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
13253         build 1.  Formatting fix.
13255 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
13257         PR target/84146
13258         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
13259         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
13260         and skip it regardless of bb boundaries.  Use CALL_P macro,
13261         don't test INSN_P (insn) together with CALL_P or JUMP_P check
13262         unnecessarily, formatting fix.
13264 2018-02-06  Michael Collison  <michael.collison@arm.com>
13266         * config/arm/thumb2.md:
13267         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
13268         (*thumb_mov_notscc): Ditto.
13270 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
13272         PR target/84154
13273         * config/rs6000/rs6000.md (su code attribute): Use "u" for
13274         unsigned_fix, not "s".
13276 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13278         * configure.ac (gcc_fn_eh_frame_ro): New function.
13279         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
13280         correct .eh_frame permissions.
13281         * configure: Regenerate.
13283 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
13285         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
13286         irrelevant options.
13288 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13290         * config/rs6000/rs6000.c (rs6000_option_override_internal):
13291         Display warning message for -mno-speculate-indirect-jumps.
13293 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
13295         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
13296         Undocumented.
13297         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
13299 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
13301         PR tree-optimization/84225
13302         * tree-eh.c (find_trapping_overflow): Only call
13303         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
13305 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
13307         PR target/84145
13308         * config/i386/i386.c: Reimplement the check of possible options
13309         -mibt/-mshstk conbination. Change error messages.
13310         * doc/invoke.texi: Fix a typo: remove extra '='.
13312 2018-02-06  Marek Polacek  <polacek@redhat.com>
13314         PR tree-optimization/84228
13315         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
13317 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
13319         PR target/82641
13320         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
13321         emitted arch directives.
13322         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
13323         __ARM_FEATURE_COPROC before changing architectures.
13325 2018-02-06  Richard Biener  <rguenther@suse.de>
13327         * config/i386/i386.c (print_reg): Fix typo.
13328         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
13330 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
13332         * configure: Regenerate.
13334 2018-02-05  Martin Sebor  <msebor@redhat.com>
13336         PR tree-optimization/83369
13337         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
13338         inlining context.
13340 2018-02-05  Martin Liska  <mliska@suse.cz>
13342         * doc/invoke.texi: Cherry-pick upstream r323995.
13344 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
13346         * ira.c (ira_init_register_move_cost): Adjust comment.
13348 2018-02-05  Martin Liska  <mliska@suse.cz>
13350         PR gcov-profile/84137
13351         * doc/gcov.texi: Fix typo in documentation.
13353 2018-02-05  Martin Liska  <mliska@suse.cz>
13355         PR gcov-profile/83879
13356         * doc/gcov.texi: Document necessity of --dynamic-list-data when
13357         using dlopen functionality.
13359 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
13361         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
13362         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
13363         _mm_maskz_range_ss, _mm_mask_range_round_ss,
13364         _mm_maskz_range_round_ss): New intrinsics.
13365         (__builtin_ia32_rangesd128_round)
13366         (__builtin_ia32_rangess128_round): Remove.
13367         (__builtin_ia32_rangesd128_mask_round,
13368         __builtin_ia32_rangess128_mask_round): New builtins.
13369         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
13370         __builtin_ia32_rangess128_round): Remove.
13371         (__builtin_ia32_rangesd128_mask_round,
13372         __builtin_ia32_rangess128_mask_round): New builtins.
13373         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
13374         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
13375         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
13376         "<round_saeonly_constraint>")): Changed to ...
13377         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
13378         "<round_saeonly_scalar_constraint>")): ... this.
13379         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
13380         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
13381         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
13382         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
13383         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
13385 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
13387         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
13388         options.
13389         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
13390         Remove all values except native, 8540 and 8548.
13392 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
13394         * config/i386/i386.c (ix86_output_function_return): Pass
13395         INVALID_REGNUM, instead of -1, as invalid register number to
13396         indirect_thunk_name and output_indirect_thunk.
13398 2018-02-02  Julia Koval  <julia.koval@intel.com>
13400         * config.gcc: Add -march=icelake.
13401         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
13402         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
13403         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
13404         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
13405         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
13406         (processor_target_table): Add icelake.
13407         (ix86_option_override_internal): Handle new PTAs.
13408         (get_builtin_code_for_version): Handle icelake.
13409         (M_INTEL_COREI7_ICELAKE): New.
13410         (fold_builtin_cpu): Handle icelake.
13411         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
13412         * doc/invoke.texi: Add -march=icelake.
13414 2018-02-02  Julia Koval  <julia.koval@intel.com>
13416         * config/i386/i386.c (ix86_option_override_internal): Change flags type
13417         to wide_int_bitmask.
13418         * wide-int-bitmask.h: New.
13420 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
13422         PR target/84066
13423         * config/i386/i386.md: Replace Pmode with word_mode in
13424         builtin_setjmp_setup and builtin_longjmp to support x32.
13426 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
13428         PR target/56010
13429         PR target/83743
13430         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
13431         #include "opts.h".
13432         (rs6000_supported_cpu_names): New static variable.
13433         (linux_cpu_translation_table): Likewise.
13434         (elf_platform) <cpu>: Define new static variable and use it.
13435         Translate kernel AT_PLATFORM name to canonical name if needed.
13436         Error if platform name is unknown.
13438 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
13440         PR target/84089
13441         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
13443 2018-02-01  Jeff Law  <law@redhat.com>
13445         PR target/84128
13446         * config/i386/i386.c (release_scratch_register_on_entry): Add new
13447         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
13448         the scratch if RELEASE_VIA_POP is false.
13449         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
13450         If we have to save a temporary register, decrement SIZE appropriately.
13451         Pass new arguments to release_scratch_register_on_entry.
13452         (ix86_adjust_stack_and_probe): Likewise.
13453         (ix86_emit_probe_stack_range): Pass new arguments to
13454         release_scratch_register_on_entry.
13456 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
13458         PR rtl-optimization/84157
13459         * combine.c (change_zero_ext): Use REG_P predicate in
13460         front of HARD_REGISTER_P predicate.
13462 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
13464         * config/avr/avr.c (avr_option_override): Move disabling of
13465         -fdelete-null-pointer-checks to...
13466         * common/config/avr/avr-common.c (avr_option_optimization_table):
13467         ...here.
13469 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13471         PR tree-optimization/81635
13472         * tree-data-ref.c (split_constant_offset_1): For types that
13473         wrap on overflow, try to use range info to prove that wrapping
13474         cannot occur.
13476 2018-02-01  Renlin Li  <renlin.li@arm.com>
13478         PR target/83370
13479         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
13480         TAILCALL_ADDR_REGS.
13481         (aarch64_register_move_cost): Likewise.
13482         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
13483         TAILCALL_ADDR_REGS.
13484         (REG_CLASS_NAMES): Likewise.
13485         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
13486         TAILCALL_ADDR_REGS. Remove IP registers.
13487         * config/aarch64/aarch64.md (Ucs): Update register constraint.
13489 2018-02-01  Richard Biener  <rguenther@suse.de>
13491         * domwalk.h (dom_walker::dom_walker): Add additional constructor
13492         for specifying RPO order and allow NULL for that.
13493         * domwalk.c (dom_walker::dom_walker): Likewise.
13494         (dom_walker::walk): Handle NULL RPO order.
13495         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
13496         in RPO order.
13497         (rewrite_update_dom_walker): Likewise.
13498         (mark_def_dom_walker): Likewise.
13500 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13502         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
13503         (aarch64_maybe_expand_sve_subreg_move): Declare.
13504         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
13505         * config/aarch64/predicates.md (aarch64_any_register_operand): New
13506         predicate.
13507         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
13508         that are semantically a reverse operation.
13509         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
13510         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
13511         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
13512         functions.
13513         (aarch64_can_change_mode_class): For big-endian, forbid changes
13514         between two SVE modes if they have different element sizes.
13516 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13518         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
13519         the TImode handling for big-endian targets.
13521 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13523         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
13524         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
13525         not just bytes.
13526         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
13527         Remove BSWAP handing for big-endian targets and use the form of
13528         LD1RQ appropariate for the mode.
13530 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13532         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
13533         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
13534         duplicated element.
13536 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
13538         PR tearget/83845
13539         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
13540         check for operands that need to go through aarch64_sve_reload_be.
13542 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
13544         PR tree-optimization/81661
13545         PR tree-optimization/84117
13546         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
13547         * tree-eh.c: Include gimplify.h.
13548         (find_trapping_overflow, replace_trapping_overflow,
13549         rewrite_to_non_trapping_overflow): New functions.
13550         * tree-vect-loop.c: Include tree-eh.h.
13551         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
13552         * tree-data-ref.c: Include tree-eh.h.
13553         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
13555 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
13557         PR rtl-optimization/84123
13558         * combine.c (change_zero_ext): Check if hard register satisfies
13559         can_change_dest_mode before calling gen_lowpart_SUBREG.
13561 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
13563         PR target/82444
13564         * ira.c (ira_init_register_move_cost): Remove assert.
13566 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13568         PR rtl-optimization/84071
13569         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
13570         * doc/tm.texi: Regenerate.
13572 2018-01-31  Richard Biener  <rguenther@suse.de>
13574         PR tree-optimization/84132
13575         * tree-data-ref.c (analyze_miv_subscript): Properly
13576         check whether evolution_function_is_affine_multivariate_p
13577         before calling gcd_of_steps_may_divide_p.
13579 2018-01-31  Julia Koval  <julia.koval@intel.com>
13581         PR target/83618
13582         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
13583         * config/i386/i386.md (rdpid_rex64) New.
13584         (rdpid): Make 32bit only.
13586 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
13588         PR lto/84105
13589         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
13590         an IDENTIFIER_NODE for FUNCTION_TYPE's.
13592 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13594         Revert
13595         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
13597         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
13599 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
13601         PR rtl-optimization/84071
13602         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
13603         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
13605 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
13607         * config/arc/arc.c (arc_handle_aux_attribute): New function.
13608         (arc_attribute_table): Add 'aux' attribute.
13609         (arc_in_small_data_p): Consider aux like variables.
13610         (arc_is_aux_reg_p): New function.
13611         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
13612         (arc_get_aux_arg): New function.
13613         (prepare_move_operands): Handle aux-register access.
13614         (arc_handle_aux_attribute): New function.
13615         * doc/extend.texi (ARC Variable attributes): Add subsection.
13617 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
13619         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
13620         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
13621         (arc_attribute_table): Add 'uncached' attribute.
13622         (arc_print_operand): Print '.di' flag for uncached memory
13623         accesses.
13624         (arc_in_small_data_p): Do not consider for small data the uncached
13625         types.
13626         (arc_is_uncached_mem_p): New function.
13627         * config/arc/predicates.md (compact_store_memory_operand): Check
13628         for uncached memory accesses.
13629         (nonvol_nonimm_operand): Likewise.
13630         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
13632 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
13634         PR c/84100
13635         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
13636         falign-loops=): Add Optimization flag.
13638 2018-01-30  Jeff Law  <law@redhat.com>
13640         PR target/84064
13641         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
13642         INT_REGISTERS_SAVED.  Check it prior to calling
13643         get_scratch_register_on_entry.
13644         (ix86_adjust_stack_and_probe): Similarly.
13645         (ix86_emit_probe_stack_range): Similarly.
13646         (ix86_expand_prologue): Corresponding changes.
13648 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13650         PR target/40411
13651         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
13652         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
13654 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
13656         PR target/84112
13657         * lra-constraints.c (curr_insn_transform): Process AND in the
13658         address.
13660 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
13662         PR rtl-optimization/83986
13663         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
13664         dependence against last_pending_memory_flush in addition to
13665         pending_jump_insns.
13667 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
13669         PR tree-optimization/81611
13670         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
13671         copies.
13673 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13675         PR target/83758
13676         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
13677         a reg rtx.
13679 2018-01-30  Richard Biener  <rguenther@suse.de>
13680             Jakub Jelinek  <jakub@redhat.com>
13682         PR tree-optimization/84111
13683         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
13684         inner loops added during recursion, as they don't have up-to-date
13685         SSA form.
13687 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
13689         PR ipa/81360
13690         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
13691         (can_inline_edge_by_limits_p): ... here.
13692         (can_early_inline_edge_p, check_callers,
13693         update_caller_keys, update_callee_keys, recursive_inlining,
13694         add_new_edges_to_heap, speculation_useful_p,
13695         inline_small_functions,
13696         inline_small_functions, flatten_function,
13697         inline_to_all_callers_1): Update.
13699 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
13701         * profile-count.c (profile_count::combine_with_ipa_count): Handle
13702         zeros correctly.
13704 2018-01-30  Richard Biener  <rguenther@suse.de>
13706         PR tree-optimization/83008
13707         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
13708         invariant and constant vector uses in stmts when they need
13709         more than one stmt.
13711 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13713         PR bootstrap/84017
13714         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
13715         * configure: Regenerate.
13717 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13719         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
13720         pattern.
13721         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
13722         Use gen_rtx_REG rather than gen_lowpart.
13724 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13726         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
13727         rather than 0 when creating partial subregs.
13729 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
13731         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
13732         of usage.
13734 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
13736         PR target/81550
13737         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
13738         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
13739         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
13740         flags.  This restores the settings used before the 2017-07-24.
13741         Turning off pre increment/decrement/modify allows IVOPTS to
13742         optimize DF/SF loops where the index is an int.
13744 2018-01-29  Richard Biener  <rguenther@suse.de>
13745             Kelvin Nilsen  <kelvin@gcc.gnu.org>
13747         PR bootstrap/80867
13748         * tree-vect-stmts.c (vectorizable_call): Don't call
13749         targetm.vectorize_builtin_md_vectorized_function if callee is
13750         NULL.
13752 2018-01-22  Carl Love  <cel@us.ibm.com>
13754         * doc/extend.tex: Fix typo in second arg in
13755         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
13757 2018-01-29  Richard Biener  <rguenther@suse.de>
13759         PR tree-optimization/84086
13760         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
13761         (flush_ssaname_freelist): When SSA names were released reset
13762         the SCEV hash table.
13764 2018-01-29  Richard Biener  <rguenther@suse.de>
13766         PR tree-optimization/84057
13767         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
13768         removed paths when removing edges.
13770 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
13772         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
13773         -mfunction-return=@var{choice}.
13775 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
13777         PR diagnostic/84034
13778         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
13779         Handle CR like TAB.
13780         (layout::print_source_line): Likewise.
13781         (test_get_line_width_without_trailing_whitespace): Add test cases.
13783 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
13785         PR middle-end/84040
13786         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
13787         debug insns.
13789 2018-01-26  Jim Wilson  <jimw@sifive.com>
13791         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
13793         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
13794         specified.
13796 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13798         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
13799         and CMP + SUB-immediate -> SUBS.
13801 2018-01-26  Martin Sebor  <msebor@redhat.com>
13803         PR tree-optimization/83896
13804         * tree-ssa-strlen.c (get_string_len): Rename...
13805         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
13806         Avoid assuming length is constant.
13807         (handle_char_store): Use HOST_WIDE_INT for string length.
13809 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
13811         PR target/81763
13812         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
13813         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
13815 2018-01-26  Richard Biener  <rguenther@suse.de>
13817         PR rtl-optimization/84003
13818         * dse.c (record_store): Only record redundant stores when
13819         the earlier store aliases at least all accesses the later one does.
13821 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
13823         PR rtl-optimization/83985
13824         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
13825         REG_CFA_RESTORE insns.
13826         (delete_unmarked_insns): Don't ignore separate shrink wrapping
13827         REG_CFA_RESTORE insns here.
13829         PR c/83989
13830         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
13831         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
13833 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13835         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
13836         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
13837         (arc_init): Likewise.
13838         (arc_override_options): Likewise.
13839         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
13840         value.
13841         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
13842         support.
13843         * config/arc/arc.h (TARGET_DBNZ): Define.
13844         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
13845         properly set the tune attribute.
13846         (dbnz): Use TARGET_DBNZ guard.
13847         * config/arc/arc.opt (mtune): Add core3 option.
13849 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13851         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
13852         recognize new pic like addresses.
13853         (arc_delegitimize_address): Clean up.
13855 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13857         * config/arc/arc-arches.def: Option mrf16 valid for all
13858         architectures.
13859         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
13860         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
13861         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
13862         * config/arc/arc-tables.opt: Regenerate.
13863         * config/arc/arc.c (arc_conditional_register_usage): Handle
13864         reduced register file case.
13865         (arc_file_start): Set must have build attributes.
13866         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
13867         mrf16 option value.
13868         * config/arc/arc.opt (mrf16): Add new option.
13869         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
13870         * config/arc/genmultilib.awk: Handle new mrf16 option.
13871         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
13872         * config/arc/t-multilib: Regenerate.
13873         * doc/invoke.texi (ARC Options): Document mrf16 option.
13875 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13877         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
13878         * config/arc/arc.c (arc_handle_secure_attribute): New function.
13879         (arc_attribute_table): Add 'secure_call' attribute.
13880         (arc_print_operand): Print secure call operand.
13881         (arc_function_ok_for_sibcall): Don't optimize tail calls when
13882         secure.
13883         (arc_is_secure_call_p): New function.  * config/arc/arc.md
13884         (call_i): Add support for sjli instruction.
13885         (call_value_i): Likewise.
13886         * config/arc/constraints.md (Csc): New constraint.
13888 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13889             John Eric Martin  <John.Martin@emmicro-us.com>
13891         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
13892         * config/arc/arc.c (_arc_jli_section): New struct.
13893         (arc_jli_section): New type.
13894         (rc_jli_sections): New static variable.
13895         (arc_handle_jli_attribute): New function.
13896         (arc_attribute_table): Add jli_always and jli_fixed attribute.
13897         (arc_file_end): New function.
13898         (TARGET_ASM_FILE_END): Define.
13899         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
13900         (arc_add_jli_section): New function.
13901         (jli_call_scan): Likewise.
13902         (arc_reorg): Call jli_call_scan.
13903         (arc_output_addsi): Remove 'S' from printing asm operand.
13904         (arc_is_jli_call_p): New function.
13905         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
13906         operand.
13907         (movhi_insn): Likewise.
13908         (movsi_insn): Likewise.
13909         (movsi_set_cc_insn): Likewise.
13910         (loadqi_update): Likewise.
13911         (load_zeroextendqisi_update): Likewise.
13912         (load_signextendqisi_update): Likewise.
13913         (loadhi_update): Likewise.
13914         (load_zeroextendhisi_update): Likewise.
13915         (load_signextendhisi_update): Likewise.
13916         (loadsi_update): Likewise.
13917         (loadsf_update): Likewise.
13918         (movsicc_insn): Likewise.
13919         (bset_insn): Likewise.
13920         (bxor_insn): Likewise.
13921         (bclr_insn): Likewise.
13922         (bmsk_insn): Likewise.
13923         (bicsi3_insn): Likewise.
13924         (cmpsi_cc_c_insn): Likewise.
13925         (movsi_ne): Likewise.
13926         (movsi_cond_exec): Likewise.
13927         (clrsbsi2): Likewise.
13928         (norm_f): Likewise.
13929         (normw): Likewise.
13930         (swap): Likewise.
13931         (divaw): Likewise.
13932         (flag): Likewise.
13933         (sr): Likewise.
13934         (kflag): Likewise.
13935         (ffs): Likewise.
13936         (ffs_f): Likewise.
13937         (fls): Likewise.
13938         (call_i): Remove 'S' asm letter, add jli instruction.
13939         (call_value_i): Likewise.
13940         * config/arc/arc.op (mjli-always): New option.
13941         * config/arc/constraints.md (Cji): New constraint.
13942         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
13943         operand.
13944         (subsf3_fpx): Likewise.
13945         (mulsf3_fpx): Likewise.
13946         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
13947         asm operand.
13948         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
13949         function attrbutes.
13950         * doc/invoke.texi (ARC): Document mjli-always option.
13952 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
13954         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
13955         avoid addition with 0 and use incw and decw where possible.
13957 2018-01-26  Richard Biener  <rguenther@suse.de>
13959         PR tree-optimization/81082
13960         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
13961         association if it requires casting to unsigned.
13962         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
13963         from fold_plusminus_mult_expr to catch important cases late when
13964         range info is available.
13966 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13968         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
13969         * configure.ac (hidden_linkonce): New test.
13970         * configure: Regenerate.
13971         * config.in: Regenerate.
13973 2018-01-26  Julia Koval  <julia.koval@intel.com>
13975         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
13976         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
13977         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
13978         _mm_mask_bitshuffle_epi64_mask): Fix type.
13979         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
13980         USI_FTYPE_V4DI_V4DI_USI): Remove.
13981         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
13982         __builtin_ia32_vpshufbitqmb256_mask,
13983         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
13984         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
13985         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
13987 2018-01-26  Alan Modra  <amodra@gmail.com>
13989         PR target/84033
13990         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
13991         UNSPEC_VBPERMQ.  Sort other unspecs.
13993 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
13995         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
13997 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
13999         PR middle-end/83055
14000         * predict.c (drop_profile): Do not push/pop cfun; update also
14001         node->count.
14002         (handle_missing_profiles): Fix logic looking for zero profiles.
14004 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
14006         PR middle-end/83977
14007         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
14008         on functions with #pragma omp declare simd or functions with simd
14009         attribute.
14010         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
14011         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
14012         Remove trailing \n from warning_at calls.
14014 2018-01-25  Tom de Vries  <tom@codesourcery.com>
14016         PR target/84028
14017         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
14018         for neutered workers.
14020 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
14022         PR target/68467
14023         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
14024         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
14026 2018-01-24  Jeff Law  <law@redhat.com>
14028         PR target/83994
14029         * i386.c (get_probe_interval): Move to earlier point.
14030         (ix86_compute_frame_layout): If -fstack-clash-protection and
14031         the frame is larger than the probe interval, then use pushes
14032         to save registers rather than reg->mem moves.
14033         (ix86_expand_prologue): Remove conditional for int_registers_saved
14034         assertion.
14036 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
14038         PR target/84014
14039         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
14040         min/max for never referenced object.
14042 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
14044         PR middle-end/83977
14045         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
14046         here.
14047         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
14048         attributes from DECL_ATTRIBUTES (decl) without affecting
14049         DECL_ATTRIBUTES (current_function_decl).
14050         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
14051         functions with non-NULL DECL_ABSTRACT_ORIGIN.
14053 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
14055         PR tree-optimization/83979
14056         * fold-const.c (fold_comparison): Use constant_boolean_node
14057         instead of boolean_{true,false}_node.
14059 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
14061         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
14062         with zero counts.
14064 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14066         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14067         Simplify the clause that sets the length attribute.
14068         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14069         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
14070         clause that sets the length attribute.
14071         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14073 2018-01-24  Tom de Vries  <tom@codesourcery.com>
14075         PR target/83589
14076         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
14077         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
14078         Add strict parameter.
14079         (prevent_branch_around_nothing): Insert dummy insn between branch to
14080         label and label with no ptx insn inbetween.
14081         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
14083 2018-01-24  Tom de Vries  <tom@codesourcery.com>
14085         PR target/81352
14086         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
14087         for neutered threads in warp.
14088         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
14090 2018-01-24  Richard Biener  <rguenther@suse.de>
14092         PR tree-optimization/83176
14093         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
14094         operands.
14096 2018-01-24  Richard Biener  <rguenther@suse.de>
14098         PR tree-optimization/82819
14099         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
14100         code generating pluses that are no-ops in the target precision.
14102 2018-01-24  Richard Biener  <rguenther@suse.de>
14104         PR middle-end/84000
14105         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
14107 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14109         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
14110         to merge probabilities.
14111         * predict.c (probably_never_executed): Also mark as cold functions
14112         with global 0 profile and guessed local profile.
14113         * profile-count.c (profile_probability::combine_with_count): New
14114         member function.
14115         * profile-count.h (profile_probability::operator*,
14116         profile_probability::operator*=, profile_probability::operator/,
14117         profile_probability::operator/=): Reduce precision to adjusted
14118         and set value to guessed on contradictory divisions.
14119         (profile_probability::combine_with_freq): Remove.
14120         (profile_probability::combine_wiht_count): Declare.
14121         (profile_count::force_nonzero):: Set to adjusted.
14122         (profile_count::probability_in):: Set quality to adjusted.
14123         * tree-ssa-tail-merge.c (replace_block_by): Use
14124         combine_with_count.
14126 2018-01-23  Andrew Waterman  <andrew@sifive.com>
14127             Jim Wilson  <jimw@sifive.com>
14129         * config/riscv/riscv.c (riscv_stack_boundary): New.
14130         (riscv_option_override): Set riscv_stack_boundary.  Handle
14131         riscv_preferred_stack_boundary_arg.
14132         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
14133         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
14134         (STACK_BOUNDARY): Set to riscv_stack_boundary.
14135         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
14136         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
14137         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
14139 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
14141         PR target/83905
14142         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
14143         of struct ix86_frame.
14144         (ix86_expand_epilogue): Likewise.  Add a local variable for
14145         the reg_save_offset field in struct ix86_frame.
14147 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
14149         PR tree-optimization/82604
14150         * tree-loop-distribution.c (enum partition_kind): New enum item
14151         PKIND_PARTIAL_MEMSET.
14152         (partition_builtin_p): Support above new enum item.
14153         (generate_code_for_partition): Ditto.
14154         (compute_access_range): Differentiate cases that equality can be
14155         proven at all loops, the innermost loops or no loops.
14156         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
14157         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
14158         (finalize_partitions, distribute_loop): Don't fuse partition of
14159         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
14160         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
14161         parloop is enabled.
14163 2018-01-23  Martin Liska  <mliska@suse.cz>
14165         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
14166         order to ignore the predictor.
14167         (PRED_POLYMORPHIC_CALL): Likewise.
14168         (PRED_RECURSIVE_CALL): Likewise.
14170 2018-01-23  Martin Liska  <mliska@suse.cz>
14172         * tree-profile.c (tree_profiling): Print function header to
14173         aware reader which function we are working on.
14174         * value-prof.c (gimple_find_values_to_profile): Do not print
14175         not interesting value histograms.
14177 2018-01-23  Martin Liska  <mliska@suse.cz>
14179         * profile-count.h (enum profile_quality): Add
14180         profile_uninitialized as the first value. Do not number values
14181         as they are zero based.
14182         (profile_count::verify): Update sanity check.
14183         (profile_probability::verify): Likewise.
14185 2018-01-23  Nathan Sidwell  <nathan@acm.org>
14187         * doc/invoke.texi (ffor-scope): Deprecate.
14189 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14191         PR tree-optimization/83510
14192         * domwalk.c (set_all_edges_as_executable): New function.
14193         (dom_walker::dom_walker): Convert bool param
14194         "skip_unreachable_blocks" to enum reachability.  Move setup of
14195         edge flags to set_all_edges_as_executable and only do it when
14196         reachability is REACHABLE_BLOCKS.
14197         * domwalk.h (enum dom_walker::reachability): New enum.
14198         (dom_walker::dom_walker): Convert bool param
14199         "skip_unreachable_blocks" to enum reachability.
14200         (set_all_edges_as_executable): New decl.
14201         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
14202         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
14203         "reachability".
14204         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
14205         but converting true to REACHABLE_BLOCKS.
14206         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
14207         * tree-vrp.c
14208         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
14209         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
14210         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
14211         REACHABLE_BLOCKS.
14212         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
14213         if check_all_array_refs will be called.
14215 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14217         * tree.c (selftest::test_location_wrappers): Add more test
14218         coverage.
14220 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
14222         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
14223         (selftest::test_bit_in_range): Likewise.
14225 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
14227         PR testsuite/83888
14228         * doc/sourcebuild.texi (vect_float): Say that the selector
14229         only describes the situation when -funsafe-math-optimizations is on.
14230         (vect_float_strict): Document.
14232 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
14234         PR tree-optimization/83965
14235         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
14236         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
14237         instead of checking only for a reduction.
14238         (vect_recog_widen_sum_pattern): Likewise.
14240 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14242         * predict.c (probably_never_executed): Only use precise profile info.
14243         (compute_function_frequency): Skip after inlining hack since we now
14244         have quality checking.
14246 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
14248         * profile-count.h (profile_probability::very_unlikely,
14249         profile_probability::unlikely, profile_probability::even): Set
14250         precision to guessed.
14252 2018-01-23  Richard Biener  <rguenther@suse.de>
14254         PR tree-optimization/83963
14255         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
14256         Properly terminate dominator walk when crossing the exit edge not
14257         when visiting its source block.
14259 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
14261         PR c++/83918
14262         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
14263         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
14265 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
14267         PR tree-optimization/83957
14268         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
14269         semicolon after for body surrounded by braces.
14271         PR tree-optimization/83081
14272         * profile-count.h (profile_probability::split): New method.
14273         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
14274         Use profile_probability::split.
14275         (do_compare_rtx_and_jump): Fix adjustment of probabilities
14276         when splitting a single conditional jump into 2.
14278 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
14280         PR tree-optimization/69452
14281         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
14282         decl.
14284 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14286         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
14287         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
14288         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
14290 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14292         * config/rl78/rl78-protos.h (rl78_split_movdi): New function
14293         declaration.
14294         * config/rl78/rl78.md (movdi): New define_expand.
14295         * config/rl78/rl78.c (rl78_split_movdi): New function.
14297 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14299         PR target/83862
14300         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
14301         no longer used.
14302         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
14303         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
14304         128-bit to produce an UNSPEC move to get the double word with the
14305         signbit and then a shift directly to do signbit.
14306         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
14307         implementation with a new version that just does either a direct
14308         move or a regular move.  Move memory interface to separate insns.
14309         Move insns so they are next to the expander.
14310         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
14311         with signbit move.  Split big and little endian case.
14312         (signbit<mode>2_dm_mem_le): Likewise.
14313         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
14314         (signbit<mode>2_dm2): Likewise.
14316 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14318         * config/rl78/rl78.md (anddi3): New define_expand.
14320 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14322         * config/rl78/rl78.md (umindi3): New define_expand.
14324 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14326         * config/rl78/rl78.md (smindi3): New define_expand.
14328 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14330         * config/rl78/rl78.md (smaxdi3): New define_expand.
14332 2018-01-22  Carl Love  <cel@us.ibm.com>
14334         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
14335         LVX_V1TI): Add macro expansion.
14336         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
14337         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
14338         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
14339         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
14340         Change check to determine if the instruction is a byte reversing
14341         entry.  Fix typo in comment.
14342         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
14343         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
14344         Add def_builtin calls for new builtins.
14345         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
14346         Add define_insn expansion.
14348 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14350         * config/rl78/rl78.md (umaxdi3): New define_expand.
14352 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
14354         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
14355         for non-QImode registers.
14357 2018-01-22  Richard Biener  <rguenther@suse.de>
14359         PR tree-optimization/83963
14360         * graphite-scop-detection.c (scop_detection::get_sese): Delay
14361         including the loop exit block.
14362         (scop_detection::merge_sese): Likewise.
14363         (scop_detection::add_scop): Do it here instead.
14365 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14367         * doc/sourcebuild.texi (arm_softfloat): Document.
14369 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
14371         PR gcc/77734
14372         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
14373         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
14374         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
14376 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14377             David Edelsohn  <dje.gcc@gmail.com>
14379         PR target/83946
14380         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14381         Change "crset eq" to "crset 2".
14382         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14383         (*call_indirect_aix<mode>_nospec): Likewise.
14384         (*call_value_indirect_aix<mode>_nospec): Likewise.
14385         (*call_indirect_elfv2<mode>_nospec): Likewise.
14386         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
14387         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
14388         change assembly output from . to $.
14389         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14390         (indirect_jump<mode>_nospec): Change assembly output from . to $.
14391         (*tablejump<mode>_internal1_nospec): Likewise.
14393 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
14395         PR target/80870
14396         * config/sh/sh_optimize_sett_clrt.cc:
14397         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
14399 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
14401         PR tree-optimization/83940
14402         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
14403         offset_dt to vect_constant_def rather than vect_unknown_def_type.
14404         (vect_check_load_store_mask): Add a mask_dt_out parameter and
14405         use it to pass back the definition type.
14406         (vect_check_store_rhs): Likewise rhs_dt_out.
14407         (vect_build_gather_load_calls): Add a mask_dt argument and use
14408         it instead of a call to vect_is_simple_use.
14409         (vectorizable_store): Update calls to vect_check_load_store_mask
14410         and vect_check_store_rhs.  Use the dt returned by the latter instead
14411         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
14412         instead of calls to vect_is_simple_use.  Pass the scalar rather
14413         than the vector operand to vect_is_simple_use when handling
14414         second and subsequent copies of an rhs value.
14415         (vectorizable_load): Update calls to vect_check_load_store_mask
14416         and vect_build_gather_load_calls.  Use the cached mask_dt and
14417         gs_info.offset_dt instead of calls to vect_is_simple_use.
14419 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
14421         PR middle-end/83945
14422         * tree-emutls.c: Include gimplify.h.
14423         (lower_emutls_2): New function.
14424         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
14425         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
14426         it before further processing.
14428         PR target/83930
14429         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
14430         UINTVAL (trueop1) instead of INTVAL (op1).
14432 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
14434         PR debug/81570
14435         PR debug/83728
14436         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
14437         INCOMING_FRAME_SP_OFFSET if not defined.
14438         (scan_trace): Add ENTRY argument.  If true and
14439         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
14440         emit a note to adjust the CFA offset.
14441         (create_cfi_notes): Adjust scan_trace callers.
14442         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
14443         INCOMING_FRAME_SP_OFFSET in the CIE.
14444         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
14445         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
14446         Likewise.
14447         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
14448         * doc/tm.texi: Regenerated.
14450 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
14452         PR rtl-optimization/83147
14453         * lra-constraints.c (remove_inheritance_pseudos): Use
14454         lra_substitute_pseudo_within_insn.
14456 2018-01-19  Tom de Vries  <tom@codesourcery.com>
14457             Cesar Philippidis  <cesar@codesourcery.com>
14459         PR target/83920
14460         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
14462 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
14464         PR target/83790
14465         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
14466         spaces for function labels.
14468 2018-01-19  Martin Liska  <mliska@suse.cz>
14470         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
14471         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
14472         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
14473         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
14474         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
14475         (PRED_CONST_RETURN): Change from 69 to 65.
14476         (PRED_NULL_RETURN): Change from 91 to 71.
14477         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
14478         (PRED_LOOP_GUARD): Change from 66 to 73.
14480 2018-01-19  Martin Liska  <mliska@suse.cz>
14482         * predict.c (predict_insn_def): Add new assert.
14483         (struct branch_predictor): Change type to signed integer.
14484         (test_prediction_value_range): Amend test to cover
14485         PROB_UNINITIALIZED.
14486         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
14487         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
14488         (PRED_LOOP_ITERATIONS_MAX): Likewise.
14489         (PRED_LOOP_IV_COMPARE): Likewise.
14490         * predict.h (PROB_UNINITIALIZED): Define new constant.
14492 2018-01-19  Martin Liska  <mliska@suse.cz>
14494         * predict.c (dump_prediction): Add new format for
14495         analyze_brprob.py script which is enabled with -details
14496         suboption.
14497         * profile-count.h (precise_p): New function.
14499 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
14501         PR tree-optimization/83922
14502         * tree-vect-loop.c (vect_verify_full_masking): Return false if
14503         there are no statements that need masking.
14504         (vect_active_double_reduction_p): New function.
14505         (vect_analyze_loop_operations): Use it when handling phis that
14506         are not in the loop header.
14508 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
14510         PR tree-optimization/83914
14511         * tree-vect-loop.c (vectorizable_induction): Don't convert
14512         init_expr or apply the peeling adjustment for inductions
14513         that are nested within the vectorized loop.
14515 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14517         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
14518         instead of NEG.
14520 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
14522         PR sanitizer/81715
14523         PR testsuite/83882
14524         * function.h (gimplify_parameters): Add gimple_seq * argument.
14525         * function.c: Include gimple.h and options.h.
14526         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
14527         for the added local temporaries if needed.
14528         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
14529         if there are any parameter cleanups, wrap whole body into a
14530         try/finally with the cleanups.
14532 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
14534         PR target/82964
14535         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
14536         Use GET_MODE_CLASS for scalar floating point.
14538 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
14540         PR ipa/82256
14541         patch by PaX Team
14542         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
14543         Fix call of call_cgraph_insertion_hooks.
14545 2018-01-18  Martin Sebor  <msebor@redhat.com>
14547         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
14549 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
14551         PR ipa/83619
14552         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
14553         frequencies.
14555 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
14557         PR other/70268
14558         * common.opt: (-ffile-prefix-map): New option.
14559         * opts.c (common_handle_option): Defer it.
14560         * opts-global.c (handle_common_deferred_options): Handle it.
14561         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
14562         * file-prefix-map.h: New file.
14563         (remap_debug_filename, add_debug_prefix_map): ...here.
14564         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
14565         * final.c (debug_prefix_map, add_debug_prefix_map
14566         remap_debug_filename): Move to...
14567         * file-prefix-map.c: New file.
14568         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
14569         generalize, get rid of alloca(), use strrchr() instead of strchr().
14570         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
14571         Implement in terms of add_prefix_map().
14572         (remap_macro_filename, remap_debug_filename): Implement in term of
14573         remap_filename().
14574         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
14575         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
14576         * dbxout.c: Include file-prefix-map.h.
14577         * varasm.c: Likewise.
14578         * vmsdbgout.c: Likewise.
14579         * xcoffout.c: Likewise.
14580         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
14581         * doc/cppopts.texi (-fmacro-prefix-map): Document.
14582         * doc/invoke.texi (-ffile-prefix-map): Document.
14583         (-fdebug-prefix-map): Update description.
14585 2018-01-18  Martin Liska  <mliska@suse.cz>
14587         * config/i386/i386.c (indirect_thunk_name): Document that also
14588         lfence is emitted.
14589         (output_indirect_thunk): Document why both instructions
14590         (pause and lfence) are generated.
14592 2018-01-18  Richard Biener  <rguenther@suse.de>
14594         PR tree-optimization/83887
14595         * graphite-scop-detection.c
14596         (scop_detection::get_nearest_dom_with_single_entry): Remove.
14597         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
14598         (scop_detection::merge_sese): Re-implement with a flood-fill
14599         algorithm that properly finds a SESE region if it exists.
14601 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
14603         PR c/61240
14604         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
14605         pointer_diff optimizations use view_convert instead of convert.
14607 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14609         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
14610         Generate different code for -mno-speculate-indirect-jumps.
14611         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
14612         (*call_indirect_aix<mode>): Disable for
14613         -mno-speculate-indirect-jumps.
14614         (*call_indirect_aix<mode>_nospec): New define_insn.
14615         (*call_value_indirect_aix<mode>): Disable for
14616         -mno-speculate-indirect-jumps.
14617         (*call_value_indirect_aix<mode>_nospec): New define_insn.
14618         (*sibcall_nonlocal_sysv<mode>): Generate different code for
14619         -mno-speculate-indirect-jumps.
14620         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
14622 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
14624         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
14625         long double type, set the flags for noting the default long double
14626         type, even if we don't pass or return a long double type.
14628 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
14630         PR ipa/83051
14631         * ipa-inline.c (flatten_function): Do not overwrite final inlining
14632         failure.
14634 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
14636         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
14637         support for merge[hl].
14638         (fold_mergehl_helper): New helper function.
14639         (tree-vector-builder.h): New #include for tree_vector_builder usage.
14640         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
14641         (altivec_vmrglw_direct): Add xxmrglw insn.
14643 2018-01-17  Andrew Waterman  <andrew@sifive.com>
14645         * config/riscv/riscv.c (riscv_conditional_register_usage): If
14646         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
14648 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
14650         PR lto/83121
14651         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
14652         call the lto_location_cache before reading the
14653         DECL_SOURCE_LOCATION of the types.
14655 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
14656             Richard Sandiford  <richard.sandiford@linaro.org>
14658         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
14659         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
14660         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
14661         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
14662         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
14663         Add declaration.
14664         * config/aarch64/constraints.md (aarch64_movti_operand):
14665         Limit immediates.
14666         * config/aarch64/predicates.md (Uti): Add new constraint.
14668 2018-01-17 Carl Love  <cel@us.ibm.com>
14670         * config/rs6000/vsx.md (define_expand xl_len_r,
14671         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
14672         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
14673         lxvll.
14674         (define_expand, define_insn): Move the shift left from  the
14675         define_insn to the define_expand for lxvl and stxvl instructions.
14676         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
14677         and XL_LEN_R definitions to PURE.
14679 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
14681         * config/i386/i386.c (indirect_thunk_name): Declare regno
14682         as unsigned int.  Compare regno with INVALID_REGNUM.
14683         (output_indirect_thunk): Ditto.
14684         (output_indirect_thunk_function): Ditto.
14685         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
14686         in the call to output_indirect_thunk_function.
14688 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
14690         PR middle-end/83884
14691         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
14692         rather than the size of inner_type to determine the stack slot size
14693         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
14695 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
14697         PR target/83546
14698         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
14699         to PTA_SILVERMONT.
14701 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
14703         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
14704         endian Linux systems to optionally enable multilibs for selecting
14705         the long double type if the user configured an explicit type.
14706         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
14707         have no long double multilibs if not defined.
14708         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
14709         warn if the user used -mabi={ieee,ibm}longdouble and we built
14710         multilibs for long double.
14711         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
14712         appropriate multilib option.
14713         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
14714         multilib options.
14715         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
14716         for building long double multilibs.
14717         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
14719 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
14721         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
14722         copies.
14724         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
14725         64 bits.
14726         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
14727         128 bits.
14729         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
14730         variables.
14732         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
14733         return value.
14735 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
14737         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
14738         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
14740 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
14742         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
14743         different rtl trees depending on TARGET_64BIT.
14744         (rs6000_gen_lvx): Likewise.
14746 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
14748         * config/visium/visium.md (nop): Tweak comment.
14749         (hazard_nop): Likewise.
14751 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14753         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
14754         -mspeculate-indirect-jumps.
14755         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
14756         for -mno-speculate-indirect-jumps.
14757         (*call_indirect_elfv2<mode>_nospec): New define_insn.
14758         (*call_value_indirect_elfv2<mode>): Disable for
14759         -mno-speculate-indirect-jumps.
14760         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
14761         (indirect_jump): Emit different RTL for
14762         -mno-speculate-indirect-jumps.
14763         (*indirect_jump<mode>): Disable for
14764         -mno-speculate-indirect-jumps.
14765         (*indirect_jump<mode>_nospec): New define_insn.
14766         (tablejump): Emit different RTL for
14767         -mno-speculate-indirect-jumps.
14768         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
14769         (tablejumpsi_nospec): New define_expand.
14770         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
14771         (tablejumpdi_nospec): New define_expand.
14772         (*tablejump<mode>_internal1): Disable for
14773         -mno-speculate-indirect-jumps.
14774         (*tablejump<mode>_internal1_nospec): New define_insn.
14775         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
14776         option.
14778 2018-01-16  Artyom Skrobov tyomitch@gmail.com
14780         * caller-save.c (insert_save): Drop unnecessary parameter.  All
14781         callers updated.
14783 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14784             Richard Biener  <rguenth@suse.de>
14786         PR libgomp/83590
14787         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
14788         return early, inline manually is_gimple_sizepos.  Make sure if we
14789         call gimplify_expr we don't end up with a gimple constant.
14790         * tree.c (variably_modified_type_p): Don't return true for
14791         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
14792         * gimplify.h (is_gimple_sizepos): Remove.
14794 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14796         PR tree-optimization/83857
14797         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
14798         vectorizable_live_operation for pure SLP statements.
14799         (vectorizable_live_operation): Handle PHIs.
14801 2018-01-16  Richard Biener  <rguenther@suse.de>
14803         PR tree-optimization/83867
14804         * tree-vect-stmts.c (vect_transform_stmt): Precompute
14805         nested_in_vect_loop_p since the scalar stmt may get invalidated.
14807 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14809         PR c/83844
14810         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
14811         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
14812         If off is not INTEGER_CST, issue a may not be aligned warning
14813         rather than isn't aligned.  Use isn%'t rather than isn't.
14814         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
14815         into MULT_EXPR.
14816         <case MULT_EXPR>: Improve the case when bottom and one of the
14817         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
14818         operand, in that case check if the other operand is multiple of
14819         bottom divided by the INTEGER_CST operand.
14821 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14823         PR target/83858
14824         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
14825         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
14826         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
14827         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
14828         * config/pa/pa.c (pa_function_arg_advance): Likewise.
14829         (pa_function_arg, pa_arg_partial_bytes): Likewise.
14830         (pa_function_arg_size): New function.
14832 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14834         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
14835         in a separate statement.
14837 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14839         PR tree-optimization/83847
14840         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
14841         group gathers and scatters.
14843 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14845         PR rtl-optimization/86620
14846         * params.def (max-sched-ready-insns): Bump minimum value to 1.
14848         PR rtl-optimization/83213
14849         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
14850         to last if both are JUMP_INSNs.
14852         PR tree-optimization/83843
14853         * gimple-ssa-store-merging.c
14854         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
14855         store_immediate_info for bswap/nop orig_stores.
14857 2018-01-15  Andrew Waterman  <andrew@sifive.com>
14859         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
14860         !TARGET_MUL.
14861         <UDIV>: Increase cost if !TARGET_DIV.
14863 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
14865         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
14866         (define_attr "cr_logical_3op"): New.
14867         (cceq_ior_compare): Adjust.
14868         (cceq_ior_compare_complement): Adjust.
14869         (*cceq_rev_compare): Adjust.
14870         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
14871         (is_cracked_insn): Adjust.
14872         (insn_must_be_first_in_group): Adjust.
14873         * config/rs6000/40x.md: Adjust.
14874         * config/rs6000/440.md: Adjust.
14875         * config/rs6000/476.md: Adjust.
14876         * config/rs6000/601.md: Adjust.
14877         * config/rs6000/603.md: Adjust.
14878         * config/rs6000/6xx.md: Adjust.
14879         * config/rs6000/7450.md: Adjust.
14880         * config/rs6000/7xx.md: Adjust.
14881         * config/rs6000/8540.md: Adjust.
14882         * config/rs6000/cell.md: Adjust.
14883         * config/rs6000/e300c2c3.md: Adjust.
14884         * config/rs6000/e500mc.md: Adjust.
14885         * config/rs6000/e500mc64.md: Adjust.
14886         * config/rs6000/e5500.md: Adjust.
14887         * config/rs6000/e6500.md: Adjust.
14888         * config/rs6000/mpc.md: Adjust.
14889         * config/rs6000/power4.md: Adjust.
14890         * config/rs6000/power5.md: Adjust.
14891         * config/rs6000/power6.md: Adjust.
14892         * config/rs6000/power7.md: Adjust.
14893         * config/rs6000/power8.md: Adjust.
14894         * config/rs6000/power9.md: Adjust.
14895         * config/rs6000/rs64.md: Adjust.
14896         * config/rs6000/titan.md: Adjust.
14898 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14900         * config/i386/predicates.md (indirect_branch_operand): Rewrite
14901         ix86_indirect_branch_register logic.
14903 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14905         * config/i386/constraints.md (Bs): Update
14906         ix86_indirect_branch_register check.  Don't check
14907         ix86_indirect_branch_register with GOT_memory_operand.
14908         (Bw): Likewise.
14909         * config/i386/predicates.md (GOT_memory_operand): Don't check
14910         ix86_indirect_branch_register here.
14911         (GOT32_symbol_operand): Likewise.
14913 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14915         * config/i386/predicates.md (constant_call_address_operand):
14916         Rewrite ix86_indirect_branch_register logic.
14917         (sibcall_insn_operand): Likewise.
14919 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14921         * config/i386/constraints.md (Bs): Replace
14922         ix86_indirect_branch_thunk_register with
14923         ix86_indirect_branch_register.
14924         (Bw): Likewise.
14925         * config/i386/i386.md (indirect_jump): Likewise.
14926         (tablejump): Likewise.
14927         (*sibcall_memory): Likewise.
14928         (*sibcall_value_memory): Likewise.
14929         Peepholes of indirect call and jump via memory: Likewise.
14930         * config/i386/i386.opt: Likewise.
14931         * config/i386/predicates.md (indirect_branch_operand): Likewise.
14932         (GOT_memory_operand): Likewise.
14933         (call_insn_operand): Likewise.
14934         (sibcall_insn_operand): Likewise.
14935         (GOT32_symbol_operand): Likewise.
14937 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
14939         PR middle-end/83837
14940         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
14941         type rather than type addr's type points to.
14942         (expand_omp_atomic_mutex): Likewise.
14943         (expand_omp_atomic): Likewise.
14945 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14947         PR target/83839
14948         * config/i386/i386.c (output_indirect_thunk_function): Use
14949         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
14950         for  __x86_return_thunk.
14952 2018-01-15  Richard Biener  <rguenther@suse.de>
14954         PR middle-end/83850
14955         * expmed.c (extract_bit_field_1): Fix typo.
14957 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14959         PR target/83687
14960         * config/arm/iterators.md (VF): New mode iterator.
14961         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
14962         Remove integer-related logic from pattern.
14963         (neon_vabd<mode>_3): Likewise.
14965 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
14967         PR middle-end/82694
14968         * common.opt (fstrict-overflow): No longer an alias.
14969         (fwrapv-pointer): New option.
14970         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
14971         also for pointer types based on flag_wrapv_pointer.
14972         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
14973         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
14974         opts->x_flag_wrapv got set.
14975         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
14976         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
14977         POINTER_TYPE_OVERFLOW_UNDEFINED.
14978         * match.pd: Likewise in address comparison pattern.
14979         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
14981 2018-01-15  Richard Biener  <rguenther@suse.de>
14983         PR lto/83804
14984         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
14985         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
14986         Reset type names to their identifier if their TYPE_DECL doesn't
14987         have linkage (and thus is used for ODR and devirt).
14988         (save_debug_info_for_decl): Remove.
14989         (save_debug_info_for_type): Likewise.
14990         (add_tree_to_fld_list): Adjust.
14991         * tree-pretty-print.c (dump_generic_node): Make dumping of
14992         type names more robust.
14994 2018-01-15  Richard Biener  <rguenther@suse.de>
14996         * BASE-VER: Bump to 8.0.1.
14998 2018-01-14  Martin Sebor  <msebor@redhat.com>
15000         PR other/83508
15001         * builtins.c (check_access): Avoid warning when the no-warning bit
15002         is set.
15004 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
15006         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
15007         * ira-color (allocno_hard_regs_compare): Likewise.
15009 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
15011         PR target/83013
15012         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
15013         Use .pushsection/.popsection.
15015 2018-01-14  Martin Sebor  <msebor@redhat.com>
15017         PR c++/81327
15018         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
15020 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
15022         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
15023         entry from extra_headers.
15024         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
15025         extra_headers, make the list bitwise identical to the i?86-*-* one.
15027 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15029         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
15030         -mcmodel=large with -mindirect-branch=thunk,
15031         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
15032         -mfunction-return=thunk-extern.
15033         * doc/invoke.texi: Document -mcmodel=large is incompatible with
15034         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
15035         -mfunction-return=thunk and -mfunction-return=thunk-extern.
15037 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15039         * config/i386/i386.c (print_reg): Print the name of the full
15040         integer register without '%'.
15041         (ix86_print_operand): Handle 'V'.
15042         * doc/extend.texi: Document 'V' modifier.
15044 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15046         * config/i386/constraints.md (Bs): Disallow memory operand for
15047         -mindirect-branch-register.
15048         (Bw): Likewise.
15049         * config/i386/predicates.md (indirect_branch_operand): Likewise.
15050         (GOT_memory_operand): Likewise.
15051         (call_insn_operand): Likewise.
15052         (sibcall_insn_operand): Likewise.
15053         (GOT32_symbol_operand): Likewise.
15054         * config/i386/i386.md (indirect_jump): Call convert_memory_address
15055         for -mindirect-branch-register.
15056         (tablejump): Likewise.
15057         (*sibcall_memory): Likewise.
15058         (*sibcall_value_memory): Likewise.
15059         Disallow peepholes of indirect call and jump via memory for
15060         -mindirect-branch-register.
15061         (*call_pop): Replace m with Bw.
15062         (*call_value_pop): Likewise.
15063         (*sibcall_pop_memory): Replace m with Bs.
15064         * config/i386/i386.opt (mindirect-branch-register): New option.
15065         * doc/invoke.texi: Document -mindirect-branch-register option.
15067 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15069         * config/i386/i386-protos.h (ix86_output_function_return): New.
15070         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
15071         set function_return_type.
15072         (indirect_thunk_name): Add ret_p to indicate thunk for function
15073         return.
15074         (output_indirect_thunk_function): Pass false to
15075         indirect_thunk_name.
15076         (ix86_output_indirect_branch_via_reg): Likewise.
15077         (ix86_output_indirect_branch_via_push): Likewise.
15078         (output_indirect_thunk_function): Create alias for function
15079         return thunk if regno < 0.
15080         (ix86_output_function_return): New function.
15081         (ix86_handle_fndecl_attribute): Handle function_return.
15082         (ix86_attribute_table): Add function_return.
15083         * config/i386/i386.h (machine_function): Add
15084         function_return_type.
15085         * config/i386/i386.md (simple_return_internal): Use
15086         ix86_output_function_return.
15087         (simple_return_internal_long): Likewise.
15088         * config/i386/i386.opt (mfunction-return=): New option.
15089         (indirect_branch): Mention -mfunction-return=.
15090         * doc/extend.texi: Document function_return function attribute.
15091         * doc/invoke.texi: Document -mfunction-return= option.
15093 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
15095         * config/i386/i386-opts.h (indirect_branch): New.
15096         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
15097         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
15098         with local indirect jump when converting indirect call and jump.
15099         (ix86_set_indirect_branch_type): New.
15100         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
15101         (indirectlabelno): New.
15102         (indirect_thunk_needed): Likewise.
15103         (indirect_thunk_bnd_needed): Likewise.
15104         (indirect_thunks_used): Likewise.
15105         (indirect_thunks_bnd_used): Likewise.
15106         (INDIRECT_LABEL): Likewise.
15107         (indirect_thunk_name): Likewise.
15108         (output_indirect_thunk): Likewise.
15109         (output_indirect_thunk_function): Likewise.
15110         (ix86_output_indirect_branch_via_reg): Likewise.
15111         (ix86_output_indirect_branch_via_push): Likewise.
15112         (ix86_output_indirect_branch): Likewise.
15113         (ix86_output_indirect_jmp): Likewise.
15114         (ix86_code_end): Call output_indirect_thunk_function if needed.
15115         (ix86_output_call_insn): Call ix86_output_indirect_branch if
15116         needed.
15117         (ix86_handle_fndecl_attribute): Handle indirect_branch.
15118         (ix86_attribute_table): Add indirect_branch.
15119         * config/i386/i386.h (machine_function): Add indirect_branch_type
15120         and has_local_indirect_jump.
15121         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
15122         to true.
15123         (tablejump): Likewise.
15124         (*indirect_jump): Use ix86_output_indirect_jmp.
15125         (*tablejump_1): Likewise.
15126         (simple_return_indirect_internal): Likewise.
15127         * config/i386/i386.opt (mindirect-branch=): New option.
15128         (indirect_branch): New.
15129         (keep): Likewise.
15130         (thunk): Likewise.
15131         (thunk-inline): Likewise.
15132         (thunk-extern): Likewise.
15133         * doc/extend.texi: Document indirect_branch function attribute.
15134         * doc/invoke.texi: Document -mindirect-branch= option.
15136 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
15138         PR ipa/83051
15139         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
15141 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
15143         * ipa-inline.c (want_inline_small_function_p): Return false if
15144         inlining has already failed with CIF_FINAL_ERROR.
15145         (update_caller_keys): Call want_inline_small_function_p before
15146         can_inline_edge_p.
15147         (update_callee_keys): Likewise.
15149 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
15151         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
15152         New function.
15153         (rs6000_quadword_masked_address_p): Likewise.
15154         (quad_aligned_load_p): Likewise.
15155         (quad_aligned_store_p): Likewise.
15156         (const_load_sequence_p): Add comment to describe the outer-most loop.
15157         (mimic_memory_attributes_and_flags): New function.
15158         (rs6000_gen_stvx): Likewise.
15159         (replace_swapped_aligned_store): Likewise.
15160         (rs6000_gen_lvx): Likewise.
15161         (replace_swapped_aligned_load): Likewise.
15162         (replace_swapped_load_constant): Capitalize argument name in
15163         comment describing this function.
15164         (rs6000_analyze_swaps): Add a third pass to search for vector loads
15165         and stores that access quad-word aligned addresses and replace
15166         with stvx or lvx instructions when appropriate.
15167         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
15168         New function prototype.
15169         (rs6000_quadword_masked_address_p): Likewise.
15170         (rs6000_gen_lvx): Likewise.
15171         (rs6000_gen_stvx): Likewise.
15172         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
15173         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
15174         when memory address is aligned.
15175         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
15176         this split to select lvx instruction when memory address is aligned.
15177         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
15178         instruction when memory address is aligned.
15179         (*vsx_le_perm_load_v16qi): Likewise.
15180         (four unnamed splitters): Modify to select the stvx instruction
15181         when memory is aligned.
15183 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
15185         * predict.c (determine_unlikely_bbs): Handle correctly BBs
15186         which appears in the queue multiple times.
15188 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15189             Alan Hayward  <alan.hayward@arm.com>
15190             David Sherwood  <david.sherwood@arm.com>
15192         * tree-vectorizer.h (vec_lower_bound): New structure.
15193         (_loop_vec_info): Add check_nonzero and lower_bounds.
15194         (LOOP_VINFO_CHECK_NONZERO): New macro.
15195         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
15196         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
15197         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
15198         fields.  Make seg_len the distance travelled, not including the
15199         access size.
15200         (dr_direction_indicator): Declare.
15201         (dr_zero_step_indicator): Likewise.
15202         (dr_known_forward_stride_p): Likewise.
15203         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
15204         tree-ssanames.h.
15205         (runtime_alias_check_p): Allow runtime alias checks with
15206         variable strides.
15207         (operator ==): Compare access_size and align.
15208         (prune_runtime_alias_test_list): Rework for new distinction between
15209         the access_size and seg_len.
15210         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
15211         segment lengths.
15212         (get_segment_min_max): New function.
15213         (create_intersect_range_checks): Use it.
15214         (dr_step_indicator): New function.
15215         (dr_direction_indicator): Likewise.
15216         (dr_zero_step_indicator): Likewise.
15217         (dr_known_forward_stride_p): Likewise.
15218         * tree-loop-distribution.c (data_ref_segment_size): Return
15219         DR_STEP * (niters - 1).
15220         (compute_alias_check_pairs): Update call to the dr_with_seg_len
15221         constructor.
15222         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
15223         (vect_preserves_scalar_order_p): New function, split out from...
15224         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
15225         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
15226         (vect_vfa_access_size): New function.
15227         (vect_vfa_align): Likewise.
15228         (vect_compile_time_alias): Take access_size_a and access_b arguments.
15229         (dump_lower_bound): New function.
15230         (vect_check_lower_bound): Likewise.
15231         (vect_small_gap_p): Likewise.
15232         (vectorizable_with_step_bound_p): Likewise.
15233         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
15234         depencies if the vectorization factor is 1.  Convert the checks
15235         for nonzero steps into checks on the bounds of DR_STEP.  Try using
15236         a bunds check for variable steps if the minimum required step is
15237         relatively small. Update calls to the dr_with_seg_len
15238         constructor and to vect_compile_time_alias.
15239         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
15240         function.
15241         (vect_loop_versioning): Call it.
15242         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
15243         when retrying.
15244         (vect_estimate_min_profitable_iters): Account for any bounds checks.
15246 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15247             Alan Hayward  <alan.hayward@arm.com>
15248             David Sherwood  <david.sherwood@arm.com>
15250         * doc/sourcebuild.texi (vect_scatter_store): Document.
15251         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
15252         optabs.
15253         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
15254         Document.
15255         * genopinit.c (main): Add supports_vec_scatter_store and
15256         supports_vec_scatter_store_cached to target_optabs.
15257         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
15258         IFN_MASK_SCATTER_STORE.
15259         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
15260         functions.
15261         * internal-fn.h (internal_store_fn_p): Declare.
15262         (internal_fn_stored_value_index): Likewise.
15263         * internal-fn.c (scatter_store_direct): New macro.
15264         (expand_scatter_store_optab_fn): New function.
15265         (direct_scatter_store_optab_supported_p): New macro.
15266         (internal_store_fn_p): New function.
15267         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
15268         IFN_MASK_SCATTER_STORE.
15269         (internal_fn_mask_index): Likewise.
15270         (internal_fn_stored_value_index): New function.
15271         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
15272         for scatter stores.
15273         * optabs-query.h (supports_vec_scatter_store_p): Declare.
15274         * optabs-query.c (supports_vec_scatter_store_p): New function.
15275         * tree-vectorizer.h (vect_get_store_rhs): Declare.
15276         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
15277         true for scatter stores.
15278         (vect_gather_scatter_fn_p): Handle scatter stores too.
15279         (vect_check_gather_scatter): Consider using scatter stores if
15280         supports_vec_scatter_store_p.
15281         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
15282         scatter stores too.
15283         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
15284         internal_fn_stored_value_index.
15285         (check_load_store_masking): Handle scatter stores too.
15286         (vect_get_store_rhs): Make public.
15287         (vectorizable_call): Use internal_store_fn_p.
15288         (vectorizable_store): Handle scatter store internal functions.
15289         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
15290         when deciding whether the end of the group has been reached.
15291         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
15292         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
15293         (mask_scatter_store<mode>): New insns.
15295 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15296             Alan Hayward  <alan.hayward@arm.com>
15297             David Sherwood  <david.sherwood@arm.com>
15299         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
15300         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
15301         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
15302         function.
15303         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
15304         Use vect_truncate_gather_scatter_offset if we can't treat the
15305         operation as a normal gather load or scatter store.
15306         (get_group_load_store_type): Take the gather_scatter_info
15307         as argument.  Try using a gather load or scatter store for
15308         single-element groups.
15309         (get_load_store_type): Update calls to get_group_load_store_type
15310         and vect_use_strided_gather_scatters_p.
15312 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15313             Alan Hayward  <alan.hayward@arm.com>
15314             David Sherwood  <david.sherwood@arm.com>
15316         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
15317         optional tree argument.
15318         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
15319         null target hooks.
15320         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
15321         but continue to use the current value as a fallback.
15322         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
15323         to compare the updates.
15324         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
15325         (get_load_store_type): Use it when handling a strided access.
15326         (vect_get_strided_load_store_ops): New function.
15327         (vect_get_data_ptr_increment): Likewise.
15328         (vectorizable_load): Handle strided gather loads.  Always pass
15329         a step to vect_create_data_ref_ptr and bump_vector_ptr.
15331 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15332             Alan Hayward  <alan.hayward@arm.com>
15333             David Sherwood  <david.sherwood@arm.com>
15335         * doc/md.texi (gather_load@var{m}): Document.
15336         (mask_gather_load@var{m}): Likewise.
15337         * genopinit.c (main): Add supports_vec_gather_load and
15338         supports_vec_gather_load_cached to target_optabs.
15339         * optabs-tree.c (init_tree_optimization_optabs): Use
15340         ggc_cleared_alloc to allocate target_optabs.
15341         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
15342         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
15343         functions.
15344         * internal-fn.h (internal_load_fn_p): Declare.
15345         (internal_gather_scatter_fn_p): Likewise.
15346         (internal_fn_mask_index): Likewise.
15347         (internal_gather_scatter_fn_supported_p): Likewise.
15348         * internal-fn.c (gather_load_direct): New macro.
15349         (expand_gather_load_optab_fn): New function.
15350         (direct_gather_load_optab_supported_p): New macro.
15351         (direct_internal_fn_optab): New function.
15352         (internal_load_fn_p): Likewise.
15353         (internal_gather_scatter_fn_p): Likewise.
15354         (internal_fn_mask_index): Likewise.
15355         (internal_gather_scatter_fn_supported_p): Likewise.
15356         * optabs-query.c (supports_at_least_one_mode_p): New function.
15357         (supports_vec_gather_load_p): Likewise.
15358         * optabs-query.h (supports_vec_gather_load_p): Declare.
15359         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
15360         and memory_type field.
15361         (NUM_PATTERNS): Bump to 15.
15362         * tree-vect-data-refs.c: Include internal-fn.h.
15363         (vect_gather_scatter_fn_p): New function.
15364         (vect_describe_gather_scatter_call): Likewise.
15365         (vect_check_gather_scatter): Try using internal functions for
15366         gather loads.  Recognize existing calls to a gather load function.
15367         (vect_analyze_data_refs): Consider using gather loads if
15368         supports_vec_gather_load_p.
15369         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
15370         (vect_get_gather_scatter_offset_type): Likewise.
15371         (vect_convert_mask_for_vectype): Likewise.
15372         (vect_add_conversion_to_patterm): Likewise.
15373         (vect_try_gather_scatter_pattern): Likewise.
15374         (vect_recog_gather_scatter_pattern): New pattern recognizer.
15375         (vect_vect_recog_func_ptrs): Add it.
15376         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
15377         internal_fn_mask_index and internal_gather_scatter_fn_p.
15378         (check_load_store_masking): Take the gather_scatter_info as an
15379         argument and handle gather loads.
15380         (vect_get_gather_scatter_ops): New function.
15381         (vectorizable_call): Check internal_load_fn_p.
15382         (vectorizable_load): Likewise.  Handle gather load internal
15383         functions.
15384         (vectorizable_store): Update call to check_load_store_masking.
15385         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
15386         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
15387         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
15388         (aarch64_gather_scale_operand_d): New predicates.
15389         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
15390         (mask_gather_load<mode>): New insns.
15392 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15393             Alan Hayward  <alan.hayward@arm.com>
15394             David Sherwood  <david.sherwood@arm.com>
15396         * optabs.def (fold_left_plus_optab): New optab.
15397         * doc/md.texi (fold_left_plus_@var{m}): Document.
15398         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
15399         * internal-fn.c (fold_left_direct): Define.
15400         (expand_fold_left_optab_fn): Likewise.
15401         (direct_fold_left_optab_supported_p): Likewise.
15402         * fold-const-call.c (fold_const_fold_left): New function.
15403         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
15404         * tree-parloops.c (valid_reduction_p): New function.
15405         (gather_scalar_reductions): Use it.
15406         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
15407         (vect_finish_replace_stmt): Declare.
15408         * tree-vect-loop.c (fold_left_reduction_fn): New function.
15409         (needs_fold_left_reduction_p): New function, split out from...
15410         (vect_is_simple_reduction): ...here.  Accept reductions that
15411         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
15412         (vect_force_simple_reduction): Also store the reduction type in
15413         the assignment's STMT_VINFO_REDUC_TYPE.
15414         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
15415         (merge_with_identity): New function.
15416         (vect_expand_fold_left): Likewise.
15417         (vectorize_fold_left_reduction): Likewise.
15418         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
15419         scalar phi in place for it.  Check for target support and reject
15420         cases that would reassociate the operation.  Defer the transform
15421         phase to vectorize_fold_left_reduction.
15422         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
15423         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
15424         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
15426 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15428         * tree-if-conv.c (predicate_mem_writes): Remove redundant
15429         call to ifc_temp_var.
15431 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15432             Alan Hayward  <alan.hayward@arm.com>
15433             David Sherwood  <david.sherwood@arm.com>
15435         * target.def (legitimize_address_displacement): Take the original
15436         offset as a poly_int.
15437         * targhooks.h (default_legitimize_address_displacement): Update
15438         accordingly.
15439         * targhooks.c (default_legitimize_address_displacement): Likewise.
15440         * doc/tm.texi: Regenerate.
15441         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
15442         as an argument, moving assert of ad->disp == ad->disp_term to...
15443         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
15444         Try calling targetm.legitimize_address_displacement before expanding
15445         the address rather than afterwards, and adjust for the new interface.
15446         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
15447         Match the new hook interface.  Handle SVE addresses.
15448         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
15449         new hook interface.
15451 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15453         * Makefile.in (OBJS): Add early-remat.o.
15454         * target.def (select_early_remat_modes): New hook.
15455         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
15456         * doc/tm.texi: Regenerate.
15457         * targhooks.h (default_select_early_remat_modes): Declare.
15458         * targhooks.c (default_select_early_remat_modes): New function.
15459         * timevar.def (TV_EARLY_REMAT): New timevar.
15460         * passes.def (pass_early_remat): New pass.
15461         * tree-pass.h (make_pass_early_remat): Declare.
15462         * early-remat.c: New file.
15463         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
15464         function.
15465         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
15467 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15468             Alan Hayward  <alan.hayward@arm.com>
15469             David Sherwood  <david.sherwood@arm.com>
15471         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
15472         vfm1 with a bound_epilog parameter.
15473         (vect_do_peeling): Update calls accordingly, and move the prologue
15474         call earlier in the function.  Treat the base bound_epilog as 0 for
15475         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
15476         this base when peeling for gaps.
15477         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
15478         with fully-masked loops.
15479         (vect_estimate_min_profitable_iters): Handle the single peeled
15480         iteration in that case.
15482 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15483             Alan Hayward  <alan.hayward@arm.com>
15484             David Sherwood  <david.sherwood@arm.com>
15486         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
15487         single-element interleaving even if the size is not a power of 2.
15488         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
15489         accesses for single-element interleaving if the group size is
15490         not a power of 2.
15492 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15493             Alan Hayward  <alan.hayward@arm.com>
15494             David Sherwood  <david.sherwood@arm.com>
15496         * doc/md.texi (fold_extract_last_@var{m}): Document.
15497         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
15498         * optabs.def (fold_extract_last_optab): New optab.
15499         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
15500         * internal-fn.c (fold_extract_direct): New macro.
15501         (expand_fold_extract_optab_fn): Likewise.
15502         (direct_fold_extract_optab_supported_p): Likewise.
15503         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
15504         * tree-vect-loop.c (vect_model_reduction_cost): Handle
15505         EXTRACT_LAST_REDUCTION.
15506         (get_initial_def_for_reduction): Do not create an initial vector
15507         for EXTRACT_LAST_REDUCTION reductions.
15508         (vectorizable_reduction): Leave the scalar phi in place for
15509         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
15510         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
15511         epilogue code for EXTRACT_LAST_REDUCTION and defer the
15512         transform phase to vectorizable_condition.
15513         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
15514         split out from...
15515         (vect_finish_stmt_generation): ...here.
15516         (vect_finish_replace_stmt): New function.
15517         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
15518         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
15519         pattern.
15520         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
15522 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15523             Alan Hayward  <alan.hayward@arm.com>
15524             David Sherwood  <david.sherwood@arm.com>
15526         * doc/md.texi (extract_last_@var{m}): Document.
15527         * optabs.def (extract_last_optab): New optab.
15528         * internal-fn.def (EXTRACT_LAST): New internal function.
15529         * internal-fn.c (cond_unary_direct): New macro.
15530         (expand_cond_unary_optab_fn): Likewise.
15531         (direct_cond_unary_optab_supported_p): Likewise.
15532         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
15533         loops using EXTRACT_LAST.
15534         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
15535         (extract_last_<mode>): ...this optab.
15536         (vec_extract<mode><Vel>): Update accordingly.
15538 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15539             Alan Hayward  <alan.hayward@arm.com>
15540             David Sherwood  <david.sherwood@arm.com>
15542         * target.def (empty_mask_is_expensive): New hook.
15543         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
15544         * doc/tm.texi: Regenerate.
15545         * targhooks.h (default_empty_mask_is_expensive): Declare.
15546         * targhooks.c (default_empty_mask_is_expensive): New function.
15547         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
15548         if the target says that empty masks are expensive.
15549         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
15550         New function.
15551         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
15553 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15554             Alan Hayward  <alan.hayward@arm.com>
15555             David Sherwood  <david.sherwood@arm.com>
15557         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
15558         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
15559         (vect_use_loop_mask_for_alignment_p): New function.
15560         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
15561         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
15562         niters_skip argument.  Make sure that the first niters_skip elements
15563         of the first iteration are inactive.
15564         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
15565         Update call to vect_set_loop_masks_directly.
15566         (get_misalign_in_elems): New function, split out from...
15567         (vect_gen_prolog_loop_niters): ...here.
15568         (vect_update_init_of_dr): Take a code argument that specifies whether
15569         the adjustment should be added or subtracted.
15570         (vect_update_init_of_drs): Likewise.
15571         (vect_prepare_for_masked_peels): New function.
15572         (vect_do_peeling): Skip prologue peeling if we're using a mask
15573         instead.  Update call to vect_update_inits_of_drs.
15574         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
15575         mask_skip_niters.
15576         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
15577         alignment.  Do not include the number of peeled iterations in
15578         the minimum threshold in that case.
15579         (vectorizable_induction): Adjust the start value down by
15580         LOOP_VINFO_MASK_SKIP_NITERS iterations.
15581         (vect_transform_loop): Call vect_prepare_for_masked_peels.
15582         Take the number of skipped iterations into account when calculating
15583         the loop bounds.
15584         * tree-vect-stmts.c (vect_gen_while_not): New function.
15586 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15587             Alan Hayward  <alan.hayward@arm.com>
15588             David Sherwood  <david.sherwood@arm.com>
15590         * doc/sourcebuild.texi (vect_fully_masked): Document.
15591         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
15592         default value to 0.
15593         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
15594         split out from...
15595         (vect_analyze_loop_2): ...here. Don't check the vectorization
15596         factor against the number of loop iterations if the loop is
15597         fully-masked.
15599 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15600             Alan Hayward  <alan.hayward@arm.com>
15601             David Sherwood  <david.sherwood@arm.com>
15603         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
15604         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
15605         (dump_groups): Update accordingly.
15606         (iv_use::mem_type): New member variable.
15607         (address_p): New function.
15608         (record_use): Add a mem_type argument and initialize the new
15609         mem_type field.
15610         (record_group_use): Add a mem_type argument.  Use address_p.
15611         Remove obsolete null checks of base_object.  Update call to record_use.
15612         (find_interesting_uses_op): Update call to record_group_use.
15613         (find_interesting_uses_cond): Likewise.
15614         (find_interesting_uses_address): Likewise.
15615         (get_mem_type_for_internal_fn): New function.
15616         (find_address_like_use): Likewise.
15617         (find_interesting_uses_stmt): Try find_address_like_use before
15618         calling find_interesting_uses_op.
15619         (addr_offset_valid_p): Use the iv mem_type field as the type
15620         of the addressed memory.
15621         (add_autoinc_candidates): Likewise.
15622         (get_address_cost): Likewise.
15623         (split_small_address_groups_p): Use address_p.
15624         (split_address_groups): Likewise.
15625         (add_iv_candidate_for_use): Likewise.
15626         (autoinc_possible_for_pair): Likewise.
15627         (rewrite_groups): Likewise.
15628         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
15629         (determine_group_iv_cost): Update after split of USE_ADDRESS.
15630         (get_alias_ptr_type_for_ptr_address): New function.
15631         (rewrite_use_address): Rewrite address uses in calls that were
15632         identified by find_address_like_use.
15634 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15635             Alan Hayward  <alan.hayward@arm.com>
15636             David Sherwood  <david.sherwood@arm.com>
15638         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
15639         TARGET_MEM_REFs.
15640         * gimple-expr.h (is_gimple_addressable: Likewise.
15641         * gimple-expr.c (is_gimple_address): Likewise.
15642         * internal-fn.c (expand_call_mem_ref): New function.
15643         (expand_mask_load_optab_fn): Use it.
15644         (expand_mask_store_optab_fn): Likewise.
15646 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15647             Alan Hayward  <alan.hayward@arm.com>
15648             David Sherwood  <david.sherwood@arm.com>
15650         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
15651         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
15652         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
15653         (cond_umax@var{mode}): Document.
15654         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
15655         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
15656         (cond_umin_optab, cond_umax_optab): New optabs.
15657         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
15658         (COND_IOR, COND_XOR): New internal functions.
15659         * internal-fn.h (get_conditional_internal_fn): Declare.
15660         * internal-fn.c (cond_binary_direct): New macro.
15661         (expand_cond_binary_optab_fn): Likewise.
15662         (direct_cond_binary_optab_supported_p): Likewise.
15663         (get_conditional_internal_fn): New function.
15664         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
15665         Cope with reduction statements that are vectorized as calls rather
15666         than assignments.
15667         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
15668         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
15669         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
15670         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
15671         (UNSPEC_COND_EOR): New unspecs.
15672         (optab): Add mappings for them.
15673         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
15674         (sve_int_op, sve_fp_op): New int attributes.
15676 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15677             Alan Hayward  <alan.hayward@arm.com>
15678             David Sherwood  <david.sherwood@arm.com>
15680         * optabs.def (while_ult_optab): New optab.
15681         * doc/md.texi (while_ult@var{m}@var{n}): Document.
15682         * internal-fn.def (WHILE_ULT): New internal function.
15683         * internal-fn.h (direct_internal_fn_supported_p): New override
15684         that takes two types as argument.
15685         * internal-fn.c (while_direct): New macro.
15686         (expand_while_optab_fn): New function.
15687         (convert_optab_supported_p): Likewise.
15688         (direct_while_optab_supported_p): New macro.
15689         * wide-int.h (wi::udiv_ceil): New function.
15690         * tree-vectorizer.h (rgroup_masks): New structure.
15691         (vec_loop_masks): New typedef.
15692         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
15693         and fully_masked_p.
15694         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
15695         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
15696         (vect_max_vf): New function.
15697         (slpeel_make_loop_iterate_ntimes): Delete.
15698         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
15699         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
15700         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
15701         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
15702         internal-fn.h, stor-layout.h and optabs-query.h.
15703         (vect_set_loop_mask): New function.
15704         (add_preheader_seq): Likewise.
15705         (add_header_seq): Likewise.
15706         (interleave_supported_p): Likewise.
15707         (vect_maybe_permute_loop_masks): Likewise.
15708         (vect_set_loop_masks_directly): Likewise.
15709         (vect_set_loop_condition_masked): Likewise.
15710         (vect_set_loop_condition_unmasked): New function, split out from
15711         slpeel_make_loop_iterate_ntimes.
15712         (slpeel_make_loop_iterate_ntimes): Rename to..
15713         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
15714         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
15715         (vect_do_peeling): Update call accordingly.
15716         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
15717         loops.
15718         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
15719         mask_compare_type, can_fully_mask_p and fully_masked_p.
15720         (release_vec_loop_masks): New function.
15721         (_loop_vec_info): Use it to free the loop masks.
15722         (can_produce_all_loop_masks_p): New function.
15723         (vect_get_max_nscalars_per_iter): Likewise.
15724         (vect_verify_full_masking): Likewise.
15725         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
15726         retries, and free the mask rgroups before retrying.  Check loop-wide
15727         reasons for disallowing fully-masked loops.  Make the final decision
15728         about whether use a fully-masked loop or not.
15729         (vect_estimate_min_profitable_iters): Do not assume that peeling
15730         for the number of iterations will be needed for fully-masked loops.
15731         (vectorizable_reduction): Disable fully-masked loops.
15732         (vectorizable_live_operation): Likewise.
15733         (vect_halve_mask_nunits): New function.
15734         (vect_double_mask_nunits): Likewise.
15735         (vect_record_loop_mask): Likewise.
15736         (vect_get_loop_mask): Likewise.
15737         (vect_transform_loop): Handle the case in which the final loop
15738         iteration might handle a partial vector.  Call vect_set_loop_condition
15739         instead of slpeel_make_loop_iterate_ntimes.
15740         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
15741         (check_load_store_masking): New function.
15742         (prepare_load_store_mask): Likewise.
15743         (vectorizable_store): Handle fully-masked loops.
15744         (vectorizable_load): Likewise.
15745         (supportable_widening_operation): Use vect_halve_mask_nunits for
15746         booleans.
15747         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
15748         (vect_gen_while): New function.
15749         * config/aarch64/aarch64.md (umax<mode>3): New expander.
15750         (aarch64_uqdec<mode>): New insn.
15752 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15753             Alan Hayward  <alan.hayward@arm.com>
15754             David Sherwood  <david.sherwood@arm.com>
15756         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
15757         (reduc_xor_scal_optab): New optabs.
15758         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
15759         (reduc_xor_scal_@var{m}): Document.
15760         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
15761         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
15762         internal functions.
15763         * fold-const-call.c (fold_const_call): Handle them.
15764         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
15765         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
15766         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
15767         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
15768         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
15769         (UNSPEC_XORV): New unspecs.
15770         (optab): Add entries for them.
15771         (BITWISEV): New int iterator.
15772         (bit_reduc_op): New int attributes.
15774 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15775             Alan Hayward  <alan.hayward@arm.com>
15776             David Sherwood  <david.sherwood@arm.com>
15778         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
15779         * internal-fn.def (VEC_SHL_INSERT): New internal function.
15780         * optabs.def (vec_shl_insert_optab): New optab.
15781         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
15782         (duplicate_and_interleave): Likewise.
15783         * tree-vect-loop.c: Include internal-fn.h.
15784         (neutral_op_for_slp_reduction): New function, split out from
15785         get_initial_defs_for_reduction.
15786         (get_initial_def_for_reduction): Handle option 2 for variable-length
15787         vectors by loading the neutral value into a vector and then shifting
15788         the initial value into element 0.
15789         (get_initial_defs_for_reduction): Replace the code argument with
15790         the neutral value calculated by neutral_op_for_slp_reduction.
15791         Use gimple_build_vector for constant-length vectors.
15792         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
15793         but the first group_size elements have a neutral value.
15794         Use duplicate_and_interleave otherwise.
15795         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
15796         Update call to get_initial_defs_for_reduction.  Handle SLP
15797         reductions for variable-length vectors by creating one vector
15798         result for each scalar result, with the elements associated
15799         with other scalar results stubbed out with the neutral value.
15800         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
15801         Require IFN_VEC_SHL_INSERT for double reductions on
15802         variable-length vectors, or SLP reductions that have
15803         a neutral value.  Require can_duplicate_and_interleave_p
15804         support for variable-length unchained SLP reductions if there
15805         is no neutral value, such as for MIN/MAX reductions.  Also require
15806         the number of vector elements to be a multiple of the number of
15807         SLP statements when doing variable-length unchained SLP reductions.
15808         Update call to vect_create_epilog_for_reduction.
15809         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
15810         and remove initial values.
15811         (duplicate_and_interleave): Make public.
15812         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
15813         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
15815 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15816             Alan Hayward  <alan.hayward@arm.com>
15817             David Sherwood  <david.sherwood@arm.com>
15819         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
15820         (can_duplicate_and_interleave_p): New function.
15821         (vect_get_and_check_slp_defs): Take the vector of statements
15822         rather than just the current one.  Remove excess parentheses.
15823         Restriction rejectinon of vect_constant_def and vect_external_def
15824         for variable-length vectors to boolean types, or types for which
15825         can_duplicate_and_interleave_p is false.
15826         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
15827         (duplicate_and_interleave): New function.
15828         (vect_get_constant_vectors): Use gimple_build_vector for
15829         constant-length vectors and suitable variable-length constant
15830         vectors.  Use duplicate_and_interleave for other variable-length
15831         vectors.  Don't defer the update when inserting new statements.
15833 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15834             Alan Hayward  <alan.hayward@arm.com>
15835             David Sherwood  <david.sherwood@arm.com>
15837         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
15838         min_profitable_iters doesn't go negative.
15840 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15841             Alan Hayward  <alan.hayward@arm.com>
15842             David Sherwood  <david.sherwood@arm.com>
15844         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
15845         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
15846         * optabs.def (vec_mask_load_lanes_optab): New optab.
15847         (vec_mask_store_lanes_optab): Likewise.
15848         * internal-fn.def (MASK_LOAD_LANES): New internal function.
15849         (MASK_STORE_LANES): Likewise.
15850         * internal-fn.c (mask_load_lanes_direct): New macro.
15851         (mask_store_lanes_direct): Likewise.
15852         (expand_mask_load_optab_fn): Handle masked operations.
15853         (expand_mask_load_lanes_optab_fn): New macro.
15854         (expand_mask_store_optab_fn): Handle masked operations.
15855         (expand_mask_store_lanes_optab_fn): New macro.
15856         (direct_mask_load_lanes_optab_supported_p): Likewise.
15857         (direct_mask_store_lanes_optab_supported_p): Likewise.
15858         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
15859         parameter.
15860         (vect_load_lanes_supported): Likewise.
15861         * tree-vect-data-refs.c (strip_conversion): New function.
15862         (can_group_stmts_p): Likewise.
15863         (vect_analyze_data_ref_accesses): Use it instead of checking
15864         for a pair of assignments.
15865         (vect_store_lanes_supported): Take a masked_p parameter.
15866         (vect_load_lanes_supported): Likewise.
15867         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
15868         vect_store_lanes_supported and vect_load_lanes_supported.
15869         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
15870         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
15871         parameter.  Don't allow gaps for masked accesses.
15872         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
15873         and vect_load_lanes_supported.
15874         (get_load_store_type): Take a masked_p parameter and update
15875         call to get_group_load_store_type.
15876         (vectorizable_store): Update call to get_load_store_type.
15877         Handle IFN_MASK_STORE_LANES.
15878         (vectorizable_load): Update call to get_load_store_type.
15879         Handle IFN_MASK_LOAD_LANES.
15881 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15882             Alan Hayward  <alan.hayward@arm.com>
15883             David Sherwood  <david.sherwood@arm.com>
15885         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
15886         modes for SVE.
15887         * config/aarch64/aarch64-protos.h
15888         (aarch64_sve_struct_memory_operand_p): Declare.
15889         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
15890         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
15891         (VPRED, vpred): Handle SVE structure modes.
15892         * config/aarch64/constraints.md (Utx): New constraint.
15893         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
15894         (aarch64_sve_struct_nonimmediate_operand): New predicates.
15895         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
15896         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
15897         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
15898         structure modes.  Split into pieces after RA.
15899         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
15900         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
15901         New patterns.
15902         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
15903         SVE structure modes.
15904         (aarch64_classify_address): Likewise.
15905         (sizetochar): Move earlier in file.
15906         (aarch64_print_operand): Handle SVE register lists.
15907         (aarch64_array_mode): New function.
15908         (aarch64_sve_struct_memory_operand_p): Likewise.
15909         (TARGET_ARRAY_MODE): Redefine.
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         * target.def (array_mode): New target hook.
15916         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
15917         * doc/tm.texi: Regenerate.
15918         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
15919         * hooks.c (hook_optmode_mode_uhwi_none): New function.
15920         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
15921         targetm.array_mode.
15922         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
15923         type sizes.
15925 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15926             Alan Hayward  <alan.hayward@arm.com>
15927             David Sherwood  <david.sherwood@arm.com>
15929         * fold-const.c (fold_binary_loc): Check the argument types
15930         rather than the result type when testing for a vector operation.
15932 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15934         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
15935         * doc/tm.texi: Regenerate.
15937 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15938             Alan Hayward  <alan.hayward@arm.com>
15939             David Sherwood  <david.sherwood@arm.com>
15941         * doc/invoke.texi (-msve-vector-bits=): Document new option.
15942         (sve): Document new AArch64 extension.
15943         * doc/md.texi (w): Extend the description of the AArch64
15944         constraint to include SVE vectors.
15945         (Upl, Upa): Document new AArch64 predicate constraints.
15946         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
15947         enum.
15948         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
15949         (msve-vector-bits=): New option.
15950         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
15951         SVE when these are disabled.
15952         (sve): New extension.
15953         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
15954         modes.  Adjust their number of units based on aarch64_sve_vg.
15955         (MAX_BITSIZE_MODE_ANY_MODE): Define.
15956         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
15957         aarch64_addr_query_type.
15958         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
15959         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
15960         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
15961         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
15962         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
15963         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
15964         (aarch64_simd_imm_zero_p): Delete.
15965         (aarch64_check_zero_based_sve_index_immediate): Declare.
15966         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
15967         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
15968         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
15969         (aarch64_sve_float_mul_immediate_p): Likewise.
15970         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
15971         rather than an rtx.
15972         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
15973         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
15974         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
15975         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
15976         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
15977         (aarch64_regmode_natural_size): Likewise.
15978         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
15979         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
15980         left one place.
15981         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
15982         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
15983         for VG and the SVE predicate registers.
15984         (V_ALIASES): Add a "z"-prefixed alias.
15985         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
15986         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
15987         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
15988         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
15989         (REG_CLASS_NAMES): Add entries for them.
15990         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
15991         and the predicate registers.
15992         (aarch64_sve_vg): Declare.
15993         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
15994         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
15995         (REGMODE_NATURAL_SIZE): Define.
15996         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
15997         SVE macros.
15998         * config/aarch64/aarch64.c: Include cfgrtl.h.
15999         (simd_immediate_info): Add a constructor for series vectors,
16000         and an associated step field.
16001         (aarch64_sve_vg): New variable.
16002         (aarch64_dbx_register_number): Handle VG and the predicate registers.
16003         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
16004         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
16005         (VEC_ANY_DATA, VEC_STRUCT): New constants.
16006         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
16007         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
16008         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
16009         (aarch64_get_mask_mode): New functions.
16010         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
16011         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
16012         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
16013         predicate modes and predicate registers.  Explicitly restrict
16014         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
16015         to store a vector mode if it is recognized by
16016         aarch64_classify_vector_mode.
16017         (aarch64_regmode_natural_size): New function.
16018         (aarch64_hard_regno_caller_save_mode): Return the original mode
16019         for predicates.
16020         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
16021         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
16022         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
16023         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
16024         functions.
16025         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
16026         does not overlap dest if the function is frame-related.  Handle
16027         SVE constants.
16028         (aarch64_split_add_offset): New function.
16029         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
16030         them aarch64_add_offset.
16031         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
16032         and update call to aarch64_sub_sp.
16033         (aarch64_add_cfa_expression): New function.
16034         (aarch64_expand_prologue): Pass extra temporary registers to the
16035         functions above.  Handle the case in which we need to emit new
16036         DW_CFA_expressions for registers that were originally saved
16037         relative to the stack pointer, but now have to be expressed
16038         relative to the frame pointer.
16039         (aarch64_output_mi_thunk): Pass extra temporary registers to the
16040         functions above.
16041         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
16042         IP0 and IP1 values for SVE frames.
16043         (aarch64_expand_vec_series): New function.
16044         (aarch64_expand_sve_widened_duplicate): Likewise.
16045         (aarch64_expand_sve_const_vector): Likewise.
16046         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
16047         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
16048         into the register, rather than emitting a SET directly.
16049         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
16050         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
16051         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
16052         (offset_9bit_signed_scaled_p): New functions.
16053         (aarch64_replicate_bitmask_imm): New function.
16054         (aarch64_bitmask_imm): Use it.
16055         (aarch64_cannot_force_const_mem): Reject expressions involving
16056         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
16057         (aarch64_classify_index): Handle SVE indices, by requiring
16058         a plain register index with a scale that matches the element size.
16059         (aarch64_classify_address): Handle SVE addresses.  Assert that
16060         the mode of the address is VOIDmode or an integer mode.
16061         Update call to aarch64_classify_symbol.
16062         (aarch64_classify_symbolic_expression): Update call to
16063         aarch64_classify_symbol.
16064         (aarch64_const_vec_all_in_range_p): New function.
16065         (aarch64_print_vector_float_operand): Likewise.
16066         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
16067         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
16068         and the FP immediates 1.0 and 0.5.
16069         (aarch64_print_address_internal): Handle SVE addresses.
16070         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
16071         (aarch64_regno_regclass): Handle predicate registers.
16072         (aarch64_secondary_reload): Handle big-endian reloads of SVE
16073         data modes.
16074         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
16075         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
16076         (aarch64_convert_sve_vector_bits): New function.
16077         (aarch64_override_options): Use it to handle -msve-vector-bits=.
16078         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
16079         rather than an rtx.
16080         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
16081         Handle SVE vector and predicate modes.  Accept VL-based constants
16082         that need only one temporary register, and VL offsets that require
16083         no temporary registers.
16084         (aarch64_conditional_register_usage): Mark the predicate registers
16085         as fixed if SVE isn't available.
16086         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
16087         Return true for SVE vector and predicate modes.
16088         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
16089         rather than an unsigned int.  Handle SVE modes.
16090         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
16091         SVE modes.
16092         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
16093         if SVE is enabled.
16094         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
16095         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
16096         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
16097         (aarch64_sve_float_mul_immediate_p): New functions.
16098         (aarch64_sve_valid_immediate): New function.
16099         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
16100         Explicitly reject structure modes.  Check for INDEX constants.
16101         Handle PTRUE and PFALSE constants.
16102         (aarch64_check_zero_based_sve_index_immediate): New function.
16103         (aarch64_simd_imm_zero_p): Delete.
16104         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
16105         vector modes.  Accept constants in the range of CNT[BHWD].
16106         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
16107         ask for an Advanced SIMD mode.
16108         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
16109         (aarch64_simd_vector_alignment): Handle SVE predicates.
16110         (aarch64_vectorize_preferred_vector_alignment): New function.
16111         (aarch64_simd_vector_alignment_reachable): Use it instead of
16112         the vector size.
16113         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
16114         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
16115         functions.
16116         (MAX_VECT_LEN): Delete.
16117         (expand_vec_perm_d): Add a vec_flags field.
16118         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
16119         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
16120         (aarch64_evpc_ext): Don't apply a big-endian lane correction
16121         for SVE modes.
16122         (aarch64_evpc_rev): Rename to...
16123         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
16124         (aarch64_evpc_rev_global): New function.
16125         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
16126         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
16127         MAX_VECT_LEN.
16128         (aarch64_evpc_sve_tbl): New function.
16129         (aarch64_expand_vec_perm_const_1): Update after rename of
16130         aarch64_evpc_rev.  Handle SVE permutes too, trying
16131         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
16132         than aarch64_evpc_tbl.
16133         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
16134         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
16135         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
16136         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
16137         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
16138         (aarch64_expand_sve_vcond): New functions.
16139         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
16140         of aarch64_vector_mode_p.
16141         (aarch64_dwarf_poly_indeterminate_value): New function.
16142         (aarch64_compute_pressure_classes): Likewise.
16143         (aarch64_can_change_mode_class): Likewise.
16144         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
16145         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
16146         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
16147         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
16148         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
16149         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
16150         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
16151         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
16152         constraints.
16153         (Dn, Dl, Dr): Accept const as well as const_vector.
16154         (Dz): Likewise.  Compare against CONST0_RTX.
16155         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
16156         of "vector" where appropriate.
16157         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
16158         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
16159         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
16160         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
16161         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
16162         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
16163         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
16164         (v_int_equiv): Extend to SVE modes.
16165         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
16166         mode attributes.
16167         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
16168         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
16169         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
16170         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
16171         (SVE_COND_FP_CMP): New int iterators.
16172         (perm_hilo): Handle the new unpack unspecs.
16173         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
16174         attributes.
16175         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
16176         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
16177         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
16178         (aarch64_equality_operator, aarch64_constant_vector_operand)
16179         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
16180         (aarch64_sve_nonimmediate_operand): Likewise.
16181         (aarch64_sve_general_operand): Likewise.
16182         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
16183         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
16184         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
16185         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
16186         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
16187         (aarch64_sve_float_arith_immediate): Likewise.
16188         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
16189         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
16190         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
16191         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
16192         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
16193         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
16194         (aarch64_sve_float_arith_operand): Likewise.
16195         (aarch64_sve_float_arith_with_sub_operand): Likewise.
16196         (aarch64_sve_float_mul_operand): Likewise.
16197         (aarch64_sve_vec_perm_operand): Likewise.
16198         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
16199         (aarch64_mov_operand): Accept const_poly_int and const_vector.
16200         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
16201         as well as const_vector.
16202         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
16203         in file.  Use CONST0_RTX and CONSTM1_RTX.
16204         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
16205         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
16206         Use aarch64_simd_imm_zero.
16207         * config/aarch64/aarch64-sve.md: New file.
16208         * config/aarch64/aarch64.md: Include it.
16209         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
16210         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
16211         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
16212         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
16213         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
16214         (sve): New attribute.
16215         (enabled): Disable instructions with the sve attribute unless
16216         TARGET_SVE.
16217         (movqi, movhi): Pass CONST_POLY_INT operaneds through
16218         aarch64_expand_mov_immediate.
16219         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
16220         CNT[BHSD] immediates.
16221         (movti): Split CONST_POLY_INT moves into two halves.
16222         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
16223         Split additions that need a temporary here if the destination
16224         is the stack pointer.
16225         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
16226         (*add<mode>3_poly_1): New instruction.
16227         (set_clobber_cc): New expander.
16229 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16231         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
16232         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
16233         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
16234         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
16235         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
16236         Change innermode from fixed_mode_size to machine_mode.
16237         (simplify_subreg): Update call accordingly.  Handle a constant-sized
16238         subreg of a variable-length CONST_VECTOR.
16240 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
16241             Alan Hayward  <alan.hayward@arm.com>
16242             David Sherwood  <david.sherwood@arm.com>
16244         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
16245         (add_offset_to_base): New function, split out from...
16246         (create_mem_ref): ...here.  When handling a scale other than 1,
16247         check first whether the address is valid without the offset.
16248         Add it into the base if so, leaving the index and scale as-is.
16250 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
16252         PR c++/83778
16253         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
16254         fold_for_warn before checking if arg2 is INTEGER_CST.
16256 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
16258         * config/rs6000/predicates.md (load_multiple_operation): Delete.
16259         (store_multiple_operation): Delete.
16260         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
16261         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
16262         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
16263         guarded by TARGET_STRING.
16264         (rs6000_output_load_multiple): Delete.
16265         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
16266         OPTION_MASK_STRING / TARGET_STRING handling.
16267         (print_operand) <'N', 'O'>: Add comment that these are unused now.
16268         (const rs6000_opt_masks) <"string">: Change mask to 0.
16269         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
16270         (MASK_STRING): Delete.
16271         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
16272         parts.  Simplify.
16273         (load_multiple): Delete.
16274         (*ldmsi8): Delete.
16275         (*ldmsi7): Delete.
16276         (*ldmsi6): Delete.
16277         (*ldmsi5): Delete.
16278         (*ldmsi4): Delete.
16279         (*ldmsi3): Delete.
16280         (store_multiple): Delete.
16281         (*stmsi8): Delete.
16282         (*stmsi7): Delete.
16283         (*stmsi6): Delete.
16284         (*stmsi5): Delete.
16285         (*stmsi4): Delete.
16286         (*stmsi3): Delete.
16287         (movmemsi_8reg): Delete.
16288         (corresponding unnamed define_insn): Delete.
16289         (movmemsi_6reg): Delete.
16290         (corresponding unnamed define_insn): Delete.
16291         (movmemsi_4reg): Delete.
16292         (corresponding unnamed define_insn): Delete.
16293         (movmemsi_2reg): Delete.
16294         (corresponding unnamed define_insn): Delete.
16295         (movmemsi_1reg): Delete.
16296         (corresponding unnamed define_insn): Delete.
16297         * config/rs6000/rs6000.opt (mno-string): New.
16298         (mstring): Replace by deprecation warning stub.
16299         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
16301 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
16303         * regrename.c (regrename_do_replace): If replacing the same
16304         reg multiple times, try to reuse last created gen_raw_REG.
16306         PR debug/81155
16307         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
16308         main to workaround a bug in GDB.
16310 2018-01-12  Tom de Vries  <tom@codesourcery.com>
16312         PR target/83737
16313         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
16315 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
16317         PR rtl-optimization/80481
16318         * ira-color.c (get_cap_member): New function.
16319         (allocnos_conflict_by_live_ranges_p): Use it.
16320         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
16321         (setup_slot_coalesced_allocno_live_ranges): Ditto.
16323 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
16325         PR target/83628
16326         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
16327         (*saddl_se_1): Ditto.
16328         (*ssubsi_1): Ditto.
16329         (*ssubl_se_1): Ditto.
16331 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16333         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
16334         rather than wi::to_widest for DR_INITs.
16335         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
16336         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
16337         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
16338         INTEGER_CSTs.
16339         (vect_analyze_group_access_1): Note that here.
16341 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16343         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
16344         polynomial type sizes.
16346 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
16348         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
16349         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
16350         (gimple_add_tmp_var): Likewise.
16352 2018-01-12  Martin Liska  <mliska@suse.cz>
16354         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
16355         (gimple_alloc_sizes): Likewise.
16356         (dump_gimple_statistics): Use PRIu64 in printf format.
16357         * gimple.h: Change uint64_t to int.
16359 2018-01-12  Martin Liska  <mliska@suse.cz>
16361         * tree-core.h: Use uint64_t instead of int.
16362         * tree.c (tree_node_counts): Likewise.
16363         (tree_node_sizes): Likewise.
16364         (dump_tree_statistics): Use PRIu64 in printf format.
16366 2018-01-12  Martin Liska  <mliska@suse.cz>
16368         * Makefile.in: As qsort_chk is implemented in vec.c, add
16369         vec.o to linkage of gencfn-macros.
16370         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
16371         passing the info to record_node_allocation_statistics.
16372         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
16373         and pass the info.
16374         * ggc-common.c (struct ggc_usage): Add operator== and use
16375         it in operator< and compare function.
16376         * mem-stats.h (struct mem_usage): Likewise.
16377         * vec.c (struct vec_usage): Remove operator< and compare
16378         function. Can be simply inherited.
16380 2018-01-12  Martin Jambor  <mjambor@suse.cz>
16382         PR target/81616
16383         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
16384         * tree-ssa-math-opts.c: Include domwalk.h.
16385         (convert_mult_to_fma_1): New function.
16386         (fma_transformation_info): New type.
16387         (fma_deferring_state): Likewise.
16388         (cancel_fma_deferring): New function.
16389         (result_of_phi): Likewise.
16390         (last_fma_candidate_feeds_initial_phi): Likewise.
16391         (convert_mult_to_fma): Added deferring logic, split actual
16392         transformation to convert_mult_to_fma_1.
16393         (math_opts_dom_walker): New type.
16394         (math_opts_dom_walker::after_dom_children): New method, body moved
16395         here from pass_optimize_widening_mul::execute, added deferring logic
16396         bits.
16397         (pass_optimize_widening_mul::execute): Moved most of code to
16398         math_opts_dom_walker::after_dom_children.
16399         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
16400         * config/i386/i386.c (ix86_option_override_internal): Added
16401         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
16403 2018-01-12  Richard Biener  <rguenther@suse.de>
16405         PR debug/83157
16406         * dwarf2out.c (gen_variable_die): Do not reset old_die for
16407         inline instance vars.
16409 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
16411         PR target/81819
16412         * config/rx/rx.c (rx_is_restricted_memory_address):
16413         Handle SUBREG case.
16415 2018-01-12  Richard Biener  <rguenther@suse.de>
16417         PR tree-optimization/80846
16418         * target.def (split_reduction): New target hook.
16419         * targhooks.c (default_split_reduction): New function.
16420         * targhooks.h (default_split_reduction): Declare.
16421         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
16422         target requests first reduce vectors by combining low and high
16423         parts.
16424         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
16425         (get_vectype_for_scalar_type_and_size): Export.
16426         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
16427         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
16428         * doc/tm.texi: Regenerate.
16429         * config/i386/i386.c (ix86_split_reduction): Implement
16430         TARGET_VECTORIZE_SPLIT_REDUCTION.
16432 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
16434         PR target/83368
16435         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
16436         in PIC mode except for TARGET_VXWORKS_RTP.
16437         * config/sparc/sparc.c: Include cfgrtl.h.
16438         (TARGET_INIT_PIC_REG): Define.
16439         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
16440         (sparc_pic_register_p): New predicate.
16441         (sparc_legitimate_address_p): Use it.
16442         (sparc_legitimize_pic_address): Likewise.
16443         (sparc_delegitimize_address): Likewise.
16444         (sparc_mode_dependent_address_p): Likewise.
16445         (gen_load_pcrel_sym): Remove 4th parameter.
16446         (load_got_register): Adjust call to above.  Remove obsolete stuff.
16447         (sparc_expand_prologue): Do not call load_got_register here.
16448         (sparc_flat_expand_prologue): Likewise.
16449         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
16450         (sparc_use_pseudo_pic_reg): New function.
16451         (sparc_init_pic_reg): Likewise.
16452         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
16453         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
16455 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
16457         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
16458         Add item for branch_cost.
16460 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
16462         PR rtl-optimization/83565
16463         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
16464         not extend the result to a larger mode for rotate operations.
16465         (num_sign_bit_copies1): Likewise.
16467 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
16469         PR target/40411
16470         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
16471         -symbolic.
16472         Use values-Xc.o for -pedantic.
16473         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
16475 2018-01-12  Martin Liska  <mliska@suse.cz>
16477         PR ipa/83054
16478         * ipa-devirt.c (final_warning_record::grow_type_warnings):
16479         New function.
16480         (possible_polymorphic_call_targets): Use it.
16481         (ipa_devirt): Likewise.
16483 2018-01-12  Martin Liska  <mliska@suse.cz>
16485         * profile-count.h (enum profile_quality): Use 0 as invalid
16486         enum value of profile_quality.
16488 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
16490         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
16491         -mext-string options.
16493 2018-01-12  Richard Biener  <rguenther@suse.de>
16495         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
16496         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
16497         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
16498         Likewise.
16499         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
16501 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
16503         * configure.ac (--with-long-double-format): Add support for the
16504         configuration option to change the default long double format on
16505         PowerPC systems.
16506         * config.gcc (powerpc*-linux*-*): Likewise.
16507         * configure: Regenerate.
16508         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
16509         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
16510         used without modification.
16512 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16514         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
16515         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
16516         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
16517         MISC_BUILTIN_SPEC_BARRIER.
16518         (rs6000_init_builtins): Likewise.
16519         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
16520         enum value.
16521         (speculation_barrier): New define_insn.
16522         * doc/extend.texi: Document __builtin_speculation_barrier.
16524 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
16526         PR target/83203
16527         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
16528         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
16529         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
16530         iterators.
16531         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
16532         integral modes instead of "ss" and "sd".
16533         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
16534         vectors with 32-bit and 64-bit elements.
16535         (vecdupssescalarmodesuffix): New mode attribute.
16536         (vec_dup<mode>): Use it.
16538 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
16540         PR target/83330
16541         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
16542         frame if argument is passed on stack.
16544 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
16546         PR target/82682
16547         * ree.c (combine_reaching_defs): Optimize also
16548         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
16549         reg2=any_extend(exp); reg1=reg2;, formatting fix.
16551 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
16553         PR middle-end/83189
16554         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
16556 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
16558         PR middle-end/83718
16559         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
16560         after they are computed.
16562 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
16564         PR tree-optimization/83695
16565         * gimple-loop-linterchange.cc
16566         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
16567         reset cached scev information after interchange.
16568         (pass_linterchange::execute): Remove call to scev_reset_htab.
16570 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16572         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
16573         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
16574         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
16575         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
16576         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
16577         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
16578         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
16579         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
16580         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
16581         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
16582         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
16583         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
16584         (V_lane_reg): Likewise.
16585         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
16586         New define_expand.
16587         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
16588         (vfmal_lane_low<mode>_intrinsic,
16589         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
16590         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
16591         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
16592         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
16593         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
16594         vfmsl_lane_high<mode>_intrinsic): New define_insns.
16596 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16598         * config/arm/arm-cpus.in (fp16fml): New feature.
16599         (ALL_SIMD): Add fp16fml.
16600         (armv8.2-a): Add fp16fml as an option.
16601         (armv8.3-a): Likewise.
16602         (armv8.4-a): Add fp16fml as part of fp16.
16603         * config/arm/arm.h (TARGET_FP16FML): Define.
16604         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
16605         when appropriate.
16606         * config/arm/arm-modes.def (V2HF): Define.
16607         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
16608         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
16609         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
16610         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
16611         vfmsl_low, vfmsl_high): New set of builtins.
16612         * config/arm/iterators.md (PLUSMINUS): New code iterator.
16613         (vfml_op): New code attribute.
16614         (VFMLHALVES): New int iterator.
16615         (VFML, VFMLSEL): New mode attributes.
16616         (V_reg): Define mapping for V2HF.
16617         (V_hi, V_lo): New mode attributes.
16618         (VF_constraint): Likewise.
16619         (vfml_half, vfml_half_selector): New int attributes.
16620         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
16621         define_expand.
16622         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
16623         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
16624         New define_insn.
16625         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
16626         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
16627         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
16628         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
16629         documentation.
16630         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
16631         Document new effective target and option set.
16633 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16635         * config/arm/arm-cpus.in (armv8_4): New feature.
16636         (ARMv8_4a): New fgroup.
16637         (armv8.4-a): New arch.
16638         * config/arm/arm-tables.opt: Regenerate.
16639         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
16640         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
16641         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
16642         Add matching rules for -march=armv8.4-a and extensions.
16643         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
16645 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
16647         PR target/81821
16648         * config/rx/rx.md (BW): New mode attribute.
16649         (sync_lock_test_and_setsi): Add mode suffix to insn output.
16651 2018-01-11  Richard Biener  <rguenther@suse.de>
16653         PR tree-optimization/83435
16654         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
16655         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
16656         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
16658 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16659             Alan Hayward  <alan.hayward@arm.com>
16660             David Sherwood  <david.sherwood@arm.com>
16662         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
16663         field.
16664         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
16665         (aarch64_print_address_internal): Use it to check for a zero offset.
16667 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16668             Alan Hayward  <alan.hayward@arm.com>
16669             David Sherwood  <david.sherwood@arm.com>
16671         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
16672         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
16673         Return a poly_int64 rather than a HOST_WIDE_INT.
16674         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
16675         rather than a HOST_WIDE_INT.
16676         * config/aarch64/aarch64.h (aarch64_frame): Protect with
16677         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
16678         hard_fp_offset, frame_size, initial_adjust, callee_offset and
16679         final_offset from HOST_WIDE_INT to poly_int64.
16680         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
16681         to_constant when getting the number of units in an Advanced SIMD
16682         mode.
16683         (aarch64_builtin_vectorized_function): Check for a constant number
16684         of units.
16685         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
16686         GET_MODE_SIZE.
16687         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
16688         attribute instead of GET_MODE_NUNITS.
16689         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
16690         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
16691         GET_MODE_SIZE for fixed-size registers.
16692         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
16693         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
16694         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
16695         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
16696         (aarch64_print_operand, aarch64_print_address_internal)
16697         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
16698         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
16699         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
16700         Handle polynomial GET_MODE_SIZE.
16701         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
16702         wider than SImode without modification.
16703         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
16704         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
16705         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
16706         passing and returning SVE modes.
16707         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
16708         rather than GEN_INT.
16709         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
16710         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
16711         (aarch64_allocate_and_probe_stack_space): Likewise.
16712         (aarch64_layout_frame): Cope with polynomial offsets.
16713         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
16714         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
16715         polynomial offsets.
16716         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
16717         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
16718         poly_int64 rather than a HOST_WIDE_INT.
16719         (aarch64_get_separate_components, aarch64_process_components)
16720         (aarch64_expand_prologue, aarch64_expand_epilogue)
16721         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
16722         (aarch64_anchor_offset): New function, split out from...
16723         (aarch64_legitimize_address): ...here.
16724         (aarch64_builtin_vectorization_cost): Handle polynomial
16725         TYPE_VECTOR_SUBPARTS.
16726         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
16727         GET_MODE_NUNITS.
16728         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
16729         number of elements from the PARALLEL rather than the mode.
16730         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
16731         rather than GET_MODE_BITSIZE.
16732         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
16733         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
16734         (aarch64_expand_vec_perm_const_1): Handle polynomial
16735         d->perm.length () and d->perm elements.
16736         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
16737         Apply to_constant to d->perm elements.
16738         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
16739         polynomial CONST_VECTOR_NUNITS.
16740         (aarch64_move_pointer): Take amount as a poly_int64 rather
16741         than an int.
16742         (aarch64_progress_pointer): Avoid temporary variable.
16743         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
16744         the mode attribute instead of GET_MODE.
16746 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16747             Alan Hayward  <alan.hayward@arm.com>
16748             David Sherwood  <david.sherwood@arm.com>
16750         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
16751         x exists before using it.
16752         (aarch64_add_constant_internal): Rename to...
16753         (aarch64_add_offset_1): ...this.  Replace regnum with separate
16754         src and dest rtxes.  Handle the case in which they're different,
16755         including when the offset is zero.  Replace scratchreg with an rtx.
16756         Use 2 additions if there is no spare register into which we can
16757         move a 16-bit constant.
16758         (aarch64_add_constant): Delete.
16759         (aarch64_add_offset): Replace reg with separate src and dest
16760         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
16761         Use aarch64_add_offset_1.
16762         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
16763         an rtx rather than an int.  Take the delta as a poly_int64
16764         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
16765         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
16766         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
16767         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
16768         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
16769         and aarch64_add_sp.
16770         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
16771         aarch64_add_constant.
16773 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16775         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
16776         Use scalar_float_mode.
16778 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16780         * config/aarch64/aarch64-simd.md
16781         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
16782         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
16783         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
16784         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
16785         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
16786         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
16787         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
16788         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
16789         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
16790         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
16792 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
16794         PR target/83514
16795         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
16796         targ_options->x_arm_arch_string is non NULL.
16798 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
16800         * config/aarch64/aarch64.h
16801         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
16803 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
16805         PR target/82096
16806         * expmed.c (emit_store_flag_force): Swap if const op0
16807         and change VOIDmode to mode of op0.
16809 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
16811         PR rtl-optimization/83761
16812         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
16813         than bytes to mode_for_size.
16815 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16817         PR middle-end/83189
16818         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
16819         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
16820         profile.
16822 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16824         PR middle-end/83575
16825         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
16826         when in layout mode.
16827         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
16828         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
16829         partition fixup.
16831 2018-01-10  Michael Collison  <michael.collison@arm.com>
16833         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
16834         * config/aarch64/aarch64-option-extension.def: Add
16835         AARCH64_OPT_EXTENSION of 'fp16fml'.
16836         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16837         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
16838         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
16839         * config/aarch64/constraints.md (Ui7): New constraint.
16840         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
16841         (VFMLA_SEL_W): Ditto.
16842         (f16quad): Ditto.
16843         (f16mac1): Ditto.
16844         (VFMLA16_LOW): New int iterator.
16845         (VFMLA16_HIGH): Ditto.
16846         (UNSPEC_FMLAL): New unspec.
16847         (UNSPEC_FMLSL): Ditto.
16848         (UNSPEC_FMLAL2): Ditto.
16849         (UNSPEC_FMLSL2): Ditto.
16850         (f16mac): New code attribute.
16851         * config/aarch64/aarch64-simd-builtins.def
16852         (aarch64_fmlal_lowv2sf): Ditto.
16853         (aarch64_fmlsl_lowv2sf): Ditto.
16854         (aarch64_fmlalq_lowv4sf): Ditto.
16855         (aarch64_fmlslq_lowv4sf): Ditto.
16856         (aarch64_fmlal_highv2sf): Ditto.
16857         (aarch64_fmlsl_highv2sf): Ditto.
16858         (aarch64_fmlalq_highv4sf): Ditto.
16859         (aarch64_fmlslq_highv4sf): Ditto.
16860         (aarch64_fmlal_lane_lowv2sf): Ditto.
16861         (aarch64_fmlsl_lane_lowv2sf): Ditto.
16862         (aarch64_fmlal_laneq_lowv2sf): Ditto.
16863         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
16864         (aarch64_fmlalq_lane_lowv4sf): Ditto.
16865         (aarch64_fmlsl_lane_lowv4sf): Ditto.
16866         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
16867         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
16868         (aarch64_fmlal_lane_highv2sf): Ditto.
16869         (aarch64_fmlsl_lane_highv2sf): Ditto.
16870         (aarch64_fmlal_laneq_highv2sf): Ditto.
16871         (aarch64_fmlsl_laneq_highv2sf): Ditto.
16872         (aarch64_fmlalq_lane_highv4sf): Ditto.
16873         (aarch64_fmlsl_lane_highv4sf): Ditto.
16874         (aarch64_fmlalq_laneq_highv4sf): Ditto.
16875         (aarch64_fmlsl_laneq_highv4sf): Ditto.
16876         * config/aarch64/aarch64-simd.md:
16877         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
16878         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16879         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
16880         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16881         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
16882         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
16883         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
16884         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
16885         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
16886         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
16887         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
16888         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
16889         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
16890         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
16891         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
16892         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
16893         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
16894         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
16895         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
16896         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
16897         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
16898         (vfmlsl_low_u32): Ditto.
16899         (vfmlalq_low_u32): Ditto.
16900         (vfmlslq_low_u32): Ditto.
16901         (vfmlal_high_u32): Ditto.
16902         (vfmlsl_high_u32): Ditto.
16903         (vfmlalq_high_u32): Ditto.
16904         (vfmlslq_high_u32): Ditto.
16905         (vfmlal_lane_low_u32): Ditto.
16906         (vfmlsl_lane_low_u32): Ditto.
16907         (vfmlal_laneq_low_u32): Ditto.
16908         (vfmlsl_laneq_low_u32): Ditto.
16909         (vfmlalq_lane_low_u32): Ditto.
16910         (vfmlslq_lane_low_u32): Ditto.
16911         (vfmlalq_laneq_low_u32): Ditto.
16912         (vfmlslq_laneq_low_u32): Ditto.
16913         (vfmlal_lane_high_u32): Ditto.
16914         (vfmlsl_lane_high_u32): Ditto.
16915         (vfmlal_laneq_high_u32): Ditto.
16916         (vfmlsl_laneq_high_u32): Ditto.
16917         (vfmlalq_lane_high_u32): Ditto.
16918         (vfmlslq_lane_high_u32): Ditto.
16919         (vfmlalq_laneq_high_u32): Ditto.
16920         (vfmlslq_laneq_high_u32): Ditto.
16921         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
16922         (AARCH64_FL_FOR_ARCH8_4): New.
16923         (AARCH64_ISA_F16FML): New ISA flag.
16924         (TARGET_F16FML): New feature flag for fp16fml.
16925         (doc/invoke.texi): Document new fp16fml option.
16927 2018-01-10  Michael Collison  <michael.collison@arm.com>
16929         * config/aarch64/aarch64-builtins.c:
16930         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
16931         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16932         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
16933         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
16934         (AARCH64_ISA_SHA3): New ISA flag.
16935         (TARGET_SHA3): New feature flag for sha3.
16936         * config/aarch64/iterators.md (sha512_op): New int attribute.
16937         (CRYPTO_SHA512): New int iterator.
16938         (UNSPEC_SHA512H): New unspec.
16939         (UNSPEC_SHA512H2): Ditto.
16940         (UNSPEC_SHA512SU0): Ditto.
16941         (UNSPEC_SHA512SU1): Ditto.
16942         * config/aarch64/aarch64-simd-builtins.def
16943         (aarch64_crypto_sha512hqv2di): New builtin.
16944         (aarch64_crypto_sha512h2qv2di): Ditto.
16945         (aarch64_crypto_sha512su0qv2di): Ditto.
16946         (aarch64_crypto_sha512su1qv2di): Ditto.
16947         (aarch64_eor3qv8hi): Ditto.
16948         (aarch64_rax1qv2di): Ditto.
16949         (aarch64_xarqv2di): Ditto.
16950         (aarch64_bcaxqv8hi): Ditto.
16951         * config/aarch64/aarch64-simd.md:
16952         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
16953         (aarch64_crypto_sha512su0qv2di): Ditto.
16954         (aarch64_crypto_sha512su1qv2di): Ditto.
16955         (aarch64_eor3qv8hi): Ditto.
16956         (aarch64_rax1qv2di): Ditto.
16957         (aarch64_xarqv2di): Ditto.
16958         (aarch64_bcaxqv8hi): Ditto.
16959         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
16960         (vsha512h2q_u64): Ditto.
16961         (vsha512su0q_u64): Ditto.
16962         (vsha512su1q_u64): Ditto.
16963         (veor3q_u16): Ditto.
16964         (vrax1q_u64): Ditto.
16965         (vxarq_u64): Ditto.
16966         (vbcaxq_u16): Ditto.
16967         * config/arm/types.md (crypto_sha512): New type attribute.
16968         (crypto_sha3): Ditto.
16969         (doc/invoke.texi): Document new sha3 option.
16971 2018-01-10  Michael Collison  <michael.collison@arm.com>
16973         * config/aarch64/aarch64-builtins.c:
16974         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
16975         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16976         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
16977         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
16978         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
16979         (AARCH64_ISA_SM4): New ISA flag.
16980         (TARGET_SM4): New feature flag for sm4.
16981         * config/aarch64/aarch64-simd-builtins.def
16982         (aarch64_sm3ss1qv4si): Ditto.
16983         (aarch64_sm3tt1aq4si): Ditto.
16984         (aarch64_sm3tt1bq4si): Ditto.
16985         (aarch64_sm3tt2aq4si): Ditto.
16986         (aarch64_sm3tt2bq4si): Ditto.
16987         (aarch64_sm3partw1qv4si): Ditto.
16988         (aarch64_sm3partw2qv4si): Ditto.
16989         (aarch64_sm4eqv4si): Ditto.
16990         (aarch64_sm4ekeyqv4si): Ditto.
16991         * config/aarch64/aarch64-simd.md:
16992         (aarch64_sm3ss1qv4si): Ditto.
16993         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
16994         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
16995         (aarch64_sm4eqv4si): Ditto.
16996         (aarch64_sm4ekeyqv4si): Ditto.
16997         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
16998         (sm3part_op): Ditto.
16999         (CRYPTO_SM3TT): Ditto.
17000         (CRYPTO_SM3PART): Ditto.
17001         (UNSPEC_SM3SS1): New unspec.
17002         (UNSPEC_SM3TT1A): Ditto.
17003         (UNSPEC_SM3TT1B): Ditto.
17004         (UNSPEC_SM3TT2A): Ditto.
17005         (UNSPEC_SM3TT2B): Ditto.
17006         (UNSPEC_SM3PARTW1): Ditto.
17007         (UNSPEC_SM3PARTW2): Ditto.
17008         (UNSPEC_SM4E): Ditto.
17009         (UNSPEC_SM4EKEY): Ditto.
17010         * config/aarch64/constraints.md (Ui2): New constraint.
17011         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
17012         * config/arm/types.md (crypto_sm3): New type attribute.
17013         (crypto_sm4): Ditto.
17014         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
17015         (vsm3tt1aq_u32): Ditto.
17016         (vsm3tt1bq_u32): Ditto.
17017         (vsm3tt2aq_u32): Ditto.
17018         (vsm3tt2bq_u32): Ditto.
17019         (vsm3partw1q_u32): Ditto.
17020         (vsm3partw2q_u32): Ditto.
17021         (vsm4eq_u32): Ditto.
17022         (vsm4ekeyq_u32): Ditto.
17023         (doc/invoke.texi): Document new sm4 option.
17025 2018-01-10  Michael Collison  <michael.collison@arm.com>
17027         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
17028         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
17029         (AARCH64_FL_FOR_ARCH8_4): New.
17030         (AARCH64_FL_V8_4): New flag.
17031         (doc/invoke.texi): Document new armv8.4-a option.
17033 2018-01-10  Michael Collison  <michael.collison@arm.com>
17035         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
17036         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
17037         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
17038         * config/aarch64/aarch64-option-extension.def: Add
17039         AARCH64_OPT_EXTENSION of 'sha2'.
17040         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
17041         (crypto): Disable sha2 and aes if crypto disabled.
17042         (crypto): Enable aes and sha2 if enabled.
17043         (simd): Disable sha2 and aes if simd disabled.
17044         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
17045         New flags.
17046         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
17047         (TARGET_SHA2): New feature flag for sha2.
17048         (TARGET_AES): New feature flag for aes.
17049         * config/aarch64/aarch64-simd.md:
17050         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
17051         conditional on TARGET_AES.
17052         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
17053         (aarch64_crypto_sha1hsi): Make pattern conditional
17054         on TARGET_SHA2.
17055         (aarch64_crypto_sha1hv4si): Ditto.
17056         (aarch64_be_crypto_sha1hv4si): Ditto.
17057         (aarch64_crypto_sha1su1v4si): Ditto.
17058         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
17059         (aarch64_crypto_sha1su0v4si): Ditto.
17060         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
17061         (aarch64_crypto_sha256su0v4si): Ditto.
17062         (aarch64_crypto_sha256su1v4si): Ditto.
17063         (doc/invoke.texi): Document new aes and sha2 options.
17065 2018-01-10  Martin Sebor  <msebor@redhat.com>
17067         PR tree-optimization/83781
17068         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
17069         as string arrays.
17071 2018-01-11  Martin Sebor  <msebor@gmail.com>
17072             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17074         PR tree-optimization/83501
17075         PR tree-optimization/81703
17077         * tree-ssa-strlen.c (get_string_cst): Rename...
17078         (get_string_len): ...to this.  Handle global constants.
17079         (handle_char_store): Adjust.
17081 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
17082             Jim Wilson  <jimw@sifive.com>
17084         * config/riscv/riscv-protos.h (riscv_output_return): New.
17085         * config/riscv/riscv.c (struct machine_function): New naked_p field.
17086         (riscv_attribute_table, riscv_output_return),
17087         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
17088         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
17089         (riscv_compute_frame_info): Only compute frame->mask if not a naked
17090         function.
17091         (riscv_expand_prologue): Add early return for naked function.
17092         (riscv_expand_epilogue): Likewise.
17093         (riscv_function_ok_for_sibcall): Return false for naked function.
17094         (riscv_set_current_function): New.
17095         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
17096         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
17097         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
17098         * doc/extend.texi (RISC-V Function Attributes): New.
17100 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
17102         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
17103         check for 128-bit long double before checking TCmode.
17104         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
17105         128-bit long doubles before checking TFmode or TCmode.
17106         (FLOAT128_IBM_P): Likewise.
17108 2018-01-10  Martin Sebor  <msebor@redhat.com>
17110         PR tree-optimization/83671
17111         * builtins.c (c_strlen): Unconditionally return zero for the empty
17112         string.
17113         Use -Warray-bounds for warnings.
17114         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
17115         for non-constant array indices with COMPONENT_REF, arrays of
17116         arrays, and pointers to arrays.
17117         (gimple_fold_builtin_strlen): Determine and set length range for
17118         non-constant character arrays.
17120 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
17122         PR middle-end/81897
17123         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
17124         empty blocks.
17126 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
17128         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
17130 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
17132         PR target/83399
17133         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
17134         VECTOR_MEM_ALTIVEC_OR_VSX_P.
17135         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
17136         indexed_or_indirect_operand predicate.
17137         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
17138         (*vsx_le_perm_load_v8hi): Likewise.
17139         (*vsx_le_perm_load_v16qi): Likewise.
17140         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
17141         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
17142         (*vsx_le_perm_store_v8hi): Likewise.
17143         (*vsx_le_perm_store_v16qi): Likewise.
17144         (eight unnamed splitters): Likewise.
17146 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
17148         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
17149         * config/rs6000/emmintrin.h: Likewise.
17150         * config/rs6000/mmintrin.h: Likewise.
17151         * config/rs6000/xmmintrin.h: Likewise.
17153 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
17155         PR c++/43486
17156         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
17157         "public_flag".
17158         * tree.c (tree_nop_conversion): Return true for location wrapper
17159         nodes.
17160         (maybe_wrap_with_location): New function.
17161         (selftest::check_strip_nops): New function.
17162         (selftest::test_location_wrappers): New function.
17163         (selftest::tree_c_tests): Call it.
17164         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
17165         (maybe_wrap_with_location): New decl.
17166         (EXPR_LOCATION_WRAPPER_P): New macro.
17167         (location_wrapper_p): New inline function.
17168         (tree_strip_any_location_wrapper): New inline function.
17170 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
17172         PR target/83735
17173         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
17174         stack_realign_offset for the largest alignment of stack slot
17175         actually used.
17176         (ix86_find_max_used_stack_alignment): New function.
17177         (ix86_finalize_stack_frame_flags): Use it.  Set
17178         max_used_stack_alignment if we don't realign stack.
17179         * config/i386/i386.h (machine_function): Add
17180         max_used_stack_alignment.
17182 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
17184         * config/arm/arm.opt (-mbranch-cost): New option.
17185         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
17186         account.
17188 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
17190         PR target/83629
17191         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
17192         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
17194 2018-01-10  Richard Biener  <rguenther@suse.de>
17196         PR debug/83765
17197         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
17198         early out so it also covers the case where we have a non-NULL
17199         origin.
17201 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
17203         PR tree-optimization/83753
17204         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
17205         for non-strided grouped accesses if the number of elements is 1.
17207 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
17209         PR target/81616
17210         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
17211         * i386.h (TARGET_USE_GATHER): Define.
17212         * x86-tune.def (X86_TUNE_USE_GATHER): New.
17214 2018-01-10  Martin Liska  <mliska@suse.cz>
17216         PR bootstrap/82831
17217         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
17218         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
17219         partitioning.
17220         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
17221         CLEANUP_NO_PARTITIONING is not set.
17223 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
17225         * doc/rtl.texi: Remove documentation of (const ...) wrappers
17226         for vectors, as a partial revert of r254296.
17227         * rtl.h (const_vec_p): Delete.
17228         (const_vec_duplicate_p): Don't test for vector CONSTs.
17229         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
17230         * expmed.c (make_tree): Likewise.
17232         Revert:
17233         * common.md (E, F): Use CONSTANT_P instead of checking for
17234         CONST_VECTOR.
17235         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
17236         checking for CONST_VECTOR.
17238 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17240         PR middle-end/83575
17241         * predict.c (force_edge_cold): Handle in more sane way edges
17242         with no prediction.
17244 2018-01-09  Carl Love  <cel@us.ibm.com>
17246         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
17247         V4SI, V4SF types.
17248         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
17249         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
17250         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
17251         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
17252         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
17253         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
17254         * config/rs6000/rs6000-protos.h: Add extern defition for
17255         rs6000_generate_float2_double_code.
17256         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
17257         function.
17258         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
17259         (float2_v2df): Add define_expand.
17261 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
17263         PR target/83628
17264         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
17265         op_mode in the force_to_mode call.
17267 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17269         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
17270         instead of checking each element individually.
17271         (aarch64_evpc_uzp): Likewise.
17272         (aarch64_evpc_zip): Likewise.
17273         (aarch64_evpc_ext): Likewise.
17274         (aarch64_evpc_rev): Likewise.
17275         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
17276         instead of checking each element individually.  Return true without
17277         generating rtl if
17278         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
17279         whether all selected elements come from the same input, instead of
17280         checking each element individually.  Remove calls to gen_rtx_REG,
17281         start_sequence and end_sequence and instead assert that no rtl is
17282         generated.
17284 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17286         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
17287         order of HIGH and CONST checks.
17289 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
17291         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
17292         if the destination isn't an SSA_NAME.
17294 2018-01-09  Richard Biener  <rguenther@suse.de>
17296         PR tree-optimization/83668
17297         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
17298         move prologue...
17299         (canonicalize_loop_form): ... here, renamed from ...
17300         (canonicalize_loop_closed_ssa_form): ... this and amended to
17301         swap successor edges for loop exit blocks to make us use
17302         the RPO order we need for initial schedule generation.
17304 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
17306         PR tree-optimization/64811
17307         * match.pd: When optimizing comparisons with Inf, avoid
17308         introducing or losing exceptions from comparisons with NaN.
17310 2018-01-09  Martin Liska  <mliska@suse.cz>
17312         PR sanitizer/82517
17313         * asan.c (shadow_mem_size): Add gcc_assert.
17315 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
17317         Don't save registers in main().
17319         PR target/83738
17320         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
17321         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
17322         * config/avr/avr.c (avr_set_current_function): Don't error if
17323         naked, OS_task or OS_main are specified at the same time.
17324         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
17325         OS_main.
17326         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
17327         attribute.
17328         * common/config/avr/avr-common.c (avr_option_optimization_table):
17329         Switch on -mmain-is-OS_task for optimizing compilations.
17331 2018-01-09  Richard Biener  <rguenther@suse.de>
17333         PR tree-optimization/83572
17334         * graphite.c: Include cfganal.h.
17335         (graphite_transform_loops): Connect infinite loops to exit
17336         and remove fake edges at the end.
17338 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17340         * ipa-inline.c (edge_badness): Revert accidental checkin.
17342 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
17344         PR ipa/80763
17345         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
17346         symbols; not inline clones.
17348 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
17350         PR target/83507
17351         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
17352         hard registers.  Formatting fixes.
17354         PR preprocessor/83722
17355         * gcc.c (try_generate_repro): Pass
17356         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
17357         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
17358         do_report_bug.
17360 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
17361             Kito Cheng  <kito.cheng@gmail.com>
17363         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
17364         (riscv_leaf_function_p): Delete.
17365         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
17367 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
17369         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
17370         function.
17371         (do_ifelse): New function.
17372         (do_isel): New function.
17373         (do_sub3): New function.
17374         (do_add3): New function.
17375         (do_load_mask_compare): New function.
17376         (do_overlap_load_compare): New function.
17377         (expand_compare_loop): New function.
17378         (expand_block_compare): Call expand_compare_loop() when appropriate.
17379         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
17380         option description.
17381         (-mblock-compare-inline-loop-limit): New option.
17383 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17385         PR target/83677
17386         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
17387         Reverse order of second and third operands in first alternative.
17388         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
17389         of first and second elements in UNSPEC_VPERMR vector.
17390         (altivec_expand_vec_perm_le): Likewise.
17392 2018-01-08  Jeff Law  <law@redhat.com>
17394         PR rtl-optimizatin/81308
17395         * tree-switch-conversion.c (cfg_altered): New file scoped static.
17396         (process_switch): If group_case_labels makes a change, then set
17397         cfg_altered.
17398         (pass_convert_switch::execute): If a switch is converted, then
17399         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
17401         PR rtl-optimization/81308
17402         * recog.c (split_all_insns): Conditionally cleanup the CFG after
17403         splitting insns.
17405 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
17407         PR target/83663 - Revert r255946
17408         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
17409         generation for cases where splatting a value is not useful.
17410         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
17411         across a vec_duplicate and a paradoxical subreg forming a vector
17412         mode to a vec_concat.
17414 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17416         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
17417         -march=armv8.3-a variants.
17418         * config/arm/t-multilib: Likewise.
17419         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
17421 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
17423         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
17424         to generate rtl.
17425         (cceq_ior_compare_complement): Give it a name so I can use it, and
17426         change boolean_or_operator predicate to boolean_operator so it can
17427         be used to generate a crand.
17428         (eqne): New code iterator.
17429         (bd/bd_neg): New code_attrs.
17430         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
17431         a single define_insn.
17432         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
17433         decrement (bdnzt/bdnzf/bdzt/bdzf).
17434         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
17435         with the new names of the branch decrement patterns, and added the
17436         names of the branch decrement conditional patterns.
17438 2018-01-08  Richard Biener  <rguenther@suse.de>
17440         PR tree-optimization/83563
17441         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
17442         cache.
17444 2018-01-08  Richard Biener  <rguenther@suse.de>
17446         PR middle-end/83713
17447         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
17449 2018-01-08  Richard Biener  <rguenther@suse.de>
17451         PR tree-optimization/83685
17452         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
17453         references to abnormals.
17455 2018-01-08  Richard Biener  <rguenther@suse.de>
17457         PR lto/83719
17458         * dwarf2out.c (output_indirect_strings): Handle empty
17459         skeleton_debug_str_hash.
17460         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
17462 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
17464         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
17465         (emit_store_direct): Likewise.
17466         (arc_trampoline_adjust_address): Likewise.
17467         (arc_asm_trampoline_template): New function.
17468         (arc_initialize_trampoline): Use asm_trampoline_template.
17469         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
17470         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
17471         * config/arc/arc.md (flush_icache): Delete pattern.
17473 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
17475         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
17476         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
17477         munaligned-access.
17479 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17481         PR target/83681
17482         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
17483         by not USED_FOR_TARGET.
17484         (make_pass_resolve_sw_modes): Likewise.
17486 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17488         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
17489         USED_FOR_TARGET.
17491 2018-01-08  Richard Biener  <rguenther@suse.de>
17493         PR middle-end/83580
17494         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
17496 2018-01-08  Richard Biener  <rguenther@suse.de>
17498         PR middle-end/83517
17499         * match.pd ((t * 2) / 2) -> t): Add missing :c.
17501 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
17503         PR middle-end/81897
17504         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
17505         basic blocks with a small number of successors.
17506         (convert_control_dep_chain_into_preds): Improve handling of
17507         forwarder blocks.
17508         (dump_predicates): Split apart into...
17509         (dump_pred_chain): ...here...
17510         (dump_pred_info): ...and here.
17511         (can_one_predicate_be_invalidated_p): Add debugging printfs.
17512         (can_chain_union_be_invalidated_p): Improve check for invalidation
17513         of paths.
17514         (uninit_uses_cannot_happen): Avoid unnecessary if
17515         convert_control_dep_chain_into_preds yielded nothing.
17517 2018-01-06  Martin Sebor  <msebor@redhat.com>
17519         PR tree-optimization/83640
17520         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
17521         subtracting negative offset from size.
17522         (builtin_access::overlap): Adjust offset bounds of the access to fall
17523         within the size of the object if possible.
17525 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
17527         PR rtl-optimization/83699
17528         * expmed.c (extract_bit_field_1): Restrict the vector usage of
17529         extract_bit_field_as_subreg to cases in which the extracted
17530         value is also a vector.
17532         * lra-constraints.c (process_alt_operands): Test for the equivalence
17533         substitutions when detecting a possible reload cycle.
17535 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
17537         PR debug/83480
17538         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
17539         by default if flag_selective_schedling{,2}.  Formatting fixes.
17541         PR rtl-optimization/83682
17542         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
17543         if it has non-VECTOR_MODE element mode.
17544         (vec_duplicate_p): Likewise.
17546         PR middle-end/83694
17547         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
17548         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
17550 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
17552         PR target/83604
17553         * config/i386/i386-builtin.def
17554         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
17555         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
17556         Require also OPTION_MASK_ISA_AVX512F in addition to
17557         OPTION_MASK_ISA_GFNI.
17558         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
17559         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
17560         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
17561         to OPTION_MASK_ISA_GFNI.
17562         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
17563         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
17564         OPTION_MASK_ISA_AVX512BW.
17565         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
17566         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
17567         addition to OPTION_MASK_ISA_GFNI.
17568         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
17569         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
17570         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
17571         to OPTION_MASK_ISA_GFNI.
17572         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
17573         a requirement for all ISAs rather than any of them with a few
17574         exceptions.
17575         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
17576         processing.
17577         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
17578         bitmasks to be enabled with 3 exceptions, instead of requiring any
17579         enabled ISA with lots of exceptions.
17580         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
17581         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
17582         Change avx512bw in isa attribute to avx512f.
17583         * config/i386/sgxintrin.h: Add license boilerplate.
17584         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
17585         to __AVX512F__ and __AVX512VL to __AVX512VL__.
17586         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
17587         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
17588         defined.
17589         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
17590         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
17591         temporarily sse2 rather than sse if not enabled already.
17593         PR target/83604
17594         * config/i386/sse.md (VI248_VLBW): Rename to ...
17595         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
17596         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
17597         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
17598         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
17599         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
17600         mode iterator instead of VI248_VLBW.
17602 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
17604         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
17605         (record_modified): Skip clobbers; add debug output.
17606         (param_change_prob): Use sreal frequencies.
17608 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
17610         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
17611         punt for user-aligned variables.
17613 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
17615         * tree-chrec.c (chrec_contains_symbols): Return true for
17616         POLY_INT_CST.
17618 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
17620         PR target/82439
17621         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
17622         of (x|y) == x for BICS pattern.
17624 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
17626         PR tree-optimization/83605
17627         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
17628         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
17629         can throw.
17631 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
17633         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
17634         * config/epiphany/rtems.h: New file.
17636 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17637             Uros Bizjak  <ubizjak@gmail.com>
17639         PR target/83554
17640         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
17641         QIreg_operand instead of register_operand predicate.
17642         * config/i386/i386.c (ix86_rop_should_change_byte_p,
17643         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
17644         comments instead of -fmitigate[-_]rop.
17646 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
17648         PR bootstrap/81926
17649         * cgraphunit.c (symbol_table::compile): Switch to text_section
17650         before calling assembly_start debug hook.
17651         * run-rtl-passes.c (run_rtl_passes): Likewise.
17652         Include output.h.
17654 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17656         * tree-vrp.c (extract_range_from_binary_expr_1): Check
17657         range_int_cst_p rather than !symbolic_range_p before calling
17658         extract_range_from_multiplicative_op_1.
17660 2018-01-04  Jeff Law  <law@redhat.com>
17662         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
17663         redundant test in assertion.
17665 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17667         * doc/rtl.texi: Document machine_mode wrapper classes.
17669 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17671         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
17672         using tree_to_uhwi.
17674 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17676         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
17677         the VEC_PERM_EXPR fold to fail.
17679 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17681         PR debug/83585
17682         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
17683         to switched_sections.
17685 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17687         PR target/83680
17688         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
17689         test for d.testing.
17691 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
17693         PR target/83387
17694         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
17695         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
17697 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17699         PR debug/83666
17700         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
17701         is BLKmode and bitpos not zero or mode change is needed.
17703 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
17705         PR target/83675
17706         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
17707         TARGET_VIS2.
17709 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
17711         PR target/83628
17712         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
17713         instead of MULT rtx.  Update all corresponding splitters.
17714         (*saddl_se): Ditto.
17715         (*ssub<modesuffix>): Ditto.
17716         (*ssubl_se): Ditto.
17717         (*cmp_sadd_di): Update split patterns.
17718         (*cmp_sadd_si): Ditto.
17719         (*cmp_sadd_sidi): Ditto.
17720         (*cmp_ssub_di): Ditto.
17721         (*cmp_ssub_si): Ditto.
17722         (*cmp_ssub_sidi): Ditto.
17723         * config/alpha/predicates.md (const23_operand): New predicate.
17724         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
17725         Look for ASHIFT, not MULT inner operand.
17726         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
17728 2018-01-04  Martin Liska  <mliska@suse.cz>
17730         PR gcov-profile/83669
17731         * gcov.c (output_intermediate_file): Add version to intermediate
17732         gcov file.
17733         * doc/gcov.texi: Document new field 'version' in intermediate
17734         file format. Fix location of '-k' option of gcov command.
17736 2018-01-04  Martin Liska  <mliska@suse.cz>
17738         PR ipa/82352
17739         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
17741 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
17743         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
17745 2018-01-03  Martin Sebor  <msebor@redhat.com>
17747         PR tree-optimization/83655
17748         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
17749         checking calls with invalid arguments.
17751 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17753         * tree-vect-stmts.c (vect_get_store_rhs): New function.
17754         (vectorizable_mask_load_store): Delete.
17755         (vectorizable_call): Return false for masked loads and stores.
17756         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
17757         instead of gimple_assign_rhs1.
17758         (vectorizable_load): Handle IFN_MASK_LOAD.
17759         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
17761 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17763         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
17764         split out from..,
17765         (vectorizable_mask_load_store): ...here.
17766         (vectorizable_load): ...and here.
17768 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17770         * tree-vect-stmts.c (vect_build_all_ones_mask)
17771         (vect_build_zero_merge_argument): New functions, split out from...
17772         (vectorizable_load): ...here.
17774 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17776         * tree-vect-stmts.c (vect_check_store_rhs): New function,
17777         split out from...
17778         (vectorizable_mask_load_store): ...here.
17779         (vectorizable_store): ...and here.
17781 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17783         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
17784         split out from...
17785         (vectorizable_mask_load_store): ...here.
17787 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17789         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
17790         (vect_model_store_cost): Take a vec_load_store_type instead of a
17791         vect_def_type.
17792         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
17793         (vect_model_store_cost): Take a vec_load_store_type instead of a
17794         vect_def_type.
17795         (vectorizable_mask_load_store): Update accordingly.
17796         (vectorizable_store): Likewise.
17797         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
17799 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17801         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
17802         IFN_MASK_LOAD calls here rather than...
17803         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
17805 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17806             Alan Hayward  <alan.hayward@arm.com>
17807             David Sherwood  <david.sherwood@arm.com>
17809         * expmed.c (extract_bit_field_1): For vector extracts,
17810         fall back to extract_bit_field_as_subreg if vec_extract
17811         isn't available.
17813 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17814             Alan Hayward  <alan.hayward@arm.com>
17815             David Sherwood  <david.sherwood@arm.com>
17817         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
17818         they are variable or constant sized.
17819         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
17820         slots for constant-sized data.
17822 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17823             Alan Hayward  <alan.hayward@arm.com>
17824             David Sherwood  <david.sherwood@arm.com>
17826         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
17827         handling COND_EXPRs with boolean comparisons, try to find a better
17828         basis for the mask type than the boolean itself.
17830 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17832         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
17833         is calculated and how it can be overridden.
17834         * genmodes.c (max_bitsize_mode_any_mode): New variable.
17835         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
17836         if defined.
17837         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
17838         if nonzero.
17840 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17841             Alan Hayward  <alan.hayward@arm.com>
17842             David Sherwood  <david.sherwood@arm.com>
17844         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
17845         Remove the mode argument.
17846         (aarch64_simd_valid_immediate): Remove the mode and inverse
17847         arguments.
17848         * config/aarch64/iterators.md (bitsize): New iterator.
17849         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
17850         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
17851         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
17852         aarch64_simd_valid_immediate.
17853         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
17854         (aarch64_reg_or_bic_imm): Likewise.
17855         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
17856         with an insn_type enum and msl with a modifier_type enum.
17857         Replace element_width with a scalar_mode.  Change the shift
17858         to unsigned int.  Add constructors for scalar_float_mode and
17859         scalar_int_mode elements.
17860         (aarch64_vect_float_const_representable_p): Delete.
17861         (aarch64_can_const_movi_rtx_p)
17862         (aarch64_simd_scalar_immediate_valid_for_move)
17863         (aarch64_simd_make_constant): Update call to
17864         aarch64_simd_valid_immediate.
17865         (aarch64_advsimd_valid_immediate_hs): New function.
17866         (aarch64_advsimd_valid_immediate): Likewise.
17867         (aarch64_simd_valid_immediate): Remove mode and inverse
17868         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
17869         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
17870         and aarch64_float_const_representable_p on the result.
17871         (aarch64_output_simd_mov_immediate): Remove mode argument.
17872         Update call to aarch64_simd_valid_immediate and use of
17873         simd_immediate_info.
17874         (aarch64_output_scalar_simd_mov_immediate): Update call
17875         accordingly.
17877 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17878             Alan Hayward  <alan.hayward@arm.com>
17879             David Sherwood  <david.sherwood@arm.com>
17881         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
17882         (mode_nunits): Likewise CONST_MODE_NUNITS.
17883         * machmode.def (ADJUST_NUNITS): Document.
17884         * genmodes.c (mode_data::need_nunits_adj): New field.
17885         (blank_mode): Update accordingly.
17886         (adj_nunits): New variable.
17887         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
17888         parameter.
17889         (emit_mode_size_inline): Set need_bytesize_adj for all modes
17890         listed in adj_nunits.
17891         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
17892         listed in adj_nunits.  Don't emit case statements for such modes.
17893         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
17894         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
17895         nothing if adj_nunits is nonnull.
17896         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
17897         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
17898         (emit_mode_fbit): Update use of print_maybe_const_decl.
17899         (emit_move_size): Likewise.  Treat the array as non-const
17900         if adj_nunits.
17901         (emit_mode_adjustments): Handle adj_nunits.
17903 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17905         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
17906         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
17907         (VECTOR_MODES): Use it.
17908         (make_vector_modes): Take the prefix as an argument.
17910 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17911             Alan Hayward  <alan.hayward@arm.com>
17912             David Sherwood  <david.sherwood@arm.com>
17914         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
17915         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
17916         for MODE_VECTOR_BOOL.
17917         * machmode.def (VECTOR_BOOL_MODE): Document.
17918         * genmodes.c (VECTOR_BOOL_MODE): New macro.
17919         (make_vector_bool_mode): New function.
17920         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
17921         MODE_VECTOR_BOOL.
17922         * lto-streamer-in.c (lto_input_mode_table): Likewise.
17923         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
17924         Likewise.
17925         * stor-layout.c (int_mode_for_mode): Likewise.
17926         * tree.c (build_vector_type_for_mode): Likewise.
17927         * varasm.c (output_constant_pool_2): Likewise.
17928         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
17929         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
17930         for MODE_VECTOR_BOOL.
17931         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
17932         of mode class checks.
17933         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
17934         instead of a list of mode class checks.
17935         (expand_vector_scalar_condition): Likewise.
17936         (type_for_widest_vector_mode): Handle BImode as an inner mode.
17938 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17939             Alan Hayward  <alan.hayward@arm.com>
17940             David Sherwood  <david.sherwood@arm.com>
17942         * machmode.h (mode_size): Change from unsigned short to
17943         poly_uint16_pod.
17944         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
17945         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
17946         or if measurement_type is not polynomial.
17947         (fixed_size_mode::includes_p): Check for constant-sized modes.
17948         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
17949         return a poly_uint16 rather than an unsigned short.
17950         (emit_mode_size): Change the type of mode_size from unsigned short
17951         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
17952         (emit_mode_adjustments): Cope with polynomial vector sizes.
17953         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
17954         for GET_MODE_SIZE.
17955         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
17956         for GET_MODE_SIZE.
17957         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
17958         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
17959         * caller-save.c (setup_save_areas): Likewise.
17960         (replace_reg_with_saved_mem): Likewise.
17961         * calls.c (emit_library_call_value_1): Likewise.
17962         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
17963         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
17964         (gen_lowpart_for_combine): Likewise.
17965         * convert.c (convert_to_integer_1): Likewise.
17966         * cse.c (equiv_constant, cse_insn): Likewise.
17967         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
17968         (cselib_subst_to_values): Likewise.
17969         * dce.c (word_dce_process_block): Likewise.
17970         * df-problems.c (df_word_lr_mark_ref): Likewise.
17971         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
17972         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
17973         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
17974         (rtl_for_decl_location): Likewise.
17975         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
17976         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
17977         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
17978         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
17979         (expand_expr_real_1): Likewise.
17980         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
17981         (pad_below): Likewise.
17982         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
17983         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
17984         * ira.c (get_subreg_tracking_sizes): Likewise.
17985         * ira-build.c (ira_create_allocno_objects): Likewise.
17986         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
17987         (ira_sort_regnos_for_alter_reg): Likewise.
17988         * ira-costs.c (record_operand_costs): Likewise.
17989         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
17990         (resolve_simple_move): Likewise.
17991         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
17992         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
17993         (lra_constraints): Likewise.
17994         (CONST_POOL_OK_P): Reject variable-sized modes.
17995         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
17996         (add_pseudo_to_slot, lra_spill): Likewise.
17997         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17998         * optabs-query.c (get_best_extraction_insn): Likewise.
17999         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
18000         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
18001         (expand_mult_highpart, valid_multiword_target_p): Likewise.
18002         * recog.c (offsettable_address_addr_space_p): Likewise.
18003         * regcprop.c (maybe_mode_change): Likewise.
18004         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
18005         * regrename.c (build_def_use): Likewise.
18006         * regstat.c (dump_reg_info): Likewise.
18007         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
18008         (find_reloads, find_reloads_subreg_address): Likewise.
18009         * reload1.c (eliminate_regs_1): Likewise.
18010         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
18011         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
18012         (simplify_binary_operation_1, simplify_subreg): Likewise.
18013         * targhooks.c (default_function_arg_padding): Likewise.
18014         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
18015         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
18016         (verify_gimple_assign_ternary): Likewise.
18017         * tree-inline.c (estimate_move_cost): Likewise.
18018         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18019         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
18020         (get_address_cost_ainc): Likewise.
18021         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18022         (vect_supportable_dr_alignment): Likewise.
18023         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
18024         (vectorizable_reduction): Likewise.
18025         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
18026         (vectorizable_operation, vectorizable_load): Likewise.
18027         * tree.c (build_same_sized_truth_vector_type): Likewise.
18028         * valtrack.c (cleanup_auto_inc_dec): Likewise.
18029         * var-tracking.c (emit_note_insn_var_location): Likewise.
18030         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
18031         (ADDR_VEC_ALIGN): Likewise.
18033 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18034             Alan Hayward  <alan.hayward@arm.com>
18035             David Sherwood  <david.sherwood@arm.com>
18037         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
18038         unsigned short.
18039         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
18040         or if measurement_type is polynomial.
18041         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
18042         * combine.c (make_extraction): Likewise.
18043         * dse.c (find_shift_sequence): Likewise.
18044         * dwarf2out.c (mem_loc_descriptor): Likewise.
18045         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
18046         (extract_bit_field, extract_low_bits): Likewise.
18047         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
18048         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
18049         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
18050         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
18051         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
18052         * reload.c (find_reloads): Likewise.
18053         * reload1.c (alter_reg): Likewise.
18054         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
18055         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
18056         * tree-if-conv.c (predicate_mem_writes): Likewise.
18057         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18058         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
18059         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
18060         * valtrack.c (dead_debug_insert_temp): Likewise.
18061         * varasm.c (mergeable_constant_section): Likewise.
18062         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
18064 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18065             Alan Hayward  <alan.hayward@arm.com>
18066             David Sherwood  <david.sherwood@arm.com>
18068         * expr.c (expand_assignment): Cope with polynomial mode sizes
18069         when assigning to a CONCAT.
18071 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18072             Alan Hayward  <alan.hayward@arm.com>
18073             David Sherwood  <david.sherwood@arm.com>
18075         * machmode.h (mode_precision): Change from unsigned short to
18076         poly_uint16_pod.
18077         (mode_to_precision): Return a poly_uint16 rather than an unsigned
18078         short.
18079         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
18080         or if measurement_type is not polynomial.
18081         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
18082         in which the mode is already known to be a scalar_int_mode.
18083         * genmodes.c (emit_mode_precision): Change the type of mode_precision
18084         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
18085         initializer.
18086         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
18087         for GET_MODE_PRECISION.
18088         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
18089         for GET_MODE_PRECISION.
18090         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
18091         as polynomial.
18092         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
18093         (expand_field_assignment, make_extraction): Likewise.
18094         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
18095         (get_last_value): Likewise.
18096         * convert.c (convert_to_integer_1): Likewise.
18097         * cse.c (cse_insn): Likewise.
18098         * expr.c (expand_expr_real_1): Likewise.
18099         * lra-constraints.c (simplify_operand_subreg): Likewise.
18100         * optabs-query.c (can_atomic_load_p): Likewise.
18101         * optabs.c (expand_atomic_load): Likewise.
18102         (expand_atomic_store): Likewise.
18103         * ree.c (combine_reaching_defs): Likewise.
18104         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
18105         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
18106         * tree.h (type_has_mode_precision_p): Likewise.
18107         * ubsan.c (instrument_si_overflow): Likewise.
18109 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18110             Alan Hayward  <alan.hayward@arm.com>
18111             David Sherwood  <david.sherwood@arm.com>
18113         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
18114         polynomial numbers of units.
18115         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
18116         (valid_vector_subparts_p): New function.
18117         (build_vector_type): Remove temporary shim and take the number
18118         of units as a poly_uint64 rather than an int.
18119         (build_opaque_vector_type): Take the number of units as a
18120         poly_uint64 rather than an int.
18121         * tree.c (build_vector_from_ctor): Handle polynomial
18122         TYPE_VECTOR_SUBPARTS.
18123         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
18124         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
18125         (build_vector_from_val): If the number of units is variable,
18126         use build_vec_duplicate_cst for constant operands and
18127         VEC_DUPLICATE_EXPR otherwise.
18128         (make_vector_type): Remove temporary is_constant ().
18129         (build_vector_type, build_opaque_vector_type): Take the number of
18130         units as a poly_uint64 rather than an int.
18131         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
18132         VECTOR_CST_NELTS.
18133         * cfgexpand.c (expand_debug_expr): Likewise.
18134         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
18135         (store_constructor, expand_expr_real_1): Likewise.
18136         (const_scalar_mask_from_tree): Likewise.
18137         * fold-const-call.c (fold_const_reduction): Likewise.
18138         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
18139         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
18140         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
18141         (fold_relational_const): Likewise.
18142         (native_interpret_vector): Likewise.  Change the size from an
18143         int to an unsigned int.
18144         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
18145         TYPE_VECTOR_SUBPARTS.
18146         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
18147         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
18148         duplicating a non-constant operand into a variable-length vector.
18149         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
18150         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
18151         * ipa-icf.c (sem_variable::equals): Likewise.
18152         * match.pd: Likewise.
18153         * omp-simd-clone.c (simd_clone_subparts): Likewise.
18154         * print-tree.c (print_node): Likewise.
18155         * stor-layout.c (layout_type): Likewise.
18156         * targhooks.c (default_builtin_vectorization_cost): Likewise.
18157         * tree-cfg.c (verify_gimple_comparison): Likewise.
18158         (verify_gimple_assign_binary): Likewise.
18159         (verify_gimple_assign_ternary): Likewise.
18160         (verify_gimple_assign_single): Likewise.
18161         * tree-pretty-print.c (dump_generic_node): Likewise.
18162         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18163         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
18164         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
18165         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
18166         (vect_shift_permute_load_chain): Likewise.
18167         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
18168         (expand_vector_condition, optimize_vector_constructor): Likewise.
18169         (lower_vec_perm, get_compute_type): Likewise.
18170         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
18171         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
18172         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
18173         (vect_recog_mask_conversion_pattern): Likewise.
18174         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
18175         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
18176         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
18177         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
18178         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
18179         (vectorizable_shift, vectorizable_operation, vectorizable_store)
18180         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
18181         (supportable_widening_operation): Likewise.
18182         (supportable_narrowing_operation): Likewise.
18183         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
18184         Likewise.
18185         * varasm.c (output_constant): 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-vect-data-refs.c (vect_permute_store_chain): Reorganize
18192         so that both the length == 3 and length != 3 cases set up their
18193         own permute vectors.  Add comments explaining why we know the
18194         number of elements is constant.
18195         (vect_permute_load_chain): Likewise.
18197 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18198             Alan Hayward  <alan.hayward@arm.com>
18199             David Sherwood  <david.sherwood@arm.com>
18201         * machmode.h (mode_nunits): Change from unsigned char to
18202         poly_uint16_pod.
18203         (ONLY_FIXED_SIZE_MODES): New macro.
18204         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
18205         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
18206         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
18207         New typedefs.
18208         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
18209         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
18210         or if measurement_type is not polynomial.
18211         * genmodes.c (ZERO_COEFFS): New macro.
18212         (emit_mode_nunits_inline): Make mode_nunits_inline return a
18213         poly_uint16.
18214         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
18215         Use ZERO_COEFFS when emitting initializers.
18216         * data-streamer.h (bp_pack_poly_value): New function.
18217         (bp_unpack_poly_value): Likewise.
18218         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
18219         for GET_MODE_NUNITS.
18220         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
18221         for GET_MODE_NUNITS.
18222         * tree.c (make_vector_type): Remove temporary shim and make
18223         the real function take the number of units as a poly_uint64
18224         rather than an int.
18225         (build_vector_type_for_mode): Handle polynomial nunits.
18226         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
18227         * emit-rtl.c (const_vec_series_p_1): Likewise.
18228         (gen_rtx_CONST_VECTOR): Likewise.
18229         * fold-const.c (test_vec_duplicate_folding): Likewise.
18230         * genrecog.c (validate_pattern): Likewise.
18231         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
18232         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
18233         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
18234         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
18235         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
18236         * rtlanal.c (subreg_get_info): Likewise.
18237         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
18238         (vect_grouped_load_supported): Likewise.
18239         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
18240         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
18241         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18242         (simplify_const_unary_operation, simplify_binary_operation_1)
18243         (simplify_const_binary_operation, simplify_ternary_operation)
18244         (test_vector_ops_duplicate, test_vector_ops): Likewise.
18245         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
18246         instead of CONST_VECTOR_NUNITS.
18247         * varasm.c (output_constant_pool_2): Likewise.
18248         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
18249         explicit-encoded elements in the XVEC for variable-length vectors.
18251 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18253         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
18255 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18256             Alan Hayward  <alan.hayward@arm.com>
18257             David Sherwood  <david.sherwood@arm.com>
18259         * coretypes.h (fixed_size_mode): Declare.
18260         (fixed_size_mode_pod): New typedef.
18261         * builtins.h (target_builtins::x_apply_args_mode)
18262         (target_builtins::x_apply_result_mode): Change type to
18263         fixed_size_mode_pod.
18264         * builtins.c (apply_args_size, apply_result_size, result_vector)
18265         (expand_builtin_apply_args_1, expand_builtin_apply)
18266         (expand_builtin_return): Update accordingly.
18268 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18270         * cse.c (hash_rtx_cb): Hash only the encoded elements.
18271         * cselib.c (cselib_hash_rtx): Likewise.
18272         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
18273         CONST_VECTOR encoding.
18275 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18276             Jeff Law  <law@redhat.com>
18278         PR target/83641
18279         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
18280         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
18281         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
18282         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
18284         PR target/83641
18285         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
18286         explicitly probe *sp in a noreturn function if there were any callee
18287         register saves or frame pointer is needed.
18289 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18291         PR debug/83621
18292         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
18293         BLKmode for ternary, binary or unary expressions.
18295         PR debug/83645
18296         * var-tracking.c (delete_vta_debug_insn): New inline function.
18297         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
18298         insns from get_insns () to NULL instead of each bb separately.
18299         Use delete_vta_debug_insn.  No longer static.
18300         (vt_debug_insns_local, variable_tracking_main_1): Adjust
18301         delete_vta_debug_insns callers.
18302         * rtl.h (delete_vta_debug_insns): Declare.
18303         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
18304         instead of variable_tracking_main.
18306 2018-01-03  Martin Sebor  <msebor@redhat.com>
18308         PR tree-optimization/83603
18309         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
18310         arguments past the endof the argument list in functions declared
18311         without a prototype.
18312         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
18313         Avoid checking when arguments are null.
18315 2018-01-03  Martin Sebor  <msebor@redhat.com>
18317         PR c/83559
18318         * doc/extend.texi (attribute const): Fix a typo.
18319         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
18320         issuing -Wsuggest-attribute for void functions.
18322 2018-01-03  Martin Sebor  <msebor@redhat.com>
18324         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
18325         offset_int::from instead of wide_int::to_shwi.
18326         (maybe_diag_overlap): Remove assertion.
18327         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
18328         * gimple-ssa-sprintf.c (format_directive): Same.
18329         (parse_directive): Same.
18330         (sprintf_dom_walker::compute_format_length): Same.
18331         (try_substitute_return_value): Same.
18333 2018-01-03  Jeff Law  <law@redhat.com>
18335         PR middle-end/83654
18336         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
18337         non-constant residual for zero at runtime and avoid probing in
18338         that case.  Reorganize code for trailing problem to mirror handling
18339         of the residual.
18341 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
18343         PR tree-optimization/83501
18344         * tree-ssa-strlen.c (get_string_cst): New.
18345         (handle_char_store): Call get_string_cst.
18347 2018-01-03  Martin Liska  <mliska@suse.cz>
18349         PR tree-optimization/83593
18350         * tree-ssa-strlen.c: Include tree-cfg.h.
18351         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
18352         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
18353         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
18354         to false.
18355         (strlen_dom_walker::before_dom_children): Call
18356         gimple_purge_dead_eh_edges. Dump tranformation with details
18357         dump flags.
18358         (strlen_dom_walker::before_dom_children): Update call by adding
18359         new argument cleanup_eh.
18360         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
18362 2018-01-03  Martin Liska  <mliska@suse.cz>
18364         PR ipa/83549
18365         * cif-code.def (VARIADIC_THUNK): New enum value.
18366         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
18367         thunks.
18369 2018-01-03  Jan Beulich  <jbeulich@suse.com>
18371         * sse.md (mov<mode>_internal): Tighten condition for when to use
18372         vmovdqu<ssescalarsize> for TI and OI modes.
18374 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18376         Update copyright years.
18378 2018-01-03  Martin Liska  <mliska@suse.cz>
18380         PR ipa/83594
18381         * ipa-visibility.c (function_and_variable_visibility): Skip
18382         functions with noipa attribure.
18384 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
18386         * gcc.c (process_command): Update copyright notice dates.
18387         * gcov-dump.c (print_version): Ditto.
18388         * gcov.c (print_version): Ditto.
18389         * gcov-tool.c (print_version): Ditto.
18390         * gengtype.c (create_file): Ditto.
18391         * doc/cpp.texi: Bump @copying's copyright year.
18392         * doc/cppinternals.texi: Ditto.
18393         * doc/gcc.texi: Ditto.
18394         * doc/gccint.texi: Ditto.
18395         * doc/gcov.texi: Ditto.
18396         * doc/install.texi: Ditto.
18397         * doc/invoke.texi: Ditto.
18399 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18401         * vector-builder.h (vector_builder::m_full_nelts): Change from
18402         unsigned int to poly_uint64.
18403         (vector_builder::full_nelts): Update prototype accordingly.
18404         (vector_builder::new_vector): Likewise.
18405         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
18406         (vector_builder::operator ==): Likewise.
18407         (vector_builder::finalize): Likewise.
18408         * int-vector-builder.h (int_vector_builder::int_vector_builder):
18409         Take the number of elements as a poly_uint64 rather than an
18410         unsigned int.
18411         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
18412         from unsigned int to poly_uint64.
18413         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
18414         (vec_perm_indices::new_vector): Likewise.
18415         (vec_perm_indices::length): Likewise.
18416         (vec_perm_indices::nelts_per_input): Likewise.
18417         (vec_perm_indices::input_nelts): Likewise.
18418         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
18419         number of elements per input as a poly_uint64 rather than an
18420         unsigned int.  Use the original encoding for variable-length
18421         vectors, rather than clamping each individual element.
18422         For the second and subsequent elements in each pattern,
18423         clamp the step and base before clamping their sum.
18424         (vec_perm_indices::series_p): Handle polynomial element counts.
18425         (vec_perm_indices::all_in_range_p): Likewise.
18426         (vec_perm_indices_to_tree): Likewise.
18427         (vec_perm_indices_to_rtx): Likewise.
18428         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18429         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
18430         (tree_vector_builder::new_binary_operation): Handle polynomial
18431         element counts.  Return false if we need to know the number
18432         of elements at compile time.
18433         * fold-const.c (fold_vec_perm): Punt if the number of elements
18434         isn't known at compile time.
18436 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18438         * vec-perm-indices.h (vec_perm_builder): Change element type
18439         from HOST_WIDE_INT to poly_int64.
18440         (vec_perm_indices::element_type): Update accordingly.
18441         (vec_perm_indices::clamp): Handle polynomial element_types.
18442         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
18443         (vec_perm_indices::all_in_range_p): Likewise.
18444         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
18445         than shwi trees.
18446         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
18447         polynomial vec_perm_indices element types.
18448         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
18449         * fold-const.c (fold_vec_perm): Likewise.
18450         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
18451         * tree-vect-generic.c (lower_vec_perm): Likewise.
18452         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18453         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
18454         element type to HOST_WIDE_INT.
18456 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18457             Alan Hayward  <alan.hayward@arm.com>
18458             David Sherwood  <david.sherwood@arm.com>
18460         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
18461         rather than an int.  Use plus_constant.
18462         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
18463         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
18465 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18466             Alan Hayward  <alan.hayward@arm.com>
18467             David Sherwood  <david.sherwood@arm.com>
18469         * calls.c (emit_call_1, expand_call): Change struct_value_size from
18470         a HOST_WIDE_INT to a poly_int64.
18472 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18473             Alan Hayward  <alan.hayward@arm.com>
18474             David Sherwood  <david.sherwood@arm.com>
18476         * calls.c (load_register_parameters): Cope with polynomial
18477         mode sizes.  Require a constant size for BLKmode parameters
18478         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
18479         forces a parameter to be padded at the lsb end in order to
18480         fill a complete number of words, require the parameter size
18481         to be ordered wrt UNITS_PER_WORD.
18483 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18484             Alan Hayward  <alan.hayward@arm.com>
18485             David Sherwood  <david.sherwood@arm.com>
18487         * reload1.c (spill_stack_slot_width): Change element type
18488         from unsigned int to poly_uint64_pod.
18489         (alter_reg): Treat mode sizes as polynomial.
18491 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18492             Alan Hayward  <alan.hayward@arm.com>
18493             David Sherwood  <david.sherwood@arm.com>
18495         * reload.c (complex_word_subreg_p): New function.
18496         (reload_inner_reg_of_subreg, push_reload): Use it.
18498 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18499             Alan Hayward  <alan.hayward@arm.com>
18500             David Sherwood  <david.sherwood@arm.com>
18502         * lra-constraints.c (process_alt_operands): Reject matched
18503         operands whose sizes aren't ordered.
18504         (match_reload): Refer to this check here.
18506 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18507             Alan Hayward  <alan.hayward@arm.com>
18508             David Sherwood  <david.sherwood@arm.com>
18510         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
18511         that the mode size is in the set {1, 2, 4, 8, 16}.
18513 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18514             Alan Hayward  <alan.hayward@arm.com>
18515             David Sherwood  <david.sherwood@arm.com>
18517         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
18518         Use plus_constant instead of gen_rtx_PLUS.
18520 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18521             Alan Hayward  <alan.hayward@arm.com>
18522             David Sherwood  <david.sherwood@arm.com>
18524         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
18525         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
18526         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
18527         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
18528         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
18529         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
18530         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
18531         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
18532         * config/i386/i386.c (ix86_push_rounding): ...this new function.
18533         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
18534         a poly_int64.
18535         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
18536         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
18537         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
18538         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
18539         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
18540         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
18541         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
18542         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
18543         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
18544         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
18545         function.
18546         * expr.c (emit_move_resolve_push): Treat the input and result
18547         of PUSH_ROUNDING as a poly_int64.
18548         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
18549         (emit_push_insn): Likewise.
18550         * lra-eliminations.c (mark_not_eliminable): Likewise.
18551         * recog.c (push_operand): Likewise.
18552         * reload1.c (elimination_effects): Likewise.
18553         * rtlanal.c (nonzero_bits1): Likewise.
18554         * calls.c (store_one_arg): Likewise.  Require the padding to be
18555         known at compile time.
18557 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18558             Alan Hayward  <alan.hayward@arm.com>
18559             David Sherwood  <david.sherwood@arm.com>
18561         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
18562         Use plus_constant instead of gen_rtx_PLUS.
18564 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18565             Alan Hayward  <alan.hayward@arm.com>
18566             David Sherwood  <david.sherwood@arm.com>
18568         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
18569         rather than an int.
18571 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18572             Alan Hayward  <alan.hayward@arm.com>
18573             David Sherwood  <david.sherwood@arm.com>
18575         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
18576         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
18577         via stack temporaries.  Treat the mode size as polynomial too.
18579 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18580             Alan Hayward  <alan.hayward@arm.com>
18581             David Sherwood  <david.sherwood@arm.com>
18583         * expr.c (expand_expr_real_2): When handling conversions involving
18584         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
18585         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
18586         as a poly_uint64 too.
18588 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18589             Alan Hayward  <alan.hayward@arm.com>
18590             David Sherwood  <david.sherwood@arm.com>
18592         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
18594 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18595             Alan Hayward  <alan.hayward@arm.com>
18596             David Sherwood  <david.sherwood@arm.com>
18598         * combine.c (can_change_dest_mode): Handle polynomial
18599         REGMODE_NATURAL_SIZE.
18600         * expmed.c (store_bit_field_1): Likewise.
18601         * expr.c (store_constructor): Likewise.
18602         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
18603         and polynomial REGMODE_NATURAL_SIZE.
18604         (gen_lowpart_common): Likewise.
18605         * reginfo.c (record_subregs_of_mode): Likewise.
18606         * rtlanal.c (read_modify_subreg_p): Likewise.
18608 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18609             Alan Hayward  <alan.hayward@arm.com>
18610             David Sherwood  <david.sherwood@arm.com>
18612         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
18613         numbers of elements.
18615 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18616             Alan Hayward  <alan.hayward@arm.com>
18617             David Sherwood  <david.sherwood@arm.com>
18619         * match.pd: Cope with polynomial numbers of vector elements.
18621 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18622             Alan Hayward  <alan.hayward@arm.com>
18623             David Sherwood  <david.sherwood@arm.com>
18625         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
18626         in a POINTER_PLUS_EXPR.
18628 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18629             Alan Hayward  <alan.hayward@arm.com>
18630             David Sherwood  <david.sherwood@arm.com>
18632         * omp-simd-clone.c (simd_clone_subparts): New function.
18633         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
18634         (ipa_simd_modify_function_body): Likewise.
18636 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18637             Alan Hayward  <alan.hayward@arm.com>
18638             David Sherwood  <david.sherwood@arm.com>
18640         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
18641         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
18642         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
18643         (expand_vector_condition, vector_element): Likewise.
18644         (subparts_gt): New function.
18645         (get_compute_type): Use subparts_gt.
18646         (count_type_subparts): Delete.
18647         (expand_vector_operations_1): Use subparts_gt instead of
18648         count_type_subparts.
18650 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18651             Alan Hayward  <alan.hayward@arm.com>
18652             David Sherwood  <david.sherwood@arm.com>
18654         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
18655         (vect_compile_time_alias): ...this new function.  Do the calculation
18656         on poly_ints rather than trees.
18657         (vect_prune_runtime_alias_test_list): Update call accordingly.
18659 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18660             Alan Hayward  <alan.hayward@arm.com>
18661             David Sherwood  <david.sherwood@arm.com>
18663         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
18664         numbers of units.
18665         (vect_schedule_slp_instance): Likewise.
18667 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18668             Alan Hayward  <alan.hayward@arm.com>
18669             David Sherwood  <david.sherwood@arm.com>
18671         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
18672         constant and extern definitions for variable-length vectors.
18673         (vect_get_constant_vectors): Note that the number of units
18674         is known to be constant.
18676 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18677             Alan Hayward  <alan.hayward@arm.com>
18678             David Sherwood  <david.sherwood@arm.com>
18680         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
18681         of units as polynomial.  Choose between WIDE and NARROW based
18682         on multiple_p.
18684 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18685             Alan Hayward  <alan.hayward@arm.com>
18686             David Sherwood  <david.sherwood@arm.com>
18688         * tree-vect-stmts.c (simd_clone_subparts): New function.
18689         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
18691 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18692             Alan Hayward  <alan.hayward@arm.com>
18693             David Sherwood  <david.sherwood@arm.com>
18695         * tree-vect-stmts.c (vectorizable_call): Treat the number of
18696         vectors as polynomial.  Use build_index_vector for
18697         IFN_GOMP_SIMD_LANE.
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         * tree-vect-stmts.c (get_load_store_type): Treat the number of
18704         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
18705         for variable-length vectors.
18706         (vectorizable_mask_load_store): Treat the number of units as
18707         polynomial, asserting that it is constant if the condition has
18708         already been enforced.
18709         (vectorizable_store, vectorizable_load): Likewise.
18711 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18712             Alan Hayward  <alan.hayward@arm.com>
18713             David Sherwood  <david.sherwood@arm.com>
18715         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
18716         of units as polynomial.  Punt if we can't tell at compile time
18717         which vector contains the final result.
18719 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18720             Alan Hayward  <alan.hayward@arm.com>
18721             David Sherwood  <david.sherwood@arm.com>
18723         * tree-vect-loop.c (vectorizable_induction): Treat the number
18724         of units as polynomial.  Punt on SLP inductions.  Use an integer
18725         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
18726         cast of such a series for variable-length floating-point
18727         reductions.
18729 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18730             Alan Hayward  <alan.hayward@arm.com>
18731             David Sherwood  <david.sherwood@arm.com>
18733         * tree.h (build_index_vector): Declare.
18734         * tree.c (build_index_vector): New function.
18735         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
18736         of units as polynomial, forcibly converting it to a constant if
18737         vectorizable_reduction has already enforced the condition.
18738         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
18739         to create a {1,2,3,...} vector.
18740         (vectorizable_reduction): Treat the number of units as polynomial.
18741         Choose vectype_in based on the largest scalar element size rather
18742         than the smallest number of units.  Enforce the restrictions
18743         relied on above.
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-data-refs.c (vector_alignment_reachable_p): Treat the
18750         number of units as polynomial.
18752 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18753             Alan Hayward  <alan.hayward@arm.com>
18754             David Sherwood  <david.sherwood@arm.com>
18756         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
18757         * target.def (autovectorize_vector_sizes): Return the vector sizes
18758         by pointer, using vector_sizes rather than a bitmask.
18759         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
18760         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
18761         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
18762         Likewise.
18763         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
18764         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
18765         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
18766         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
18767         * omp-general.c (omp_max_vf): Likewise.
18768         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18769         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
18770         * tree-vect-loop.c (vect_analyze_loop): Likewise.
18771         * tree-vect-slp.c (vect_slp_bb): Likewise.
18772         * doc/tm.texi: Regenerate.
18773         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
18774         to a poly_uint64.
18775         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
18776         the vector size as a poly_uint64 rather than an unsigned int.
18777         (current_vector_size): Change from an unsigned int to a poly_uint64.
18778         (get_vectype_for_scalar_type): Update accordingly.
18779         * tree.h (build_truth_vector_type): Take the size and number of
18780         units as a poly_uint64 rather than an unsigned int.
18781         (build_vector_type): Add a temporary overload that takes
18782         the number of units as a poly_uint64 rather than an unsigned int.
18783         * tree.c (make_vector_type): Likewise.
18784         (build_truth_vector_type): Take the number of units as a poly_uint64
18785         rather than an unsigned int.
18787 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18788             Alan Hayward  <alan.hayward@arm.com>
18789             David Sherwood  <david.sherwood@arm.com>
18791         * target.def (get_mask_mode): Take the number of units and length
18792         as poly_uint64s rather than unsigned ints.
18793         * targhooks.h (default_get_mask_mode): Update accordingly.
18794         * targhooks.c (default_get_mask_mode): Likewise.
18795         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18796         * doc/tm.texi: Regenerate.
18798 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18799             Alan Hayward  <alan.hayward@arm.com>
18800             David Sherwood  <david.sherwood@arm.com>
18802         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
18803         * omp-general.c (omp_max_vf): Likewise.
18804         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
18805         (expand_omp_simd): Handle polynomial safelen.
18806         * omp-low.c (omplow_simd_context): Add a default constructor.
18807         (omplow_simd_context::max_vf): Change from int to poly_uint64.
18808         (lower_rec_simd_input_clauses): Update accordingly.
18809         (lower_rec_input_clauses): Likewise.
18811 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18812             Alan Hayward  <alan.hayward@arm.com>
18813             David Sherwood  <david.sherwood@arm.com>
18815         * tree-vectorizer.h (vect_nunits_for_cost): New function.
18816         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
18817         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
18818         (vect_analyze_slp_cost): Likewise.
18819         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
18820         (vect_model_load_cost): Likewise.
18822 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18823             Alan Hayward  <alan.hayward@arm.com>
18824             David Sherwood  <david.sherwood@arm.com>
18826         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
18827         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
18828         from an unsigned int * to a poly_uint64_pod *.
18829         (calculate_unrolling_factor): New function.
18830         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
18832 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18833             Alan Hayward  <alan.hayward@arm.com>
18834             David Sherwood  <david.sherwood@arm.com>
18836         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
18837         from an unsigned int to a poly_uint64.
18838         (_loop_vec_info::slp_unrolling_factor): Likewise.
18839         (_loop_vec_info::vectorization_factor): Change from an int
18840         to a poly_uint64.
18841         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
18842         (vect_get_num_vectors): New function.
18843         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
18844         (vect_get_num_copies): Use vect_get_num_vectors.
18845         (vect_analyze_data_ref_dependences): Change max_vf from an int *
18846         to an unsigned int *.
18847         (vect_analyze_data_refs): Change min_vf from an int * to a
18848         poly_uint64 *.
18849         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18850         than an unsigned HOST_WIDE_INT.
18851         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
18852         (vect_analyze_data_ref_dependence): Change max_vf from an int *
18853         to an unsigned int *.
18854         (vect_analyze_data_ref_dependences): Likewise.
18855         (vect_compute_data_ref_alignment): Handle polynomial vf.
18856         (vect_enhance_data_refs_alignment): Likewise.
18857         (vect_prune_runtime_alias_test_list): Likewise.
18858         (vect_shift_permute_load_chain): Likewise.
18859         (vect_supportable_dr_alignment): Likewise.
18860         (dependence_distance_ge_vf): Take the vectorization factor as a
18861         poly_uint64 rather than an unsigned HOST_WIDE_INT.
18862         (vect_analyze_data_refs): Change min_vf from an int * to a
18863         poly_uint64 *.
18864         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
18865         vfm1 as a poly_uint64 rather than an int.  Make the same change
18866         for the returned bound_scalar.
18867         (vect_gen_vector_loop_niters): Handle polynomial vf.
18868         (vect_do_peeling): Likewise.  Update call to
18869         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
18870         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
18871         be constant.
18872         * tree-vect-loop.c (vect_determine_vectorization_factor)
18873         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
18874         (vect_get_known_peeling_cost): Likewise.
18875         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
18876         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
18877         (vect_transform_loop): Likewise.  Use the lowest possible VF when
18878         updating the upper bounds of the loop.
18879         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
18880         rather than an int.
18881         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
18882         polynomial unroll factors.
18883         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
18884         (vect_make_slp_decision): Likewise.
18885         (vect_supported_load_permutation_p): Likewise, and polynomial
18886         vf too.
18887         (vect_analyze_slp_cost): Handle polynomial vf.
18888         (vect_slp_analyze_node_operations): Likewise.
18889         (vect_slp_analyze_bb_1): Likewise.
18890         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18891         than an unsigned HOST_WIDE_INT.
18892         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
18893         (vectorizable_load): Handle polynomial vf.
18894         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
18895         a poly_uint64.
18896         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
18898 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18899             Alan Hayward  <alan.hayward@arm.com>
18900             David Sherwood  <david.sherwood@arm.com>
18902         * match.pd: Handle bit operations involving three constants
18903         and try to fold one pair.
18905 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18907         * tree-vect-loop-manip.c: Include gimple-fold.h.
18908         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
18909         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
18910         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
18911         Add a path that uses a step of VF instead of 1, but disable it
18912         for now.
18913         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
18914         and niters_no_overflow parameters.  Update calls to
18915         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
18916         Create a new SSA name if the latter choses to use a ste other
18917         than zero, and return it via niters_vector_mult_vf_var.
18918         * tree-vect-loop.c (vect_transform_loop): Update calls to
18919         vect_do_peeling, vect_gen_vector_loop_niters and
18920         slpeel_make_loop_iterate_ntimes.
18921         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
18922         (vect_gen_vector_loop_niters): Update declarations after above changes.
18924 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
18926         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
18927         128-bit round to integer instructions.
18928         (ceil<mode>2): Likewise.
18929         (btrunc<mode>2): Likewise.
18930         (round<mode>2): Likewise.
18932 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
18934         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
18935         unaligned VSX load/store on P8/P9.
18936         (expand_block_clear): Allow the use of unaligned VSX
18937         load/store on P8/P9.
18939 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
18941         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
18942         New function.
18943         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
18944         swap associated with both a load and a store.
18946 2018-01-02  Andrew Waterman  <andrew@sifive.com>
18948         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
18949         * config/riscv/riscv.md (clear_cache): Use it.
18951 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
18953         * web.c: Remove out-of-date comment.
18955 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18957         * expr.c (fixup_args_size_notes): Check that any existing
18958         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
18959         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
18960         (emit_single_push_insn): ...here.
18962 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18964         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
18965         (const_vector_encoded_nelts): New function.
18966         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
18967         (const_vector_int_elt, const_vector_elt): Declare.
18968         * emit-rtl.c (const_vector_int_elt_1): New function.
18969         (const_vector_elt): Likewise.
18970         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
18971         of CONST_VECTOR_ELT.
18973 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18975         * expr.c: Include rtx-vector-builder.h.
18976         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
18977         directly on the tree encoding.
18978         (const_vector_from_tree): Likewise.
18979         * optabs.c: Include rtx-vector-builder.h.
18980         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
18981         sequence of "u" values.
18982         * vec-perm-indices.c: Include rtx-vector-builder.h.
18983         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
18984         directly on the vec_perm_indices encoding.
18986 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18988         * doc/rtl.texi (const_vector): Describe new encoding scheme.
18989         * Makefile.in (OBJS): Add rtx-vector-builder.o.
18990         * rtx-vector-builder.h: New file.
18991         * rtx-vector-builder.c: Likewise.
18992         * rtl.h (rtx_def::u2): Add a const_vector field.
18993         (CONST_VECTOR_NPATTERNS): New macro.
18994         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
18995         (CONST_VECTOR_DUPLICATE_P): Likewise.
18996         (CONST_VECTOR_STEPPED_P): Likewise.
18997         (CONST_VECTOR_ENCODED_ELT): Likewise.
18998         (const_vec_duplicate_p): Check for a duplicated vector encoding.
18999         (unwrap_const_vec_duplicate): Likewise.
19000         (const_vec_series_p): Check for a non-duplicated vector encoding.
19001         Say that the function only returns true for integer vectors.
19002         * emit-rtl.c: Include rtx-vector-builder.h.
19003         (gen_const_vec_duplicate_1): Delete.
19004         (gen_const_vector): Call gen_const_vec_duplicate instead of
19005         gen_const_vec_duplicate_1.
19006         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
19007         (gen_const_vec_duplicate): Use rtx_vector_builder.
19008         (gen_const_vec_series): Likewise.
19009         (gen_rtx_CONST_VECTOR): Likewise.
19010         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
19011         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
19012         Build a new vector rather than modifying a CONST_VECTOR in-place.
19013         (handle_special_swappables): Update call accordingly.
19014         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
19015         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
19016         Build a new vector rather than modifying a CONST_VECTOR in-place.
19017         (handle_special_swappables): Update call accordingly.
19019 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19021         * simplify-rtx.c (simplify_const_binary_operation): Use
19022         CONST_VECTOR_ELT instead of XVECEXP.
19024 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19026         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
19027         the selector elements to be different from the data elements
19028         if the selector is a VECTOR_CST.
19029         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
19030         ssizetype for the selector.
19032 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19034         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
19035         before testing each element individually.
19036         * tree-vect-generic.c (lower_vec_perm): Likewise.
19038 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19040         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
19041         * selftest-run-tests.c (selftest::run_tests): Call it.
19042         * vector-builder.h (vector_builder::operator ==): New function.
19043         (vector_builder::operator !=): Likewise.
19044         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
19045         (vec_perm_indices::all_from_input_p): New function.
19046         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
19047         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
19048         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
19049         instead of reading the VECTOR_CST directly.  Detect whether both
19050         vector inputs are the same before constructing the vec_perm_indices,
19051         and update the number of inputs argument accordingly.  Use the
19052         utility functions added above.  Only construct sel2 if we need to.
19054 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19056         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
19057         the broadcast of the low byte.
19058         (expand_mult_highpart): Use an explicit encoding for the permutes.
19059         * optabs-query.c (can_mult_highpart_p): Likewise.
19060         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
19061         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19062         (vectorizable_bswap): Likewise.
19063         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
19064         explicit encoding for the power-of-2 permutes.
19065         (vect_permute_store_chain): Likewise.
19066         (vect_grouped_load_supported): Likewise.
19067         (vect_permute_load_chain): Likewise.
19069 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19071         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
19072         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
19073         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
19074         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
19075         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
19076         (vect_gen_perm_mask_any): Likewise.
19078 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19080         * int-vector-builder.h: New file.
19081         * vec-perm-indices.h: Include int-vector-builder.h.
19082         (vec_perm_indices): Redefine as an int_vector_builder.
19083         (auto_vec_perm_indices): Delete.
19084         (vec_perm_builder): Redefine as a stand-alone class.
19085         (vec_perm_indices::vec_perm_indices): New function.
19086         (vec_perm_indices::clamp): Likewise.
19087         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
19088         (vec_perm_indices::new_vector): New function.
19089         (vec_perm_indices::new_expanded_vector): Update for new
19090         vec_perm_indices class.
19091         (vec_perm_indices::rotate_inputs): New function.
19092         (vec_perm_indices::all_in_range_p): Operate directly on the
19093         encoded form, without computing elided elements.
19094         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
19095         encoding.  Update for new vec_perm_indices class.
19096         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
19097         the given vec_perm_builder.
19098         (expand_vec_perm_var): Update vec_perm_builder constructor.
19099         (expand_mult_highpart): Use vec_perm_builder instead of
19100         auto_vec_perm_indices.
19101         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
19102         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
19103         or double series encoding as appropriate.
19104         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
19105         vec_perm_indices instead of auto_vec_perm_indices.
19106         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
19107         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
19108         (vect_permute_store_chain): Likewise.
19109         (vect_grouped_load_supported): Likewise.
19110         (vect_permute_load_chain): Likewise.
19111         (vect_shift_permute_load_chain): Likewise.
19112         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
19113         (vect_transform_slp_perm_load): Likewise.
19114         (vect_schedule_slp_instance): Likewise.
19115         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19116         (vectorizable_mask_load_store): Likewise.
19117         (vectorizable_bswap): Likewise.
19118         (vectorizable_store): Likewise.
19119         (vectorizable_load): Likewise.
19120         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
19121         vec_perm_indices instead of auto_vec_perm_indices.  Use
19122         tree_to_vec_perm_builder to read the vector from a tree.
19123         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
19124         vec_perm_builder instead of a vec_perm_indices.
19125         (have_whole_vector_shift): Use vec_perm_builder and
19126         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
19127         truncation to calc_vec_perm_mask_for_shift.
19128         (vect_create_epilog_for_reduction): Likewise.
19129         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
19130         from auto_vec_perm_indices to vec_perm_indices.
19131         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
19132         instead of changing individual elements.
19133         (aarch64_vectorize_vec_perm_const): Use new_vector to install
19134         the vector in d.perm.
19135         * config/arm/arm.c (expand_vec_perm_d::perm): Change
19136         from auto_vec_perm_indices to vec_perm_indices.
19137         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
19138         instead of changing individual elements.
19139         (arm_vectorize_vec_perm_const): Use new_vector to install
19140         the vector in d.perm.
19141         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
19142         Update vec_perm_builder constructor.
19143         (rs6000_expand_interleave): Likewise.
19144         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
19145         (rs6000_expand_interleave): Likewise.
19147 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19149         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
19150         to qimode could truncate the indices.
19151         * optabs.c (expand_vec_perm_var): Likewise.
19153 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19155         * Makefile.in (OBJS): Add vec-perm-indices.o.
19156         * vec-perm-indices.h: New file.
19157         * vec-perm-indices.c: Likewise.
19158         * target.h (vec_perm_indices): Replace with a forward class
19159         declaration.
19160         (auto_vec_perm_indices): Move to vec-perm-indices.h.
19161         * optabs.h: Include vec-perm-indices.h.
19162         (expand_vec_perm): Delete.
19163         (selector_fits_mode_p, expand_vec_perm_var): Declare.
19164         (expand_vec_perm_const): Declare.
19165         * target.def (vec_perm_const_ok): Replace with...
19166         (vec_perm_const): ...this new hook.
19167         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
19168         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
19169         * doc/tm.texi: Regenerate.
19170         * optabs.def (vec_perm_const): Delete.
19171         * doc/md.texi (vec_perm_const): Likewise.
19172         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
19173         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
19174         expand_vec_perm for constant permutation vectors.  Assert that
19175         the mode of variable permutation vectors is the integer equivalent
19176         of the mode that is being permuted.
19177         * optabs-query.h (selector_fits_mode_p): Declare.
19178         * optabs-query.c: Include vec-perm-indices.h.
19179         (selector_fits_mode_p): New function.
19180         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
19181         is defined, instead of checking whether the vec_perm_const_optab
19182         exists.  Use targetm.vectorize.vec_perm_const instead of
19183         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
19184         fit in the vector mode before using a variable permute.
19185         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
19186         vec_perm_indices instead of an rtx.
19187         (expand_vec_perm): Replace with...
19188         (expand_vec_perm_const): ...this new function.  Take the selector
19189         as a vec_perm_indices rather than an rtx.  Also take the mode of
19190         the selector.  Update call to shift_amt_for_vec_perm_mask.
19191         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
19192         Use vec_perm_indices::new_expanded_vector to expand the original
19193         selector into bytes.  Check whether the indices fit in the vector
19194         mode before using a variable permute.
19195         (expand_vec_perm_var): Make global.
19196         (expand_mult_highpart): Use expand_vec_perm_const.
19197         * fold-const.c: Includes vec-perm-indices.h.
19198         * tree-ssa-forwprop.c: Likewise.
19199         * tree-vect-data-refs.c: Likewise.
19200         * tree-vect-generic.c: Likewise.
19201         * tree-vect-loop.c: Likewise.
19202         * tree-vect-slp.c: Likewise.
19203         * tree-vect-stmts.c: Likewise.
19204         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
19205         Delete.
19206         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
19207         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
19208         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
19209         (aarch64_vectorize_vec_perm_const): ...this new function.
19210         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19211         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19212         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
19213         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
19214         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19215         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19216         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
19217         into...
19218         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
19219         check for NEON modes.
19220         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
19221         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
19222         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
19223         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
19224         into...
19225         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
19226         the old VEC_PERM_CONST conditions.
19227         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
19228         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
19229         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
19230         (ia64_vectorize_vec_perm_const_ok): Merge into...
19231         (ia64_vectorize_vec_perm_const): ...this new function.
19232         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
19233         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
19234         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
19235         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
19236         * config/mips/mips.c (mips_expand_vec_perm_const)
19237         (mips_vectorize_vec_perm_const_ok): Merge into...
19238         (mips_vectorize_vec_perm_const): ...this new function.
19239         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
19240         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
19241         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
19242         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
19243         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
19244         (rs6000_expand_vec_perm_const): Delete.
19245         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
19246         Delete.
19247         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19248         (altivec_expand_vec_perm_const_le): Take each operand individually.
19249         Operate on constant selectors rather than rtxes.
19250         (altivec_expand_vec_perm_const): Likewise.  Update call to
19251         altivec_expand_vec_perm_const_le.
19252         (rs6000_expand_vec_perm_const): Delete.
19253         (rs6000_vectorize_vec_perm_const_ok): Delete.
19254         (rs6000_vectorize_vec_perm_const): New function.
19255         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
19256         an element count and rtx array.
19257         (rs6000_expand_extract_even): Update call accordingly.
19258         (rs6000_expand_interleave): Likewise.
19259         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
19260         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
19261         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
19262         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
19263         (rs6000_expand_vec_perm_const): Delete.
19264         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
19265         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19266         (altivec_expand_vec_perm_const_le): Take each operand individually.
19267         Operate on constant selectors rather than rtxes.
19268         (altivec_expand_vec_perm_const): Likewise.  Update call to
19269         altivec_expand_vec_perm_const_le.
19270         (rs6000_expand_vec_perm_const): Delete.
19271         (rs6000_vectorize_vec_perm_const_ok): Delete.
19272         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
19273         reference to the SPE evmerge intructions.
19274         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
19275         an element count and rtx array.
19276         (rs6000_expand_extract_even): Update call accordingly.
19277         (rs6000_expand_interleave): Likewise.
19278         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
19279         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
19280         new function.
19281         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
19283 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19285         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
19286         vector mode and that that mode matches the mode of the data
19287         being permuted.
19288         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
19289         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
19290         directly using expand_vec_perm_1 when forcing selectors into
19291         registers.
19292         (expand_vec_perm_var): New function, split out from expand_vec_perm.
19294 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19296         * optabs-query.h (can_vec_perm_p): Delete.
19297         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
19298         * optabs-query.c (can_vec_perm_p): Split into...
19299         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
19300         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
19301         particular selector is valid.
19302         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
19303         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
19304         (vect_grouped_load_supported): Likewise.
19305         (vect_shift_permute_load_chain): Likewise.
19306         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
19307         (vect_transform_slp_perm_load): Likewise.
19308         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
19309         (vectorizable_bswap): Likewise.
19310         (vect_gen_perm_mask_checked): Likewise.
19311         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
19312         implementations of variable permutation vectors into account
19313         when deciding which selector to use.
19314         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
19315         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
19316         with a false third argument.
19317         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
19318         to test whether the constant selector is valid and can_vec_perm_var_p
19319         to test whether a variable selector is valid.
19321 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19323         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
19324         * optabs-query.c (can_vec_perm_p): Likewise.
19325         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
19326         instead of vec_perm_indices.
19327         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
19328         (vect_gen_perm_mask_checked): Likewise,
19329         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
19330         (vect_gen_perm_mask_checked): Likewise,
19332 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
19334         * optabs-query.h (qimode_for_vec_perm): Declare.
19335         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
19336         (qimode_for_vec_perm): ...this new function.
19337         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
19339 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
19341         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
19342         does not have a conditional at the top.
19344 2018-01-02  Richard Biener  <rguenther@suse.de>
19346         * ipa-inline.c (big_speedup_p): Fix expression.
19348 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
19350         PR target/81616
19351         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
19352         for generic 4->6.
19354 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
19356         PR target/81616
19357         Generic tuning.
19358         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
19359         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
19360         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
19361         cond_taken_branch_cost 3->4.
19363 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
19365         PR tree-optimization/83581
19366         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
19367         TODO_cleanup_cfg if any changes have been made.
19369         PR middle-end/83608
19370         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
19371         convert_modes if target mode has the right side, but different mode
19372         class.
19374         PR middle-end/83609
19375         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
19376         last argument when extracting from CONCAT.  If either from_real or
19377         from_imag is NULL, use expansion through memory.  If result is not
19378         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
19379         the parts directly to inner mode, if even that fails, use expansion
19380         through memory.
19382         PR middle-end/83623
19383         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
19384         check for bswap in mode rather than HImode and use that in expand_unop
19385         too.
19387 Copyright (C) 2018 Free Software Foundation, Inc.
19389 Copying and distribution of this file, with or without modification,
19390 are permitted in any medium without royalty provided the copyright
19391 notice and this notice are preserved.