Revert r25841.
[official-gcc.git] / gcc / ChangeLog
blobccb007012841c0f24589f1ffaa19efa48b1f3aa4
1 2018-04-18  Martin Liska  <mliska@suse.cz>
3         Revert
4         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
6         PR lto/84805
7         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
8         incomplete types.
10 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
12         PR target/85388
13         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
14         ENDBR after calling __morestack.
16 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
18         PR jit/85384
19         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
20         by using gcc_base_ver to generate a gcc_driver_version, and use
21         it when generating GCC_DRIVER_NAME.
22         * configure: Regenerate.
24 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
26         PR target/81084
27         * config.gcc: Obsolete powerpc*-*-*spe*.
29 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
31         PR debug/84637
32         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
33         (stabstr_D): Change type of unum from unsigned int to
34         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
35         type.
37 2018-04-17  Jim Wilson  <jimw@sifive.com>
39         PR 84856
40         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
41         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
42         Set arg_pointer_offset after using pretend_args_size.
44 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
46         PR rtl-optimization/85431
47         * dse.c (record_store): Ignore zero width stores.
49         PR sanitizer/85230
50         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
51         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
52         __builtin_stack_restore rather than after it.
53         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
54         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
55         argument instead of virtual_dynamic_stack_rtx.
57 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
59         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
60         New prototype.
61         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
62         Add note to error message to explain internal mapping of overloaded
63         built-in function name to non-overloaded built-in function name.
64         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
65         function.
67 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
69         PR target/85424
70         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
71         where the inputs overlap with the output.
73 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
75         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
76         (=v, v) alternative and explicit "memory" attribute.
77         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
78         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
79         attributes.
80         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
81         "sselog1" type instead of "sselog".
82         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
83         "sselog".  Remove explicit "memory" attribute.
84         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
85         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
86         attributes.
87         (vec_extract_hi_v32hi): Merge all alternatives into one, use
88         "sselog1" type instead of "sselog".  Remove explicit "memory"
89         attribute.
90         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
91         use "sselog1" type instead of "sselog".  Remove explicit "memory"
92         attribute.
93         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
94         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
95         attributes.
96         (vec_extract_hi_v64qi): Merge all alternatives into one, use
97         "sselog1" type instead of "sselog".  Remove explicit "memory"
98         attribute.
99         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
100         use "sselog1" type instead of "sselog".  Remove explicit "memory"
101         attribute.
103         PR target/85430
104         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
106         PR middle-end/85414
107         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
108         on a SUBREG.
110 2018-04-17  Martin Jambor  <mjambor@suse.cz>
112         PR ipa/85421
113         * ipa-cp.c (create_specialized_node): Call
114         expand_all_artificial_thunks if necessary.
116 2018-04-17  Martin Liska  <mliska@suse.cz>
118         PR lto/85405
119         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
120         in message, remote space in between '_G' and '('.
122 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
124         PR target/85281
125         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
126         avx512f_vmcmp<mode>3<round_saeonly_name>,
127         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
128         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
129         avx512f_rndscale<mode><round_saeonly_name>,
130         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
131         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
132         Use %<iptr>2 instead of %2 for -masm=intel.
133         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
134         avx512f_vcvttss2usi<round_saeonly_name>,
135         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
136         -masm=intel.
137         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
138         avx512f_vcvttsd2usi<round_saeonly_name>,
139         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
140         Use %q1 instead of %1 for -masm=intel.
141         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
142         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
143         of %3 for -masm=intel.
144         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
145         -masm=intel.
146         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
147         -masm=intel.
148         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
149         -masm=intel.
150         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
151         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
152         %g1.
153         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
154         -masm=intel.
155         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
156         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
157         %g1 and one with %0 and %1.
158         (avx512er_vmrcp28<mode><round_saeonly_name>,
159         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
160         %1 for -masm=intel.
161         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
162         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
163         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
164         of %0 and %{%4%} for -masm=intel.
165         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
166         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
167         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
168         order of %0 and %{%5%}%{z%} for -masm=intel.
170 2018-04-17  Jan Hubicka  <jh@suse.cz>
172         PR lto/85405
173         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
175 2018-04-17  Martin Liska  <mliska@suse.cz>
177         PR ipa/85329
178         * multiple_target.c (create_dispatcher_calls): Set apostrophes
179         for target_clone error message.  Make default implementation
180         clone to be a local declaration.
181         (separate_attrs): Add new argument and check for an empty
182         string.
183         (expand_target_clones): Handle it.
184         (ipa_target_clone): Make redirection just for target_clones
185         functions.
187 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
188             Tom de Vries  <tom@codesourcery.com>
190         PR middle-end/84955
191         * omp-expand.c (expand_oacc_for): Add dummy false branch for
192         tiled basic blocks without omp continue statements.
194 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
196         PR target/83660
197         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
198         vec_extract expression as having side effects to make sure it gets
199         a cleanup point.
201 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
203         PR target/85403
204         * config/i386/i386.c (get_builtin_code_for_version): Check
205         error_mark_node.
207 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
209         PR target/84331
210         * gcc/config.gcc: Support "skylake".
211         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
212         PROCESSOR_SKYLAKE.
213         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
214         (processor_target_table): Add "skylake".
215         (ix86_option_override_internal): Add "skylake".
216         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
217         PROCESSOR_CANNONLAKE.
218         (get_builtin_code_for_version): Fix priority for
219         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
220         PROCESSOR_SKYLAKE-AVX512.
221         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
222         (processor_type): Add PROCESSOR_SKYLAKE.
224 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
225             Jason Merrill  <jason@redhat.com>
227         PR c++/85112
228         * convert.c (convert_to_integer_1): Use direct recursion for
229         enumeral types and types with a precision less than the number
230         of bits in their mode.
232 2018-04-16  Julia Koval  <julia.koval@intel.com>
234         PR target/84413
235         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
236         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
238 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
240         PR target/85293
241         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
242         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
243         and -mno-direct-move.
245 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
247         PR target/83402
248         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
249         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
250         Ensure negative shifts result in {0}.
252 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
254         PR rtl-optimization/79916
255         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
256         regs (if any) to define how to gnerate SD moves when LRA is in
257         progress.
259 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
261         PR rtl-optimization/85393
262         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
263         * except.c (expand_dw2_landing_pad_for_region): Make static.
264         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
265         a label and unconditional jump to old_bb, rather than
266         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
267         basic block.
269         PR rtl-optimization/85376
270         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
271         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
272         instead of a specific value.
274 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
275             Bin Cheng  <bin.cheng@arm.com>
277         PR tree-optimization/82965
278         PR tree-optimization/83991
279         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
280         by_profile_only parameter.
281         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
282         information if the loop was predicted to iterate too many times.
283         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
285 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
287         PR lto/71991
288         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
289         always inline.
291 2018-04-13  Martin Liska  <mliska@suse.cz>
292             Jakub Jelinek  <jakub@redhat.com>
294         PR middle-end/81657
295         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
296         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
297         * builtins.c (expand_builtin_memory_copy_args): Use
298         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
299         handle dest_addr == pc_rtx.
301 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
303         PR target/85291
304         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
305         asked to not generate direct moves.
306         (fix_trunc<mode>si2_stfiwx): Similar.
307         (fix_trunc<mode>si2_internal): Similar.
309 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
311         PR debug/83157
312         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
313         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
314         lookup if dest in some wider mode is known to be const0_rtx and
315         if so, record permanent equivalence for it to be ZERO_EXTEND of
316         the narrower mode destination.
318 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
320         * lto-streamer-out.c (output_function): Revert 259346.
321         * omp-expand.c (expand_oacc_for): Likewise.
323 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
325         PR rtl-optimization/85354
326         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
327         * sel-sched.c (sel_global_init): ... here.
329 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
331         PR target/85238
332         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
333         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
334         mode for PE-COFF targets.
335         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
336         (i386_pe_asm_lto_end): Likewise.
337         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
338         (TARGET_ASM_LTO_END): Likewise.
339         * config/i386/winnt.c (saved_debug_info_level): New static variable.
340         (i386_pe_asm_lto_start): New function.
341         (i386_pe_asm_lto_end): Likewise.
343 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
344             Richard Biener  <rguenther@suse.de>
346         PR middle-end/84955
347         * lto-streamer-out.c (output_function): Fix CFG loop state before
348         streaming out.
349         * omp-expand.c (expand_oacc_for): Handle calls to internal
350         functions like regular functions.
352 2018-04-12  Richard Biener  <rguenther@suse.de>
354         PR lto/85371
355         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
356         for the early LTO debug to properly generate references to it
357         during DIE emission.  Do not re-use that for the skeleton for
358         split-dwarf.
359         (dwarf2out_early_finish): Likewise.
361 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
363         PR target/85328
364         * config/i386/sse.md
365         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
366         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
367         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
368         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
369         and output is a reg, avoid creating invalid lowpart subreg, but
370         instead split into a 512-bit move.  Don't split if not AVX512VL,
371         input is xmm16+ reg and output is a mem.
372         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
373         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
374         xmm16+ reg and output is a mem.
376 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
378         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
379         also for flag_dwarf2_cfi_asm.
381 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
383         PR rtl-optimization/85342
384         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
385         a bool scalar var inside of the loop instead.  Don't try to update
386         recog_data.operand after failed apply_change_group.
388 2018-04-12  Tom de Vries  <tom@codesourcery.com>
390         PR target/85296
391         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
392         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
393         array with flexible array member as array without given dimension.
394         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
395         argument for undefined param to true.
397 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
399         PR target/85321
400         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
401         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
402         from PowerPC section.
403         * config/rs6000/sysv4.opt (mcall-): Improve help text.
404         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
405         help text that is too long.
406         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
407         help text that is too long.
408         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
409         help text that is too long.
411 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
413         * config/alpha/alpha.md (stack_probe_internal): Rename
414         from "probe_stack".  Update all callers.
416 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
418         PR rtl-optimization/84566
419         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
420         sched_macro_fuse_insns.
422 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
424         PR target/84301
425         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
426         (compute_block_dependences): ... from here.
428 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
430         PR tree-optimization/85331
431         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
432         from int to HOST_WIDE_INT.
434 2018-04-11  Martin Jambor  <mjambor@suse.cz>
436         PR ipa/84149
437         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
438         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
439         not the same as the source val.
440         (cgraph_edge_brings_value_p): New parameter.
441         (gather_edges_for_value): Pass destination value to
442         cgraph_edge_brings_value_p.
443         (perhaps_add_new_callers): Likewise.
444         (get_info_about_necessary_edges): Likewise and exclude values brought
445         only by self-recursive edges.
446         (create_specialized_node): Redirect only clones of self-calling edges.
447         (+self_recursive_pass_through_p): New function.
448         (find_more_scalar_values_for_callers_subset): Use it.
449         (find_aggregate_values_for_callers_subset): Likewise.
450         (known_aggs_to_agg_replacement_list): Removed.
451         (decide_whether_version_node): Re-calculate known constants for all
452         remaining context clones.
454 2018-04-11  Richard Biener  <rguenther@suse.de>
456         PR lto/85339
457         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
458         from early DWARF output.
459         (dwarf2out_early_finish): Output line info unconditionally into
460         early DWARF and add reference to it.
462 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
464         PR target/85281
465         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
466         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
467         other than V2DFmode using iptr mode attribute.
468         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
470 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
472         PR rtl-optimization/84659
473         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
475 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
477         PR debug/85302
478         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
479         SIZEP is NULL.
480         (output_loc_list): Pass address of a dummy size variable even in the
481         locview handling loop.
482         (index_location_lists): Add comment on why skip_loc_list_entry can't
483         call size_of_locs.
485 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
487         PR target/85261
488         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
489         into register.
491 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
493         PR target/85321
494         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
495         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
496         and -mstring-compare-inline-limit.
498 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
500         PR target/85287
501         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
502         for stack clash protection in a register whenever we need it to be in
503         a register.
505 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
507         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
508         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
510 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
512         PR target/85321
513         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
514         the help text.
515         (mlong-double-): Ditto.
516         * config/rs6000/sysv4.opt (msdata=): Ditto.
517         (mtls-size=): Ditto.
519 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
521         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
522         erroneous entries for
523         "vector int vec_ldl (int, long int *)", and
524         "vector unsigned int vec_ldl (int, unsigned long int *)".
525         Add comments and entries for
526         "vector bool char vec_ldl (int, bool char *)",
527         "vector bool short vec_ldl (int, bool short *)",
528         "vector bool int vec_ldl (int, bool int *)",
529         "vector bool long long vec_ldl (int, bool long long *)",
530         "vector pixel vec_ldl (int, pixel *)",
531         "vector long long vec_ldl (int, long long *)",
532         "vector unsigned long long vec_ldl (int, unsigned long long *)".
533         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
534         type tree bool_long_long_type_node and correct definition of
535         bool_V2DI_type_node to make reference to this new type tree.
536         (rs6000_mangle_type): Replace erroneous reference to
537         bool_long_type_node with bool_long_long_type_node.
538         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
539         comments to emphasize sign distinctions for char and int types and
540         replace RS6000_BTI_bool_long constant with
541         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
542         use of RS6000_BTI_pixel.
543         (bool_long_type_node): Remove this macro definition.
544         (bool_long_long_type_node): New macro definition
546 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
548         PR rtl-optimization/85300
549         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
550         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
551         simplify_unary_operation fails.
553 2018-04-10  Martin Liska  <mliska@suse.cz>
555         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
556         cgraph_edge and ipa_ref.
558 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
560         PR target/85177
561         PR target/85255
562         * config/i386/sse.md
563         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
564         computation of the VEC_MERGE selector from mask.
565         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
566         Fix decoding of the VEC_MERGE selector into mask.
568 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
570         PR tree-optimization/85286
571         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
573 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
575         * final.c (final_1): Set insn_last_address as well as
576         insn_current_address.
578 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
580         PR target/85173
581         * explow.c (emit_stack_probe): Call validize_mem on memory location
582         before passing it to gen_probe_stack.  Create address operand and
583         legitimize it for the probe_stack_address case.
585 2018-04-09  Jan Hubicka  <jh@suse.cz>
587         PR lto/85078
588         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
589         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
590         * tree.c (free_lang_data_in_type): Fix handling of binfos;
591         walk basetypes.
592         (free_lang_data): Rebuild type inheritance graph.
594 2018-04-09  Martin Sebor  <msebor@redhat.com>
596         * invoke.texi (-finline-small-functions): Mention other optimization
597         options.
598         (-findirect-inlining, -fpartial-inlining): Same.
599         (-finline-functions-called-once): Same.
600         (-freorder-blocks-and-partition): Same.
602 2018-04-09  Jan Hubicka  <jh@suse.cz>
604         PR rtl/84058
605         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
606         jumps; choose last target that matches the criteria (i.e.
607         no partition changes for non-crossing jumps).
608         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
609         support for redirecting crossing jumps to non-crossing.
611 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
613         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
614         also for naked functions.
616 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
618         * config/arc/arc.md (add_shift): New pattern.
619         (add_shift2): Likewise.
620         (sub_shift): Likewise.
621         (sub_shift_cmp0_noout): Likewise.
622         (compare_si_ashiftsi): Likewise.
623         (xbfu_cmp0_noout): New combine pattern.
624         (xbfu_cmp0"): Likewise.
625         (movsi_set_cc_insn): Place the predicable variant first.
626         (commutative_binary_cmp0_noout): Remove clobber.
627         (commutative_binary_cmp0): New pattern.
628         (noncommutative_binary_cmp0): Likewise.
629         (noncommutative_binary_cmp0_noout): Likewise.
630         (noncommutative_binary_comparison_result_used): Removed.
631         (rsub_cmp0): New pattern.
632         (rsub_cmp0_noout): Likewise.
633         (extzvsi): Changed, keep only meaningful variants.
634         (SQH, SEZ): New iterators.
635         (SQH_postfix): New mode attribute.
636         (SEZ_prefix): New code attribute.
637         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
638         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
639         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
640         of numerical value.
641         (noncommutative_operator): Check the availability of barrel
642         shifter option.
644 2018-04-09  Richard Biener  <rguenther@suse.de>
646         PR tree-optimization/85284
647         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
648         Only use the niter constraining form of simple_iv when the exit
649         is always executed.
651 2018-04-09  Tom de Vries  <tom@codesourcery.com>
653         PR target/84041
654         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
655         (define_expand "*memory_barrier"): New define_expand.
656         (define_insn "memory_barrier"): New insn.
658 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
660         PR rtl-optimization/80463
661         PR rtl-optimization/83972
662         PR rtl-optimization/83480
664         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
665         correct producer for the insn.
666         (tidy_control_flow): Fixup seqnos in case of debug insns.
668 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
670         PR rtl-optimization/83913
672         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
673         different sched-times when merging exprs.
675 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
677         PR rtl-optimization/83962
679         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
680         tidy_fallthru_edge and tidy_control_flow.
682 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
684         PR rtl-optimization/83530
686         * sel-sched.c (force_next_insn): New global variable.
687         (remove_insn_for_debug): When force_next_insn is true, also leave only
688         next insn in the ready list.
689         (sel_sched_region): When the region wasn't scheduled, make another pass
690         over it with force_next_insn set to 1.
692 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
694         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
695         into tm_file.
696         * config/nds32/constants.md (unspec_volatile_element): Add enum values
697         for interrupt control.
698         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
699         functions for interrupt control.
700         * config/nds32/nds32-intrinsic.md: Likewise.
701         * config/nds32/nds32_intrinsic.h: Likewise.
702         * config/nds32/nds32.h (nds32_builtins): Likewise.
704 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
706         * config/nds32/nds32.c (nds32_init_machine_status,
707         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
708         strict_aligned_p field.
709         (nds32_expand_to_rtl_hook): New function.
710         (TARGET_EXPAND_TO_RTL_HOOK): Define.
711         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
713 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
714             Chung-Ju Wu  <jasonwucj@gmail.com>
716         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
717         * config/nds32/nds32-n7.md: New file.
718         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
719         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
720         pipeline.
721         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
722         * config/nds32/nds32.md (pipeline_model): Add n7.
723         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
724         * config/nds32/pipelines.md: Include n7 settings.
726 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
727             Chung-Ju Wu  <jasonwucj@gmail.com>
729         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
730         * config/nds32/nds32-e8.md: New file.
731         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
732         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
733         pipeline.
734         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
735         * config/nds32/nds32.md (pipeline_model): Add e8.
736         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
737         * config/nds32/pipelines.md: Include e8 settings.
739 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
740             Chung-Ju Wu  <jasonwucj@gmail.com>
742         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
743         * config/nds32/nds32-n8.md: New file.
744         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
745         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
746         pipeline.
747         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
748         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
749         * config/nds32/nds32.md (pipeline_model): Add n8.
750         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
751         * config/nds32/pipelines.md: Include n8 settings.
753 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
754             Chung-Ju Wu  <jasonwucj@gmail.com>
756         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
757         * config/nds32/nds32-n9-2r1w.md: New file.
758         * config/nds32/nds32-n9-3r2w.md: New file.
759         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
760         nds32_register_ports): New or modify for cpu n9.
761         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
762         pipeline.
763         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
764         * config/nds32/nds32-utils.c: New file.
765         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
766         TARGET_MUL_SLOW): Define.
767         * config/nds32/nds32.md (pipeline_model): New attribute.
768         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
769         New options that support cpu n9.
770         * config/nds32/pipelines.md: Include n9 settings.
771         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
773 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
775         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
776         information if necessary.
777         (output_cond_branch_compare_zero): Likewise.
778         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
779         (nds32_target_alignment): Refine for alignment.
780         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
781         (FUNCTION_BOUNDARY): Modify.
782         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
783         align case.
784         * config/nds32/nds32.opt (malways-align, malign-functions): New.
786 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
788         * config/nds32/constants.md (unspec_volatile_element): Add values for
789         TLB operation and data prefetch.
790         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
791         functions for TLB operation and data prefetch.
792         * config/nds32/nds32-intrinsic.md: Likewise.
793         * config/nds32/nds32_intrinsic.h: Likewise.
794         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
795         (nds32_print_operand): Likewise.
796         * config/nds32/nds32.h (nds32_builtins): Likewise.
798 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
799         Andrew Pinski <pinsika@gcc.gnu.org>
801         PR middle-end/82976
802         * match.pd: Use constant_boolean_node of correct type instead of
803         boolean_true_node or boolean_false_node for simplifying
804         pointer comparisons to zero.
806 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
808         PR tree-optimization/80021
809         * tree.c (verify_type_variant): Make error call in verify_variant_match
810         translatable and remove final full stop.
812 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
814         * config/nds32/constants.md (unspec_volatile_element): Add
815         UNSPEC_VOLATILE_EH_RETURN.
816         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
817         nds32_output_stack_pop): Support dwarf exception handling process.
818         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
819         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
820         exception handling process.
821         (nds32_compute_stack_frame): Likewise.
822         (nds32_return_addr_rtx): Likewise.
823         (nds32_initial_elimination_offset): Likewise.
824         (nds32_expand_prologue): Likewise.
825         (nds32_expand_epilogue): Likewise.
826         (nds32_dynamic_chain_address): New function.
827         * config/nds32/nds32.h (machine_function): Add fields for dwarf
828         exception handling.
829         (DYNAMIC_CHAIN_ADDRESS): Define.
830         (EH_RETURN_DATA_REGNO): Define.
831         (EH_RETURN_STACKADJ_RTX): Define.
832         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
833         patterns for dwarf exception handling.
835 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
837         * config/nds32/nds32.h: Clean up obsolete macros.
839 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
841         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
842         Add enum values for particular instructions.
843         * config/nds32/nds32-intrinsic.c: Implementation of expanding
844         particular intrinsic functions.
845         * config/nds32/nds32-intrinsic.md: Likewise.
846         * config/nds32/nds32_intrinsic.h: Likewise.
847         * config/nds32/nds32.h (nds32_builtins): Likewise.
848         * config/nds32/nds32.md (type): Add pbsad and pbsada.
849         (btst, ave): New patterns for particular instructions.
851 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
853         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
854         Add enum values for atomic load/store and memory sync.
855         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
856         and memory sync.
857         * config/nds32/nds32-intrinsic.md: Likewise.
858         * config/nds32/nds32_intrinsic.h: Likewise.
859         * config/nds32/nds32.h (nds32_builtins): Likewise.
861 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
863         PR tree-optimization/85257
864         * fold-const.c (native_encode_vector): If not all elts could fit
865         and off is -1, return 0 rather than offset.
866         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
867         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
868         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
869         adjust buffer in native_interpret_expr call.
871 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
873         * config/nds32/constants.md (unspec_volatile_element): Add cache
874         control enum values.
875         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
876         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
877         * config/nds32/nds32.c (nds32_cctl_names): New.
878         (nds32_print_operand): Handle cache control register names.
879         * config/nds32/nds32.h (nds32_builtins): New enum values.
880         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
881         macros.
882         * config/nds32/nds32.md (type): Add mmu.
883         * config/nds32/pipelines.md (simple_insn): Add mmu.
885 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
887         * config/nds32/nds32.md (type): Remove call.
888         * config/nds32/pipelines.md (simple_insn): Likewise.
890 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
892         * config/nds32/constants.md (unspec_volatile_element): Add
893         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
894         UNSPEC_VOLATILE_FMFCFG.
895         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
896         description for fmfcfg and fmfcsr.
897         (bdesc_1arg): Add fmtcsr.
898         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
899         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
900         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
901         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
902         unspec_fmfcfg): New patterns.
903         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
904         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
905         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
906         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
907         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
908         __nds32__fmfcfg): Define.
910 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
912         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
913         intrinsic register names.
914         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
915         intrinsic register enum values and macros.
917 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
919         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
920         for load/store addressing form.
921         (nds32_print_operand_address): Likewise.
923 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
925         PR target/85196
926         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
927         based on LABEL_REF.  Remove useless assertion.
928         (pic_address_needs_scratch): Fix formatting.
929         (sparc_legitimize_pic_address): Minor tweaks.
930         (sparc_delegitimize_address): Adjust assertion accordingly.
931         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
932         into symbolic_operand.
933         (movsi_high_pic_label_ref): Likewise.
934         (movsi_lo_sum_pic_label_ref): Likewise.
935         (movdi_pic_label_ref): Likewise.
936         (movdi_high_pic_label_ref): Likewise.
937         (movdi_lo_sum_pic_label_ref): Likewise.
939 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
941         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
942         custom LIB_SPEC setup.
944 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
945             Kito Cheng  <kito.cheng@gmail.com>
947         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
948         * config/riscv/freebsd.h: New.
950 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
952         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
953         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
954         file.
956 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
957             Kito Cheng  <kito.cheng@gmail.com>
959         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
960         nds32_output_call, nds32_symbol_binds_local_p): New functions.
961         * config/nds32/nds32-protos.h (nds32_output_call,
962         nds32_output_return): Declare.
963         * config/nds32/nds32.md: Refine all the call and return patterns.
965 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
967         PR debug/85252
968         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
969         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
971         PR rtl-optimization/84872
972         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
973         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
974         EDGE_CROSSING edge.
976 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
978         * expr.c (copy_blkmode_to_reg): Revert 254862.
979         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
981 2018-04-06  Richard Biener  <rguenther@suse.de>
983         PR middle-end/85244
984         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
985         after seeing a component reference with an adjacent field.  Treat
986         refs to arrays at struct end of external decls similar to
987         refs to unconstrained commons.
989 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
991         PR sanitizer/85213
992         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
993         look through SAVE_EXPRs with non-side-effects argument.  Adjust
994         recursive calls.
995         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
996         save_p here.
998 2018-04-06  Richard Biener  <rguenther@suse.de>
1000         PR middle-end/85180
1001         * alias.c (find_base_term): New wrapper around find_base_term
1002         unwinding CSELIB_VAL_PTR changes.
1003         (find_base_term): Do not restore CSELIB_VAL_PTR during the
1004         recursion.
1006 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
1008         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
1009         instructions.
1010         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
1011         constant definitions.
1012         ("nop"): lr 0,0 -> nopr r0
1013         ("nop_lr0", "nop_lr1"): New insn definitions.
1015 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
1017         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
1018         NDS32_V3PUSH_AVAILABLE_P macro.
1020 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
1021             Chung-Ju Wu  <jasonwucj@gmail.com>
1023         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
1024         (nds32*-*-*): Add float and fpu_config into supported_defaults.
1025         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
1026         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
1027         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
1028         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
1029         * config/nds32/constraints.md: New constraints and checking for hard
1030         float configuration.
1031         * config/nds32/iterators.md: New mode iterator and attribute for hard
1032         float configuration.
1033         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
1034         patterns.
1035         * config/nds32/nds32-fpu.md: New file.
1036         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
1037         deal with hard float code generation.
1038         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
1039         ARCH_V3S.
1040         (abi_type, float_reg_number): New enum type.
1041         * config/nds32/nds32-predicates.c: New predicates for hard float.
1042         * config/nds32/nds32-protos.h: Declare functions for hard float.
1043         * config/nds32/nds32.c: Implementation for hard float configuration.
1044         * config/nds32/nds32.h: Definitions for hard float configuration.
1045         * config/nds32/nds32.md: Include hard float machine description and
1046         modify patterns for hard float configuration.
1047         * config/nds32/nds32.opt: New options for hard float configuration.
1048         * config/nds32/predicates.md: New predicates for hard float
1049         configuration.
1051 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
1053         * common/config/nds32/nds32-common.c
1054         (nds32_option_optimization_table): Enable -mreleax-hint by default.
1056 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
1058         PR middle-end/85195
1059         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
1060         CONSTRUCTOR_ELT (ctor, ...)->value.
1062 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
1064         PR target/85193
1065         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
1067 2018-04-05  Tom de Vries  <tom@codesourcery.com>
1069         PR target/85204
1070         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
1071         cond jump.
1073 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
1074             Kito Cheng  <kito.cheng@gmail.com>
1076         * config/nds32/constraints.md (U33): Fine-tune checking condition.
1077         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
1078         * config/nds32/nds32.h (nds32_16bit_address_type): Add
1079         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
1081 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
1082             Kito Cheng  <kito.cheng@gmail.com>
1084         * config/nds32/constraints.md (Ufe): New memory constraint.
1085         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
1086         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
1087         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
1088         operands.
1089         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
1090         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
1092 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1094         * config/nds32/nds32.md: Use optimize_size in the condition for
1095         alu-shift instructions.
1097 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1099         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
1101 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1103         * config/nds32/nds32.md (negsi2): Refine pattern.
1105 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
1106             Chung-Ju Wu  <jasonwucj@gmail.com>
1108         * config/nds32/iterators.md (shift_rotate): New code iterator.
1109         (shift): New code attribute.
1110         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
1111         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
1112         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
1113         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
1114         bit-wise operations.
1115         (andsi3, *andsi3): Ditto.
1116         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
1117         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
1118         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
1119         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
1120         nds32_ior_operand, nds32_xor_operand): New predicates.
1122 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1124         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
1125         (addsi3, subsi3): ... this.
1127 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1129         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
1131 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1133         * config/nds32/nds32.md: Adjust indention.
1135 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
1137         * config/nds32/nds32.md (feature): New attribute.
1139 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
1141         * config/nds32/nds32.md (subtype): New attribute.
1143 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
1145         PR target/85203
1146         * config/arm/arm-builtins.c (arm_expand_builtin): Change
1147         expansion to perform a bitwise AND of the argument followed by a
1148         boolean negation of the result.
1150 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
1152         PR rtl-optimization/84878
1153         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
1154         the basic block.  Assert the use reference is not artificial and that
1155         it has an associated insn.
1157 2018-04-04  Michael Matz  <matz@suse.de>
1159         * builtins.c (compute_objsize): Pass correct operand
1160         to array_at_struct_end_p.
1162 2018-04-04  Richard Biener  <rguenther@suse.de>
1164         PR lto/85176
1165         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
1166         from contexts for DINFO_LEVEL_TERSE and below.
1168 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
1170         * config/nds32/nds32-doubleword.md (move_<mode>): Require
1171         resiter_operand condition.
1172         * config/nds32/nds32.md (*move<mode>): Ditto.
1174 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
1175             Monk Chiang  <sh.chiang04@gmail.com>
1177         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
1179 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
1181         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
1183 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
1184             Kito Cheng  <kito.cheng@gmail.com>
1186         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
1187         nds32_cond_code_str, output_cond_branch,
1188         output_cond_branch_compare_zero, nds32_expand_cbranch,
1189         nds32_expand_cstore, nds32_expand_movcc,
1190         nds32_output_cbranchsi4_equality_zero,
1191         nds32_output_cbranchsi4_equality_reg,
1192         nds32_output_cbranchsi4_equality_reg_or_const_int,
1193         nds32_output_cbranchsi4_greater_less_zero: New functions.
1194         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
1195         nds32_expand_cstore, nds32_expand_movcc,
1196         nds32_output_cbranchsi4_equality_zero,
1197         nds32_output_cbranchsi4_equality_reg,
1198         nds32_output_cbranchsi4_equality_reg_or_const_int,
1199         nds32_output_cbranchsi4_greater_less_zero): Declare.
1200         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
1201         nds32_rimm11s_operand): New predicates.
1202         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
1203         * config/nds32/nds32.md: Rewrite all the branch and conditional move
1204         patterns.
1206 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
1208         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
1209         * config/nds32/nds32.md: Ditto.
1210         * config/nds32/pipelines.md: Ditto.
1212 2018-04-04  Richard Biener  <rguenther@suse.de>
1214         PR tree-optimization/85168
1215         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
1216         propagating abnormals.
1218 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
1220         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
1222 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
1223             Kito Cheng  <kito.cheng@gmail.com>
1225         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
1226         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
1227         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
1228         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1229         * config/nds32/nds32.md (sibcall_internal): New.
1230         (sibcall_register): Remove.
1231         (sibcall_immediate): Remove.
1232         (sibcall_value_internal): New.
1233         (sibcall_value_register): Remove.
1234         (sibcall_value_immediate): Remove.
1235         * config/nds32/predicates.md (nds32_general_register_operand): New.
1236         (nds32_call_address_operand): New.
1238 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1240         PR rtl-optimization/85167
1241         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
1242         bb_defs if *split_p, instead preinitialize it to NULL.
1244         PR tree-optimization/85156
1245         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
1246         evaluating the argument multiple times.
1248 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
1250         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
1251         than vector.
1252         (_mm_cvtpd_ps): Likewise.
1253         (_mm_cvttpd_epi32): Likewise.
1254         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
1255         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
1256         vector, pixel, and bool following altivec.h include.
1258 2018-04-03  Martin Sebor  <msebor@redhat.com>
1260         * doc/extend.texi (Common Function Attributes): Clarify.
1261         (const attribute): Likewise.
1262         (pure attribute): Likewise.
1264 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1266         PR target/85169
1267         * config/i386/i386.c (ix86_expand_vector_set): Use
1268         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
1270 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
1272         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
1273         instructions when changing rounding bits to preserve precision bits
1274         in the x87 control word.
1276 2018-04-03  Martin Liska  <mliska@suse.cz>
1278         PR tree-optimization/82491
1279         * rtl.h (strip_offset_and_add): Replace += suboffset with
1280         poly_uint64 () + suboffset.
1282 2018-03-29  Martin Liska  <mliska@suse.cz>
1283             Martin Jambor  <mjambor@suse.cz>
1285         PR ipa/84947
1286         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
1287         param_type is not an integral or pointer type.
1289 2018-04-03  Richard Biener  <rguenther@suse.de>
1291         * sese.h (recompute_all_dominators): Remove.
1293 2018-04-02  Martin Sebor  <msebor@redhat.com>
1295         * doc/invoke.texi (-Wrestrict): Fix typos.
1297 2018-04-02  Jim Wilson  <jimw@sifive.com>
1299         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
1300         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
1301         (<optab>di3, <optab>si3_extend): Likewise.
1302         (<optab>si3_mask, <optab>si3_mask_1): New.
1303         (<optab>di3_mask, <optab>di3_mask_1): New.
1304         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
1305         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
1306         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
1308 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
1310         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
1311         example.
1313 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
1315         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
1316         (nds32_canonicalize_comparison): New function.
1318 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
1319             Kito Cheng  <kito.cheng@gmail.com>
1320             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
1322         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
1323         * config/nds32/constants.md (unspec_volatile_element): Add
1324         UNSPEC_VOLATILE_RELAX_GROUP.
1325         * config/nds32/nds32-relax-opt.c: New file.
1326         * config/nds32/nds32-predicates.c
1327         (nds32_symbol_load_store_p): New function.
1328         * config/nds32/nds32-protos.h
1329         (nds32_symbol_load_store_p): Declare function.
1330         (make_pass_nds32_relax_opt): Declare new rtl pass function.
1331         * config/nds32/nds32.c
1332         (nds32_register_pass): New function to register pass.
1333         (nds32_register_passes): New function to register passes.
1334         * config/nds32/nds32.md (relax_group): New pattern.
1335         * config/nds32/nds32.opt (mrelax-hint): New option.
1336         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
1338 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
1340         * config/nds32/t-nds32: Modify files dependency.
1342 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
1344         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
1345         (PROFILE_HOOK): Define its implementation.
1347 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
1349         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
1350         type and 32-bit size.
1352 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
1354         PR middle-end/85090
1355         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
1356         (V_128_256): New mode iterator.
1357         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
1358         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
1359         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
1360         of V.
1361         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
1362         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
1364 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
1366         PR target/83315
1367         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
1368         NaN inputs correctly.
1370 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
1372         PR target/80546
1373         * config/rs6000/vsx.md (??r): New mode attribute.
1374         (*vsx_mov<mode>_64bit): Use it.
1375         (*vsx_mov<mode>_32bit): Likewise.
1377 2018-03-30  Martin Sebor  <msebor@redhat.com>
1379         PR tree-optimization/84818
1380         * builtins.c (check_access): Use warning_n.
1382 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
1384         PR target/83822
1385         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
1386         condition.
1387         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
1388         condition.
1390 2018-03-30  Julia Koval  <julia.koval@intel.com>
1392         PR target/84413
1393         * x86-tune.def (movx, partial_reg_dependency): Enable for
1394         m_SKYLAKE_AVX512.
1396 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
1398         PR inline-asm/84985
1399         * lra-constraints.c (process_alt_operands): Move setting
1400         this_alternative_matches below.
1402 2018-03-29  Martin Liska  <mliska@suse.cz>
1404         PR lto/84995.
1405         * doc/invoke.texi: Document how LTO works with debug info.
1406         Describe auto-load support of binutils.  Mention 'x86-64'
1407         as valid option value of -march option.
1409 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
1411         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
1413         PR c/85094
1414         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
1415         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
1416         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
1417         checking.
1419 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
1421         PR target/84912
1422         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
1423         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
1424         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
1425         for RS6000_BTM_POWERPC64.
1426         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
1427         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
1428         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
1429         definition.
1430         (DIVDE): Use it.
1431         (DIVDEU): Likewise.
1433 2018-03-28 Carl Love  <cel@us.ibm.com>
1435         Revert
1436         2017-09-27  Carl Love  <cel@us.ibm.com>
1438         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
1439         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
1440         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
1441         fctiw instruction.
1443 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1445         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
1446         instead of __vector bool.
1447         (_mm_max_pu8): Likewise.
1448         (_mm_min_pi16): Likewise.
1450 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
1452         PR target/84912
1453         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
1454         (DIVWEUO): Likewise.
1455         (DIVDEO): Likewise.
1456         (DIVDEUO): Likewise.
1457         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
1458         DIVWEUO and DIVDEUO.
1459         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
1460         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
1461         (div_extend): Likewise.
1462         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
1463         builtin function.
1464         (__builtin_divweuo): Likewise.
1465         (__builtin_divdeo): Likewise.
1466         (__builtin_divdeuo): Likewise.
1468 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
1470         PR target/85095
1471         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
1472         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
1474         PR tree-optimization/82004
1475         * gimple-match-head.c (optimize_pow_to_exp): New function.
1476         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
1477         Don't fold to exp if optimize_pow_to_exp is false.
1479 2018-03-28  Martin Liska  <mliska@suse.cz>
1481         PR other/84819
1482         * calls.c (initialize_argument_information): Fix trailing space.
1483         * common.opt: Fix typo and provide better explanation for
1484         -fsanitize-coverage option.
1485         * config/i386/i386.opt: Fix typo.
1487 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
1488             Martin Liska  <mliska@suse.cz>
1490         PR sanitizer/85081
1491         * gimplify.c (asan_poison_variable): Don't do the check for
1492         gimplify_omp_ctxp here.
1493         (gimplify_decl_expr): Do it here.
1494         (gimplify_target_expr): Likewise.
1496 2018-03-28  Martin Liska  <mliska@suse.cz>
1498         PR target/84988
1499         * config/i386/i386.c (ix86_function_arg_advance): Do not call
1500         chkp_type_bounds_count if MPX is not enabled.
1502 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
1504         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
1506 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
1508         PR target/84914
1509         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
1510         function to create the function decl for complex long double
1511         multiply and divide for -mabi=ieeelongdouble.
1512         (init_float128_ieee): Call it.
1514 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
1516         PR target/85044
1517         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
1518         -fcf-protection=branch -mibt.
1519         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
1521 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1523         PR target/81863
1524         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
1526 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
1528         PR target/85056
1529         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
1530         extern array declarations.
1532 2018-03-27  Richard Biener  <rguenther@suse.de>
1534         PR middle-end/84067
1535         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
1536         explicit single_use checks.
1538 2018-03-27  Richard Biener  <rguenther@suse.de>
1540         PR tree-optimization/85082
1541         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
1542         Valueize the VUSE.
1544 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1546         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
1547         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
1548         Turn on fasynchronous-unwind-tables and funwind-tables.
1550 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
1552         PR target/85073
1553         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
1554         (*bmi_blsr_<mode>_ccz): Ditto.
1556 2018-03-26  Tom de Vries  <tom@codesourcery.com>
1558         PR tree-optimization/85063
1559         * omp-general.c (offloading_function_p): New function.  Factor out
1560         of ...
1561         * omp-offload.c (pass_omp_target_link::gate): ... here.
1562         * omp-general.h (offloading_function_p): Declare.
1563         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
1564         with attribute omp declare target for offloading functions.
1566 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
1568         PR tree-optimization/84005
1569         * tree-data-ref.h (get_base_for_alignment): Declare.
1570         * tree-data-ref.c (get_base_for_alignment_1): New function.
1571         (get_base_for_alignment): Likewise.
1572         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
1573         get_base_for_alignment to find a suitable base object, instead
1574         of always using drb->base_address.
1576 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1578         PR inline-asm/85022
1579         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
1580         known size by default.
1582 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
1584         PR inline-asm/85030
1585         * lra-constraints.c (process_alt_operands): Don't match BLKmode
1586         and non BLKmode operands.
1588 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1590         PR target/85026
1591         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
1592         Clean up attributes.
1594 2018-03-23  Richard Biener  <rguenther@suse.de>
1596         PR debug/85020
1597         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
1598         we are going to emit early debug for LTO.
1600 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1602         PR inline-asm/85034
1603         * function.c (match_asm_constraints_1): Don't optimize if input
1604         doesn't satisfy general_operand predicate for output's mode.
1606         PR inline-asm/85022
1607         * alias.c (write_dependence_p): Don't require for x_canonicalized
1608         non-VOIDmode if x has VOIDmode.
1610         PR sanitizer/85029
1611         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
1612         just don't try to optimize it rather than assert it never happens.
1614 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1616         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
1617         macro expansions for definition of ST_INTERNAL_<mode> and
1618         LD_INTERNAL_<mode> builtins.
1619         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
1620         Remove prototype.
1621         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
1622         function.
1623         (altivec_expand_st_builtin): Likewise.
1624         (altivec_expand_builtin): Remove calls to deleted functions.
1625         (rs6000_address_for_altivec): Delete this function.
1626         * config/rs6000/vector.md: Remove expands for
1627         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
1629 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
1631         PR target/84826
1632         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
1633         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
1634         re-computing once computed.
1635         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
1636         (arm_init_machine_status): Initialize
1637         machine->static_chain_stack_bytes.
1639 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1641         PR target/84760
1642         * doc/extend.texi: Add four new prototypes for vec_ld.
1643         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
1644         definitions for more logical presentation.
1645         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
1646         entries for V1TI variants of __builtin_altivec_ld builtin.
1647         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
1648         handling of V1TI variant of LVX icode pattern.
1649         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
1650         (rs6000_gimple_fold_builtin): Likewise.
1651         (altivec_init_builtins): Add code to define
1652         __builtin_altivec_lvx_v1ti function.
1654 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
1656         PR inline-asm/84941
1657         * function.c (match_asm_constraints_1): Don't do the optimization
1658         if input isn't a REG, SUBREG, MEM or constant.
1660 2018-03-22  Tom de Vries  <tom@codesourcery.com>
1662         PR tree-optimization/84956
1663         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
1664         bb_has_abnormal_pred.
1666 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
1668         PR sanitizer/85018
1669         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
1670         DECL_INITIAL (decl) to decl at the end.
1671         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
1672         adjust the comment.
1674 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
1676         * doc/extend.texi (__builtin_tgmath): Document when complex
1677         integer types are treated as _Complex _Float64.
1679 2018-03-21  Tom de Vries  <tom@codesourcery.com>
1681         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
1683 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1685         PR tree-optimization/84960
1686         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
1687         if it is ENTRY block, move them into single succ of ENTRY in that case.
1689 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
1691         PR tree-optimization/84811
1692         * poly-int.h (poly_span_traits): Remove the T3 parameter and
1693         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
1694         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
1695         (known_subrange_p): Update accordingly.  Cast each value involved
1696         in the size comparison, rather than casting the result of the
1697         subtraction.
1699 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1701         PR tree-optimization/84982
1702         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
1703         by flipping the least significant bit rather than all bits from
1704         bitpos to bitpos + bitsize - 1.
1706 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1708         * doc/extend.texi (Deprecated Features): Remove mention of
1709         long-deleted deprecations.
1711 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1713         PR jit/84288
1714         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
1715         * configure: Regenerate.
1717 2018-03-21  Tom de Vries  <tom@codesourcery.com>
1719         PR tree-optimization/83126
1720         * tree-parloops.c (num_phis): New function.
1721         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
1723 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1725         * doc/extend.texi (Deprecated Features): Update deprecated flags,
1726         mention anon-struct/union members and trailing attributes.
1728 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
1730         PR tree-optimization/84969
1731         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
1732         builtin memset partitions if they set different rhs values.
1734 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1736         PR rtl-optimization/84989
1737         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
1738         VEC_DUPLICATE with scalar result mode.
1740 2018-03-21  Martin Liska  <mliska@suse.cz>
1742         PR ipa/84963
1743         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
1744         not intended return statement.
1746 2018-03-21  Martin Liska  <mliska@suse.cz>
1748         PR target/84988
1749         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
1750         (chkp_find_bound_slots_1): Limit number of iterations.
1752 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
1754         PR target/84838
1755         * Minor grammar fixes for x86 options.
1757 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
1759         PR debug/84875
1760         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
1761         holding REG_CFA_RESTORE notes, instead turn them into a USE.
1763 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
1765         PR target/83789
1766         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
1767         (altivec_lvx_<mode>_1op): Likewise.
1768         (altivec_stvx_<mode>_2op): Likewise.
1769         (altivec_stvx_<mode>_1op): Likewise.
1770         (altivec_lvx_<VM2:mode>): New define_expand.
1771         (altivec_stvx_<VM2:mode>): Likewise.
1772         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
1773         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
1774         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
1775         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
1776         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
1777         (rs6000_gen_lvx): Likewise.
1778         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
1779         (altivec_expand_stv_builtin): Likewise.
1780         (altivec_expand_builtin): Likewise.
1781         * config/rs6000/vector.md: Likewise.
1783 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1785         PR target/82518
1786         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
1787         BYTES_BIG_ENDIAN.
1789 2018-03-20  Richard Biener  <rguenther@suse.de>
1791         PR target/84986
1792         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
1793         sign-conversions as zero, fall back to standard scalar_stmt
1794         cost for the rest.
1796 2018-03-20  Martin Liska  <mliska@suse.cz>
1798         PR ipa/84825
1799         * predict.c (rebuild_frequencies): Handle case when we have
1800         PROFILE_ABSENT, but flag_guess_branch_prob is false.
1802 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
1804         PR target/84990
1805         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
1806         flag_section_anchors.
1807         * varasm.c (use_blocks_for_decl_p): Remove hack for
1808         dw2_force_const_mem.
1810         PR target/84845
1811         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
1812         to ...
1813         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
1814         be created, use lowpart_subreg of operands[0] rather than operands[0]
1815         itself.
1816         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
1817         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
1818         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
1819         and n constraint instead of aarch64_shift_imm_di and Usd.
1820         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
1821         (*aarch64_<optab>_reg_minus<mode>3): ... this.
1823 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
1825         PR target/82989
1826         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
1827         to favor GPR over NEON registers.
1828         (<shift>di3_neon): Likewise.
1830 2018-03-20  Tom de Vries  <tom@codesourcery.com>
1832         PR target/84952
1833         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
1834         (nvptx_process_pars): Emit bar.sync asap and alap.
1836 2018-03-20  Tom de Vries  <tom@codesourcery.com>
1838         PR target/84954
1839         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
1840         seen_label if seen_label is already set.
1842 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
1844         PR target/84945
1845         * config/i386/i386.c (fold_builtin_cpu): For features above 31
1846         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
1847         Use 1U instead of 1.  Formatting fixes.
1849         PR c/84953
1850         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
1851         instead of TREE_TYPE (s1) for the return value.
1853 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
1855         PR tree-optimization/84946
1856         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
1857         bitsize + bitsize in poly_uint64 rather than poly_int64.
1859         PR sanitizer/78651
1860         * dwarf2asm.c: Include fold-const.c.
1861         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
1862         of decl rather than decl itself.
1864         PR rtl-optimization/84643
1865         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
1867 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
1869         PR sanitizer/78651
1870         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
1871         calling assemble_variable.
1873 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
1875         PR target/81647
1876         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
1877         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
1879 2018-03-19  Jim Wilson  <jimw@sifive.com>
1881         PR bootstrap/84856
1882         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
1883         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
1884         (riscv_first_stack_step): Likewise.
1885         (riscv_option_override): Use STACK_BOUNDARY instead of
1886         MIN_STACK_BOUNDARY.
1887         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
1888         MIN_STACK_BOUNDARY.
1889         (BIGGEST_ALIGNMENT): Set to 128.
1890         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
1891         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
1892         STACK_BOUNDARY.
1894 2018-03-19  Richard Biener  <rguenther@suse.de>
1896         PR tree-optimization/84933
1897         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
1898         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
1900 2018-03-19  Richard Biener  <rguenther@suse.de>
1902         PR tree-optimization/84859
1903         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
1904         (cond_if_else_store_replacement): Perform sinking operation on
1905         single-store BBs regardless of MAX_STORES_TO_SINK setting.
1906         Generalize what a BB with a single eligible store is.
1908 2018-03-19  Richard Biener  <rguenther@suse.de>
1910         PR tree-optimization/84929
1911         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
1912         chrec_is_positive against non-chrec arg.
1914 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
1916         PR target/84711
1917         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
1919 2018-03-18  Martin Liska  <mliska@suse.cz>
1921         PR rtl-optimization/84635
1922         * regrename.c (build_def_use): Use matches_mode only when
1923         matches >= 0.
1925 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
1927         PR tree-optimization/84913
1928         * tree-vect-loop.c (vectorizable_reduction): Don't try to
1929         vectorize chains of COND_EXPRs.
1931 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
1933         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
1935 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
1937         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
1939 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
1941         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
1943 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
1944             Kito Cheng  <kito.cheng@gmail.com>
1946         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
1947         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
1948         (nds32_adjust_reg_alloc_order): New function.
1949         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
1951 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
1953         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
1954         nds32_print_operand, nds32_print_operand_address): Use
1955         HOST_WIDE_INT_PRINT_DEC instead.
1957 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
1959         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
1961 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
1963         PR target/84902
1964         * config/i386/i386.c (initial_ix86_tune_features,
1965         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
1966         unsigned long long.
1967         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
1968         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
1969         rather than 1u << ix86_tune.  Formatting fix.
1970         (ix86_option_override_internal): Change ix86_arch_mask from
1971         unsigned int to unsigned HOST_WIDE_INT, initialize to
1972         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
1973         (ix86_function_specific_restore): Likewise.
1975 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1977         PR target/84899
1978         * postreload.c (reload_combine_recognize_pattern): Perform
1979         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
1980         truncate_int_for_mode the result for the destination's mode.
1982         PR c/84909
1983         * hsa-gen.c (mem_type_for_type): Fix comment typo.
1984         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
1985         Likewise.
1986         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
1987         Likewise.
1989 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
1991         PR target/84876
1992         * lra-assigns.c (lra_split_hard_reg_for): Don't use
1993         regno_allocno_class_array and sorted_pseudos.
1994         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
1995         insns where regno is used.
1997 2018-03-16  Martin Liska  <mliska@suse.cz>
1999         PR ipa/84833
2000         * multiple_target.c (create_dispatcher_calls): Redirect
2001         reference in the symbol table.
2003 2018-03-16  Martin Liska  <mliska@suse.cz>
2005         PR ipa/84722
2006         * multiple_target.c (create_dispatcher_calls): Redirect also
2007         an alias.
2009 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2011         PR c++/79937
2012         PR c++/82410
2013         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
2014         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
2015         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
2017 2018-03-16  Julia Koval  <julia.koval@intel.com>
2019         * doc/invoke.texi (Skylake Server): Add CLWB.
2020         Cannonlake): Remove CLWB.
2022 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2024         PR tree-optimization/84841
2025         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
2026         1 << 3.
2027         (FLOAT_ONE_CONST_TYPE): Define.
2028         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
2029         (sort_by_operand_rank): Put entries with higher constant_type last
2030         rather than first to match comments.
2032 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
2034         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
2035         split predicate.
2037 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
2039         PR c++/79085
2040         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
2041         check and use address of target always.
2043 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
2045         PR target/84574
2046         * config/i386/i386.c (indirect_thunk_needed): Update comments.
2047         (indirect_thunk_bnd_needed): Likewise.
2048         (indirect_thunks_used): Likewise.
2049         (indirect_thunks_bnd_used): Likewise.
2050         (indirect_return_needed): New.
2051         (indirect_return_bnd_needed): Likewise.
2052         (output_indirect_thunk_function): Add a bool argument for
2053         function return.
2054         (output_indirect_thunk_function): Don't generate alias for
2055         function return thunk.
2056         (ix86_code_end): Call output_indirect_thunk_function to generate
2057         function return thunks.
2058         (ix86_output_function_return): Set indirect_return_bnd_needed
2059         and indirect_return_needed instead of indirect_thunk_bnd_needed
2060         and indirect_thunk_needed.
2062 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
2064         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
2065         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
2066         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
2068 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
2069             Paul Hua <paul.hua.gm@gmail.com>
2071         PR c/84852
2072         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
2074 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
2076         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
2077         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
2078         resp. SFmode cases.
2080 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
2082         PR target/84711
2083         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
2084         instead of GET_MODE_SIZE when comparing Units.
2086 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
2088         PR target/68256
2089         * varasm.c (hash_section): Return an unchangeble hash value
2090         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
2091         Return !aarch64_can_use_per_function_literal_pools_p ().
2093 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
2095         PR target/84860
2096         * optabs.c (emit_conditional_move): Pass address of cmode's copy
2097         rather than address of cmode as last argument to prepare_cmp_insn.
2099 2018-03-15  Julia Koval  <julia.koval@intel.com>
2101         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
2102         F_AVX512VNNI, F_AVX512BITALG): New.
2104 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
2106         PR target/83451
2107         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
2108         insn for floating-point loads and stores.
2110 2018-03-14  Carl Love  <cel@us.ibm.com>
2112         * config/rs6000/rs6000-c.c: Add macro definitions for
2113         ALTIVEC_BUILTIN_VEC_PERMXOR.
2114         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
2115         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
2116         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
2117         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
2118         UNSPEC_VPERMXOR.
2119         * config/doc/extend.texi: Add prototypes for vec_permxor.
2121 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
2123         PR c/84852
2124         * diagnostic-show-locus.c (class layout_point): Convert m_line
2125         from int to linenum_type.
2126         (line_span::comparator): Use linenum "compare" function when
2127         comparing line numbers.
2128         (test_line_span): New function.
2129         (layout_range::contains_point): Convert param "row" from int to
2130         linenum_type.
2131         (layout_range::intersects_line_p): Likewise.
2132         (layout::will_show_line_p): Likewise.
2133         (layout::print_source_line): Likewise.
2134         (layout::should_print_annotation_line_p): Likewise.
2135         (layout::print_annotation_line): Likewise.
2136         (layout::print_leading_fixits): Likewise.
2137         (layout::annotation_line_showed_range_p): Likewise.
2138         (struct line_corrections): Likewise for field m_row.
2139         (line_corrections::line_corrections): Likewise for param "row".
2140         (layout::print_trailing_fixits): Likewise.
2141         (layout::get_state_at_point): Likewise.
2142         (layout::get_x_bound_for_row): Likewise.
2143         (layout::print_line): Likewise.
2144         (diagnostic_show_locus): Likewise for locals "last_line" and
2145         "row".
2146         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
2147         * input.c (selftest::test_linenum_comparisons): New function.
2148         (selftest::input_c_tests): Call it.
2149         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
2150         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
2151         * selftest.h (ASSERT_GT): New macro.
2152         (ASSERT_GT_AT): New macro.
2153         (ASSERT_LT): New macro.
2154         (ASSERT_LT_AT): New macro.
2156 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
2158         PR rtl-optimization/84780
2159         * combine.c (distribute_links): Don't make a link based on pc_rtx.
2161 2018-03-14  Martin Liska  <mliska@suse.cz>
2163         * tree.c (record_node_allocation_statistics): Use
2164         get_stats_node_kind.
2165         (get_stats_node_kind): New function extracted from
2166         record_node_allocation_statistics.
2167         (free_node): Use get_stats_node_kind.
2169 2018-03-14  Richard Biener  <rguenther@suse.de>
2171         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
2172         that the value-set of ANTIC_IN doesn't grow.
2174         Revert
2175         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
2176         member.
2177         (BB_VISITED_WITH_VISITED_SUCCS): New define.
2178         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
2180 2018-03-14  Julia Koval  <julia.koval@intel.com>
2182         * config.gcc (icelake-client, icelake-server): New.
2183         (icelake): Remove.
2184         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
2185         (initial_ix86_arch_features): Ditto.
2186         (PTA_SKYLAKE): Add SGX.
2187         (PTA_ICELAKE): Remove.
2188         (PTA_ICELAKE_CLIENT): New.
2189         (PTA_ICELAKE_SERVER): New.
2190         (ix86_option_override_internal): Split up icelake on icelake client and
2191         icelake server.
2192         (get_builtin_code_for_version): Ditto.
2193         (fold_builtin_cpu): Ditto.
2194         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
2195         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
2196         * config/i386/i386.h (processor_type): Ditto.
2197         * doc/invoke.texi: Ditto.
2199 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
2201         PR sanitizer/83392
2202         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
2203         INTEGER_CST offset, add it together with bitpos / 8 and
2204         sign extend based on POINTER_SIZE.
2206         PR target/84844
2207         Revert
2208         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
2210         PR target/78090
2211         * config/i386/constraints.md (Yc): New register constraint.
2212         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
2213         Use Yc constraint for alternative 2 of operand 0.  Remove
2214         preferred_for_speed attribute.
2216 2018-03-14  Richard Biener  <rguenther@suse.de>
2218         PR tree-optimization/84830
2219         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
2220         with the old one to avoid oscillations.
2222 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
2224         PR target/83712
2225         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
2226         pseudos.
2227         (assign_by_spills): Return a flag of reload assignment failure.
2228         Do not process the reload assignment failures.  Do not spill other
2229         reload pseudos if they has the same reg class.  Update n if
2230         necessary.
2231         (lra_assign): Add a return arg.  Set up from the result of
2232         assign_by_spills call.
2233         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
2234         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
2235         usage_insns if it is not NULL.
2236         (spill_hard_reg_in_range): New function.
2237         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
2238         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
2239         function prototypes.
2240         (lra_assign): Change prototype.
2241         * lra.c (lra): Add code to deal with fails by splitting hard reg
2242         live ranges.
2244 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
2246         * config/riscv/riscv.opt (mrelax): New option.
2247         * config/riscv/riscv.c (riscv_file_start): Emit ".option
2248         "norelax" when riscv_mrelax is disabled.
2249         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
2251 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
2253         PR target/84743
2254         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
2255         reassociation for int modes.
2257 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
2259         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
2260         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
2261         for big-endian.
2262         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
2263         * config/aarch64/aarch64-sve.md
2264         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
2265         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
2266         (*extend<mode><Vwide>2): Rename to...
2267         (aarch64_sve_extend<mode><Vwide>2): ...this.
2268         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
2269         renaming the old pattern to...
2270         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
2271         unsigned packs.
2272         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
2273         define_expand, renaming the old pattern to...
2274         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
2275         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
2276         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
2277         account when deciding which SVE instruction the optab should use.
2278         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
2280 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
2282         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
2283         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
2284         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
2285         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
2286         (tlsdesc_small_<mode>): Turn a define_expand and use
2287         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
2288         (tlsdesc_small_advsimd_<mode>): ...this.
2289         (tlsdesc_small_sve_<mode>): New pattern.
2291 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
2293         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
2294         (UNSPEC_UMUL_HIGHPART): New constants.
2295         (MUL_HIGHPART): New int iteraor.
2296         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
2297         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
2298         define_expand.
2299         (*<su>mul<mode>3_highpart): New define_insn.
2301 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
2303         PR lto/84805
2304         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2305         incomplete types.
2307 2018-03-13  Martin Liska  <mliska@suse.cz>
2309         PR ipa/84658.
2310         * (sem_item_optimizer::sem_item_optimizer): Initialize new
2311         vector.
2312         (sem_item_optimizer::~sem_item_optimizer): Release it.
2313         (sem_item_optimizer::merge_classes): Register variable aliases.
2314         (sem_item_optimizer::fixup_pt_set): New function.
2315         (sem_item_optimizer::fixup_points_to_sets): Likewise.
2316         * ipa-icf.h: Declare new variables and functions.
2318 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2320         PR middle-end/84834
2321         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
2322         integer_pow2p@2 and test integer_pow2p in condition.
2323         (A < 0 ? C : 0): Similarly for @1.
2325         PR middle-end/84831
2326         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
2327         characters starting at p contain '\0' character, don't look beyond
2328         that.
2330         PR target/84827
2331         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
2332         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
2334         PR target/84828
2335         * reg-stack.c (change_stack): Change update_end var from int to
2336         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
2337         also call set_block_for_insn on the newly added insns and rescan.
2339         PR target/84786
2340         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
2341         on the last operand.
2343         PR c++/84704
2344         * tree.c (stabilize_reference_1): Return save_expr (e) for
2345         STATEMENT_LIST even if it doesn't have side-effects.
2347 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
2349         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
2351 2018-03-12  Renlin Li  <renlin.li@arm.com>
2353         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
2354         aarch64_output_scalar_simd_mov_immediate.
2356 2018-03-12  Martin Sebor  <msebor@redhat.com>
2358         PR tree-optimization/83456
2359         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
2360         for perfectly overlapping calls to memcpy.
2361         (gimple_fold_builtin_memory_chk): Same.
2362         (gimple_fold_builtin_strcpy): Handle no-warning.
2363         (gimple_fold_builtin_stxcpy_chk): Same.
2364         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
2366 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
2368         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
2369         parameter.  Use it for SFmode.
2370         (rs6000_function_arg_advance_1): Adjust.
2371         (rs6000_function_arg): Adjust.
2372         (rs6000_gimplify_va_arg): Pass false for that new parameter.
2374 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
2376         PR rtl-optimization/84169
2377         PR rtl-optimization/84780
2378         * combine.c (can_combine_p): Check for a 2-insn combination whether
2379         the destination register is used between the two insns, too.
2381 2018-03-12  Richard Biener  <rguenther@suse.de>
2383         PR tree-optimization/84803
2384         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
2385         for refs DR analysis didn't process.
2387 2018-03-12  Richard Biener  <rguenther@suse.de>
2389         PR tree-optimization/84777
2390         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
2391         force-vectorize loops ignore whether we are optimizing for size.
2393 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
2395         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
2396         (TARGET_MD_ASM_ADJUST): Define.
2398 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
2399             Kito Cheng  <kito.cheng@gmail.com>
2400             Chung-Ju Wu  <jasonwucj@gmail.com>
2402         * config/nds32/nds32.c (nds32_compute_stack_frame,
2403         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
2404         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
2405         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
2406         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
2407         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
2408         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
2409         * config/nds32/nds32.md (prologue, epilogue): Use macro
2410         NDS32_V3PUSH_AVAILABLE_P to do checking.
2412 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
2414         PR debug/58150
2415         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
2416         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
2417         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
2418         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
2419         addition of most attributes on !orig_type_die or the attribute not
2420         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
2422 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
2423             Chung-Ju Wu  <jasonwucj@gmail.com>
2425         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
2426         __NDS32_VH__ macro.
2427         * config/nds32/nds32.opt (mvh): New option.
2429 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
2430             Chung-Ju Wu  <jasonwucj@gmail.com>
2432         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
2433         function.
2434         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
2435         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
2436         definition.
2438 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
2439             Chung-Ju Wu  <jasonwucj@gmail.com>
2441         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
2442         function.
2443         * config/nds32/nds32-multiple.md (strlensi): New pattern.
2444         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
2446 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
2447             Kito Cheng  <kito.cheng@gmail.com>
2448             Chung-Ju Wu  <jasonwucj@gmail.com>
2450         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
2451         UNSPEC_FFMISM and UNSPEC_FLMISM.
2452         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
2453         for ffb, ffmism and flmism.
2454         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
2455         (unspec_ffmism): Ditto.
2456         (unspec_flmism): Ditto.
2457         (nds32_expand_builtin_impl): Check if string extension is available.
2458         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
2459         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
2461 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
2463         Reverting patch:
2464         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
2466         PR target/83712
2467         * lra-assigns.c (assign_by_spills): Return a flag of reload
2468         assignment failure.  Do not process the reload assignment
2469         failures.  Do not spill other reload pseudos if they has the same
2470         reg class.
2471         (lra_assign): Add a return arg.  Set up from the result of
2472         assign_by_spills call.
2473         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
2474         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
2475         usage_insns if it is not NULL.
2476         (spill_hard_reg_in_range): New function.
2477         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
2478         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
2479         function prototypes.
2480         (lra_assign): Change prototype.
2481         * lra.c (lra): Add code to deal with fails by splitting hard reg
2482         live ranges.
2484 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
2486         PR target/84807
2487         * config/i386/i386.opt: Replace Enforcment with Enforcement.
2489 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
2491         PR debug/84620
2492         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
2493         (dw_val_node): Add val_symbolic_view.
2494         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
2495         (symview_upper_bound): New.
2496         (new_line_info_table): Initialize symviews_since_reset.
2497         (dwarf2out_source_line): Count symviews_since_reset and set
2498         symview_upper_bound.
2499         (dw_val_equal_p): Handle symview.
2500         (add_AT_symview): New.
2501         (print_dw_val): Handle symview.
2502         (attr_checksum, attr_checksum_ordered): Likewise.
2503         (same_dw_val_p, size_of_die): Likewise.
2504         (value_format, output_die): Likewise.
2505         (add_high_low_attributes): Use add_AT_symview for entry_view.
2506         (dwarf2out_finish): Reset symview_upper_bound, clear
2507         zero_view_p.
2509 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
2511         PR target/83969
2512         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
2513         Add strict argument and use it.
2514         (rs6000_split_multireg_move): Update for new strict argument.
2515         (mem_operand_gpr): Disallow all non-offsettable addresses.
2516         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
2518 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
2520         PR target/84772
2521         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
2522         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
2523         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
2525         PR c++/84767
2526         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
2527         decl, use remap_type if we want to use the type.
2529 2018-03-09  Martin Sebor  <msebor@redhat.com>
2531         PR tree-optimization/84526
2532         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
2533         Remove dead code.
2534         (builtin_access::generic_overlap): Be prepared to handle non-array
2535         base objects.
2537 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
2539         PR rtl-optimization/84682
2540         * lra-constraints.c (process_address_1): Check is_address flag
2541         for address constraints.
2542         (process_alt_operands): Likewise.
2543         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
2544         preprocess_constraints.
2545         * recog.h (preprocess_constraints): Add oploc parameter.
2546         Adjust callers.
2547         * recog.c (preprocess_constraints): Test address_operand for
2548         CT_ADDRESS constraints.
2550 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
2552         PR target/83712
2553         * lra-assigns.c (assign_by_spills): Return a flag of reload
2554         assignment failure.  Do not process the reload assignment
2555         failures.  Do not spill other reload pseudos if they has the same
2556         reg class.
2557         (lra_assign): Add a return arg.  Set up from the result of
2558         assign_by_spills call.
2559         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
2560         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
2561         usage_insns if it is not NULL.
2562         (spill_hard_reg_in_range): New function.
2563         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
2564         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
2565         function prototypes.
2566         (lra_assign): Change prototype.
2567         * lra.c (lra): Add code to deal with fails by splitting hard reg
2568         live ranges.
2570 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2572         PR target/83193
2573         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
2574         Accept complain bool parameter.  Only emit errors if it is true.
2575         (arm_parse_cpu_option_name): Likewise.
2576         (arm_target_thumb_only): Adjust callers of the above.
2577         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
2578         prototype to take a default true bool parameter.
2579         (arm_parse_arch_option_name): Likewise.
2581 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
2582             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2584         PR jit/64089
2585         PR jit/84288
2586         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
2587         * configure: Regenerate.
2588         * configure.ac ("linker --version-script option"): New.
2589         ("linker soname option"): New.
2591 2018-03-09  Richard Biener  <rguenther@suse.de>
2593         PR tree-optimization/84775
2594         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
2595         immediate uses of predicate stmts and mark them modified.
2597         Revert
2598         PR tree-optimization/84178
2599         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
2600         to caller.
2601         (version_loop_for_if_conversion): Delay update_ssa call.
2602         (tree_if_conversion): Delay update_ssa until after predicate
2603         insertion.
2605 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
2607         PR target/84763
2608         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
2609         when the function accesses prior frames.
2611 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
2613         PR debug/84456
2614         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
2615         gen_llsym, otherwise call maybe_gen_llsym.
2617         PR inline-asm/84742
2618         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
2619         has ',' character inside of it.
2621 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2623         PR target/84748
2624         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
2625         as clobbering CC_REGNUM.
2627 2018-03-08  Richard Biener  <rguenther@suse.de>
2629         PR middle-end/84552
2630         * tree-scalar-evolution.c: Include tree-into-ssa.h.
2631         (follow_copies_to_constant): Do not follow SSA names registered
2632         for update.
2634 2018-03-08  Richard Biener  <rguenther@suse.de>
2636         PR tree-optimization/84178
2637         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
2638         to caller.
2639         (version_loop_for_if_conversion): Delay update_ssa call.
2640         (tree_if_conversion): Delay update_ssa until after predicate
2641         insertion.
2643 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
2645         PR tree-optimization/84178
2646         * tree-if-conv.c (release_bb_predicate): Remove the
2647         the assertion that the stmts have NULL use_ops.
2648         Discard the statements, asserting that they haven't
2649         yet been added to a BB.
2651 2018-03-08  Richard Biener  <rguenther@suse.de>
2653         PR tree-optimization/84746
2654         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
2655         (phi_translate): Pass in destination ANTIC_OUT set.
2656         (phi_translate_1): Likewise.  For a simplified result lookup
2657         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
2658         (phi_translate_set): Adjust.
2659         (do_pre_regular_insertion): Likewise.
2660         (do_pre_partial_partial_insertion): Likewise.
2662 2018-03-08  Martin Liska  <mliska@suse.cz>
2664         PR gcov-profile/84735
2665         * doc/gcov.texi: Document usage of profile files.
2666         * gcov-io.h: Document changes in the format.
2668 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
2670         PR debug/84404
2671         PR debug/84408
2672         * dwarf2out.c (struct dw_line_info_table): Update comments for
2673         view == -1.
2674         (FORCE_RESET_NEXT_VIEW): New.
2675         (FORCE_RESETTING_VIEW_P): New.
2676         (RESETTING_VIEW_P): Check for -1 too.
2677         (ZERO_VIEW_P): Likewise.
2678         (new_line_info_table): Force-reset next view.
2679         (dwarf2out_begin_function): Likewise.
2680         (dwarf2out_source_line): Simplify zero_view_p initialization.
2681         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
2682         view directly.  Omit view when omitting .loc at line 0.
2684 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
2686         PR tree-optimization/84740
2687         * tree-switch-conversion.c (process_switch): Call build_constructors
2688         only if info.phi_count is non-zero.
2690         PR tree-optimization/84739
2691         * tree-tailcall.c (find_tail_calls): Check call arguments against
2692         DECL_ARGUMENTS (current_function_decl) rather than
2693         DECL_ARGUMENTS (func) when checking for tail recursion.
2695 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
2697         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
2698         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
2699         Volker Reichelt's entry and add entries for people that perform
2700         GCC fuzzy testing and report numerous bugs.
2702 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
2704         PR target/82411
2705         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
2706         readonly data in sdata, if that is disabled.
2707         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
2708         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
2709         -mreadonly-in-sdata option.
2711 2018-03-07  Martin Sebor  <msebor@redhat.com>
2713         PR tree-optimization/84468
2714         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
2715         basic block when looking for nul assignment.
2717 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
2719         PR target/84277
2720         * except.h (output_function_exception_table): Adjust prototype.
2721         * except.c (output_function_exception_table): Remove FNNAME parameter
2722         and add SECTION parameter.  Ouput one part of the table at a time.
2723         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
2724         the first part of the exception table and emit unwind directives.
2725         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
2726         (i386_pe_seh_cold_init): Likewise.
2727         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
2728         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
2729         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
2730         (ix86_output_call_insn): Emit a nop in one more case for SEH.
2731         * config/i386/winnt.c: Include except.h.
2732         (struct seh_frame_state): Add reg_offset, after_prologue and
2733         in_cold_section fields.
2734         (i386_pe_seh_end_prologue): Set seh->after_prologue.
2735         (i386_pe_seh_cold_init): New function.
2736         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
2737         to seh->in_cold_section.
2738         (seh_emit_push): Record the offset of the push.
2739         (seh_emit_save): Record the offet of the save.
2740         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
2741         Test seh->after_prologue to disregard the epilogue.
2742         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
2743         (i386_pe_end_cold_function): New function.
2745 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
2747         PR fortran/84565
2748         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
2749         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
2751         PR c++/84704
2752         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
2753         on tmp_var.
2754         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
2755         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
2757         PR middle-end/84723
2758         * multiple_target.c: Include tree-inline.h and intl.h.
2759         (expand_target_clones): Diagnose and fail if node->definition and
2760         !tree_versionable_function_p (node->decl).
2762 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
2764         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
2765         sprint_ul.
2766         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
2767         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
2768         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
2770 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
2772         PR target/84710
2773         * combine.c (try_combine): Use reg_or_subregno instead of handling
2774         just paradoxical SUBREGs and REGs.
2776 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
2778          * config/arc/arc.c (arc_finalize_pic): Remove function.
2779          (arc_must_save_register): We use single base PIC register, remove
2780          checks to save/restore the PIC register.
2781          (arc_expand_prologue): Likewise.
2782          * config/arc/arc-protos.h (arc_set_default_type_attributes):
2783          Remove.
2784          (arc_verify_short): Likewise.
2785          (arc_attr_type): Likewise.
2786          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
2787          (walk_stores): Likewise.
2788          (arc_address_cost): Make it static.
2789          (arc_verify_short): Likewise.
2790          (branch_dest): Likewise.
2791          (arc_attr_type): Likewise.
2792          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
2793          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
2794          (arc_final_prescan_insn): Remove inserting the nops due to
2795          hardware hazards.  It is done in reorg step.
2796          (insn_length_variant_t): Remove.
2797          (insn_length_parameters_t): Likewise.
2798          (arc_insn_length_parameters): Likewise.
2799          (arc_get_insn_variants): Likewise.
2800          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
2802 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
2804         PR inline-asm/84683
2805         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
2806         assertion failure.
2808         PR tree-optimization/84687
2809         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
2810         on new_node->decl.
2811         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
2813 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2815         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
2816         Rename to ppc_speculation_barrier.
2817         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
2818         __builtin_ppc_speculation_barrier.
2820 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
2822         PR target/84700
2823         * combine.c (combine_simplify_rtx): Don't try to simplify if
2824         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
2825         are equal to x.
2827 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
2829         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
2830         to 32 bytes when compiling for POWER9.
2832 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
2834         PR target/84564
2835         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
2836         regparm >= 3 with no arg reg available also for calls with
2837         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
2839         PR target/84524
2840         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
2841         orig,vex.
2842         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
2844 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
2846         PR target/84264
2847         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
2849 2018-03-05  Richard Biener  <rguenther@suse.de>
2851         PR tree-optimization/84486
2852         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
2853         When inserting a __builtin_assume_aligned call set the LHS
2854         SSA name alignment info accordingly.
2856 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
2858         PR tree-optimization/84114
2859         * config/aarch64/aarch64.c (aarch64_reassociation_width)
2860         Avoid reassociation of FLOAT_MODE addition.
2862 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
2864         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
2865         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
2866         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
2867         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
2868         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
2869         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
2870         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
2871         and -mwbnoinvd.
2872         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
2873         __builtin_ia32_wbinvd): New builtins.
2874         (SPECIAL_ARGS2): New.
2875         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
2876         (SPECIAL_ARGS2): New.
2877         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
2878         (ix86_valid_target_attribute_inner_p): Ditto.
2879         (ix86_init_mmx_sse_builtins): Add special_args2.
2880         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
2881         TARGET_WBNOINVD_P): New.
2882         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
2883         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
2884         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
2885         * config/i386/immintrin.h (_wbinvd): New intrinsic.
2886         * config/i386/pconfigintrin.h: New file.
2887         * config/i386/wbnoinvdintrin.h: Ditto.
2888         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
2889         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
2891 2018-03-05  Richard Biener  <rguenther@suse.de>
2893         PR tree-optimization/84670
2894         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
2895         member.
2896         (BB_VISITED_WITH_VISITED_SUCCS): New define.
2897         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
2898         (compute_antic_aux): Only assert the number of values in ANTIC_IN
2899         doesn't grow if all successors (recursively) were visited at least
2900         once.
2902 2018-03-05  Richard Biener  <rguenther@suse.de>
2904         PR tree-optimization/84650
2905         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
2906         if executed in the loop pipeline.
2908 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
2910         * doc/configfiles.texi (Configuration Files): Move info about
2911         conditionalizing $target-protos.h to...
2912         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
2913         differs from $target-protos.h.
2915 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
2916             Chung-Ju Wu  <jasonwucj@gmail.com>
2918         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
2919         * config/nds32/nds32-multiple.md (setmemsi): Define.
2920         * config/nds32/nds32-memory-manipulation.c
2921         (nds32_gen_dup_4_byte_to_word_value): New.
2922         (emit_setmem_word_loop): New.
2923         (emit_setmem_byte_loop): New.
2924         (nds32_expand_setmem_loop): New.
2925         (nds32_expand_setmem_loop_v3m): New.
2926         (nds32_expand_setmem_unroll): New.
2927         (nds32_expand_setmem): New.
2929 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
2930             Chung-Ju Wu  <jasonwucj@gmail.com>
2932         * config/nds32/nds32-memory-manipulation.c
2933         (nds32_emit_load_store): New.
2934         (nds32_emit_post_inc_load_store): New.
2935         (nds32_emit_mem_move): New.
2936         (nds32_emit_mem_move_block): New.
2937         (nds32_expand_movmemsi_loop_unknown_size): New.
2938         (nds32_expand_movmemsi_loop_known_size): New.
2939         (nds32_expand_movmemsi_loop): New.
2940         (nds32_expand_movmemsi_unroll): New.
2941         (nds32_expand_movmemqi): Rename ...
2942         (nds32_expand_movmemsi): ... to this.
2943         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
2944         (movmemsi): ... to this.
2945         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
2946         (nds32_expand_movmemsi): ... to this.
2948 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
2949             Monk Chiang  <sh.chiang04@gmail.com>
2950             Chung-Ju Wu  <jasonwucj@gmail.com>
2952         * config/nds32/nds32-protos.h
2953         (nds32_expand_load_multiple): New arguments.
2954         (nds32_expand_store_multiple): Ditto.
2955         (nds32_valid_multiple_load_store): Rename ...
2956         (nds32_valid_multiple_load_store_p): ... to this.
2957         * config/nds32/nds32-memory-manipulation.c
2958         (nds32_expand_load_multiple): Refine implementation.
2959         (nds32_expand_store_multiple): Ditto.
2960         * config/nds32/nds32-multiple.md
2961         (load_multiple): Update nds32_expand_load_multiple interface.
2962         (store_multiple): Update nds32_expand_store_multiple interface.
2963         * config/nds32/nds32-predicates.c
2964         (nds32_valid_multiple_load_store): Rename ...
2965         (nds32_valid_multiple_load_store_p): ... to this and refine
2966         implementation.
2967         * config/nds32/predicates.md
2968         (nds32_load_multiple_and_update_address_operation): New predicate.
2969         (nds32_store_multiple_and_update_address_operation): New predicate.
2971 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
2972             Chung-Ju Wu  <jasonwucj@gmail.com>
2974         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
2975         (combo): New attribute.
2976         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
2978 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
2980         * config/nds32/nds32.opt: Change -mcmodel= default value.
2982 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
2983             Monk Chiang  <sh.chiang04@gmail.com>
2984             Chung-Ju Wu  <jasonwucj@gmail.com>
2986         * config/nds32/constants.md (unspec_element): New enum.
2987         * config/nds32/constraints.md (Umw): New constraint.
2988         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
2989         * config/nds32/nds32-intrinsic.md: Likewise.
2990         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
2991         (nds32_valid_smw_lwm_base_p): New.
2992         (nds32_output_smw_single_word): New.
2993         (nds32_output_lmw_single_word): New.
2994         (nds32_expand_unaligned_load): New.
2995         (nds32_expand_unaligned_store): New.
2996         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
2997         (nds32_output_smw_single_word): Declare.
2998         (nds32_output_lmw_single_word): Declare.
2999         (nds32_expand_unaligned_load): Declare.
3000         (nds32_expand_unaligned_store): Declare.
3001         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
3002         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
3003         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
3004         NDS32_BUILTIN_UASTORE_DW.
3005         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
3006         predicate.
3008 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
3009             Kito Cheng  <kito.cheng@gmail.com>
3010             Chung-Ju Wu  <jasonwucj@gmail.com>
3012         * config/nds32/nds32-intrinsic.c
3013         (nds32_expand_builtin_null_ftype_reg): Delete.
3014         (nds32_expand_builtin_reg_ftype_imm): Ditto.
3015         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
3016         (nds32_read_argument): New.
3017         (nds32_legitimize_target): Ditto.
3018         (nds32_legitimize_argument): Ditto.
3019         (nds32_check_constant_argument): Ditto.
3020         (nds32_expand_unop_builtin): Ditto.
3021         (nds32_expand_unopimm_builtin): Ditto.
3022         (nds32_expand_binop_builtin): Ditto.
3023         (nds32_builtin_decl_impl): Ditto.
3024         (builtin_description): Ditto.
3025         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
3026         (nds32_init_builtins_impl): Ditto.
3027         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
3028         (nds32_builtin_decl): New.
3029         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
3030         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
3032 2018-03-02  Jeff Law  <law@redhat.com>
3034         * reorg.c (stop_search_p): Handle DEBUG_INSN.
3035         (redundant_insn, fill_simple_delay_slots): Likewise.
3036         (fill_slots_from_thread): Likewise.
3037         * resource.c (mark_referenced_resources): Likewise.
3038         (mark_set_resources, find_dead_or_set_registers): Likewise.
3040 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3042         * substring-locations.h (format_warning_va): Formatting fix for
3043         ATTRIBUTE_GCC_DIAG.
3044         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
3045         argument.
3046         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
3047         * substring-locations.c: Include intl.h.
3048         (format_warning_va): Turned into small wrapper around
3049         format_warning_n_va, renamed to ...
3050         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
3051         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
3052         use ngettext.
3053         (format_warning_at_substring_n): New function.
3054         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
3055         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
3056         format_warning_at_substring with just a shorter name instead of
3057         const function pointer.
3058         (fmtwarn_n): New function.
3059         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
3060         appropriate, get rid of all the fmtstr temporaries, move conditionals
3061         with G_() wrapped string literals directly into fmtwarn arguments,
3062         cast dir.len to (int), formatting fixes.
3064 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
3066         * doc/invoke.texi: Remove "Cilk Plus" references.
3068 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3069             Richard Biener  <rguenther@suse.de>
3071         PR ipa/84628
3072         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
3073         for error or warning attributes if CALL_FROM_THUNK_P is set.
3074         Formatting fixes.
3076 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3078         PR target/56540
3079         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
3080         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
3082         PR target/56540
3083         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
3084         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
3086         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
3087         instead of -1U in last predictors element's probability member.
3089 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3091         PR ipa/83983
3092         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
3093         arguments if they are comparable.
3095 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
3097         PR tree-optimization/84634
3098         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
3099         masks and masked_loop_p with a single loop_masks, making sure it's
3100         null for bb vectorization.
3102 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
3104         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
3105         (vect_analyze_data_ref_access): Use loop->safe_len rather than
3106         loop->force_vectorize to check whether there is no alias.
3108 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3110         PR target/84614
3111         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
3112         prototypes.
3113         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
3114         comments.
3115         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
3116         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
3117         instead of a loop around prev_real_insn.
3118         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
3119         prev_real_insn.
3121         PR inline-asm/84625
3122         * config/i386/i386.c (ix86_print_operand): Use conditional
3123         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
3124         zero vector.
3126 2018-03-02  Richard Biener  <rguenther@suse.de>
3128         PR tree-optimization/84427
3129         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
3130         (bitmap_set_subtract_values): Rewrite to handle multiple
3131         exprs per value.
3132         (clean): Likewise.
3133         (prune_clobbered_mems): Likewise.
3134         (phi_translate): Take edge instead of pred/phiblock.
3135         (phi_translate_1): Likewise.
3136         (phi_translate_set): Likewise.  Insert all translated
3137         exprs for a value into the set, keeping possibly multiple
3138         expressions per value.
3139         (compute_antic_aux): Adjust for phi_translate changes.
3140         When intersecting union the expressions and prune those
3141         not in the final value set, keeping possibly multiple
3142         expressions per value.  Do not use value-insertion
3143         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
3144         all expressions.  Add verification that the value-sets
3145         only shrink during iteration.
3146         (compute_partial_antic_aux): Adjust for the phi_translate changes.
3147         (do_pre_regular_insertion): Likewise.
3148         (do_pre_partial_partial_insertion): Likewise.
3150 2018-03-02  Richard Biener  <rguenther@suse.de>
3152         PR target/82005
3153         * config/darwin.c (saved_debug_info_level): New static global.
3154         (darwin_asm_lto_start): Disable debug info generation for LTO out.
3155         (darwin_asm_lto_end): Restore debug info generation settings.
3157 2018-03-01  Martin Liska  <mliska@suse.cz>
3159         PR sanitizer/82484
3160         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
3161         volatile arguments.
3163 2018-03-01  Richard Biener  <rguenther@suse.de>
3165         PR debug/84645
3166         * dwarf2out.c (gen_variable_die): Properly handle late VLA
3167         type annotation with LTO when debug was disabled at compile-time.
3169 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
3171         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
3172         XINT with INTVAL.
3173         (mips_final_postscan_insn): Likewise.
3175 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
3177         PR rtl-optimization/84528
3178         * alias.c (init_alias_target): Add commentary.
3179         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
3180         a unique base value if the frame pointer is not eliminated
3181         to the stack pointer.
3183 2018-03-01  Tom de Vries  <tom@codesourcery.com>
3185         PR rtl-optimization/83327
3186         * lra-int.h (hard_regs_spilled_into): Declare.
3187         * lra.c (hard_regs_spilled_into): Define.
3188         (init_reg_info): Init hard_regs_spilled_into.
3189         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
3190         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
3191         (process_bb_lives): Handle hard_regs_spilled_into.
3192         (lra_create_live_ranges_1): Before doing liveness propagation, clear
3193         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
3195 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
3197         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
3198         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
3199         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
3200         * config/rs6000/aix72.h: New file.
3202 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
3204         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
3205         instead of warning_at with conditional singular and plural messages
3206         where possible.
3208         PR target/52991
3209         * stor-layout.c (update_alignment_for_field): For
3210         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
3211         && !DECL_PACKED (field), do the alignment update, just use
3212         only desired_align instead of MAX (type_align, desired_align)
3213         as the alignment.
3214         (place_field): Don't do known_align < desired_align handling
3215         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
3216         is non-NULL, instead do it after rli->prev_field handling and
3217         only if not within a bitfield word.  For DECL_PACKED (field)
3218         use type_align of BITS_PER_UNIT.
3220 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
3222         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
3223         superfluous parentheses and trailing spaces.
3225 2018-02-28  Richard Biener  <rguenther@suse.de>
3227         PR tree-optimization/84584
3228         * graphite-scop-detection.c (scop_detection::add_scop): Discard
3229         SCoPs with fake exit edge.
3231 2018-02-28  Martin Liska  <mliska@suse.cz>
3233         PR testsuite/84597
3234         * timevar.c (timer::print): Fix format to properly print 100%
3235         values.
3237 2018-02-28  Richard Biener  <rguenther@suse.de>
3239         PR middle-end/84607
3240         * genmatch.c (capture_info::walk_match): Do not mark
3241         captured expressions without operands as expr_p given
3242         they act more like predicates and should be subject to
3243         "lost tail" side-effect preserving.
3245 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
3247         PR rtl-optimization/81611
3248         * auto-inc-dec.c (attempt_change): Move dead note from
3249         mem_insn if it's the next use of regno
3250         (find_address): Take address use of reg holding
3251         non-incremented value.  Add parm to limit search to the named
3252         reg only.
3253         (merge_in_block): Attempt to use a mem insn that is the next
3254         use of the original regno.
3256 2018-02-27  Martin Sebor  <msebor@redhat.com>
3258         PR c++/83871
3259         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
3260         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
3262 2018-02-27  Martin Sebor  <msebor@redhat.com>
3264         PR translation/84207
3265         * diagnostic-core.h (warning_n, error_n, inform_n): Change
3266         n argument to unsigned HOST_WIDE_INT.
3267         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
3268         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
3269         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
3270         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
3272 2018-02-27  Richard Biener  <rguenther@suse.de>
3274         PR tree-optimization/84512
3275         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
3276         Do not use the estimate returned from record_stmt_cost for
3277         the scalar iteration cost but sum properly using add_stmt_cost.
3279 2018-02-27  Richard Biener  <rguenther@suse.de>
3281         PR tree-optimization/84466
3282         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
3283         Adjust last change to less strictly validate use operands.
3285 2018-02-27  Martin Liska  <mliska@suse.cz>
3287         PR gcov-profile/84548
3288         * gcov.c (process_file): Allow partial overlap and consider it
3289         also as group functions.
3290         (output_lines): Properly calculate range of lines for a group.
3292 2018-02-27  Martin Liska  <mliska@suse.cz>
3294         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
3295         'ggc' suffixes.  Change first column width.
3296         (timer::print): Fix formatting of the column.
3298 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
3300         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
3301         preserve inline entry blocks for the sake of debug inline
3302         entry point markers alone.
3303         (remove_unused_locals): Suggest in comments a better place to
3304         force the preservation of inline entry blocks that are
3305         otherwise unused, but do not preserve them.
3307 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
3309         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
3311 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
3313         PR target/84039
3314         * config/i386/constraints.md (Bs): Replace
3315         ix86_indirect_branch_register with
3316         TARGET_INDIRECT_BRANCH_REGISTER.
3317         (Bw): Likewise.
3318         * config/i386/i386.md (indirect_jump): Likewise.
3319         (tablejump): Likewise.
3320         (*sibcall_memory): Likewise.
3321         (*sibcall_value_memory): Likewise.
3322         Peepholes of indirect call and jump via memory: Likewise.
3323         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
3324         (*sibcall_value_GOT_32): Likewise.
3325         * config/i386/predicates.md (indirect_branch_operand): Likewise.
3326         (GOT_memory_operand): Likewise.
3327         (call_insn_operand): Likewise.
3328         (sibcall_insn_operand): Likewise.
3329         (GOT32_symbol_operand): Likewise.
3330         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
3332 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
3334         PR rtl-optimization/83496
3335         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
3336         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
3337         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
3338         redundant insn, if any.
3339         (relax_delay_slots): Likewise.
3340         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
3342 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
3344         PR tree-optimization/83965
3345         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
3346         that grouped statements are part of a reduction chain.  Return
3347         true if the statement is not marked as a reduction itself but
3348         is part of a group.
3349         (vect_recog_dot_prod_pattern): Don't check whether the statement
3350         is part of a group here.
3351         (vect_recog_sad_pattern): Likewise.
3352         (vect_recog_widen_sum_pattern): Likewise.
3354 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
3356         PR debug/84545
3357         * final.c (rest_of_clean_state): Also look for calls inside sequences.
3359 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
3361         PR target/84530
3362         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
3363         the bool argument.
3364         (ix86_output_indirect_function_return): New prototype.
3365         (ix86_split_simple_return_pop_internal): Likewise.
3366         * config/i386/i386.c (indirect_return_via_cx): New.
3367         (indirect_return_via_cx_bnd): Likewise.
3368         (indirect_thunk_name): Handle return va CX_REG.
3369         (output_indirect_thunk_function): Create alias for
3370         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
3371         (ix86_output_indirect_jmp): Remove the bool argument.
3372         (ix86_output_indirect_function_return): New function.
3373         (ix86_split_simple_return_pop_internal): Likewise.
3374         * config/i386/i386.md (*indirect_jump): Don't pass false
3375         to ix86_output_indirect_jmp.
3376         (*tablejump_1): Likewise.
3377         (simple_return_pop_internal): Change it to define_insn_and_split.
3378         Call ix86_split_simple_return_pop_internal to split it for
3379         -mfunction-return=.
3380         (simple_return_indirect_internal): Call
3381         ix86_output_indirect_function_return instead of
3382         ix86_output_indirect_jmp.
3384 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3386         PR bootstrap/84405
3387         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
3388         memset and value initialization afterwards.
3390 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
3392         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
3394 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3396         PR target/84521
3397         * common/config/aarch64/aarch64-common.c
3398         (aarch_option_optimization_table[]): Switch
3399         off fomit-frame-pointer
3401 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
3402             Chung-Ju Wu  <jasonwucj@gmail.com>
3404         * config/nds32/nds32-multiple.md (load_multiple): Disallow
3405         volatile memory.
3406         (store_multiple): Ditto.
3408 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
3410         * config.gcc: Add --with-cpu support for nds32 target.
3411         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
3412         * config/nds32/nds32.opt: Add -mcpu= option.
3414 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
3416         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
3417         isel=yes): Warn for these deprecated options.
3419 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
3421         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
3422         ISA_2_5_MASKS_EMBEDDED.
3424 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
3426         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
3427         p->max as pointers rather than using iterative_hash_expr.
3429 2018-02-23  Carl Love  <cel@us.ibm.com>
3431         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
3432         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
3433         BU_P8V_OVERLOAD_2.
3434         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
3435         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
3436         P8V_BUILTIN_VEC_VUNSIGNED2.
3438 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
3440         PR target/81572
3441         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
3442         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
3443         LRA_UNKNOWN_ALT.
3444         * lra-constraints.c (curr_insn_transform): Set up
3445         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
3446         LRA_UNKNOWN_ALT.
3447         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
3448         * lra-eliminations.c (spill_pseudos): Ditto.
3449         (process_insn_for_elimination): Ditto.
3450         * lra-lives.c (reg_early_clobber_p): Use the new macros.
3451         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
3452         LRA_NON_CLOBBERED_ALT.
3454 2018-02-22  Martin Sebor  <msebor@redhat.com>
3456         PR tree-optimization/84480
3457         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
3458         to maybe_diag_stxncpy_trunc.  Call it.
3459         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
3460         from gimple_fold_builtin_strcpy.  Print inlining stack.
3461         (handle_builtin_stxncpy): Print inlining stack.
3462         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
3464 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
3466         PR target/84176
3467         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
3468         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
3469         and -fcheck-pointer-bounds are used together.
3470         (indirect_thunk_prefix): New enum.
3471         (indirect_thunk_need_prefix): New function.
3472         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
3473         "_nt" instead of "_bnd" for NOTRACK prefix.
3474         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
3475         (output_indirect_thunk_function): Likewise.
3476         (): Likewise.
3477         (ix86_code_end): Update output_indirect_thunk_function calls.
3478         (ix86_output_indirect_branch_via_reg): Replace
3479         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
3480         (ix86_output_indirect_branch_via_push): Likewise.
3481         (ix86_output_function_return): Likewise.
3482         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
3483         incompatible with -fcf-protection=branch and
3484         -fcheck-pointer-bounds.
3486 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
3488         PR target/83335
3489         * config/aarch64/aarch64.c (aarch64_print_address_internal):
3490         Change gcc_assert call to output_operand_lossage.
3492 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
3494         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
3496 2018-02-22  DJ Delorie  <dj@redhat.com>
3497             Sebastian Perta  <sebastian.perta@renesas.com>
3498             Oleg Endo  <olegendo@gcc.gnu.org>
3500         * config/rx/rx.c (rx_rtx_costs): New function.
3501         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
3503 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3505         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
3507 2018-02-22  Martin Liska  <mliska@suse.cz>
3509         PR driver/83193
3510         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
3511         Add "native" as a possible value.
3513 2018-02-22  Martin Liska  <mliska@suse.cz>
3515         PR driver/83193
3516         * config/i386/i386.c (ix86_option_override_internal):
3517         Add "native" as a possible value for -march and -mtune.
3519 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
3521         PR target/84502
3522         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
3523         to all type variants.
3525         PR tree-optimization/84503
3526         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
3527         width as info->bitpos + info->bitsize - start.
3528         (merged_store_group::merge_overlapping): Simplify width computation.
3529         (check_no_overlap): New function.
3530         (imm_store_chain_info::try_coalesce_bswap): Compute expected
3531         start + width and last_order of the group, fail if check_no_overlap
3532         fails.
3533         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
3534         to group if check_no_overlap fails.
3536 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
3538         * config/rs6000/altivec.md: Delete contraint arguments to
3539         define_expand, define_split, and define_peephole2, and in
3540         define_insn_and_split if always unused.
3541         * config/rs6000/darwin.md: Ditto.
3542         * config/rs6000/dfp.md: Ditto.
3543         * config/rs6000/rs6000.md: Ditto.
3544         * config/rs6000/sync.md: Ditto.
3545         * config/rs6000/vector.md: Ditto.
3546         * config/rs6000/vsx.md: Ditto.
3548 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
3550         * config/rs6000/altivec.md: Write output control strings as braced
3551         blocks instead of double-quoted strings.
3552         * config/rs6000/darwin.md: Ditto.
3553         * config/rs6000/rs6000.md: Ditto.
3554         * config/rs6000/vector.md: Ditto.
3555         * config/rs6000/vsx.md: Ditto.
3557 2018-02-21  Jason Merrill  <jason@redhat.com>
3559         PR c++/84314 - ICE with templates and fastcall attribute.
3560         * attribs.c (build_type_attribute_qual_variant): Remove assert.
3562 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
3564         * ipa-cp.c (determine_versionability): Fix comment typos.
3566 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
3568         PR c/84229
3569         * ipa-cp.c (determine_versionability): Do not version functions caling
3570         va_arg_pack.
3572 2018-02-21  Martin Liska  <mliska@suse.cz>
3574         PR driver/83193
3575         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
3576         Add "native" as a possible value.
3577         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
3578         the macro when native cpu detection is available.
3580 2018-02-21  Martin Liska  <mliska@suse.cz>
3582         PR driver/83193
3583         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
3584         Add "native" as a possible value.
3585         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
3586         when native cpu detection is available.
3588 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
3589             Martin Sebor  <msebor@redhat.com>
3591         PR tree-optimization/84478
3592         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
3593         false.
3594         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
3595         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
3596         support which is conservatively correct, for 2 only stay conservative
3597         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
3598         argument to the 2 argument get_range_strlen, adjust 6 arg
3599         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
3600         false.
3601         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
3602         (gimple_fold_builtin_strlen): Pass true as last argument to
3603         get_range_strlen.
3605 2018-02-20  Martin Sebor  <msebor@redhat.com>
3607         PR middle-end/84095
3608         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
3609         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
3610         (builtin_memref::builtin_memref): Factor out parts into
3611         set_base_and_offset and call it.
3613 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
3615         PR middle-end/84406
3616         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
3617         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
3618         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
3619         search at the associated MODE_INT.
3621 2018-02-20  Jeff Law  <law@redhat.com>
3623         PR middle-end/82123
3624         PR tree-optimization/81592
3625         PR middle-end/79257
3626         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
3627         for range data rather than using global data.
3628         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
3629         range data rather than using global data.
3630         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
3631         pass it to children as needed.
3632         (struct directive::fmtresult): Similarly.
3633         (struct directive::set_width): Similarly.
3634         (struct directive::set_precision): Similarly.
3635         (format_integer, format_directive, parse_directive): Similarly.
3636         (format_none): Accept unnamed vr_values parameter.
3637         (format_percent, format_floating, format_character): Similarly.
3638         (format_string, format_plain): Similarly.
3639         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
3640         the EVRP range analyzer for range data rather than using global data.
3641         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
3642         gimple-ssa-evrp-analyze.h
3643         (class sprintf_dom_walker): Add after_dom_children member function.
3644         Add evrp_range_analyzer member.
3645         (sprintf_dom_walker::before_dom_children): Call into the EVRP
3646         range analyzer as needed.
3647         (sprintf_dom_walker::after_dom_children): New member function.
3648         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
3649         if not optimizing.
3650         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
3651         (evrp_range_analyzer::pop_to_marker): Likewise.
3653 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
3655         PR tree-optimization/84419
3656         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
3657         with the required type if its current type is compatible but
3658         different.
3660 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
3662         PR middle-end/82004
3663         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
3664         after vectorization.
3666 2018-02-20  Martin Liska  <mliska@suse.cz>
3668         PR driver/83193
3669         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
3670         possible values if we don't have a hint.
3672 2018-02-20  Martin Liska  <mliska@suse.cz>
3674         PR c/84310
3675         PR target/79747
3676         * final.c (shorten_branches): Build align_tab array with one
3677         more element.
3678         * opts.c (finish_options): Add alignment option limit check.
3679         (MAX_CODE_ALIGN): Likewise.
3680         (MAX_CODE_ALIGN_VALUE): Likewise.
3681         * doc/invoke.texi: Document maximum allowed option value for
3682         all -falign-* options.
3684 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
3686         PR target/84146
3687         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
3688         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
3689         * var-tracking.c (emit_note_insn_var_location): Remove all references
3690         to NOTE_INSN_CALL_ARG_LOCATION.
3691         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
3692         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
3693         Use copy_rtx_if_shared.
3694         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
3695         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
3696         (dwarf2out_var_location): Remove handling of
3697         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
3698         on call_insn.
3699         * final.c (final_scan_insn): Remove all references to
3700         NOTE_INSN_CALL_ARG_LOCATION.
3701         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
3702         before dumping final insns.
3703         * except.c (emit_note_eh_region_end): Remove all references to
3704         NOTE_INSN_CALL_ARG_LOCATION.
3705         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
3706         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
3707         * config/arc/arc.c (hwloop_optimize): Likewise.
3708         * config/arm/arm.c (create_fix_barrier): Likewise.
3709         * config/s390/s390.c (s390_chunkify_start): Likewise.
3710         * config/sh/sh.c (find_barrier): Likewise.
3711         * config/i386/i386.c (rest_of_insert_endbranch,
3712         ix86_seh_fixup_eh_fallthru): Likewise.
3713         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
3714         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
3715         * config/frv/frv.c (frv_function_prologue): Likewise.
3716         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
3717         reg note.
3718         (note_outside_basic_block_p): Remove all references to
3719         NOTE_INSN_CALL_ARG_LOCATION.
3720         * gengtype.c (adjust_field_rtx_def): Likewise.
3721         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
3722         Likewise.
3723         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
3724         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
3726         PR c++/84444
3727         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
3728         is ADDR_EXPR.
3730         PR tree-optimization/84452
3731         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
3732         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
3733         is NULL.
3735 2018-02-19  Martin Liska  <mliska@suse.cz>
3737         PR sanitizer/82183
3738         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
3740 2018-02-19  Martin Liska  <mliska@suse.cz>
3741             Richard Sandiford  <richard.sandiford@linaro.org>
3743         PR tree-optimization/82491
3744         * gimple-fold.c (get_base_constructor): Make earlier bail out
3745         to prevent ubsan.
3747 2018-02-19  Carl Love  <cel@us.ibm.com>
3749         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
3750         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
3751         BU_P8V_OVERLOAD_1.
3752         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
3753         P8V_BUILTIN_VEC_NEG.
3755 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
3757         * config/rl78/rl78.md (movdf): New define expand.
3759 2018-02-19  Martin Liska  <mliska@suse.cz>
3761         PR other/80589
3762         * doc/invoke.texi: Fix typo.
3763         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
3765 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
3767         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
3768         handle rs6000_single_float and rs6000_double_float specially for
3769         e500 family CPUs.
3771 2018-02-16  Jeff Law  <law@redhat.com>
3773         * config/rx/rx.c (add_pop_cfi_notes): New function.;
3774         (pop_regs): Use it.
3776 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
3778         PR ipa/84425
3779         * ipa-inline.c (inline_small_functions): Fix a typo.
3781 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3783         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
3785 2018-02-16  Carl Love  <cel@us.ibm.com>
3787         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
3788         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
3789         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
3790         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
3791         expansion to P8V_BUILTIN_VEC_FLOAT2.
3793 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
3795         PR rtl-optimization/70023
3796         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
3797         src_regno into account.
3799 2018-02-16  Carl Love  <cel@us.ibm.com>
3801         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
3802         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
3803         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
3804         * config/rs6000/rs6000.c: Remove case statements for
3805         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
3806         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
3807         and P9V_BUILTIN_VEC_VINSERT4B.
3808         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
3809         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
3810         * config/rs6000/vsx.md:
3811         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
3812         vec_insert4b.
3814 2018-02-16  Carl Love  <cel@us.ibm.com>
3816         * config/rs6000/altivec.h: Add builtin names vec_extract4b
3817         vec_insert4b.
3818         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
3819         definitions.
3820         * config/rs6000/rs6000-c.c: Add the definitions for
3821         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
3822         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
3823         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
3824         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
3825         definition for insert4b and define insn *insert3b_internal.
3826         * doc/extend.texi: Add documentation for vec_extract4b.
3828 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3830         * doc/extend.texi (Backwards Compatibility): Mention friend
3831         injection.  Note for-scope is deprecated.
3832         * doc/invoke.texi (-ffriend-injection): Deprecate.
3834 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
3836         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
3837         that moved to I2, also allow destinations that are a paradoxical
3838         subreg (instead of a normal reg).
3840 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
3842         PR target/83831
3843         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
3844         to QImode.
3846 2018-02-16  Richard Biener  <rguenther@suse.de>
3848         PR tree-optimization/84037
3849         PR tree-optimization/84016
3850         PR target/82862
3851         * config/i386/i386.c (ix86_builtin_vectorization_cost):
3852         Adjust vec_construct for the fact we need additional higher latency
3853         128bit inserts for AVX256 and AVX512 vector builds.
3854         (ix86_add_stmt_cost): Scale vector construction cost for
3855         elementwise loads.
3857 2018-02-16  Richard Biener  <rguenther@suse.de>
3859         PR tree-optimization/84417
3860         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
3861         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
3862         (non_rewritable_lvalue_p): Likewise, use poly-ints.
3864 2018-02-16  Martin Liska  <mliska@suse.cz>
3866         PR sanitizer/84307
3867         * internal-fn.def (ASAN_CHECK): Set proper flags.
3868         (ASAN_MARK): Likewise.
3870 2018-02-16  Julia Koval  <julia.koval@intel.com>
3872         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
3873         from PTA_CANNONLAKE.
3875 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
3877         PR target/84272
3878         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
3879         Use ++iter rather than iter++ for std::list iterators.
3880         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
3881         defer deleting them until all nodes in the forest are processed.  Do
3882         free even leaf nodes.  Change to_process into auto_vec.
3884         PR bootstrap/84405
3885         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
3886         * vec.h (vec_default_construct): Use memset instead of placement new
3887         if BROKEN_VALUE_INITIALIZATION is defined.
3888         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
3889         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
3890         is defined.
3892         PR rtl-optimization/83723
3893         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
3894         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
3895         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
3896         recursive calls.
3897         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
3898         callers.
3899         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
3901 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
3903         PR rtl-optimization/81443
3904         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
3905         from inner REGs to paradoxical SUBREGs.
3907 2018-02-16  Richard Biener  <rguenther@suse.de>
3909         PR tree-optimization/84399
3910         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
3911         For operands we can analyze at their definition make sure we can
3912         analyze them at each use as well.
3914 2018-02-16  Richard Biener  <rguenther@suse.de>
3916         PR tree-optimization/84190
3917         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
3918         volatile accesses if the decl isn't volatile.
3920 2018-02-15  Jason Merrill  <jason@redhat.com>
3922         PR c++/84314 - ICE with templates and fastcall attribute.
3923         * attribs.c (build_type_attribute_qual_variant): Don't clobber
3924         TYPE_CANONICAL on an existing type.
3926 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
3928         PR tree-optimization/84383
3929         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
3930         dstoff nor call operand_equal_p if dstbase is NULL.
3932         PR tree-optimization/84334
3933         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
3934         also a CONSTANT_CLASS_P, punt.
3936 2018-02-14  Jim Wilson  <jimw@sifive.com>
3938         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
3939         first SMALL_OPERAND check.  New local min_second_step.  Move assert
3940         to where locals are set.  Add TARGET_RVC support.
3941         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
3943 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
3945         * doc/invoke.texi: Correct -Wformat-overflow code sample.
3947 2018-02-14  Martin Sebor  <msebor@redhat.com>
3949         PR tree-optimization/83698
3950         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
3951         arrays constrain the offset range to their bounds.
3952         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
3953         (builtin_access::overlap): Avoid setting the size of overlap if it's
3954         already been set.
3955         (maybe_diag_overlap): Also consider arrays when deciding what values
3956         of offsets to include in diagnostics.
3958 2018-02-14  Martin Sebor  <msebor@redhat.com>
3960         PR c/84108
3961         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
3962         that correspond to the kind of a declaration.
3964 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
3966         PR target/83984
3967         * config/pa/pa.md: Load address of PIC label using the linkage table
3968         if the label is nonlocal.
3970 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3972         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
3973         warning message if user requests -maltivec=be.
3974         * doc/invoke.texi: Document deprecation of -maltivec=be.
3976 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
3978         PR target/84220
3979         * config/rs6000/rs6000-c.c: Update definitions for
3980         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
3981         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
3983 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3985         PR target/84239
3986         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
3987         add _get_ssp intrinsics. Remove argument from
3988         __builtin_ia32_rdssp[d|q].
3989         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
3990         * config/i386/i386-builtin.def: Remove argument from
3991         __builtin_ia32_rdssp[d|q].
3992         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
3993         ix86_expand_special_args_builtin for _rdssp[d|q].
3994         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
3995         Clear register before usage.
3996         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
3997         Add documentation for new _get_ssp and _inc_ssp intrinsics.
3999 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
4001         PR tree-optimization/84357
4002         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
4003         operand 1 of an ARRAY_REF too.
4005 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
4007         PR target/83831
4008         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
4009         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
4010         declarations.
4011         (set_of_reg): New struct.
4012         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
4013         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
4014         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
4015         functions.
4016         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
4017         Split into bitclr, bitset, bitinvert patterns if appropriate.
4018         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
4019         use rx_fuse_in_memory_bitop.
4020         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
4021         to named insn, correct maximum insn length.
4023 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
4025         PR target/79242
4026         * machmode.def: Define a complex mode for PARTIAL_INT.
4027         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
4028         MODE_PARTIAL_INT.
4029         * doc/rtl.texi: Document CSPImode.
4030         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
4031         handling.
4032         (msp430_hard_regno_nregs_with_padding): Likewise.
4034 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
4036         PR target/84279
4037         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
4039 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
4041         PR rtl-optimization/84169
4042         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
4043         we generated a parallel as new i3 and we split that to new i2 and i3
4044         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
4045         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
4046         those to i2, not i1.  Partially rewrite this scan code.
4048 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
4050         PR c/82210
4051         * stor-layout.c (place_field): For variable length fields, adjust
4052         offset_align afterwards not just based on the field's alignment,
4053         but also on the size.
4055         PR middle-end/84309
4056         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
4057         of exps and logs in the use_exp2 case.
4059 2018-02-13  Jeff Law  <law@redhat.com>
4061         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
4062         entry for "vector".
4064         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
4065         ARGS as unused.
4067 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
4069         PR debug/84342
4070         PR debug/84319
4071         * common.opt (gas-loc-support, gas-locview-support): New.
4072         (ginline-points, ginternal-reset-location-views): New.
4073         * doc/invoke.texi: Document them.  Use @itemx where intended.
4074         (gvariable-location-views): Adjust.
4075         * target.def (reset_location_view): New.
4076         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
4077         (TARGET_RESET_LOCATION_VIEW): New.
4078         * doc/tm.texi: Rebuilt.
4079         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
4080         (dwarf2out_default_as_locview_support): New.
4081         (output_asm_line_debug_info): Use option variables.
4082         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
4083         (output_loc_list): Likewise.
4084         (add_high_low_attributes): Check option variables.
4085         Don't output entry view attribute in strict mode.
4086         (gen_inlined_subroutine_die): Check option variables.
4087         (dwarf2out_inline_entry): Likewise.
4088         (init_sections_and_labels): Likewise.
4089         (dwarf2out_early_finish): Likewise.
4090         (maybe_reset_location_view): New, from...
4091         (dwarf2out_var_location): ... here.  Call it.
4092         * debug.h (dwarf2out_default_as_loc_support): Declare.
4093         (dwarf2out_default_as_locview_support): Declare.
4094         * hooks.c (hook_int_rtx_insn_0): New.
4095         * hooks.h (hook_int_rtx_insn_0): Declare.
4096         * toplev.c (process_options): Take -gas-loc-support and
4097         -gas-locview-support from dwarf2out.  Enable
4098         -gvariable-location-views by default only with locview
4099         assembler support.  Enable -ginternal-reset-location-views by
4100         default only if the target defines the corresponding hook.
4101         Enable -ginline-points by default if location views are
4102         enabled; force it disabled if statement frontiers are
4103         disabled.
4104         * tree-inline.c (expand_call_inline): Check option variables.
4105         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
4107 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
4109         PR tree-optimization/84321
4110         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
4111         handling.  Also check whether the anti-range contains any values
4112         that satisfy the mask; switch to a VR_RANGE if not.
4114 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
4116         PR sanitizer/84340
4117         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
4119 2018-02-13  Martin Jambor  <mjambor@suse.cz>
4121         PR c++/83990
4122         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
4123         of call statements, also set location of a load to a temporary.
4125 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
4127         * config/rl78/rl78.c (add_vector_labels): New function.
4128         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
4129         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
4130         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
4131         which checks that no arguments are passed.
4132         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
4133         * doc/extend.texi: Documentation for the new attribute.
4135 2018-02-13  Andreas Schwab  <schwab@suse.de>
4137         * config/riscv/linux.h (CPP_SPEC): Define.
4139 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
4141         PR target/84335
4142         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
4143         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
4144         OPTION_MASK_ISA_AES as first argument to def_builtin_const
4145         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
4146         instead of OPTION_MASK_ISA_PCLMUL as first argument to
4147         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
4148         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
4149         temporarily for AES and PCLMUL builtins.
4151         PR tree-optimization/84339
4152         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
4153         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
4154         Formatting fixes.
4156         PR middle-end/84309
4157         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
4158         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
4159         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
4160         inline function.
4161         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
4162         inline function.
4163         * omp-simd-clone.h: New file.
4164         * omp-simd-clone.c: Include omp-simd-clone.h.
4165         (expand_simd_clones): No longer static.
4166         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
4167         cgraph.h and omp-simd-clone.h.
4168         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
4169         (vect_recog_widen_shift_pattern): Formatting fix.
4170         (vect_pattern_recog_1): Don't check optab for calls.
4172         PR target/84336
4173         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
4174         operands[2] into a REG before using gen_lowpart on it.
4176 2018-02-12  Jeff Law  <law@redhat.com>
4178         PR target/83760
4179         * config/sh/sh.c (find_barrier): Consider a sibling call
4180         a barrier as well.
4182         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
4183         successfully back substituting a reg.
4185 2018-02-12  Richard Biener  <rguenther@suse.de>
4187         PR tree-optimization/84037
4188         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
4189         parameter, move visited init to caller.
4190         (vect_slp_analyze_operations): Separate cost from validity
4191         check, initialize visited once for all instances.
4192         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
4193         for all instances.
4194         * tree-vect-stmts.c (vect_model_simple_cost): Make early
4195         out an assert.
4196         (vect_model_promotion_demotion_cost): Likewise.
4197         (vectorizable_bswap): Guard cost modeling with !slp_node
4198         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
4199         SLP stmts.
4200         (vectorizable_call): Likewise.
4201         (vectorizable_conversion): Likewise.
4202         (vectorizable_assignment): Likewise.
4203         (vectorizable_shift): Likewise.
4204         (vectorizable_operation): Likewise.
4205         (vectorizable_store): Likewise.
4206         (vectorizable_load): Likewise.
4207         (vectorizable_condition): Likewise.
4208         (vectorizable_comparison): Likewise.
4210 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
4212         PR sanitizer/84307
4213         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
4214         (ASAN_MARK): Fix fnspec to account for return value, change pointer
4215         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
4217 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
4219         PR middle-end/83665
4220         * params.def (inline-min-speedup): Increase from 8 to 15.
4221         (max-inline-insns-auto): Decrease from 40 to 30.
4222         * ipa-split.c (consider_split): Add some buffer for function to
4223         be considered inlining candidate.
4224         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
4225         default values.
4227 2018-02-12  Richard Biener  <rguenther@suse.de>
4229         PR tree-optimization/84037
4230         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
4231         matched stmts if we cannot swap the non-matched ones.
4233 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
4235         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
4236         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
4237         _mm_maskz_scalef_round_ss): New intrinsics.
4238         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
4239         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
4240         __builtin_ia32_scalefss_round): Remove.
4241         (__builtin_ia32_scalefsd_mask_round,
4242         __builtin_ia32_scalefss_mask_round): New intrinsics.
4243         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
4244         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
4245         ((match_operand:VF_128 2 "<round_nimm_predicate>"
4246         "<round_constraint>")): Changed to ...
4247         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
4248         "<round_scalar_constraint>")): ... this.
4249         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
4250         %0, %1, %2<round_op3>}"): Changed to ...
4251         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
4252         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
4253         %2<round_scalar_mask_op3>}"): ... this.
4254         * config/i386/subst.md (round_scalar_nimm_predicate): New.
4256 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
4258         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
4259         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
4260         (_mm_maskz_sqrt_round_ss): New intrinsics.
4261         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
4262         (__builtin_ia32_sqrtsd_mask_round)
4263         (__builtin_ia32_sqrtss_mask_round): New builtins.
4264         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
4265         (__builtin_ia32_sqrtss_round): Remove.
4266         (__builtin_ia32_sqrtsd_mask_round)
4267         (__builtin_ia32_sqrtss_mask_round): New builtins.
4268         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
4269         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
4270         ((match_operand:VF_128 1 "vector_operand"
4271         "xBm,<round_constraint>")): Changed to ...
4272         ((match_operand:VF_128 1 "vector_operand"
4273         "xBm,<round_scalar_constraint>")): ... this.
4274         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
4275         %0, %2, %<iptr>1<round_op3>}): Changed to ...
4276         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
4277         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
4278         %<iptr>1<round_scalar_mask_op3>}): ... this.
4279         ((set_attr "prefix" "<round_prefix>")): Changed to ...
4280         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
4282 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
4284         PR target/84266
4285         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
4286         Cast vec_cmpeq result to correct type.
4287         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
4288         Cast vec_cmpgt result to correct type.
4290 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
4292         * final.c (final_scan_insn_1): Renamed from...
4293         (final_scan_insn): ... this.  New wrapper, to recover
4294         seen from the outermost call in recursive ones.
4295         * config/sparc/sparc.c (output_return): Drop seen from call.
4296         (output_sibcall): Likewise.
4297         * config/visium/visium.c (output_branch): Likewise.
4299 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
4301         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
4302         function label.
4304 2018-02-10  Alan Modra  <amodra@gmail.com>
4306         PR target/84300
4307         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
4308         Specify LR as an input.
4310 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
4312         PR sanitizer/83987
4313         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
4314         remove_member_access_dummy_vars): New functions.
4315         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
4316         lower_omp_1, execute_lower_omp): Use them.
4318         PR rtl-optimization/84308
4319         * shrink-wrap.c (spread_components): Release todo vector.
4321 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
4323         PR rtl-optimization/57193
4324         * ira-color.c (struct allocno_color_data): Add member
4325         conflict_allocno_hard_prefs.
4326         (update_conflict_allocno_hard_prefs): New.
4327         (bucket_allocno_compare_func): Add a preference based on
4328         conflict_allocno_hard_prefs.
4329         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
4330         (color_allocnos): Remove a dead code.  Initiate
4331         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
4333 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
4335         PR target/84226
4336         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
4337         constraint from =wa to wa.  Avoid a subreg on the output operand,
4338         instead use a pseudo and subreg it in a move.
4339         (p9_xxbrd_<mode>): Changed to ...
4340         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
4341         (p9_xxbrd_v2df): New expander.
4342         (p9_xxbrw_<mode>): Changed to ...
4343         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
4344         (p9_xxbrw_v4sf): New expander.
4346 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
4348         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
4350 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
4352         PR target/83926
4353         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
4354         multiply in 32-bit mode.
4355         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
4356         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
4357         mode.
4359 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
4361         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
4362         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
4363         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
4364         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
4366 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
4368         PR lto/84213
4369         * dwarf2out.c (is_trivial_indirect_ref): New function.
4370         (dwarf2out_late_global_decl): Do not generate a location
4371         attribute for variables that have a non-trivial DECL_VALUE_EXPR
4372         and that are not defined in the current unit.
4374 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
4376         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
4377         instead of a libcall for UNORDERED.
4379 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
4381         PR target/82641
4382         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
4383         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
4385 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4387         PR target/PR84295
4388         * config/s390/s390.c (s390_set_current_function): Invoke
4389         s390_indirect_branch_settings also if fndecl didn't change.
4391 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
4393         * config/rs6000/rs6000.md (blockage): Set length to zero.
4395 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
4397         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
4399 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
4401         PR sanitizer/84285
4402         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
4403         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
4404         -static-lib*san.
4406         PR debug/84252
4407         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
4408         PARALLEL incoming that failed vt_get_decl_and_offset check.
4410         PR middle-end/84237
4411         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
4412         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
4413         TREE_READONLY bit.
4414         (get_variable_section): For decls in named .bss* sections pass true as
4415         second argument to bss_initializer_p.
4417 2018-02-09  Marek Polacek  <polacek@redhat.com>
4418             Jakub Jelinek  <jakub@redhat.com>
4420         PR c++/83659
4421         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
4422         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
4423         Sync some changes from cxx_fold_indirect_ref.
4425 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
4427         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
4428         markers.
4429         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
4430         (BLOCK_INLINE_ENTRY_LABEL): New.
4431         (dwarf2out_var_location): Disregard inline entry markers.
4432         (inline_entry_data): New struct.
4433         (inline_entry_data_hasher): New hashtable type.
4434         (inline_entry_data_hasher::hash): New.
4435         (inline_entry_data_hasher::equal): New.
4436         (inline_entry_data_table): New variable.
4437         (add_high_low_attributes): Add DW_AT_entry_pc and
4438         DW_AT_GNU_entry_view attributes if a pending entry is found
4439         in inline_entry_data_table.  Add old entry_pc attribute only
4440         if debug nonbinding markers are disabled.
4441         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
4442         markers are enabled.
4443         (block_within_block_p, dwarf2out_inline_entry): New.
4444         (dwarf2out_finish): Check that no entries remained in
4445         inline_entry_data_table.
4446         * final.c (reemit_insn_block_notes): Handle inline entry notes.
4447         (final_scan_insn, notice_source_line): Likewise.
4448         (rest_of_clean_state): Skip inline entry markers.
4449         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
4450         markers.
4451         * gimple.c (gimple_build_debug_inline_entry): New.
4452         * gimple.h (enum gimple_debug_subcode): Add
4453         GIMPLE_DEBUG_INLINE_ENTRY.
4454         (gimple_build_debug_inline_entry): Declare.
4455         (gimple_debug_inline_entry_p): New.
4456         (gimple_debug_nonbind_marker_p): Adjust.
4457         * insn-notes.def (INLINE_ENTRY): New.
4458         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
4459         inline entry marker notes.
4460         (print_insn): Likewise.
4461         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
4462         (INSN_DEBUG_MARKER_KIND): Likewise.
4463         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
4464         * tree-inline.c (expand_call_inline): Build and insert
4465         debug_inline_entry stmt.
4466         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
4467         inline entry blocks early, if nonbind markers are enabled.
4468         (dump_scope_block): Dump fragment info.
4469         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
4470         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
4471         (gimple_build_debug_inline_entry): New.
4472         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
4473         Enable/disable inline entry points too.
4474         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
4475         (DEBUG_INSN): Describe inline entry markers.
4477         * common.opt (gvariable-location-views): New.
4478         (gvariable-location-views=incompat5): New.
4479         * config.in: Rebuilt.
4480         * configure: Rebuilt.
4481         * configure.ac: Test assembler for view support.
4482         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
4483         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
4484         * dwarf2out.c (var_loc_view): New typedef.
4485         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
4486         (dwarf2out_locviews_in_attribute): New.
4487         (dwarf2out_locviews_in_loclist): New.
4488         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
4489         (enum dw_line_info_opcode): Add LI_adv_address.
4490         (struct dw_line_info_table): Add view.
4491         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
4492         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
4493         (zero_view_p): New variable.
4494         (ZERO_VIEW_P): New macro.
4495         (output_asm_line_debug_info): New.
4496         (struct var_loc_node): Add view.
4497         (add_AT_view_list, AT_loc_list): New.
4498         (add_var_loc_to_decl): Add view param.  Test it against last.
4499         (new_loc_list): Add view params.  Record them.
4500         (AT_loc_list_ptr): Handle loc and view lists.
4501         (view_list_to_loc_list_val_node): New.
4502         (print_dw_val): Handle dw_val_class_view_list.
4503         (size_of_die): Likewise.
4504         (value_format): Likewise.
4505         (loc_list_has_views): New.
4506         (gen_llsym): Set vl_symbol too.
4507         (maybe_gen_llsym, skip_loc_list_entry): New.
4508         (dwarf2out_maybe_output_loclist_view_pair): New.
4509         (output_loc_list): Output view list or entries too.
4510         (output_view_list_offset): New.
4511         (output_die): Handle dw_val_class_view_list.
4512         (output_dwarf_version): New.
4513         (output_compilation_unit_header): Use it.
4514         (output_skeleton_debug_sections): Likewise.
4515         (output_rnglists, output_line_info): Likewise.
4516         (output_pubnames, output_aranges): Update version comments.
4517         (output_one_line_info_table): Output view numbers in asm comments.
4518         (dw_loc_list): Determine current endview, pass it to new_loc_list.
4519         Call maybe_gen_llsym.
4520         (loc_list_from_tree_1): Adjust.
4521         (add_AT_location_description): Create view list attribute if
4522         needed, check it's absent otherwise.
4523         (convert_cfa_to_fb_loc_list): Adjust.
4524         (maybe_emit_file): Call output_asm_line_debug_info for test.
4525         (dwarf2out_var_location): Reset views as needed.  Precompute
4526         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
4527         attribute.  Set view.
4528         (new_line_info_table): Reset next view.
4529         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
4530         (dwarf2out_source_line): Likewise.  Output view resets and labels to
4531         the assembler, or select appropriate line info opcodes.
4532         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
4533         (optimize_string_length): Catch it.  Adjust.
4534         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
4535         dw_val_class_view_list, and remove it if no longer needed.
4536         (hash_loc_list): Hash view numbers.
4537         (loc_list_hasher::equal): Compare them.
4538         (optimize_location_lists): Check whether a view list symbol is
4539         needed, and whether the locview attribute is present, and
4540         whether they match.  Remove the locview attribute if no longer
4541         needed.
4542         (index_location_lists): Call skip_loc_list_entry for test.
4543         (dwarf2out_finish): Call output_asm_line_debug_info for test.
4544         Use output_dwarf_version.
4545         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
4546         (struct dw_val_node): Add val_view_list.
4547         * final.c (SEEN_NEXT_VIEW): New.
4548         (set_next_view_needed): New.
4549         (clear_next_view_needed): New.
4550         (maybe_output_next_view): New.
4551         (final_start_function): Rename to...
4552         (final_start_function_1): ... this.  Take pointer to FIRST,
4553         add SEEN parameter.  Emit param bindings in the initial view.
4554         (final_start_function): Reintroduce SEEN-less interface.
4555         (final): Rename to...
4556         (final_1): ... this.  Take SEEN parameter.  Output final pending
4557         next view at the end.
4558         (final): Reintroduce seen-less interface.
4559         (final_scan_insn): Output pending next view before switching
4560         sections or ending a block.  Mark the next view as needed when
4561         outputting variable locations.  Notify debug backend of section
4562         changes, and of location view changes.
4563         (rest_of_handle_final): Adjust.
4564         * toplev.c (process_options): Autodetect value for debug variable
4565         location views option.  Warn on incompat5 without -gdwarf-5.
4566         * doc/invoke.texi (gvariable-location-views): New.
4567         (gvariable-location-views=incompat5): New.
4568         (gno-variable-location-views): New.
4570 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
4572         PR tree-optimization/84136
4573         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
4574         that the result of find_edge is non-NULL.
4576 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
4578         PR target/83008
4579         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
4580         storing integer register in SImode.  Fix cost of 256 and 512
4581         byte aligned SSE register store.
4583 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
4585         * config/i386/i386.c (ix86_multiplication_cost): Fix
4586         multiplication cost for TARGET_AVX512DQ.
4588 2018-02-08  Marek Polacek  <polacek@redhat.com>
4590         PR tree-optimization/84238
4591         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
4592         get_range_strlen.
4594 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
4596         PR tree-optimization/84265
4597         * tree-vect-stmts.c (vectorizable_store): Don't treat
4598         VMAT_CONTIGUOUS accesses as grouped.
4599         (vectorizable_load): Likewise.
4601 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
4603         PR tree-optimization/81635
4604         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
4605         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
4606         (test_round_for_mask): New functions.
4607         (wide_int_cc_tests): Call test_round_for_mask.
4608         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
4609         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
4610         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
4611         range returned by get_range_info.
4613 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
4615         PR ipa/81360
4616         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
4617         * symtab.c: Include builtins.h
4618         (symtab_node::output_to_lto_symbol_table_p): Move here
4619         from lto-streamer-out.c:output_symbol_p.
4620         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
4621         (output_symbol_p): Move all logic to symtab.c
4622         (produce_symtab): Update.
4624 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4626         * config/s390/s390-opts.h (enum indirect_branch): Define.
4627         * config/s390/s390-protos.h (s390_return_addr_from_memory)
4628         (s390_indirect_branch_via_thunk)
4629         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
4630         (enum s390_indirect_branch_type): Define.
4631         * config/s390/s390.c (struct s390_frame_layout, struct
4632         machine_function): Remove.
4633         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
4634         (indirect_branch_table_label_no, indirect_branch_table_name):
4635         Define variables.
4636         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
4637         (enum s390_indirect_branch_option): Define.
4638         (s390_return_addr_from_memory): New function.
4639         (s390_handle_string_attribute): New function.
4640         (s390_attribute_table): Add new attribute handler.
4641         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
4642         (s390_indirect_branch_via_thunk): New function.
4643         (s390_indirect_branch_via_inline_thunk): New function.
4644         (s390_function_ok_for_sibcall): When jumping via thunk disallow
4645         sibling call optimization for non z10 compiles.
4646         (s390_emit_call): Force indirect branch target to be a single
4647         register.  Add r1 clobber for non-z10 compiles.
4648         (s390_emit_epilogue): Emit return jump via return_use expander.
4649         (s390_reorg): Handle JUMP_INSNs as execute targets.
4650         (s390_option_override_internal): Perform validity checks for the
4651         new command line options.
4652         (s390_indirect_branch_attrvalue): New function.
4653         (s390_indirect_branch_settings): New function.
4654         (s390_set_current_function): Invoke s390_indirect_branch_settings.
4655         (s390_output_indirect_thunk_function):  New function.
4656         (s390_code_end): Implement target hook.
4657         (s390_case_values_threshold): Implement target hook.
4658         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
4659         macros.
4660         * config/s390/s390.h (struct s390_frame_layout)
4661         (struct machine_function): Move here from s390.c.
4662         (TARGET_INDIRECT_BRANCH_NOBP_RET)
4663         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
4664         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
4665         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
4666         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
4667         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
4668         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
4669         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
4670         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
4671         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
4672         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
4673         (mnemonic attribute): Add values which aren't recognized
4674         automatically.
4675         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
4676         pattern for branch conversion.  Fix mnemonic attribute.
4677         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
4678         indirect branch via thunk if requested.
4679         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
4680         ("*indirect_jump"): Disable for branch conversion using out of
4681         line thunks.
4682         ("indirect_jump_via_thunk<mode>_z10")
4683         ("indirect_jump_via_thunk<mode>")
4684         ("indirect_jump_via_inlinethunk<mode>_z10")
4685         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
4686         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
4687         ("casesi_jump_via_inlinethunk<mode>_z10")
4688         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
4689         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
4690         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
4691         ("*indirect2_jump"): Disable for branch conversion.
4692         ("casesi_jump"): Turn into expander and expand patterns for branch
4693         conversion.
4694         ("return_use"): New expander.
4695         ("*return"): Emit return via thunk and rename it to ...
4696         ("*return<mode>"): ... this one.
4697         * config/s390/s390.opt: Add new options and and enum for the
4698         option values.
4700 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
4702         * lra-constraints.c (match_reload): Unconditionally use
4703         gen_lowpart_SUBREG, rather than selecting between that
4704         and equivalent gen_rtx_SUBREG code.
4706 2018-02-08  Richard Biener  <rguenther@suse.de>
4708         PR tree-optimization/84233
4709         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
4710         changed flag instead of boguously re-using phi_inserted.
4712 2018-02-08  Martin Jambor  <mjambor@suse.cz>
4714         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
4715         static local variables.
4717 2018-02-08  Richard Biener  <rguenther@suse.de>
4719         PR tree-optimization/84278
4720         * tree-vect-stmts.c (vectorizable_store): When looking for
4721         smaller vector types to perform grouped strided loads/stores
4722         make sure the mode is supported by the target.
4723         (vectorizable_load): Likewise.
4725 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
4727         * config/aarch64/aarch64.c (aarch64_components_for_bb):
4728         Increase LDP/STP opportunities by adding adjacent callee-saves.
4730 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
4732         PR rtl-optimization/84068
4733         PR rtl-optimization/83459
4734         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
4736 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
4738         PR tree-optimization/84224
4739         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
4740         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
4741         non-zero arguments.
4743 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
4745         PR target/84113
4746         * config/rs6000/altivec.md (*restore_world): Remove LR use.
4747         * config/rs6000/predicates.md (restore_world_operation): Adjust op
4748         count, remove one USE.
4750 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
4752         * doc/install.texi (Configuration): Document the
4753         --with-long-double-format={ibm,ieee} PowerPC configuration
4754         options.
4756         PR target/84154
4757         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
4758         Convert from define_expand to be define_insn_and_split.  Rework
4759         float/double/_Float128 conversions to QI/HI/SImode to work with
4760         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
4761         conversions to QI/HImode types did a store and then a load to
4762         truncate the value.  For conversions to VSX registers, don't split
4763         the insn, instead emit the code directly.  Use the code iterator
4764         any_fix to combine signed and unsigned conversions.
4765         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
4766         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
4767         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
4768         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
4769         (fix_<mode>di2_hw): Likewise.
4770         (fixuns_<mode>di2_hw): Likewise.
4771         (fix_<mode>si2_hw): Likewise.
4772         (fixuns_<mode>si2_hw): Likewise.
4773         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
4774         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
4775         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
4776         fix<uns>_trunc<SFDF:mode>si2_p8.
4777         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
4778         used.
4779         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
4780         (fix<uns>_<mode>_mem): Likewise.
4781         (fctiw<u>z_<mode>_mem): Likewise.
4782         (fix<uns>_<mode>_mem): Likewise.
4783         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
4784         the register allocator from doing a direct move to the GPRs to do
4785         a store, and instead use the ISA 3.0 store byte/half-word from
4786         vector register instruction.  For IEEE 128-bit floating point,
4787         also optimize stores of 32-bit ints.
4788         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
4790 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
4792         * genextract.c (push_pathstr_operand): New function to support
4793         [a-zA-Z].
4794         (walk_rtx): Call push_pathstr_operand.
4795         (print_path): Support [a-zA-Z].
4797 2018-02-07  Richard Biener  <rguenther@suse.de>
4799         PR tree-optimization/84037
4800         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
4801         (cse_and_gimplify_to_preheader): Declare.
4802         (vect_get_place_in_interleaving_chain): Likewise.
4803         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
4804         ivexpr_map.
4805         (_loop_vec_info::~_loop_vec_info): Delete it.
4806         (cse_and_gimplify_to_preheader): New function.
4807         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
4808         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
4809         (vectorizable_load): Likewise.  For grouped stores always base
4810         the IV on the first element.
4811         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
4812         condition before gimplifying.
4814 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
4816         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
4817         *DIV_EXPR and *MOD_EXPR.
4819 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
4821         PR target/84248
4822         * config/i386/i386.c (ix86_option_override_internal): Mask out
4823         the CF_SET bit when checking -fcf-protection.
4825 2018-02-07  Tom de Vries  <tom@codesourcery.com>
4827         PR libgomp/84217
4828         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
4829         enough.
4831 2018-02-07  Richard Biener  <rguenther@suse.de>
4833         PR tree-optimization/84204
4834         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
4835         this place.
4837         PR tree-optimization/84205
4838         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
4839         special-case isl_ast_op_zdiv_r.
4841         PR tree-optimization/84223
4842         * graphite-scop-detection.c (gather_bbs::before_dom_children):
4843         Only add conditions from within the region.
4844         (gather_bbs::after_dom_children): Adjust.
4846 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
4848         PR target/84209
4849         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
4850         * config/avr/avr.md: Only post-reload split REG-REG moves if
4851         either register is GENERAL_REG_P.
4853 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
4855         PR tree-optimization/84235
4856         * tree-ssa-scopedtables.c
4857         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
4858         if the subtraction is performed in floating point type where NaNs are
4859         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
4860         build 1.  Formatting fix.
4862 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
4864         PR target/84146
4865         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
4866         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
4867         and skip it regardless of bb boundaries.  Use CALL_P macro,
4868         don't test INSN_P (insn) together with CALL_P or JUMP_P check
4869         unnecessarily, formatting fix.
4871 2018-02-06  Michael Collison  <michael.collison@arm.com>
4873         * config/arm/thumb2.md:
4874         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
4875         (*thumb_mov_notscc): Ditto.
4877 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
4879         PR target/84154
4880         * config/rs6000/rs6000.md (su code attribute): Use "u" for
4881         unsigned_fix, not "s".
4883 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4885         * configure.ac (gcc_fn_eh_frame_ro): New function.
4886         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
4887         correct .eh_frame permissions.
4888         * configure: Regenerate.
4890 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
4892         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
4893         irrelevant options.
4895 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4897         * config/rs6000/rs6000.c (rs6000_option_override_internal):
4898         Display warning message for -mno-speculate-indirect-jumps.
4900 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
4902         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
4903         Undocumented.
4904         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
4906 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
4908         PR tree-optimization/84225
4909         * tree-eh.c (find_trapping_overflow): Only call
4910         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
4912 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4914         PR target/84145
4915         * config/i386/i386.c: Reimplement the check of possible options
4916         -mibt/-mshstk conbination. Change error messages.
4917         * doc/invoke.texi: Fix a typo: remove extra '='.
4919 2018-02-06  Marek Polacek  <polacek@redhat.com>
4921         PR tree-optimization/84228
4922         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
4924 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
4926         PR target/82641
4927         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
4928         emitted arch directives.
4929         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
4930         __ARM_FEATURE_COPROC before changing architectures.
4932 2018-02-06  Richard Biener  <rguenther@suse.de>
4934         * config/i386/i386.c (print_reg): Fix typo.
4935         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
4937 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
4939         * configure: Regenerate.
4941 2018-02-05  Martin Sebor  <msebor@redhat.com>
4943         PR tree-optimization/83369
4944         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
4945         inlining context.
4947 2018-02-05  Martin Liska  <mliska@suse.cz>
4949         * doc/invoke.texi: Cherry-pick upstream r323995.
4951 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
4953         * ira.c (ira_init_register_move_cost): Adjust comment.
4955 2018-02-05  Martin Liska  <mliska@suse.cz>
4957         PR gcov-profile/84137
4958         * doc/gcov.texi: Fix typo in documentation.
4960 2018-02-05  Martin Liska  <mliska@suse.cz>
4962         PR gcov-profile/83879
4963         * doc/gcov.texi: Document necessity of --dynamic-list-data when
4964         using dlopen functionality.
4966 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
4968         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
4969         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
4970         _mm_maskz_range_ss, _mm_mask_range_round_ss,
4971         _mm_maskz_range_round_ss): New intrinsics.
4972         (__builtin_ia32_rangesd128_round)
4973         (__builtin_ia32_rangess128_round): Remove.
4974         (__builtin_ia32_rangesd128_mask_round,
4975         __builtin_ia32_rangess128_mask_round): New builtins.
4976         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
4977         __builtin_ia32_rangess128_round): Remove.
4978         (__builtin_ia32_rangesd128_mask_round,
4979         __builtin_ia32_rangess128_mask_round): New builtins.
4980         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
4981         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
4982         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
4983         "<round_saeonly_constraint>")): Changed to ...
4984         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
4985         "<round_saeonly_scalar_constraint>")): ... this.
4986         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
4987         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
4988         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
4989         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
4990         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
4992 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
4994         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
4995         options.
4996         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
4997         Remove all values except native, 8540 and 8548.
4999 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
5001         * config/i386/i386.c (ix86_output_function_return): Pass
5002         INVALID_REGNUM, instead of -1, as invalid register number to
5003         indirect_thunk_name and output_indirect_thunk.
5005 2018-02-02  Julia Koval  <julia.koval@intel.com>
5007         * config.gcc: Add -march=icelake.
5008         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
5009         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
5010         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
5011         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
5012         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
5013         (processor_target_table): Add icelake.
5014         (ix86_option_override_internal): Handle new PTAs.
5015         (get_builtin_code_for_version): Handle icelake.
5016         (M_INTEL_COREI7_ICELAKE): New.
5017         (fold_builtin_cpu): Handle icelake.
5018         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
5019         * doc/invoke.texi: Add -march=icelake.
5021 2018-02-02  Julia Koval  <julia.koval@intel.com>
5023         * config/i386/i386.c (ix86_option_override_internal): Change flags type
5024         to wide_int_bitmask.
5025         * wide-int-bitmask.h: New.
5027 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5029         PR target/84066
5030         * config/i386/i386.md: Replace Pmode with word_mode in
5031         builtin_setjmp_setup and builtin_longjmp to support x32.
5033 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
5035         PR target/56010
5036         PR target/83743
5037         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
5038         #include "opts.h".
5039         (rs6000_supported_cpu_names): New static variable.
5040         (linux_cpu_translation_table): Likewise.
5041         (elf_platform) <cpu>: Define new static variable and use it.
5042         Translate kernel AT_PLATFORM name to canonical name if needed.
5043         Error if platform name is unknown.
5045 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
5047         PR target/84089
5048         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
5050 2018-02-01  Jeff Law  <law@redhat.com>
5052         PR target/84128
5053         * config/i386/i386.c (release_scratch_register_on_entry): Add new
5054         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
5055         the scratch if RELEASE_VIA_POP is false.
5056         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
5057         If we have to save a temporary register, decrement SIZE appropriately.
5058         Pass new arguments to release_scratch_register_on_entry.
5059         (ix86_adjust_stack_and_probe): Likewise.
5060         (ix86_emit_probe_stack_range): Pass new arguments to
5061         release_scratch_register_on_entry.
5063 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
5065         PR rtl-optimization/84157
5066         * combine.c (change_zero_ext): Use REG_P predicate in
5067         front of HARD_REGISTER_P predicate.
5069 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
5071         * config/avr/avr.c (avr_option_override): Move disabling of
5072         -fdelete-null-pointer-checks to...
5073         * common/config/avr/avr-common.c (avr_option_optimization_table):
5074         ...here.
5076 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5078         PR tree-optimization/81635
5079         * tree-data-ref.c (split_constant_offset_1): For types that
5080         wrap on overflow, try to use range info to prove that wrapping
5081         cannot occur.
5083 2018-02-01  Renlin Li  <renlin.li@arm.com>
5085         PR target/83370
5086         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
5087         TAILCALL_ADDR_REGS.
5088         (aarch64_register_move_cost): Likewise.
5089         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
5090         TAILCALL_ADDR_REGS.
5091         (REG_CLASS_NAMES): Likewise.
5092         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
5093         TAILCALL_ADDR_REGS. Remove IP registers.
5094         * config/aarch64/aarch64.md (Ucs): Update register constraint.
5096 2018-02-01  Richard Biener  <rguenther@suse.de>
5098         * domwalk.h (dom_walker::dom_walker): Add additional constructor
5099         for specifying RPO order and allow NULL for that.
5100         * domwalk.c (dom_walker::dom_walker): Likewise.
5101         (dom_walker::walk): Handle NULL RPO order.
5102         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
5103         in RPO order.
5104         (rewrite_update_dom_walker): Likewise.
5105         (mark_def_dom_walker): Likewise.
5107 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5109         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
5110         (aarch64_maybe_expand_sve_subreg_move): Declare.
5111         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
5112         * config/aarch64/predicates.md (aarch64_any_register_operand): New
5113         predicate.
5114         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
5115         that are semantically a reverse operation.
5116         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
5117         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
5118         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
5119         functions.
5120         (aarch64_can_change_mode_class): For big-endian, forbid changes
5121         between two SVE modes if they have different element sizes.
5123 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5125         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
5126         the TImode handling for big-endian targets.
5128 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5130         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
5131         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
5132         not just bytes.
5133         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
5134         Remove BSWAP handing for big-endian targets and use the form of
5135         LD1RQ appropariate for the mode.
5137 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5139         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
5140         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
5141         duplicated element.
5143 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
5145         PR tearget/83845
5146         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
5147         check for operands that need to go through aarch64_sve_reload_be.
5149 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
5151         PR tree-optimization/81661
5152         PR tree-optimization/84117
5153         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
5154         * tree-eh.c: Include gimplify.h.
5155         (find_trapping_overflow, replace_trapping_overflow,
5156         rewrite_to_non_trapping_overflow): New functions.
5157         * tree-vect-loop.c: Include tree-eh.h.
5158         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
5159         * tree-data-ref.c: Include tree-eh.h.
5160         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
5162 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
5164         PR rtl-optimization/84123
5165         * combine.c (change_zero_ext): Check if hard register satisfies
5166         can_change_dest_mode before calling gen_lowpart_SUBREG.
5168 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
5170         PR target/82444
5171         * ira.c (ira_init_register_move_cost): Remove assert.
5173 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
5175         PR rtl-optimization/84071
5176         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
5177         * doc/tm.texi: Regenerate.
5179 2018-01-31  Richard Biener  <rguenther@suse.de>
5181         PR tree-optimization/84132
5182         * tree-data-ref.c (analyze_miv_subscript): Properly
5183         check whether evolution_function_is_affine_multivariate_p
5184         before calling gcd_of_steps_may_divide_p.
5186 2018-01-31  Julia Koval  <julia.koval@intel.com>
5188         PR target/83618
5189         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
5190         * config/i386/i386.md (rdpid_rex64) New.
5191         (rdpid): Make 32bit only.
5193 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
5195         PR lto/84105
5196         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
5197         an IDENTIFIER_NODE for FUNCTION_TYPE's.
5199 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
5201         Revert
5202         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
5204         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
5206 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
5208         PR rtl-optimization/84071
5209         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
5210         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
5212 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
5214         * config/arc/arc.c (arc_handle_aux_attribute): New function.
5215         (arc_attribute_table): Add 'aux' attribute.
5216         (arc_in_small_data_p): Consider aux like variables.
5217         (arc_is_aux_reg_p): New function.
5218         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
5219         (arc_get_aux_arg): New function.
5220         (prepare_move_operands): Handle aux-register access.
5221         (arc_handle_aux_attribute): New function.
5222         * doc/extend.texi (ARC Variable attributes): Add subsection.
5224 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
5226         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
5227         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
5228         (arc_attribute_table): Add 'uncached' attribute.
5229         (arc_print_operand): Print '.di' flag for uncached memory
5230         accesses.
5231         (arc_in_small_data_p): Do not consider for small data the uncached
5232         types.
5233         (arc_is_uncached_mem_p): New function.
5234         * config/arc/predicates.md (compact_store_memory_operand): Check
5235         for uncached memory accesses.
5236         (nonvol_nonimm_operand): Likewise.
5237         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
5239 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
5241         PR c/84100
5242         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
5243         falign-loops=): Add Optimization flag.
5245 2018-01-30  Jeff Law  <law@redhat.com>
5247         PR target/84064
5248         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
5249         INT_REGISTERS_SAVED.  Check it prior to calling
5250         get_scratch_register_on_entry.
5251         (ix86_adjust_stack_and_probe): Similarly.
5252         (ix86_emit_probe_stack_range): Similarly.
5253         (ix86_expand_prologue): Corresponding changes.
5255 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5257         PR target/40411
5258         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
5259         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
5261 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
5263         PR target/84112
5264         * lra-constraints.c (curr_insn_transform): Process AND in the
5265         address.
5267 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
5269         PR rtl-optimization/83986
5270         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
5271         dependence against last_pending_memory_flush in addition to
5272         pending_jump_insns.
5274 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
5276         PR tree-optimization/81611
5277         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
5278         copies.
5280 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5282         PR target/83758
5283         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
5284         a reg rtx.
5286 2018-01-30  Richard Biener  <rguenther@suse.de>
5287             Jakub Jelinek  <jakub@redhat.com>
5289         PR tree-optimization/84111
5290         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
5291         inner loops added during recursion, as they don't have up-to-date
5292         SSA form.
5294 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
5296         PR ipa/81360
5297         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
5298         (can_inline_edge_by_limits_p): ... here.
5299         (can_early_inline_edge_p, check_callers,
5300         update_caller_keys, update_callee_keys, recursive_inlining,
5301         add_new_edges_to_heap, speculation_useful_p,
5302         inline_small_functions,
5303         inline_small_functions, flatten_function,
5304         inline_to_all_callers_1): Update.
5306 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
5308         * profile-count.c (profile_count::combine_with_ipa_count): Handle
5309         zeros correctly.
5311 2018-01-30  Richard Biener  <rguenther@suse.de>
5313         PR tree-optimization/83008
5314         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
5315         invariant and constant vector uses in stmts when they need
5316         more than one stmt.
5318 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5320         PR bootstrap/84017
5321         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
5322         * configure: Regenerate.
5324 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
5326         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
5327         pattern.
5328         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
5329         Use gen_rtx_REG rather than gen_lowpart.
5331 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
5333         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
5334         rather than 0 when creating partial subregs.
5336 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
5338         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
5339         of usage.
5341 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
5343         PR target/81550
5344         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
5345         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
5346         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
5347         flags.  This restores the settings used before the 2017-07-24.
5348         Turning off pre increment/decrement/modify allows IVOPTS to
5349         optimize DF/SF loops where the index is an int.
5351 2018-01-29  Richard Biener  <rguenther@suse.de>
5352             Kelvin Nilsen  <kelvin@gcc.gnu.org>
5354         PR bootstrap/80867
5355         * tree-vect-stmts.c (vectorizable_call): Don't call
5356         targetm.vectorize_builtin_md_vectorized_function if callee is
5357         NULL.
5359 2018-01-22  Carl Love  <cel@us.ibm.com>
5361         * doc/extend.tex: Fix typo in second arg in
5362         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
5364 2018-01-29  Richard Biener  <rguenther@suse.de>
5366         PR tree-optimization/84086
5367         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
5368         (flush_ssaname_freelist): When SSA names were released reset
5369         the SCEV hash table.
5371 2018-01-29  Richard Biener  <rguenther@suse.de>
5373         PR tree-optimization/84057
5374         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
5375         removed paths when removing edges.
5377 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
5379         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
5380         -mfunction-return=@var{choice}.
5382 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
5384         PR diagnostic/84034
5385         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
5386         Handle CR like TAB.
5387         (layout::print_source_line): Likewise.
5388         (test_get_line_width_without_trailing_whitespace): Add test cases.
5390 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
5392         PR middle-end/84040
5393         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
5394         debug insns.
5396 2018-01-26  Jim Wilson  <jimw@sifive.com>
5398         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
5400         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
5401         specified.
5403 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5405         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
5406         and CMP + SUB-immediate -> SUBS.
5408 2018-01-26  Martin Sebor  <msebor@redhat.com>
5410         PR tree-optimization/83896
5411         * tree-ssa-strlen.c (get_string_len): Rename...
5412         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
5413         Avoid assuming length is constant.
5414         (handle_char_store): Use HOST_WIDE_INT for string length.
5416 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
5418         PR target/81763
5419         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
5420         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
5422 2018-01-26  Richard Biener  <rguenther@suse.de>
5424         PR rtl-optimization/84003
5425         * dse.c (record_store): Only record redundant stores when
5426         the earlier store aliases at least all accesses the later one does.
5428 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
5430         PR rtl-optimization/83985
5431         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
5432         REG_CFA_RESTORE insns.
5433         (delete_unmarked_insns): Don't ignore separate shrink wrapping
5434         REG_CFA_RESTORE insns here.
5436         PR c/83989
5437         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
5438         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
5440 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
5442         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
5443         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
5444         (arc_init): Likewise.
5445         (arc_override_options): Likewise.
5446         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
5447         value.
5448         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
5449         support.
5450         * config/arc/arc.h (TARGET_DBNZ): Define.
5451         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
5452         properly set the tune attribute.
5453         (dbnz): Use TARGET_DBNZ guard.
5454         * config/arc/arc.opt (mtune): Add core3 option.
5456 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
5458         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
5459         recognize new pic like addresses.
5460         (arc_delegitimize_address): Clean up.
5462 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
5464         * config/arc/arc-arches.def: Option mrf16 valid for all
5465         architectures.
5466         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
5467         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
5468         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
5469         * config/arc/arc-tables.opt: Regenerate.
5470         * config/arc/arc.c (arc_conditional_register_usage): Handle
5471         reduced register file case.
5472         (arc_file_start): Set must have build attributes.
5473         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
5474         mrf16 option value.
5475         * config/arc/arc.opt (mrf16): Add new option.
5476         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
5477         * config/arc/genmultilib.awk: Handle new mrf16 option.
5478         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
5479         * config/arc/t-multilib: Regenerate.
5480         * doc/invoke.texi (ARC Options): Document mrf16 option.
5482 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
5484         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
5485         * config/arc/arc.c (arc_handle_secure_attribute): New function.
5486         (arc_attribute_table): Add 'secure_call' attribute.
5487         (arc_print_operand): Print secure call operand.
5488         (arc_function_ok_for_sibcall): Don't optimize tail calls when
5489         secure.
5490         (arc_is_secure_call_p): New function.  * config/arc/arc.md
5491         (call_i): Add support for sjli instruction.
5492         (call_value_i): Likewise.
5493         * config/arc/constraints.md (Csc): New constraint.
5495 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
5496             John Eric Martin  <John.Martin@emmicro-us.com>
5498         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
5499         * config/arc/arc.c (_arc_jli_section): New struct.
5500         (arc_jli_section): New type.
5501         (rc_jli_sections): New static variable.
5502         (arc_handle_jli_attribute): New function.
5503         (arc_attribute_table): Add jli_always and jli_fixed attribute.
5504         (arc_file_end): New function.
5505         (TARGET_ASM_FILE_END): Define.
5506         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
5507         (arc_add_jli_section): New function.
5508         (jli_call_scan): Likewise.
5509         (arc_reorg): Call jli_call_scan.
5510         (arc_output_addsi): Remove 'S' from printing asm operand.
5511         (arc_is_jli_call_p): New function.
5512         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
5513         operand.
5514         (movhi_insn): Likewise.
5515         (movsi_insn): Likewise.
5516         (movsi_set_cc_insn): Likewise.
5517         (loadqi_update): Likewise.
5518         (load_zeroextendqisi_update): Likewise.
5519         (load_signextendqisi_update): Likewise.
5520         (loadhi_update): Likewise.
5521         (load_zeroextendhisi_update): Likewise.
5522         (load_signextendhisi_update): Likewise.
5523         (loadsi_update): Likewise.
5524         (loadsf_update): Likewise.
5525         (movsicc_insn): Likewise.
5526         (bset_insn): Likewise.
5527         (bxor_insn): Likewise.
5528         (bclr_insn): Likewise.
5529         (bmsk_insn): Likewise.
5530         (bicsi3_insn): Likewise.
5531         (cmpsi_cc_c_insn): Likewise.
5532         (movsi_ne): Likewise.
5533         (movsi_cond_exec): Likewise.
5534         (clrsbsi2): Likewise.
5535         (norm_f): Likewise.
5536         (normw): Likewise.
5537         (swap): Likewise.
5538         (divaw): Likewise.
5539         (flag): Likewise.
5540         (sr): Likewise.
5541         (kflag): Likewise.
5542         (ffs): Likewise.
5543         (ffs_f): Likewise.
5544         (fls): Likewise.
5545         (call_i): Remove 'S' asm letter, add jli instruction.
5546         (call_value_i): Likewise.
5547         * config/arc/arc.op (mjli-always): New option.
5548         * config/arc/constraints.md (Cji): New constraint.
5549         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
5550         operand.
5551         (subsf3_fpx): Likewise.
5552         (mulsf3_fpx): Likewise.
5553         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
5554         asm operand.
5555         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
5556         function attrbutes.
5557         * doc/invoke.texi (ARC): Document mjli-always option.
5559 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
5561         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
5562         avoid addition with 0 and use incw and decw where possible.
5564 2018-01-26  Richard Biener  <rguenther@suse.de>
5566         PR tree-optimization/81082
5567         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
5568         association if it requires casting to unsigned.
5569         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
5570         from fold_plusminus_mult_expr to catch important cases late when
5571         range info is available.
5573 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5575         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
5576         * configure.ac (hidden_linkonce): New test.
5577         * configure: Regenerate.
5578         * config.in: Regenerate.
5580 2018-01-26  Julia Koval  <julia.koval@intel.com>
5582         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
5583         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
5584         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
5585         _mm_mask_bitshuffle_epi64_mask): Fix type.
5586         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
5587         USI_FTYPE_V4DI_V4DI_USI): Remove.
5588         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
5589         __builtin_ia32_vpshufbitqmb256_mask,
5590         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
5591         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
5592         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
5594 2018-01-26  Alan Modra  <amodra@gmail.com>
5596         PR target/84033
5597         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
5598         UNSPEC_VBPERMQ.  Sort other unspecs.
5600 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
5602         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
5604 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
5606         PR middle-end/83055
5607         * predict.c (drop_profile): Do not push/pop cfun; update also
5608         node->count.
5609         (handle_missing_profiles): Fix logic looking for zero profiles.
5611 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
5613         PR middle-end/83977
5614         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
5615         on functions with #pragma omp declare simd or functions with simd
5616         attribute.
5617         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
5618         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
5619         Remove trailing \n from warning_at calls.
5621 2018-01-25  Tom de Vries  <tom@codesourcery.com>
5623         PR target/84028
5624         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
5625         for neutered workers.
5627 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
5629         PR target/68467
5630         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
5631         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
5633 2018-01-24  Jeff Law  <law@redhat.com>
5635         PR target/83994
5636         * i386.c (get_probe_interval): Move to earlier point.
5637         (ix86_compute_frame_layout): If -fstack-clash-protection and
5638         the frame is larger than the probe interval, then use pushes
5639         to save registers rather than reg->mem moves.
5640         (ix86_expand_prologue): Remove conditional for int_registers_saved
5641         assertion.
5643 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
5645         PR target/84014
5646         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
5647         min/max for never referenced object.
5649 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
5651         PR middle-end/83977
5652         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
5653         here.
5654         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
5655         attributes from DECL_ATTRIBUTES (decl) without affecting
5656         DECL_ATTRIBUTES (current_function_decl).
5657         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
5658         functions with non-NULL DECL_ABSTRACT_ORIGIN.
5660 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
5662         PR tree-optimization/83979
5663         * fold-const.c (fold_comparison): Use constant_boolean_node
5664         instead of boolean_{true,false}_node.
5666 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
5668         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
5669         with zero counts.
5671 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5673         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
5674         Simplify the clause that sets the length attribute.
5675         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
5676         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
5677         clause that sets the length attribute.
5678         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
5680 2018-01-24  Tom de Vries  <tom@codesourcery.com>
5682         PR target/83589
5683         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
5684         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
5685         Add strict parameter.
5686         (prevent_branch_around_nothing): Insert dummy insn between branch to
5687         label and label with no ptx insn inbetween.
5688         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
5690 2018-01-24  Tom de Vries  <tom@codesourcery.com>
5692         PR target/81352
5693         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
5694         for neutered threads in warp.
5695         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
5697 2018-01-24  Richard Biener  <rguenther@suse.de>
5699         PR tree-optimization/83176
5700         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
5701         operands.
5703 2018-01-24  Richard Biener  <rguenther@suse.de>
5705         PR tree-optimization/82819
5706         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
5707         code generating pluses that are no-ops in the target precision.
5709 2018-01-24  Richard Biener  <rguenther@suse.de>
5711         PR middle-end/84000
5712         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
5714 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
5716         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
5717         to merge probabilities.
5718         * predict.c (probably_never_executed): Also mark as cold functions
5719         with global 0 profile and guessed local profile.
5720         * profile-count.c (profile_probability::combine_with_count): New
5721         member function.
5722         * profile-count.h (profile_probability::operator*,
5723         profile_probability::operator*=, profile_probability::operator/,
5724         profile_probability::operator/=): Reduce precision to adjusted
5725         and set value to guessed on contradictory divisions.
5726         (profile_probability::combine_with_freq): Remove.
5727         (profile_probability::combine_wiht_count): Declare.
5728         (profile_count::force_nonzero):: Set to adjusted.
5729         (profile_count::probability_in):: Set quality to adjusted.
5730         * tree-ssa-tail-merge.c (replace_block_by): Use
5731         combine_with_count.
5733 2018-01-23  Andrew Waterman  <andrew@sifive.com>
5734             Jim Wilson  <jimw@sifive.com>
5736         * config/riscv/riscv.c (riscv_stack_boundary): New.
5737         (riscv_option_override): Set riscv_stack_boundary.  Handle
5738         riscv_preferred_stack_boundary_arg.
5739         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
5740         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
5741         (STACK_BOUNDARY): Set to riscv_stack_boundary.
5742         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
5743         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
5744         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
5746 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
5748         PR target/83905
5749         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
5750         of struct ix86_frame.
5751         (ix86_expand_epilogue): Likewise.  Add a local variable for
5752         the reg_save_offset field in struct ix86_frame.
5754 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
5756         PR tree-optimization/82604
5757         * tree-loop-distribution.c (enum partition_kind): New enum item
5758         PKIND_PARTIAL_MEMSET.
5759         (partition_builtin_p): Support above new enum item.
5760         (generate_code_for_partition): Ditto.
5761         (compute_access_range): Differentiate cases that equality can be
5762         proven at all loops, the innermost loops or no loops.
5763         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
5764         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
5765         (finalize_partitions, distribute_loop): Don't fuse partition of
5766         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
5767         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
5768         parloop is enabled.
5770 2018-01-23  Martin Liska  <mliska@suse.cz>
5772         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
5773         order to ignore the predictor.
5774         (PRED_POLYMORPHIC_CALL): Likewise.
5775         (PRED_RECURSIVE_CALL): Likewise.
5777 2018-01-23  Martin Liska  <mliska@suse.cz>
5779         * tree-profile.c (tree_profiling): Print function header to
5780         aware reader which function we are working on.
5781         * value-prof.c (gimple_find_values_to_profile): Do not print
5782         not interesting value histograms.
5784 2018-01-23  Martin Liska  <mliska@suse.cz>
5786         * profile-count.h (enum profile_quality): Add
5787         profile_uninitialized as the first value. Do not number values
5788         as they are zero based.
5789         (profile_count::verify): Update sanity check.
5790         (profile_probability::verify): Likewise.
5792 2018-01-23  Nathan Sidwell  <nathan@acm.org>
5794         * doc/invoke.texi (ffor-scope): Deprecate.
5796 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
5798         PR tree-optimization/83510
5799         * domwalk.c (set_all_edges_as_executable): New function.
5800         (dom_walker::dom_walker): Convert bool param
5801         "skip_unreachable_blocks" to enum reachability.  Move setup of
5802         edge flags to set_all_edges_as_executable and only do it when
5803         reachability is REACHABLE_BLOCKS.
5804         * domwalk.h (enum dom_walker::reachability): New enum.
5805         (dom_walker::dom_walker): Convert bool param
5806         "skip_unreachable_blocks" to enum reachability.
5807         (set_all_edges_as_executable): New decl.
5808         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
5809         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
5810         "reachability".
5811         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
5812         but converting true to REACHABLE_BLOCKS.
5813         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
5814         * tree-vrp.c
5815         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
5816         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
5817         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
5818         REACHABLE_BLOCKS.
5819         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
5820         if check_all_array_refs will be called.
5822 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
5824         * tree.c (selftest::test_location_wrappers): Add more test
5825         coverage.
5827 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
5829         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
5830         (selftest::test_bit_in_range): Likewise.
5832 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
5834         PR testsuite/83888
5835         * doc/sourcebuild.texi (vect_float): Say that the selector
5836         only describes the situation when -funsafe-math-optimizations is on.
5837         (vect_float_strict): Document.
5839 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
5841         PR tree-optimization/83965
5842         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
5843         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
5844         instead of checking only for a reduction.
5845         (vect_recog_widen_sum_pattern): Likewise.
5847 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
5849         * predict.c (probably_never_executed): Only use precise profile info.
5850         (compute_function_frequency): Skip after inlining hack since we now
5851         have quality checking.
5853 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
5855         * profile-count.h (profile_probability::very_unlikely,
5856         profile_probability::unlikely, profile_probability::even): Set
5857         precision to guessed.
5859 2018-01-23  Richard Biener  <rguenther@suse.de>
5861         PR tree-optimization/83963
5862         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
5863         Properly terminate dominator walk when crossing the exit edge not
5864         when visiting its source block.
5866 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
5868         PR c++/83918
5869         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
5870         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
5872 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
5874         PR tree-optimization/83957
5875         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
5876         semicolon after for body surrounded by braces.
5878         PR tree-optimization/83081
5879         * profile-count.h (profile_probability::split): New method.
5880         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
5881         Use profile_probability::split.
5882         (do_compare_rtx_and_jump): Fix adjustment of probabilities
5883         when splitting a single conditional jump into 2.
5885 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
5887         PR tree-optimization/69452
5888         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
5889         decl.
5891 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5893         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
5894         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
5895         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
5897 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5899         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
5900         * config/rl78/rl78.md (movdi): New define_expand.
5901         * config/rl78/rl78.c (rl78_split_movdi): New function.
5903 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
5905         PR target/83862
5906         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
5907         no longer used.
5908         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
5909         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
5910         128-bit to produce an UNSPEC move to get the double word with the
5911         signbit and then a shift directly to do signbit.
5912         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
5913         implementation with a new version that just does either a direct
5914         move or a regular move.  Move memory interface to separate insns.
5915         Move insns so they are next to the expander.
5916         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
5917         with signbit move.  Split big and little endian case.
5918         (signbit<mode>2_dm_mem_le): Likewise.
5919         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
5920         (signbit<mode>2_dm2): Likewise.
5922 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5924         * config/rl78/rl78.md (anddi3): New define_expand.
5926 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5928         * config/rl78/rl78.md (umindi3): New define_expand.
5930 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5932         * config/rl78/rl78.md (smindi3): New define_expand.
5934 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5936         * config/rl78/rl78.md (smaxdi3): New define_expand.
5938 2018-01-22  Carl Love  <cel@us.ibm.com>
5940         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
5941         LVX_V1TI): Add macro expansion.
5942         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
5943         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
5944         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
5945         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
5946         Change check to determine if the instruction is a byte reversing
5947         entry.  Fix typo in comment.
5948         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
5949         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
5950         Add def_builtin calls for new builtins.
5951         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
5952         Add define_insn expansion.
5954 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5956         * config/rl78/rl78.md (umaxdi3): New define_expand.
5958 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
5960         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
5961         for non-QImode registers.
5963 2018-01-22  Richard Biener  <rguenther@suse.de>
5965         PR tree-optimization/83963
5966         * graphite-scop-detection.c (scop_detection::get_sese): Delay
5967         including the loop exit block.
5968         (scop_detection::merge_sese): Likewise.
5969         (scop_detection::add_scop): Do it here instead.
5971 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5973         * doc/sourcebuild.texi (arm_softfloat): Document.
5975 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
5977         PR gcc/77734
5978         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
5979         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
5980         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
5982 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5983             David Edelsohn  <dje.gcc@gmail.com>
5985         PR target/83946
5986         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
5987         Change "crset eq" to "crset 2".
5988         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
5989         (*call_indirect_aix<mode>_nospec): Likewise.
5990         (*call_value_indirect_aix<mode>_nospec): Likewise.
5991         (*call_indirect_elfv2<mode>_nospec): Likewise.
5992         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
5993         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
5994         change assembly output from . to $.
5995         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
5996         (indirect_jump<mode>_nospec): Change assembly output from . to $.
5997         (*tablejump<mode>_internal1_nospec): Likewise.
5999 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
6001         PR target/80870
6002         * config/sh/sh_optimize_sett_clrt.cc:
6003         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
6005 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
6007         PR tree-optimization/83940
6008         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
6009         offset_dt to vect_constant_def rather than vect_unknown_def_type.
6010         (vect_check_load_store_mask): Add a mask_dt_out parameter and
6011         use it to pass back the definition type.
6012         (vect_check_store_rhs): Likewise rhs_dt_out.
6013         (vect_build_gather_load_calls): Add a mask_dt argument and use
6014         it instead of a call to vect_is_simple_use.
6015         (vectorizable_store): Update calls to vect_check_load_store_mask
6016         and vect_check_store_rhs.  Use the dt returned by the latter instead
6017         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
6018         instead of calls to vect_is_simple_use.  Pass the scalar rather
6019         than the vector operand to vect_is_simple_use when handling
6020         second and subsequent copies of an rhs value.
6021         (vectorizable_load): Update calls to vect_check_load_store_mask
6022         and vect_build_gather_load_calls.  Use the cached mask_dt and
6023         gs_info.offset_dt instead of calls to vect_is_simple_use.
6025 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
6027         PR middle-end/83945
6028         * tree-emutls.c: Include gimplify.h.
6029         (lower_emutls_2): New function.
6030         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
6031         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
6032         it before further processing.
6034         PR target/83930
6035         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
6036         UINTVAL (trueop1) instead of INTVAL (op1).
6038 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
6040         PR debug/81570
6041         PR debug/83728
6042         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
6043         INCOMING_FRAME_SP_OFFSET if not defined.
6044         (scan_trace): Add ENTRY argument.  If true and
6045         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
6046         emit a note to adjust the CFA offset.
6047         (create_cfi_notes): Adjust scan_trace callers.
6048         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
6049         INCOMING_FRAME_SP_OFFSET in the CIE.
6050         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
6051         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
6052         Likewise.
6053         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
6054         * doc/tm.texi: Regenerated.
6056 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
6058         PR rtl-optimization/83147
6059         * lra-constraints.c (remove_inheritance_pseudos): Use
6060         lra_substitute_pseudo_within_insn.
6062 2018-01-19  Tom de Vries  <tom@codesourcery.com>
6063             Cesar Philippidis  <cesar@codesourcery.com>
6065         PR target/83920
6066         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
6068 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
6070         PR target/83790
6071         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
6072         spaces for function labels.
6074 2018-01-19  Martin Liska  <mliska@suse.cz>
6076         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
6077         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
6078         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
6079         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
6080         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
6081         (PRED_CONST_RETURN): Change from 69 to 65.
6082         (PRED_NULL_RETURN): Change from 91 to 71.
6083         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
6084         (PRED_LOOP_GUARD): Change from 66 to 73.
6086 2018-01-19  Martin Liska  <mliska@suse.cz>
6088         * predict.c (predict_insn_def): Add new assert.
6089         (struct branch_predictor): Change type to signed integer.
6090         (test_prediction_value_range): Amend test to cover
6091         PROB_UNINITIALIZED.
6092         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
6093         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
6094         (PRED_LOOP_ITERATIONS_MAX): Likewise.
6095         (PRED_LOOP_IV_COMPARE): Likewise.
6096         * predict.h (PROB_UNINITIALIZED): Define new constant.
6098 2018-01-19  Martin Liska  <mliska@suse.cz>
6100         * predict.c (dump_prediction): Add new format for
6101         analyze_brprob.py script which is enabled with -details
6102         suboption.
6103         * profile-count.h (precise_p): New function.
6105 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
6107         PR tree-optimization/83922
6108         * tree-vect-loop.c (vect_verify_full_masking): Return false if
6109         there are no statements that need masking.
6110         (vect_active_double_reduction_p): New function.
6111         (vect_analyze_loop_operations): Use it when handling phis that
6112         are not in the loop header.
6114 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
6116         PR tree-optimization/83914
6117         * tree-vect-loop.c (vectorizable_induction): Don't convert
6118         init_expr or apply the peeling adjustment for inductions
6119         that are nested within the vectorized loop.
6121 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6123         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
6124         instead of NEG.
6126 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
6128         PR sanitizer/81715
6129         PR testsuite/83882
6130         * function.h (gimplify_parameters): Add gimple_seq * argument.
6131         * function.c: Include gimple.h and options.h.
6132         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
6133         for the added local temporaries if needed.
6134         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
6135         if there are any parameter cleanups, wrap whole body into a
6136         try/finally with the cleanups.
6138 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
6140         PR target/82964
6141         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
6142         Use GET_MODE_CLASS for scalar floating point.
6144 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
6146         PR ipa/82256
6147         patch by PaX Team
6148         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
6149         Fix call of call_cgraph_insertion_hooks.
6151 2018-01-18  Martin Sebor  <msebor@redhat.com>
6153         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
6155 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
6157         PR ipa/83619
6158         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
6159         frequencies.
6161 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
6163         PR other/70268
6164         * common.opt: (-ffile-prefix-map): New option.
6165         * opts.c (common_handle_option): Defer it.
6166         * opts-global.c (handle_common_deferred_options): Handle it.
6167         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
6168         * file-prefix-map.h: New file.
6169         (remap_debug_filename, add_debug_prefix_map): ...here.
6170         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
6171         * final.c (debug_prefix_map, add_debug_prefix_map
6172         remap_debug_filename): Move to...
6173         * file-prefix-map.c: New file.
6174         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
6175         generalize, get rid of alloca(), use strrchr() instead of strchr().
6176         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
6177         Implement in terms of add_prefix_map().
6178         (remap_macro_filename, remap_debug_filename): Implement in term of
6179         remap_filename().
6180         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
6181         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
6182         * dbxout.c: Include file-prefix-map.h.
6183         * varasm.c: Likewise.
6184         * vmsdbgout.c: Likewise.
6185         * xcoffout.c: Likewise.
6186         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
6187         * doc/cppopts.texi (-fmacro-prefix-map): Document.
6188         * doc/invoke.texi (-ffile-prefix-map): Document.
6189         (-fdebug-prefix-map): Update description.
6191 2018-01-18  Martin Liska  <mliska@suse.cz>
6193         * config/i386/i386.c (indirect_thunk_name): Document that also
6194         lfence is emitted.
6195         (output_indirect_thunk): Document why both instructions
6196         (pause and lfence) are generated.
6198 2018-01-18  Richard Biener  <rguenther@suse.de>
6200         PR tree-optimization/83887
6201         * graphite-scop-detection.c
6202         (scop_detection::get_nearest_dom_with_single_entry): Remove.
6203         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
6204         (scop_detection::merge_sese): Re-implement with a flood-fill
6205         algorithm that properly finds a SESE region if it exists.
6207 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
6209         PR c/61240
6210         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
6211         pointer_diff optimizations use view_convert instead of convert.
6213 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6215         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
6216         Generate different code for -mno-speculate-indirect-jumps.
6217         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
6218         (*call_indirect_aix<mode>): Disable for
6219         -mno-speculate-indirect-jumps.
6220         (*call_indirect_aix<mode>_nospec): New define_insn.
6221         (*call_value_indirect_aix<mode>): Disable for
6222         -mno-speculate-indirect-jumps.
6223         (*call_value_indirect_aix<mode>_nospec): New define_insn.
6224         (*sibcall_nonlocal_sysv<mode>): Generate different code for
6225         -mno-speculate-indirect-jumps.
6226         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
6228 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
6230         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
6231         long double type, set the flags for noting the default long double
6232         type, even if we don't pass or return a long double type.
6234 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
6236         PR ipa/83051
6237         * ipa-inline.c (flatten_function): Do not overwrite final inlining
6238         failure.
6240 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
6242         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
6243         support for merge[hl].
6244         (fold_mergehl_helper): New helper function.
6245         (tree-vector-builder.h): New #include for tree_vector_builder usage.
6246         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
6247         (altivec_vmrglw_direct): Add xxmrglw insn.
6249 2018-01-17  Andrew Waterman  <andrew@sifive.com>
6251         * config/riscv/riscv.c (riscv_conditional_register_usage): If
6252         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
6254 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
6256         PR lto/83121
6257         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
6258         call the lto_location_cache before reading the
6259         DECL_SOURCE_LOCATION of the types.
6261 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
6262             Richard Sandiford  <richard.sandiford@linaro.org>
6264         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
6265         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
6266         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
6267         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
6268         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
6269         Add declaration.
6270         * config/aarch64/constraints.md (aarch64_movti_operand):
6271         Limit immediates.
6272         * config/aarch64/predicates.md (Uti): Add new constraint.
6274 2018-01-17 Carl Love  <cel@us.ibm.com>
6276         * config/rs6000/vsx.md (define_expand xl_len_r,
6277         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
6278         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
6279         lxvll.
6280         (define_expand, define_insn): Move the shift left from  the
6281         define_insn to the define_expand for lxvl and stxvl instructions.
6282         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
6283         and XL_LEN_R definitions to PURE.
6285 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
6287         * config/i386/i386.c (indirect_thunk_name): Declare regno
6288         as unsigned int.  Compare regno with INVALID_REGNUM.
6289         (output_indirect_thunk): Ditto.
6290         (output_indirect_thunk_function): Ditto.
6291         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
6292         in the call to output_indirect_thunk_function.
6294 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
6296         PR middle-end/83884
6297         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
6298         rather than the size of inner_type to determine the stack slot size
6299         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
6301 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
6303         PR target/83546
6304         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
6305         to PTA_SILVERMONT.
6307 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
6309         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
6310         endian Linux systems to optionally enable multilibs for selecting
6311         the long double type if the user configured an explicit type.
6312         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
6313         have no long double multilibs if not defined.
6314         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
6315         warn if the user used -mabi={ieee,ibm}longdouble and we built
6316         multilibs for long double.
6317         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
6318         appropriate multilib option.
6319         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
6320         multilib options.
6321         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
6322         for building long double multilibs.
6323         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
6325 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
6327         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
6328         copies.
6330         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
6331         64 bits.
6332         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
6333         128 bits.
6335         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
6336         variables.
6338         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
6339         return value.
6341 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
6343         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
6344         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
6346 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6348         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
6349         different rtl trees depending on TARGET_64BIT.
6350         (rs6000_gen_lvx): Likewise.
6352 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
6354         * config/visium/visium.md (nop): Tweak comment.
6355         (hazard_nop): Likewise.
6357 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6359         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
6360         -mspeculate-indirect-jumps.
6361         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
6362         for -mno-speculate-indirect-jumps.
6363         (*call_indirect_elfv2<mode>_nospec): New define_insn.
6364         (*call_value_indirect_elfv2<mode>): Disable for
6365         -mno-speculate-indirect-jumps.
6366         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
6367         (indirect_jump): Emit different RTL for
6368         -mno-speculate-indirect-jumps.
6369         (*indirect_jump<mode>): Disable for
6370         -mno-speculate-indirect-jumps.
6371         (*indirect_jump<mode>_nospec): New define_insn.
6372         (tablejump): Emit different RTL for
6373         -mno-speculate-indirect-jumps.
6374         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
6375         (tablejumpsi_nospec): New define_expand.
6376         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
6377         (tablejumpdi_nospec): New define_expand.
6378         (*tablejump<mode>_internal1): Disable for
6379         -mno-speculate-indirect-jumps.
6380         (*tablejump<mode>_internal1_nospec): New define_insn.
6381         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
6382         option.
6384 2018-01-16  Artyom Skrobov tyomitch@gmail.com
6386         * caller-save.c (insert_save): Drop unnecessary parameter.  All
6387         callers updated.
6389 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
6390             Richard Biener  <rguenth@suse.de>
6392         PR libgomp/83590
6393         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
6394         return early, inline manually is_gimple_sizepos.  Make sure if we
6395         call gimplify_expr we don't end up with a gimple constant.
6396         * tree.c (variably_modified_type_p): Don't return true for
6397         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
6398         * gimplify.h (is_gimple_sizepos): Remove.
6400 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
6402         PR tree-optimization/83857
6403         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
6404         vectorizable_live_operation for pure SLP statements.
6405         (vectorizable_live_operation): Handle PHIs.
6407 2018-01-16  Richard Biener  <rguenther@suse.de>
6409         PR tree-optimization/83867
6410         * tree-vect-stmts.c (vect_transform_stmt): Precompute
6411         nested_in_vect_loop_p since the scalar stmt may get invalidated.
6413 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
6415         PR c/83844
6416         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
6417         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
6418         If off is not INTEGER_CST, issue a may not be aligned warning
6419         rather than isn't aligned.  Use isn%'t rather than isn't.
6420         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
6421         into MULT_EXPR.
6422         <case MULT_EXPR>: Improve the case when bottom and one of the
6423         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
6424         operand, in that case check if the other operand is multiple of
6425         bottom divided by the INTEGER_CST operand.
6427 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
6429         PR target/83858
6430         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
6431         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
6432         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
6433         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
6434         * config/pa/pa.c (pa_function_arg_advance): Likewise.
6435         (pa_function_arg, pa_arg_partial_bytes): Likewise.
6436         (pa_function_arg_size): New function.
6438 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
6440         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
6441         in a separate statement.
6443 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
6445         PR tree-optimization/83847
6446         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
6447         group gathers and scatters.
6449 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
6451         PR rtl-optimization/86620
6452         * params.def (max-sched-ready-insns): Bump minimum value to 1.
6454         PR rtl-optimization/83213
6455         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
6456         to last if both are JUMP_INSNs.
6458         PR tree-optimization/83843
6459         * gimple-ssa-store-merging.c
6460         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
6461         store_immediate_info for bswap/nop orig_stores.
6463 2018-01-15  Andrew Waterman  <andrew@sifive.com>
6465         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
6466         !TARGET_MUL.
6467         <UDIV>: Increase cost if !TARGET_DIV.
6469 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
6471         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
6472         (define_attr "cr_logical_3op"): New.
6473         (cceq_ior_compare): Adjust.
6474         (cceq_ior_compare_complement): Adjust.
6475         (*cceq_rev_compare): Adjust.
6476         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
6477         (is_cracked_insn): Adjust.
6478         (insn_must_be_first_in_group): Adjust.
6479         * config/rs6000/40x.md: Adjust.
6480         * config/rs6000/440.md: Adjust.
6481         * config/rs6000/476.md: Adjust.
6482         * config/rs6000/601.md: Adjust.
6483         * config/rs6000/603.md: Adjust.
6484         * config/rs6000/6xx.md: Adjust.
6485         * config/rs6000/7450.md: Adjust.
6486         * config/rs6000/7xx.md: Adjust.
6487         * config/rs6000/8540.md: Adjust.
6488         * config/rs6000/cell.md: Adjust.
6489         * config/rs6000/e300c2c3.md: Adjust.
6490         * config/rs6000/e500mc.md: Adjust.
6491         * config/rs6000/e500mc64.md: Adjust.
6492         * config/rs6000/e5500.md: Adjust.
6493         * config/rs6000/e6500.md: Adjust.
6494         * config/rs6000/mpc.md: Adjust.
6495         * config/rs6000/power4.md: Adjust.
6496         * config/rs6000/power5.md: Adjust.
6497         * config/rs6000/power6.md: Adjust.
6498         * config/rs6000/power7.md: Adjust.
6499         * config/rs6000/power8.md: Adjust.
6500         * config/rs6000/power9.md: Adjust.
6501         * config/rs6000/rs64.md: Adjust.
6502         * config/rs6000/titan.md: Adjust.
6504 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
6506         * config/i386/predicates.md (indirect_branch_operand): Rewrite
6507         ix86_indirect_branch_register logic.
6509 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
6511         * config/i386/constraints.md (Bs): Update
6512         ix86_indirect_branch_register check.  Don't check
6513         ix86_indirect_branch_register with GOT_memory_operand.
6514         (Bw): Likewise.
6515         * config/i386/predicates.md (GOT_memory_operand): Don't check
6516         ix86_indirect_branch_register here.
6517         (GOT32_symbol_operand): Likewise.
6519 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
6521         * config/i386/predicates.md (constant_call_address_operand):
6522         Rewrite ix86_indirect_branch_register logic.
6523         (sibcall_insn_operand): Likewise.
6525 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
6527         * config/i386/constraints.md (Bs): Replace
6528         ix86_indirect_branch_thunk_register with
6529         ix86_indirect_branch_register.
6530         (Bw): Likewise.
6531         * config/i386/i386.md (indirect_jump): Likewise.
6532         (tablejump): Likewise.
6533         (*sibcall_memory): Likewise.
6534         (*sibcall_value_memory): Likewise.
6535         Peepholes of indirect call and jump via memory: Likewise.
6536         * config/i386/i386.opt: Likewise.
6537         * config/i386/predicates.md (indirect_branch_operand): Likewise.
6538         (GOT_memory_operand): Likewise.
6539         (call_insn_operand): Likewise.
6540         (sibcall_insn_operand): Likewise.
6541         (GOT32_symbol_operand): Likewise.
6543 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
6545         PR middle-end/83837
6546         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
6547         type rather than type addr's type points to.
6548         (expand_omp_atomic_mutex): Likewise.
6549         (expand_omp_atomic): Likewise.
6551 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
6553         PR target/83839
6554         * config/i386/i386.c (output_indirect_thunk_function): Use
6555         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
6556         for  __x86_return_thunk.
6558 2018-01-15  Richard Biener  <rguenther@suse.de>
6560         PR middle-end/83850
6561         * expmed.c (extract_bit_field_1): Fix typo.
6563 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6565         PR target/83687
6566         * config/arm/iterators.md (VF): New mode iterator.
6567         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
6568         Remove integer-related logic from pattern.
6569         (neon_vabd<mode>_3): Likewise.
6571 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
6573         PR middle-end/82694
6574         * common.opt (fstrict-overflow): No longer an alias.
6575         (fwrapv-pointer): New option.
6576         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
6577         also for pointer types based on flag_wrapv_pointer.
6578         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
6579         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
6580         opts->x_flag_wrapv got set.
6581         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
6582         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
6583         POINTER_TYPE_OVERFLOW_UNDEFINED.
6584         * match.pd: Likewise in address comparison pattern.
6585         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
6587 2018-01-15  Richard Biener  <rguenther@suse.de>
6589         PR lto/83804
6590         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
6591         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
6592         Reset type names to their identifier if their TYPE_DECL doesn't
6593         have linkage (and thus is used for ODR and devirt).
6594         (save_debug_info_for_decl): Remove.
6595         (save_debug_info_for_type): Likewise.
6596         (add_tree_to_fld_list): Adjust.
6597         * tree-pretty-print.c (dump_generic_node): Make dumping of
6598         type names more robust.
6600 2018-01-15  Richard Biener  <rguenther@suse.de>
6602         * BASE-VER: Bump to 8.0.1.
6604 2018-01-14  Martin Sebor  <msebor@redhat.com>
6606         PR other/83508
6607         * builtins.c (check_access): Avoid warning when the no-warning bit
6608         is set.
6610 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
6612         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
6613         * ira-color (allocno_hard_regs_compare): Likewise.
6615 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
6617         PR target/83013
6618         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
6619         Use .pushsection/.popsection.
6621 2018-01-14  Martin Sebor  <msebor@redhat.com>
6623         PR c++/81327
6624         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
6626 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
6628         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
6629         entry from extra_headers.
6630         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
6631         extra_headers, make the list bitwise identical to the i?86-*-* one.
6633 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
6635         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
6636         -mcmodel=large with -mindirect-branch=thunk,
6637         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
6638         -mfunction-return=thunk-extern.
6639         * doc/invoke.texi: Document -mcmodel=large is incompatible with
6640         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
6641         -mfunction-return=thunk and -mfunction-return=thunk-extern.
6643 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
6645         * config/i386/i386.c (print_reg): Print the name of the full
6646         integer register without '%'.
6647         (ix86_print_operand): Handle 'V'.
6648          * doc/extend.texi: Document 'V' modifier.
6650 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
6652         * config/i386/constraints.md (Bs): Disallow memory operand for
6653         -mindirect-branch-register.
6654         (Bw): Likewise.
6655         * config/i386/predicates.md (indirect_branch_operand): Likewise.
6656         (GOT_memory_operand): Likewise.
6657         (call_insn_operand): Likewise.
6658         (sibcall_insn_operand): Likewise.
6659         (GOT32_symbol_operand): Likewise.
6660         * config/i386/i386.md (indirect_jump): Call convert_memory_address
6661         for -mindirect-branch-register.
6662         (tablejump): Likewise.
6663         (*sibcall_memory): Likewise.
6664         (*sibcall_value_memory): Likewise.
6665         Disallow peepholes of indirect call and jump via memory for
6666         -mindirect-branch-register.
6667         (*call_pop): Replace m with Bw.
6668         (*call_value_pop): Likewise.
6669         (*sibcall_pop_memory): Replace m with Bs.
6670         * config/i386/i386.opt (mindirect-branch-register): New option.
6671         * doc/invoke.texi: Document -mindirect-branch-register option.
6673 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
6675         * config/i386/i386-protos.h (ix86_output_function_return): New.
6676         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
6677         set function_return_type.
6678         (indirect_thunk_name): Add ret_p to indicate thunk for function
6679         return.
6680         (output_indirect_thunk_function): Pass false to
6681         indirect_thunk_name.
6682         (ix86_output_indirect_branch_via_reg): Likewise.
6683         (ix86_output_indirect_branch_via_push): Likewise.
6684         (output_indirect_thunk_function): Create alias for function
6685         return thunk if regno < 0.
6686         (ix86_output_function_return): New function.
6687         (ix86_handle_fndecl_attribute): Handle function_return.
6688         (ix86_attribute_table): Add function_return.
6689         * config/i386/i386.h (machine_function): Add
6690         function_return_type.
6691         * config/i386/i386.md (simple_return_internal): Use
6692         ix86_output_function_return.
6693         (simple_return_internal_long): Likewise.
6694         * config/i386/i386.opt (mfunction-return=): New option.
6695         (indirect_branch): Mention -mfunction-return=.
6696         * doc/extend.texi: Document function_return function attribute.
6697         * doc/invoke.texi: Document -mfunction-return= option.
6699 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
6701         * config/i386/i386-opts.h (indirect_branch): New.
6702         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
6703         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
6704         with local indirect jump when converting indirect call and jump.
6705         (ix86_set_indirect_branch_type): New.
6706         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
6707         (indirectlabelno): New.
6708         (indirect_thunk_needed): Likewise.
6709         (indirect_thunk_bnd_needed): Likewise.
6710         (indirect_thunks_used): Likewise.
6711         (indirect_thunks_bnd_used): Likewise.
6712         (INDIRECT_LABEL): Likewise.
6713         (indirect_thunk_name): Likewise.
6714         (output_indirect_thunk): Likewise.
6715         (output_indirect_thunk_function): Likewise.
6716         (ix86_output_indirect_branch_via_reg): Likewise.
6717         (ix86_output_indirect_branch_via_push): Likewise.
6718         (ix86_output_indirect_branch): Likewise.
6719         (ix86_output_indirect_jmp): Likewise.
6720         (ix86_code_end): Call output_indirect_thunk_function if needed.
6721         (ix86_output_call_insn): Call ix86_output_indirect_branch if
6722         needed.
6723         (ix86_handle_fndecl_attribute): Handle indirect_branch.
6724         (ix86_attribute_table): Add indirect_branch.
6725         * config/i386/i386.h (machine_function): Add indirect_branch_type
6726         and has_local_indirect_jump.
6727         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
6728         to true.
6729         (tablejump): Likewise.
6730         (*indirect_jump): Use ix86_output_indirect_jmp.
6731         (*tablejump_1): Likewise.
6732         (simple_return_indirect_internal): Likewise.
6733         * config/i386/i386.opt (mindirect-branch=): New option.
6734         (indirect_branch): New.
6735         (keep): Likewise.
6736         (thunk): Likewise.
6737         (thunk-inline): Likewise.
6738         (thunk-extern): Likewise.
6739         * doc/extend.texi: Document indirect_branch function attribute.
6740         * doc/invoke.texi: Document -mindirect-branch= option.
6742 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
6744         PR ipa/83051
6745         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
6747 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
6749         * ipa-inline.c (want_inline_small_function_p): Return false if
6750         inlining has already failed with CIF_FINAL_ERROR.
6751         (update_caller_keys): Call want_inline_small_function_p before
6752         can_inline_edge_p.
6753         (update_callee_keys): Likewise.
6755 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6757         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
6758         New function.
6759         (rs6000_quadword_masked_address_p): Likewise.
6760         (quad_aligned_load_p): Likewise.
6761         (quad_aligned_store_p): Likewise.
6762         (const_load_sequence_p): Add comment to describe the outer-most loop.
6763         (mimic_memory_attributes_and_flags): New function.
6764         (rs6000_gen_stvx): Likewise.
6765         (replace_swapped_aligned_store): Likewise.
6766         (rs6000_gen_lvx): Likewise.
6767         (replace_swapped_aligned_load): Likewise.
6768         (replace_swapped_load_constant): Capitalize argument name in
6769         comment describing this function.
6770         (rs6000_analyze_swaps): Add a third pass to search for vector loads
6771         and stores that access quad-word aligned addresses and replace
6772         with stvx or lvx instructions when appropriate.
6773         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
6774         New function prototype.
6775         (rs6000_quadword_masked_address_p): Likewise.
6776         (rs6000_gen_lvx): Likewise.
6777         (rs6000_gen_stvx): Likewise.
6778         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
6779         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
6780         when memory address is aligned.
6781         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
6782         this split to select lvx instruction when memory address is aligned.
6783         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
6784         instruction when memory address is aligned.
6785         (*vsx_le_perm_load_v16qi): Likewise.
6786         (four unnamed splitters): Modify to select the stvx instruction
6787         when memory is aligned.
6789 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
6791         * predict.c (determine_unlikely_bbs): Handle correctly BBs
6792         which appears in the queue multiple times.
6794 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6795             Alan Hayward  <alan.hayward@arm.com>
6796             David Sherwood  <david.sherwood@arm.com>
6798         * tree-vectorizer.h (vec_lower_bound): New structure.
6799         (_loop_vec_info): Add check_nonzero and lower_bounds.
6800         (LOOP_VINFO_CHECK_NONZERO): New macro.
6801         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
6802         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
6803         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
6804         fields.  Make seg_len the distance travelled, not including the
6805         access size.
6806         (dr_direction_indicator): Declare.
6807         (dr_zero_step_indicator): Likewise.
6808         (dr_known_forward_stride_p): Likewise.
6809         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
6810         tree-ssanames.h.
6811         (runtime_alias_check_p): Allow runtime alias checks with
6812         variable strides.
6813         (operator ==): Compare access_size and align.
6814         (prune_runtime_alias_test_list): Rework for new distinction between
6815         the access_size and seg_len.
6816         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
6817         segment lengths.
6818         (get_segment_min_max): New function.
6819         (create_intersect_range_checks): Use it.
6820         (dr_step_indicator): New function.
6821         (dr_direction_indicator): Likewise.
6822         (dr_zero_step_indicator): Likewise.
6823         (dr_known_forward_stride_p): Likewise.
6824         * tree-loop-distribution.c (data_ref_segment_size): Return
6825         DR_STEP * (niters - 1).
6826         (compute_alias_check_pairs): Update call to the dr_with_seg_len
6827         constructor.
6828         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
6829         (vect_preserves_scalar_order_p): New function, split out from...
6830         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
6831         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
6832         (vect_vfa_access_size): New function.
6833         (vect_vfa_align): Likewise.
6834         (vect_compile_time_alias): Take access_size_a and access_b arguments.
6835         (dump_lower_bound): New function.
6836         (vect_check_lower_bound): Likewise.
6837         (vect_small_gap_p): Likewise.
6838         (vectorizable_with_step_bound_p): Likewise.
6839         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
6840         depencies if the vectorization factor is 1.  Convert the checks
6841         for nonzero steps into checks on the bounds of DR_STEP.  Try using
6842         a bunds check for variable steps if the minimum required step is
6843         relatively small. Update calls to the dr_with_seg_len
6844         constructor and to vect_compile_time_alias.
6845         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
6846         function.
6847         (vect_loop_versioning): Call it.
6848         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
6849         when retrying.
6850         (vect_estimate_min_profitable_iters): Account for any bounds checks.
6852 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6853             Alan Hayward  <alan.hayward@arm.com>
6854             David Sherwood  <david.sherwood@arm.com>
6856         * doc/sourcebuild.texi (vect_scatter_store): Document.
6857         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
6858         optabs.
6859         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
6860         Document.
6861         * genopinit.c (main): Add supports_vec_scatter_store and
6862         supports_vec_scatter_store_cached to target_optabs.
6863         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
6864         IFN_MASK_SCATTER_STORE.
6865         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
6866         functions.
6867         * internal-fn.h (internal_store_fn_p): Declare.
6868         (internal_fn_stored_value_index): Likewise.
6869         * internal-fn.c (scatter_store_direct): New macro.
6870         (expand_scatter_store_optab_fn): New function.
6871         (direct_scatter_store_optab_supported_p): New macro.
6872         (internal_store_fn_p): New function.
6873         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
6874         IFN_MASK_SCATTER_STORE.
6875         (internal_fn_mask_index): Likewise.
6876         (internal_fn_stored_value_index): New function.
6877         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
6878         for scatter stores.
6879         * optabs-query.h (supports_vec_scatter_store_p): Declare.
6880         * optabs-query.c (supports_vec_scatter_store_p): New function.
6881         * tree-vectorizer.h (vect_get_store_rhs): Declare.
6882         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
6883         true for scatter stores.
6884         (vect_gather_scatter_fn_p): Handle scatter stores too.
6885         (vect_check_gather_scatter): Consider using scatter stores if
6886         supports_vec_scatter_store_p.
6887         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
6888         scatter stores too.
6889         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
6890         internal_fn_stored_value_index.
6891         (check_load_store_masking): Handle scatter stores too.
6892         (vect_get_store_rhs): Make public.
6893         (vectorizable_call): Use internal_store_fn_p.
6894         (vectorizable_store): Handle scatter store internal functions.
6895         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
6896         when deciding whether the end of the group has been reached.
6897         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
6898         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
6899         (mask_scatter_store<mode>): New insns.
6901 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6902             Alan Hayward  <alan.hayward@arm.com>
6903             David Sherwood  <david.sherwood@arm.com>
6905         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
6906         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
6907         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
6908         function.
6909         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
6910         Use vect_truncate_gather_scatter_offset if we can't treat the
6911         operation as a normal gather load or scatter store.
6912         (get_group_load_store_type): Take the gather_scatter_info
6913         as argument.  Try using a gather load or scatter store for
6914         single-element groups.
6915         (get_load_store_type): Update calls to get_group_load_store_type
6916         and vect_use_strided_gather_scatters_p.
6918 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6919             Alan Hayward  <alan.hayward@arm.com>
6920             David Sherwood  <david.sherwood@arm.com>
6922         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
6923         optional tree argument.
6924         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
6925         null target hooks.
6926         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
6927         but continue to use the current value as a fallback.
6928         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
6929         to compare the updates.
6930         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
6931         (get_load_store_type): Use it when handling a strided access.
6932         (vect_get_strided_load_store_ops): New function.
6933         (vect_get_data_ptr_increment): Likewise.
6934         (vectorizable_load): Handle strided gather loads.  Always pass
6935         a step to vect_create_data_ref_ptr and bump_vector_ptr.
6937 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6938             Alan Hayward  <alan.hayward@arm.com>
6939             David Sherwood  <david.sherwood@arm.com>
6941         * doc/md.texi (gather_load@var{m}): Document.
6942         (mask_gather_load@var{m}): Likewise.
6943         * genopinit.c (main): Add supports_vec_gather_load and
6944         supports_vec_gather_load_cached to target_optabs.
6945         * optabs-tree.c (init_tree_optimization_optabs): Use
6946         ggc_cleared_alloc to allocate target_optabs.
6947         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
6948         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
6949         functions.
6950         * internal-fn.h (internal_load_fn_p): Declare.
6951         (internal_gather_scatter_fn_p): Likewise.
6952         (internal_fn_mask_index): Likewise.
6953         (internal_gather_scatter_fn_supported_p): Likewise.
6954         * internal-fn.c (gather_load_direct): New macro.
6955         (expand_gather_load_optab_fn): New function.
6956         (direct_gather_load_optab_supported_p): New macro.
6957         (direct_internal_fn_optab): New function.
6958         (internal_load_fn_p): Likewise.
6959         (internal_gather_scatter_fn_p): Likewise.
6960         (internal_fn_mask_index): Likewise.
6961         (internal_gather_scatter_fn_supported_p): Likewise.
6962         * optabs-query.c (supports_at_least_one_mode_p): New function.
6963         (supports_vec_gather_load_p): Likewise.
6964         * optabs-query.h (supports_vec_gather_load_p): Declare.
6965         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
6966         and memory_type field.
6967         (NUM_PATTERNS): Bump to 15.
6968         * tree-vect-data-refs.c: Include internal-fn.h.
6969         (vect_gather_scatter_fn_p): New function.
6970         (vect_describe_gather_scatter_call): Likewise.
6971         (vect_check_gather_scatter): Try using internal functions for
6972         gather loads.  Recognize existing calls to a gather load function.
6973         (vect_analyze_data_refs): Consider using gather loads if
6974         supports_vec_gather_load_p.
6975         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
6976         (vect_get_gather_scatter_offset_type): Likewise.
6977         (vect_convert_mask_for_vectype): Likewise.
6978         (vect_add_conversion_to_patterm): Likewise.
6979         (vect_try_gather_scatter_pattern): Likewise.
6980         (vect_recog_gather_scatter_pattern): New pattern recognizer.
6981         (vect_vect_recog_func_ptrs): Add it.
6982         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
6983         internal_fn_mask_index and internal_gather_scatter_fn_p.
6984         (check_load_store_masking): Take the gather_scatter_info as an
6985         argument and handle gather loads.
6986         (vect_get_gather_scatter_ops): New function.
6987         (vectorizable_call): Check internal_load_fn_p.
6988         (vectorizable_load): Likewise.  Handle gather load internal
6989         functions.
6990         (vectorizable_store): Update call to check_load_store_masking.
6991         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
6992         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
6993         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
6994         (aarch64_gather_scale_operand_d): New predicates.
6995         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
6996         (mask_gather_load<mode>): New insns.
6998 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
6999             Alan Hayward  <alan.hayward@arm.com>
7000             David Sherwood  <david.sherwood@arm.com>
7002         * optabs.def (fold_left_plus_optab): New optab.
7003         * doc/md.texi (fold_left_plus_@var{m}): Document.
7004         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
7005         * internal-fn.c (fold_left_direct): Define.
7006         (expand_fold_left_optab_fn): Likewise.
7007         (direct_fold_left_optab_supported_p): Likewise.
7008         * fold-const-call.c (fold_const_fold_left): New function.
7009         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
7010         * tree-parloops.c (valid_reduction_p): New function.
7011         (gather_scalar_reductions): Use it.
7012         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
7013         (vect_finish_replace_stmt): Declare.
7014         * tree-vect-loop.c (fold_left_reduction_fn): New function.
7015         (needs_fold_left_reduction_p): New function, split out from...
7016         (vect_is_simple_reduction): ...here.  Accept reductions that
7017         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
7018         (vect_force_simple_reduction): Also store the reduction type in
7019         the assignment's STMT_VINFO_REDUC_TYPE.
7020         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
7021         (merge_with_identity): New function.
7022         (vect_expand_fold_left): Likewise.
7023         (vectorize_fold_left_reduction): Likewise.
7024         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
7025         scalar phi in place for it.  Check for target support and reject
7026         cases that would reassociate the operation.  Defer the transform
7027         phase to vectorize_fold_left_reduction.
7028         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
7029         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
7030         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
7032 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7034         * tree-if-conv.c (predicate_mem_writes): Remove redundant
7035         call to ifc_temp_var.
7037 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7038             Alan Hayward  <alan.hayward@arm.com>
7039             David Sherwood  <david.sherwood@arm.com>
7041         * target.def (legitimize_address_displacement): Take the original
7042         offset as a poly_int.
7043         * targhooks.h (default_legitimize_address_displacement): Update
7044         accordingly.
7045         * targhooks.c (default_legitimize_address_displacement): Likewise.
7046         * doc/tm.texi: Regenerate.
7047         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
7048         as an argument, moving assert of ad->disp == ad->disp_term to...
7049         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
7050         Try calling targetm.legitimize_address_displacement before expanding
7051         the address rather than afterwards, and adjust for the new interface.
7052         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
7053         Match the new hook interface.  Handle SVE addresses.
7054         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
7055         new hook interface.
7057 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7059         * Makefile.in (OBJS): Add early-remat.o.
7060         * target.def (select_early_remat_modes): New hook.
7061         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
7062         * doc/tm.texi: Regenerate.
7063         * targhooks.h (default_select_early_remat_modes): Declare.
7064         * targhooks.c (default_select_early_remat_modes): New function.
7065         * timevar.def (TV_EARLY_REMAT): New timevar.
7066         * passes.def (pass_early_remat): New pass.
7067         * tree-pass.h (make_pass_early_remat): Declare.
7068         * early-remat.c: New file.
7069         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
7070         function.
7071         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
7073 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7074             Alan Hayward  <alan.hayward@arm.com>
7075             David Sherwood  <david.sherwood@arm.com>
7077         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
7078         vfm1 with a bound_epilog parameter.
7079         (vect_do_peeling): Update calls accordingly, and move the prologue
7080         call earlier in the function.  Treat the base bound_epilog as 0 for
7081         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
7082         this base when peeling for gaps.
7083         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
7084         with fully-masked loops.
7085         (vect_estimate_min_profitable_iters): Handle the single peeled
7086         iteration in that case.
7088 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7089             Alan Hayward  <alan.hayward@arm.com>
7090             David Sherwood  <david.sherwood@arm.com>
7092         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
7093         single-element interleaving even if the size is not a power of 2.
7094         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
7095         accesses for single-element interleaving if the group size is
7096         not a power of 2.
7098 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7099             Alan Hayward  <alan.hayward@arm.com>
7100             David Sherwood  <david.sherwood@arm.com>
7102         * doc/md.texi (fold_extract_last_@var{m}): Document.
7103         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
7104         * optabs.def (fold_extract_last_optab): New optab.
7105         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
7106         * internal-fn.c (fold_extract_direct): New macro.
7107         (expand_fold_extract_optab_fn): Likewise.
7108         (direct_fold_extract_optab_supported_p): Likewise.
7109         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
7110         * tree-vect-loop.c (vect_model_reduction_cost): Handle
7111         EXTRACT_LAST_REDUCTION.
7112         (get_initial_def_for_reduction): Do not create an initial vector
7113         for EXTRACT_LAST_REDUCTION reductions.
7114         (vectorizable_reduction): Leave the scalar phi in place for
7115         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
7116         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
7117         epilogue code for EXTRACT_LAST_REDUCTION and defer the
7118         transform phase to vectorizable_condition.
7119         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
7120         split out from...
7121         (vect_finish_stmt_generation): ...here.
7122         (vect_finish_replace_stmt): New function.
7123         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
7124         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
7125         pattern.
7126         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
7128 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7129             Alan Hayward  <alan.hayward@arm.com>
7130             David Sherwood  <david.sherwood@arm.com>
7132         * doc/md.texi (extract_last_@var{m}): Document.
7133         * optabs.def (extract_last_optab): New optab.
7134         * internal-fn.def (EXTRACT_LAST): New internal function.
7135         * internal-fn.c (cond_unary_direct): New macro.
7136         (expand_cond_unary_optab_fn): Likewise.
7137         (direct_cond_unary_optab_supported_p): Likewise.
7138         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
7139         loops using EXTRACT_LAST.
7140         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
7141         (extract_last_<mode>): ...this optab.
7142         (vec_extract<mode><Vel>): Update accordingly.
7144 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7145             Alan Hayward  <alan.hayward@arm.com>
7146             David Sherwood  <david.sherwood@arm.com>
7148         * target.def (empty_mask_is_expensive): New hook.
7149         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
7150         * doc/tm.texi: Regenerate.
7151         * targhooks.h (default_empty_mask_is_expensive): Declare.
7152         * targhooks.c (default_empty_mask_is_expensive): New function.
7153         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
7154         if the target says that empty masks are expensive.
7155         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
7156         New function.
7157         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
7159 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7160             Alan Hayward  <alan.hayward@arm.com>
7161             David Sherwood  <david.sherwood@arm.com>
7163         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
7164         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
7165         (vect_use_loop_mask_for_alignment_p): New function.
7166         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
7167         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
7168         niters_skip argument.  Make sure that the first niters_skip elements
7169         of the first iteration are inactive.
7170         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
7171         Update call to vect_set_loop_masks_directly.
7172         (get_misalign_in_elems): New function, split out from...
7173         (vect_gen_prolog_loop_niters): ...here.
7174         (vect_update_init_of_dr): Take a code argument that specifies whether
7175         the adjustment should be added or subtracted.
7176         (vect_update_init_of_drs): Likewise.
7177         (vect_prepare_for_masked_peels): New function.
7178         (vect_do_peeling): Skip prologue peeling if we're using a mask
7179         instead.  Update call to vect_update_inits_of_drs.
7180         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7181         mask_skip_niters.
7182         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
7183         alignment.  Do not include the number of peeled iterations in
7184         the minimum threshold in that case.
7185         (vectorizable_induction): Adjust the start value down by
7186         LOOP_VINFO_MASK_SKIP_NITERS iterations.
7187         (vect_transform_loop): Call vect_prepare_for_masked_peels.
7188         Take the number of skipped iterations into account when calculating
7189         the loop bounds.
7190         * tree-vect-stmts.c (vect_gen_while_not): New function.
7192 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7193             Alan Hayward  <alan.hayward@arm.com>
7194             David Sherwood  <david.sherwood@arm.com>
7196         * doc/sourcebuild.texi (vect_fully_masked): Document.
7197         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
7198         default value to 0.
7199         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
7200         split out from...
7201         (vect_analyze_loop_2): ...here. Don't check the vectorization
7202         factor against the number of loop iterations if the loop is
7203         fully-masked.
7205 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7206             Alan Hayward  <alan.hayward@arm.com>
7207             David Sherwood  <david.sherwood@arm.com>
7209         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
7210         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
7211         (dump_groups): Update accordingly.
7212         (iv_use::mem_type): New member variable.
7213         (address_p): New function.
7214         (record_use): Add a mem_type argument and initialize the new
7215         mem_type field.
7216         (record_group_use): Add a mem_type argument.  Use address_p.
7217         Remove obsolete null checks of base_object.  Update call to record_use.
7218         (find_interesting_uses_op): Update call to record_group_use.
7219         (find_interesting_uses_cond): Likewise.
7220         (find_interesting_uses_address): Likewise.
7221         (get_mem_type_for_internal_fn): New function.
7222         (find_address_like_use): Likewise.
7223         (find_interesting_uses_stmt): Try find_address_like_use before
7224         calling find_interesting_uses_op.
7225         (addr_offset_valid_p): Use the iv mem_type field as the type
7226         of the addressed memory.
7227         (add_autoinc_candidates): Likewise.
7228         (get_address_cost): Likewise.
7229         (split_small_address_groups_p): Use address_p.
7230         (split_address_groups): Likewise.
7231         (add_iv_candidate_for_use): Likewise.
7232         (autoinc_possible_for_pair): Likewise.
7233         (rewrite_groups): Likewise.
7234         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
7235         (determine_group_iv_cost): Update after split of USE_ADDRESS.
7236         (get_alias_ptr_type_for_ptr_address): New function.
7237         (rewrite_use_address): Rewrite address uses in calls that were
7238         identified by find_address_like_use.
7240 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7241             Alan Hayward  <alan.hayward@arm.com>
7242             David Sherwood  <david.sherwood@arm.com>
7244         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
7245         TARGET_MEM_REFs.
7246         * gimple-expr.h (is_gimple_addressable: Likewise.
7247         * gimple-expr.c (is_gimple_address): Likewise.
7248         * internal-fn.c (expand_call_mem_ref): New function.
7249         (expand_mask_load_optab_fn): Use it.
7250         (expand_mask_store_optab_fn): Likewise.
7252 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7253             Alan Hayward  <alan.hayward@arm.com>
7254             David Sherwood  <david.sherwood@arm.com>
7256         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
7257         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
7258         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
7259         (cond_umax@var{mode}): Document.
7260         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
7261         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
7262         (cond_umin_optab, cond_umax_optab): New optabs.
7263         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
7264         (COND_IOR, COND_XOR): New internal functions.
7265         * internal-fn.h (get_conditional_internal_fn): Declare.
7266         * internal-fn.c (cond_binary_direct): New macro.
7267         (expand_cond_binary_optab_fn): Likewise.
7268         (direct_cond_binary_optab_supported_p): Likewise.
7269         (get_conditional_internal_fn): New function.
7270         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
7271         Cope with reduction statements that are vectorized as calls rather
7272         than assignments.
7273         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
7274         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
7275         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
7276         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
7277         (UNSPEC_COND_EOR): New unspecs.
7278         (optab): Add mappings for them.
7279         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
7280         (sve_int_op, sve_fp_op): New int attributes.
7282 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7283             Alan Hayward  <alan.hayward@arm.com>
7284             David Sherwood  <david.sherwood@arm.com>
7286         * optabs.def (while_ult_optab): New optab.
7287         * doc/md.texi (while_ult@var{m}@var{n}): Document.
7288         * internal-fn.def (WHILE_ULT): New internal function.
7289         * internal-fn.h (direct_internal_fn_supported_p): New override
7290         that takes two types as argument.
7291         * internal-fn.c (while_direct): New macro.
7292         (expand_while_optab_fn): New function.
7293         (convert_optab_supported_p): Likewise.
7294         (direct_while_optab_supported_p): New macro.
7295         * wide-int.h (wi::udiv_ceil): New function.
7296         * tree-vectorizer.h (rgroup_masks): New structure.
7297         (vec_loop_masks): New typedef.
7298         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
7299         and fully_masked_p.
7300         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
7301         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
7302         (vect_max_vf): New function.
7303         (slpeel_make_loop_iterate_ntimes): Delete.
7304         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
7305         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
7306         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
7307         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
7308         internal-fn.h, stor-layout.h and optabs-query.h.
7309         (vect_set_loop_mask): New function.
7310         (add_preheader_seq): Likewise.
7311         (add_header_seq): Likewise.
7312         (interleave_supported_p): Likewise.
7313         (vect_maybe_permute_loop_masks): Likewise.
7314         (vect_set_loop_masks_directly): Likewise.
7315         (vect_set_loop_condition_masked): Likewise.
7316         (vect_set_loop_condition_unmasked): New function, split out from
7317         slpeel_make_loop_iterate_ntimes.
7318         (slpeel_make_loop_iterate_ntimes): Rename to..
7319         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
7320         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
7321         (vect_do_peeling): Update call accordingly.
7322         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
7323         loops.
7324         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7325         mask_compare_type, can_fully_mask_p and fully_masked_p.
7326         (release_vec_loop_masks): New function.
7327         (_loop_vec_info): Use it to free the loop masks.
7328         (can_produce_all_loop_masks_p): New function.
7329         (vect_get_max_nscalars_per_iter): Likewise.
7330         (vect_verify_full_masking): Likewise.
7331         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
7332         retries, and free the mask rgroups before retrying.  Check loop-wide
7333         reasons for disallowing fully-masked loops.  Make the final decision
7334         about whether use a fully-masked loop or not.
7335         (vect_estimate_min_profitable_iters): Do not assume that peeling
7336         for the number of iterations will be needed for fully-masked loops.
7337         (vectorizable_reduction): Disable fully-masked loops.
7338         (vectorizable_live_operation): Likewise.
7339         (vect_halve_mask_nunits): New function.
7340         (vect_double_mask_nunits): Likewise.
7341         (vect_record_loop_mask): Likewise.
7342         (vect_get_loop_mask): Likewise.
7343         (vect_transform_loop): Handle the case in which the final loop
7344         iteration might handle a partial vector.  Call vect_set_loop_condition
7345         instead of slpeel_make_loop_iterate_ntimes.
7346         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
7347         (check_load_store_masking): New function.
7348         (prepare_load_store_mask): Likewise.
7349         (vectorizable_store): Handle fully-masked loops.
7350         (vectorizable_load): Likewise.
7351         (supportable_widening_operation): Use vect_halve_mask_nunits for
7352         booleans.
7353         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
7354         (vect_gen_while): New function.
7355         * config/aarch64/aarch64.md (umax<mode>3): New expander.
7356         (aarch64_uqdec<mode>): New insn.
7358 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7359             Alan Hayward  <alan.hayward@arm.com>
7360             David Sherwood  <david.sherwood@arm.com>
7362         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
7363         (reduc_xor_scal_optab): New optabs.
7364         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
7365         (reduc_xor_scal_@var{m}): Document.
7366         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
7367         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
7368         internal functions.
7369         * fold-const-call.c (fold_const_call): Handle them.
7370         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
7371         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
7372         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
7373         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
7374         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
7375         (UNSPEC_XORV): New unspecs.
7376         (optab): Add entries for them.
7377         (BITWISEV): New int iterator.
7378         (bit_reduc_op): New int attributes.
7380 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7381             Alan Hayward  <alan.hayward@arm.com>
7382             David Sherwood  <david.sherwood@arm.com>
7384         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
7385         * internal-fn.def (VEC_SHL_INSERT): New internal function.
7386         * optabs.def (vec_shl_insert_optab): New optab.
7387         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
7388         (duplicate_and_interleave): Likewise.
7389         * tree-vect-loop.c: Include internal-fn.h.
7390         (neutral_op_for_slp_reduction): New function, split out from
7391         get_initial_defs_for_reduction.
7392         (get_initial_def_for_reduction): Handle option 2 for variable-length
7393         vectors by loading the neutral value into a vector and then shifting
7394         the initial value into element 0.
7395         (get_initial_defs_for_reduction): Replace the code argument with
7396         the neutral value calculated by neutral_op_for_slp_reduction.
7397         Use gimple_build_vector for constant-length vectors.
7398         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
7399         but the first group_size elements have a neutral value.
7400         Use duplicate_and_interleave otherwise.
7401         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
7402         Update call to get_initial_defs_for_reduction.  Handle SLP
7403         reductions for variable-length vectors by creating one vector
7404         result for each scalar result, with the elements associated
7405         with other scalar results stubbed out with the neutral value.
7406         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
7407         Require IFN_VEC_SHL_INSERT for double reductions on
7408         variable-length vectors, or SLP reductions that have
7409         a neutral value.  Require can_duplicate_and_interleave_p
7410         support for variable-length unchained SLP reductions if there
7411         is no neutral value, such as for MIN/MAX reductions.  Also require
7412         the number of vector elements to be a multiple of the number of
7413         SLP statements when doing variable-length unchained SLP reductions.
7414         Update call to vect_create_epilog_for_reduction.
7415         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
7416         and remove initial values.
7417         (duplicate_and_interleave): Make public.
7418         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
7419         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
7421 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7422             Alan Hayward  <alan.hayward@arm.com>
7423             David Sherwood  <david.sherwood@arm.com>
7425         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
7426         (can_duplicate_and_interleave_p): New function.
7427         (vect_get_and_check_slp_defs): Take the vector of statements
7428         rather than just the current one.  Remove excess parentheses.
7429         Restriction rejectinon of vect_constant_def and vect_external_def
7430         for variable-length vectors to boolean types, or types for which
7431         can_duplicate_and_interleave_p is false.
7432         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
7433         (duplicate_and_interleave): New function.
7434         (vect_get_constant_vectors): Use gimple_build_vector for
7435         constant-length vectors and suitable variable-length constant
7436         vectors.  Use duplicate_and_interleave for other variable-length
7437         vectors.  Don't defer the update when inserting new statements.
7439 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7440             Alan Hayward  <alan.hayward@arm.com>
7441             David Sherwood  <david.sherwood@arm.com>
7443         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
7444         min_profitable_iters doesn't go negative.
7446 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7447             Alan Hayward  <alan.hayward@arm.com>
7448             David Sherwood  <david.sherwood@arm.com>
7450         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
7451         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
7452         * optabs.def (vec_mask_load_lanes_optab): New optab.
7453         (vec_mask_store_lanes_optab): Likewise.
7454         * internal-fn.def (MASK_LOAD_LANES): New internal function.
7455         (MASK_STORE_LANES): Likewise.
7456         * internal-fn.c (mask_load_lanes_direct): New macro.
7457         (mask_store_lanes_direct): Likewise.
7458         (expand_mask_load_optab_fn): Handle masked operations.
7459         (expand_mask_load_lanes_optab_fn): New macro.
7460         (expand_mask_store_optab_fn): Handle masked operations.
7461         (expand_mask_store_lanes_optab_fn): New macro.
7462         (direct_mask_load_lanes_optab_supported_p): Likewise.
7463         (direct_mask_store_lanes_optab_supported_p): Likewise.
7464         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
7465         parameter.
7466         (vect_load_lanes_supported): Likewise.
7467         * tree-vect-data-refs.c (strip_conversion): New function.
7468         (can_group_stmts_p): Likewise.
7469         (vect_analyze_data_ref_accesses): Use it instead of checking
7470         for a pair of assignments.
7471         (vect_store_lanes_supported): Take a masked_p parameter.
7472         (vect_load_lanes_supported): Likewise.
7473         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
7474         vect_store_lanes_supported and vect_load_lanes_supported.
7475         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
7476         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
7477         parameter.  Don't allow gaps for masked accesses.
7478         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
7479         and vect_load_lanes_supported.
7480         (get_load_store_type): Take a masked_p parameter and update
7481         call to get_group_load_store_type.
7482         (vectorizable_store): Update call to get_load_store_type.
7483         Handle IFN_MASK_STORE_LANES.
7484         (vectorizable_load): Update call to get_load_store_type.
7485         Handle IFN_MASK_LOAD_LANES.
7487 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7488             Alan Hayward  <alan.hayward@arm.com>
7489             David Sherwood  <david.sherwood@arm.com>
7491         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
7492         modes for SVE.
7493         * config/aarch64/aarch64-protos.h
7494         (aarch64_sve_struct_memory_operand_p): Declare.
7495         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
7496         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
7497         (VPRED, vpred): Handle SVE structure modes.
7498         * config/aarch64/constraints.md (Utx): New constraint.
7499         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
7500         (aarch64_sve_struct_nonimmediate_operand): New predicates.
7501         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
7502         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
7503         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
7504         structure modes.  Split into pieces after RA.
7505         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
7506         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
7507         New patterns.
7508         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
7509         SVE structure modes.
7510         (aarch64_classify_address): Likewise.
7511         (sizetochar): Move earlier in file.
7512         (aarch64_print_operand): Handle SVE register lists.
7513         (aarch64_array_mode): New function.
7514         (aarch64_sve_struct_memory_operand_p): Likewise.
7515         (TARGET_ARRAY_MODE): Redefine.
7517 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7518             Alan Hayward  <alan.hayward@arm.com>
7519             David Sherwood  <david.sherwood@arm.com>
7521         * target.def (array_mode): New target hook.
7522         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
7523         * doc/tm.texi: Regenerate.
7524         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
7525         * hooks.c (hook_optmode_mode_uhwi_none): New function.
7526         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
7527         targetm.array_mode.
7528         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
7529         type sizes.
7531 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7532             Alan Hayward  <alan.hayward@arm.com>
7533             David Sherwood  <david.sherwood@arm.com>
7535         * fold-const.c (fold_binary_loc): Check the argument types
7536         rather than the result type when testing for a vector operation.
7538 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7540         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
7541         * doc/tm.texi: Regenerate.
7543 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7544             Alan Hayward  <alan.hayward@arm.com>
7545             David Sherwood  <david.sherwood@arm.com>
7547         * doc/invoke.texi (-msve-vector-bits=): Document new option.
7548         (sve): Document new AArch64 extension.
7549         * doc/md.texi (w): Extend the description of the AArch64
7550         constraint to include SVE vectors.
7551         (Upl, Upa): Document new AArch64 predicate constraints.
7552         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
7553         enum.
7554         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
7555         (msve-vector-bits=): New option.
7556         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
7557         SVE when these are disabled.
7558         (sve): New extension.
7559         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
7560         modes.  Adjust their number of units based on aarch64_sve_vg.
7561         (MAX_BITSIZE_MODE_ANY_MODE): Define.
7562         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
7563         aarch64_addr_query_type.
7564         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
7565         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
7566         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
7567         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
7568         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
7569         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
7570         (aarch64_simd_imm_zero_p): Delete.
7571         (aarch64_check_zero_based_sve_index_immediate): Declare.
7572         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
7573         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
7574         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
7575         (aarch64_sve_float_mul_immediate_p): Likewise.
7576         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
7577         rather than an rtx.
7578         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
7579         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
7580         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
7581         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
7582         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
7583         (aarch64_regmode_natural_size): Likewise.
7584         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
7585         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
7586         left one place.
7587         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
7588         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
7589         for VG and the SVE predicate registers.
7590         (V_ALIASES): Add a "z"-prefixed alias.
7591         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
7592         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
7593         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
7594         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
7595         (REG_CLASS_NAMES): Add entries for them.
7596         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
7597         and the predicate registers.
7598         (aarch64_sve_vg): Declare.
7599         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
7600         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
7601         (REGMODE_NATURAL_SIZE): Define.
7602         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
7603         SVE macros.
7604         * config/aarch64/aarch64.c: Include cfgrtl.h.
7605         (simd_immediate_info): Add a constructor for series vectors,
7606         and an associated step field.
7607         (aarch64_sve_vg): New variable.
7608         (aarch64_dbx_register_number): Handle VG and the predicate registers.
7609         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
7610         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
7611         (VEC_ANY_DATA, VEC_STRUCT): New constants.
7612         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
7613         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
7614         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
7615         (aarch64_get_mask_mode): New functions.
7616         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
7617         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
7618         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
7619         predicate modes and predicate registers.  Explicitly restrict
7620         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
7621         to store a vector mode if it is recognized by
7622         aarch64_classify_vector_mode.
7623         (aarch64_regmode_natural_size): New function.
7624         (aarch64_hard_regno_caller_save_mode): Return the original mode
7625         for predicates.
7626         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
7627         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
7628         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
7629         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
7630         functions.
7631         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
7632         does not overlap dest if the function is frame-related.  Handle
7633         SVE constants.
7634         (aarch64_split_add_offset): New function.
7635         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
7636         them aarch64_add_offset.
7637         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
7638         and update call to aarch64_sub_sp.
7639         (aarch64_add_cfa_expression): New function.
7640         (aarch64_expand_prologue): Pass extra temporary registers to the
7641         functions above.  Handle the case in which we need to emit new
7642         DW_CFA_expressions for registers that were originally saved
7643         relative to the stack pointer, but now have to be expressed
7644         relative to the frame pointer.
7645         (aarch64_output_mi_thunk): Pass extra temporary registers to the
7646         functions above.
7647         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
7648         IP0 and IP1 values for SVE frames.
7649         (aarch64_expand_vec_series): New function.
7650         (aarch64_expand_sve_widened_duplicate): Likewise.
7651         (aarch64_expand_sve_const_vector): Likewise.
7652         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
7653         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
7654         into the register, rather than emitting a SET directly.
7655         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
7656         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
7657         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
7658         (offset_9bit_signed_scaled_p): New functions.
7659         (aarch64_replicate_bitmask_imm): New function.
7660         (aarch64_bitmask_imm): Use it.
7661         (aarch64_cannot_force_const_mem): Reject expressions involving
7662         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
7663         (aarch64_classify_index): Handle SVE indices, by requiring
7664         a plain register index with a scale that matches the element size.
7665         (aarch64_classify_address): Handle SVE addresses.  Assert that
7666         the mode of the address is VOIDmode or an integer mode.
7667         Update call to aarch64_classify_symbol.
7668         (aarch64_classify_symbolic_expression): Update call to
7669         aarch64_classify_symbol.
7670         (aarch64_const_vec_all_in_range_p): New function.
7671         (aarch64_print_vector_float_operand): Likewise.
7672         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
7673         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
7674         and the FP immediates 1.0 and 0.5.
7675         (aarch64_print_address_internal): Handle SVE addresses.
7676         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
7677         (aarch64_regno_regclass): Handle predicate registers.
7678         (aarch64_secondary_reload): Handle big-endian reloads of SVE
7679         data modes.
7680         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
7681         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
7682         (aarch64_convert_sve_vector_bits): New function.
7683         (aarch64_override_options): Use it to handle -msve-vector-bits=.
7684         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
7685         rather than an rtx.
7686         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
7687         Handle SVE vector and predicate modes.  Accept VL-based constants
7688         that need only one temporary register, and VL offsets that require
7689         no temporary registers.
7690         (aarch64_conditional_register_usage): Mark the predicate registers
7691         as fixed if SVE isn't available.
7692         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
7693         Return true for SVE vector and predicate modes.
7694         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
7695         rather than an unsigned int.  Handle SVE modes.
7696         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
7697         SVE modes.
7698         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
7699         if SVE is enabled.
7700         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
7701         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
7702         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
7703         (aarch64_sve_float_mul_immediate_p): New functions.
7704         (aarch64_sve_valid_immediate): New function.
7705         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
7706         Explicitly reject structure modes.  Check for INDEX constants.
7707         Handle PTRUE and PFALSE constants.
7708         (aarch64_check_zero_based_sve_index_immediate): New function.
7709         (aarch64_simd_imm_zero_p): Delete.
7710         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
7711         vector modes.  Accept constants in the range of CNT[BHWD].
7712         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
7713         ask for an Advanced SIMD mode.
7714         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
7715         (aarch64_simd_vector_alignment): Handle SVE predicates.
7716         (aarch64_vectorize_preferred_vector_alignment): New function.
7717         (aarch64_simd_vector_alignment_reachable): Use it instead of
7718         the vector size.
7719         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
7720         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
7721         functions.
7722         (MAX_VECT_LEN): Delete.
7723         (expand_vec_perm_d): Add a vec_flags field.
7724         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
7725         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
7726         (aarch64_evpc_ext): Don't apply a big-endian lane correction
7727         for SVE modes.
7728         (aarch64_evpc_rev): Rename to...
7729         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
7730         (aarch64_evpc_rev_global): New function.
7731         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
7732         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
7733         MAX_VECT_LEN.
7734         (aarch64_evpc_sve_tbl): New function.
7735         (aarch64_expand_vec_perm_const_1): Update after rename of
7736         aarch64_evpc_rev.  Handle SVE permutes too, trying
7737         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
7738         than aarch64_evpc_tbl.
7739         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
7740         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
7741         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
7742         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
7743         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
7744         (aarch64_expand_sve_vcond): New functions.
7745         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
7746         of aarch64_vector_mode_p.
7747         (aarch64_dwarf_poly_indeterminate_value): New function.
7748         (aarch64_compute_pressure_classes): Likewise.
7749         (aarch64_can_change_mode_class): Likewise.
7750         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
7751         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
7752         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
7753         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
7754         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
7755         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
7756         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
7757         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
7758         constraints.
7759         (Dn, Dl, Dr): Accept const as well as const_vector.
7760         (Dz): Likewise.  Compare against CONST0_RTX.
7761         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
7762         of "vector" where appropriate.
7763         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
7764         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
7765         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
7766         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
7767         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
7768         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
7769         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
7770         (v_int_equiv): Extend to SVE modes.
7771         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
7772         mode attributes.
7773         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
7774         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
7775         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
7776         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
7777         (SVE_COND_FP_CMP): New int iterators.
7778         (perm_hilo): Handle the new unpack unspecs.
7779         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
7780         attributes.
7781         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
7782         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
7783         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
7784         (aarch64_equality_operator, aarch64_constant_vector_operand)
7785         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
7786         (aarch64_sve_nonimmediate_operand): Likewise.
7787         (aarch64_sve_general_operand): Likewise.
7788         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
7789         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
7790         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
7791         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
7792         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
7793         (aarch64_sve_float_arith_immediate): Likewise.
7794         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
7795         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
7796         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
7797         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
7798         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
7799         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
7800         (aarch64_sve_float_arith_operand): Likewise.
7801         (aarch64_sve_float_arith_with_sub_operand): Likewise.
7802         (aarch64_sve_float_mul_operand): Likewise.
7803         (aarch64_sve_vec_perm_operand): Likewise.
7804         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
7805         (aarch64_mov_operand): Accept const_poly_int and const_vector.
7806         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
7807         as well as const_vector.
7808         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
7809         in file.  Use CONST0_RTX and CONSTM1_RTX.
7810         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
7811         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
7812         Use aarch64_simd_imm_zero.
7813         * config/aarch64/aarch64-sve.md: New file.
7814         * config/aarch64/aarch64.md: Include it.
7815         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
7816         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
7817         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
7818         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
7819         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
7820         (sve): New attribute.
7821         (enabled): Disable instructions with the sve attribute unless
7822         TARGET_SVE.
7823         (movqi, movhi): Pass CONST_POLY_INT operaneds through
7824         aarch64_expand_mov_immediate.
7825         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
7826         CNT[BHSD] immediates.
7827         (movti): Split CONST_POLY_INT moves into two halves.
7828         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
7829         Split additions that need a temporary here if the destination
7830         is the stack pointer.
7831         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
7832         (*add<mode>3_poly_1): New instruction.
7833         (set_clobber_cc): New expander.
7835 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7837         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
7838         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
7839         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
7840         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
7841         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
7842         Change innermode from fixed_mode_size to machine_mode.
7843         (simplify_subreg): Update call accordingly.  Handle a constant-sized
7844         subreg of a variable-length CONST_VECTOR.
7846 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
7847             Alan Hayward  <alan.hayward@arm.com>
7848             David Sherwood  <david.sherwood@arm.com>
7850         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
7851         (add_offset_to_base): New function, split out from...
7852         (create_mem_ref): ...here.  When handling a scale other than 1,
7853         check first whether the address is valid without the offset.
7854         Add it into the base if so, leaving the index and scale as-is.
7856 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
7858         PR c++/83778
7859         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
7860         fold_for_warn before checking if arg2 is INTEGER_CST.
7862 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
7864         * config/rs6000/predicates.md (load_multiple_operation): Delete.
7865         (store_multiple_operation): Delete.
7866         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
7867         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
7868         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
7869         guarded by TARGET_STRING.
7870         (rs6000_output_load_multiple): Delete.
7871         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
7872         OPTION_MASK_STRING / TARGET_STRING handling.
7873         (print_operand) <'N', 'O'>: Add comment that these are unused now.
7874         (const rs6000_opt_masks) <"string">: Change mask to 0.
7875         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
7876         (MASK_STRING): Delete.
7877         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
7878         parts.  Simplify.
7879         (load_multiple): Delete.
7880         (*ldmsi8): Delete.
7881         (*ldmsi7): Delete.
7882         (*ldmsi6): Delete.
7883         (*ldmsi5): Delete.
7884         (*ldmsi4): Delete.
7885         (*ldmsi3): Delete.
7886         (store_multiple): Delete.
7887         (*stmsi8): Delete.
7888         (*stmsi7): Delete.
7889         (*stmsi6): Delete.
7890         (*stmsi5): Delete.
7891         (*stmsi4): Delete.
7892         (*stmsi3): Delete.
7893         (movmemsi_8reg): Delete.
7894         (corresponding unnamed define_insn): Delete.
7895         (movmemsi_6reg): Delete.
7896         (corresponding unnamed define_insn): Delete.
7897         (movmemsi_4reg): Delete.
7898         (corresponding unnamed define_insn): Delete.
7899         (movmemsi_2reg): Delete.
7900         (corresponding unnamed define_insn): Delete.
7901         (movmemsi_1reg): Delete.
7902         (corresponding unnamed define_insn): Delete.
7903         * config/rs6000/rs6000.opt (mno-string): New.
7904         (mstring): Replace by deprecation warning stub.
7905         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
7907 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
7909         * regrename.c (regrename_do_replace): If replacing the same
7910         reg multiple times, try to reuse last created gen_raw_REG.
7912         PR debug/81155
7913         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
7914         main to workaround a bug in GDB.
7916 2018-01-12  Tom de Vries  <tom@codesourcery.com>
7918         PR target/83737
7919         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
7921 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
7923         PR rtl-optimization/80481
7924         * ira-color.c (get_cap_member): New function.
7925         (allocnos_conflict_by_live_ranges_p): Use it.
7926         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
7927         (setup_slot_coalesced_allocno_live_ranges): Ditto.
7929 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
7931         PR target/83628
7932         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
7933         (*saddl_se_1): Ditto.
7934         (*ssubsi_1): Ditto.
7935         (*ssubl_se_1): Ditto.
7937 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
7939         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
7940         rather than wi::to_widest for DR_INITs.
7941         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
7942         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
7943         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
7944         INTEGER_CSTs.
7945         (vect_analyze_group_access_1): Note that here.
7947 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
7949         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
7950         polynomial type sizes.
7952 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
7954         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
7955         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
7956         (gimple_add_tmp_var): Likewise.
7958 2018-01-12  Martin Liska  <mliska@suse.cz>
7960         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
7961         (gimple_alloc_sizes): Likewise.
7962         (dump_gimple_statistics): Use PRIu64 in printf format.
7963         * gimple.h: Change uint64_t to int.
7965 2018-01-12  Martin Liska  <mliska@suse.cz>
7967         * tree-core.h: Use uint64_t instead of int.
7968         * tree.c (tree_node_counts): Likewise.
7969         (tree_node_sizes): Likewise.
7970         (dump_tree_statistics): Use PRIu64 in printf format.
7972 2018-01-12  Martin Liska  <mliska@suse.cz>
7974         * Makefile.in: As qsort_chk is implemented in vec.c, add
7975         vec.o to linkage of gencfn-macros.
7976         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
7977         passing the info to record_node_allocation_statistics.
7978         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
7979         and pass the info.
7980         * ggc-common.c (struct ggc_usage): Add operator== and use
7981         it in operator< and compare function.
7982         * mem-stats.h (struct mem_usage): Likewise.
7983         * vec.c (struct vec_usage): Remove operator< and compare
7984         function. Can be simply inherited.
7986 2018-01-12  Martin Jambor  <mjambor@suse.cz>
7988         PR target/81616
7989         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
7990         * tree-ssa-math-opts.c: Include domwalk.h.
7991         (convert_mult_to_fma_1): New function.
7992         (fma_transformation_info): New type.
7993         (fma_deferring_state): Likewise.
7994         (cancel_fma_deferring): New function.
7995         (result_of_phi): Likewise.
7996         (last_fma_candidate_feeds_initial_phi): Likewise.
7997         (convert_mult_to_fma): Added deferring logic, split actual
7998         transformation to convert_mult_to_fma_1.
7999         (math_opts_dom_walker): New type.
8000         (math_opts_dom_walker::after_dom_children): New method, body moved
8001         here from pass_optimize_widening_mul::execute, added deferring logic
8002         bits.
8003         (pass_optimize_widening_mul::execute): Moved most of code to
8004         math_opts_dom_walker::after_dom_children.
8005         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
8006         * config/i386/i386.c (ix86_option_override_internal): Added
8007         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
8009 2018-01-12  Richard Biener  <rguenther@suse.de>
8011         PR debug/83157
8012         * dwarf2out.c (gen_variable_die): Do not reset old_die for
8013         inline instance vars.
8015 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
8017         PR target/81819
8018         * config/rx/rx.c (rx_is_restricted_memory_address):
8019         Handle SUBREG case.
8021 2018-01-12  Richard Biener  <rguenther@suse.de>
8023         PR tree-optimization/80846
8024         * target.def (split_reduction): New target hook.
8025         * targhooks.c (default_split_reduction): New function.
8026         * targhooks.h (default_split_reduction): Declare.
8027         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
8028         target requests first reduce vectors by combining low and high
8029         parts.
8030         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
8031         (get_vectype_for_scalar_type_and_size): Export.
8032         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
8033         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
8034         * doc/tm.texi: Regenerate.
8035         * config/i386/i386.c (ix86_split_reduction): Implement
8036         TARGET_VECTORIZE_SPLIT_REDUCTION.
8038 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
8040         PR target/83368
8041         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
8042         in PIC mode except for TARGET_VXWORKS_RTP.
8043         * config/sparc/sparc.c: Include cfgrtl.h.
8044         (TARGET_INIT_PIC_REG): Define.
8045         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
8046         (sparc_pic_register_p): New predicate.
8047         (sparc_legitimate_address_p): Use it.
8048         (sparc_legitimize_pic_address): Likewise.
8049         (sparc_delegitimize_address): Likewise.
8050         (sparc_mode_dependent_address_p): Likewise.
8051         (gen_load_pcrel_sym): Remove 4th parameter.
8052         (load_got_register): Adjust call to above.  Remove obsolete stuff.
8053         (sparc_expand_prologue): Do not call load_got_register here.
8054         (sparc_flat_expand_prologue): Likewise.
8055         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
8056         (sparc_use_pseudo_pic_reg): New function.
8057         (sparc_init_pic_reg): Likewise.
8058         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8059         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
8061 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
8063         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
8064         Add item for branch_cost.
8066 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
8068         PR rtl-optimization/83565
8069         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
8070         not extend the result to a larger mode for rotate operations.
8071         (num_sign_bit_copies1): Likewise.
8073 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8075         PR target/40411
8076         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
8077         -symbolic.
8078         Use values-Xc.o for -pedantic.
8079         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
8081 2018-01-12  Martin Liska  <mliska@suse.cz>
8083         PR ipa/83054
8084         * ipa-devirt.c (final_warning_record::grow_type_warnings):
8085         New function.
8086         (possible_polymorphic_call_targets): Use it.
8087         (ipa_devirt): Likewise.
8089 2018-01-12  Martin Liska  <mliska@suse.cz>
8091         * profile-count.h (enum profile_quality): Use 0 as invalid
8092         enum value of profile_quality.
8094 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
8096         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
8097         -mext-string options.
8099 2018-01-12  Richard Biener  <rguenther@suse.de>
8101         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
8102         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
8103         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
8104         Likewise.
8105         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
8107 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
8109         * configure.ac (--with-long-double-format): Add support for the
8110         configuration option to change the default long double format on
8111         PowerPC systems.
8112         * config.gcc (powerpc*-linux*-*): Likewise.
8113         * configure: Regenerate.
8114         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
8115         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
8116         used without modification.
8118 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8120         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
8121         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
8122         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
8123         MISC_BUILTIN_SPEC_BARRIER.
8124         (rs6000_init_builtins): Likewise.
8125         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
8126         enum value.
8127         (speculation_barrier): New define_insn.
8128         * doc/extend.texi: Document __builtin_speculation_barrier.
8130 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
8132         PR target/83203
8133         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
8134         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
8135         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
8136         iterators.
8137         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
8138         integral modes instead of "ss" and "sd".
8139         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
8140         vectors with 32-bit and 64-bit elements.
8141         (vecdupssescalarmodesuffix): New mode attribute.
8142         (vec_dup<mode>): Use it.
8144 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
8146         PR target/83330
8147         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
8148         frame if argument is passed on stack.
8150 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
8152         PR target/82682
8153         * ree.c (combine_reaching_defs): Optimize also
8154         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
8155         reg2=any_extend(exp); reg1=reg2;, formatting fix.
8157 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
8159         PR middle-end/83189
8160         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
8162 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
8164         PR middle-end/83718
8165         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
8166         after they are computed.
8168 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
8170         PR tree-optimization/83695
8171         * gimple-loop-linterchange.cc
8172         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
8173         reset cached scev information after interchange.
8174         (pass_linterchange::execute): Remove call to scev_reset_htab.
8176 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8178         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
8179         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
8180         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
8181         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
8182         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
8183         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
8184         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
8185         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
8186         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
8187         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
8188         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
8189         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
8190         (V_lane_reg): Likewise.
8191         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
8192         New define_expand.
8193         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
8194         (vfmal_lane_low<mode>_intrinsic,
8195         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
8196         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
8197         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
8198         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
8199         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
8200         vfmsl_lane_high<mode>_intrinsic): New define_insns.
8202 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8204         * config/arm/arm-cpus.in (fp16fml): New feature.
8205         (ALL_SIMD): Add fp16fml.
8206         (armv8.2-a): Add fp16fml as an option.
8207         (armv8.3-a): Likewise.
8208         (armv8.4-a): Add fp16fml as part of fp16.
8209         * config/arm/arm.h (TARGET_FP16FML): Define.
8210         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
8211         when appropriate.
8212         * config/arm/arm-modes.def (V2HF): Define.
8213         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
8214         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
8215         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
8216         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
8217         vfmsl_low, vfmsl_high): New set of builtins.
8218         * config/arm/iterators.md (PLUSMINUS): New code iterator.
8219         (vfml_op): New code attribute.
8220         (VFMLHALVES): New int iterator.
8221         (VFML, VFMLSEL): New mode attributes.
8222         (V_reg): Define mapping for V2HF.
8223         (V_hi, V_lo): New mode attributes.
8224         (VF_constraint): Likewise.
8225         (vfml_half, vfml_half_selector): New int attributes.
8226         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
8227         define_expand.
8228         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
8229         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
8230         New define_insn.
8231         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
8232         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
8233         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
8234         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
8235         documentation.
8236         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
8237         Document new effective target and option set.
8239 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8241         * config/arm/arm-cpus.in (armv8_4): New feature.
8242         (ARMv8_4a): New fgroup.
8243         (armv8.4-a): New arch.
8244         * config/arm/arm-tables.opt: Regenerate.
8245         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
8246         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
8247         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
8248         Add matching rules for -march=armv8.4-a and extensions.
8249         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
8251 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
8253         PR target/81821
8254         * config/rx/rx.md (BW): New mode attribute.
8255         (sync_lock_test_and_setsi): Add mode suffix to insn output.
8257 2018-01-11  Richard Biener  <rguenther@suse.de>
8259         PR tree-optimization/83435
8260         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
8261         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
8262         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
8264 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8265             Alan Hayward  <alan.hayward@arm.com>
8266             David Sherwood  <david.sherwood@arm.com>
8268         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
8269         field.
8270         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
8271         (aarch64_print_address_internal): Use it to check for a zero offset.
8273 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8274             Alan Hayward  <alan.hayward@arm.com>
8275             David Sherwood  <david.sherwood@arm.com>
8277         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
8278         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
8279         Return a poly_int64 rather than a HOST_WIDE_INT.
8280         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
8281         rather than a HOST_WIDE_INT.
8282         * config/aarch64/aarch64.h (aarch64_frame): Protect with
8283         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
8284         hard_fp_offset, frame_size, initial_adjust, callee_offset and
8285         final_offset from HOST_WIDE_INT to poly_int64.
8286         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
8287         to_constant when getting the number of units in an Advanced SIMD
8288         mode.
8289         (aarch64_builtin_vectorized_function): Check for a constant number
8290         of units.
8291         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
8292         GET_MODE_SIZE.
8293         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
8294         attribute instead of GET_MODE_NUNITS.
8295         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
8296         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
8297         GET_MODE_SIZE for fixed-size registers.
8298         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
8299         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
8300         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
8301         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
8302         (aarch64_print_operand, aarch64_print_address_internal)
8303         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
8304         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
8305         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
8306         Handle polynomial GET_MODE_SIZE.
8307         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
8308         wider than SImode without modification.
8309         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
8310         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
8311         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
8312         passing and returning SVE modes.
8313         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
8314         rather than GEN_INT.
8315         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
8316         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
8317         (aarch64_allocate_and_probe_stack_space): Likewise.
8318         (aarch64_layout_frame): Cope with polynomial offsets.
8319         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
8320         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
8321         polynomial offsets.
8322         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
8323         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
8324         poly_int64 rather than a HOST_WIDE_INT.
8325         (aarch64_get_separate_components, aarch64_process_components)
8326         (aarch64_expand_prologue, aarch64_expand_epilogue)
8327         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
8328         (aarch64_anchor_offset): New function, split out from...
8329         (aarch64_legitimize_address): ...here.
8330         (aarch64_builtin_vectorization_cost): Handle polynomial
8331         TYPE_VECTOR_SUBPARTS.
8332         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
8333         GET_MODE_NUNITS.
8334         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
8335         number of elements from the PARALLEL rather than the mode.
8336         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
8337         rather than GET_MODE_BITSIZE.
8338         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
8339         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
8340         (aarch64_expand_vec_perm_const_1): Handle polynomial
8341         d->perm.length () and d->perm elements.
8342         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
8343         Apply to_constant to d->perm elements.
8344         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
8345         polynomial CONST_VECTOR_NUNITS.
8346         (aarch64_move_pointer): Take amount as a poly_int64 rather
8347         than an int.
8348         (aarch64_progress_pointer): Avoid temporary variable.
8349         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
8350         the mode attribute instead of GET_MODE.
8352 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8353             Alan Hayward  <alan.hayward@arm.com>
8354             David Sherwood  <david.sherwood@arm.com>
8356         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
8357         x exists before using it.
8358         (aarch64_add_constant_internal): Rename to...
8359         (aarch64_add_offset_1): ...this.  Replace regnum with separate
8360         src and dest rtxes.  Handle the case in which they're different,
8361         including when the offset is zero.  Replace scratchreg with an rtx.
8362         Use 2 additions if there is no spare register into which we can
8363         move a 16-bit constant.
8364         (aarch64_add_constant): Delete.
8365         (aarch64_add_offset): Replace reg with separate src and dest
8366         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
8367         Use aarch64_add_offset_1.
8368         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
8369         an rtx rather than an int.  Take the delta as a poly_int64
8370         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
8371         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
8372         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
8373         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
8374         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
8375         and aarch64_add_sp.
8376         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
8377         aarch64_add_constant.
8379 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8381         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
8382         Use scalar_float_mode.
8384 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8386         * config/aarch64/aarch64-simd.md
8387         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
8388         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
8389         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
8390         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
8391         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
8392         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
8393         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
8394         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
8395         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
8396         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
8398 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8400         PR target/83514
8401         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
8402         targ_options->x_arm_arch_string is non NULL.
8404 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
8406         * config/aarch64/aarch64.h
8407         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
8409 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
8411         PR target/82096
8412         * expmed.c (emit_store_flag_force): Swap if const op0
8413         and change VOIDmode to mode of op0.
8415 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
8417         PR rtl-optimization/83761
8418         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
8419         than bytes to mode_for_size.
8421 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
8423         PR middle-end/83189
8424         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
8425         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
8426         profile.
8428 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
8430         PR middle-end/83575
8431         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
8432         when in layout mode.
8433         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
8434         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
8435         partition fixup.
8437 2018-01-10  Michael Collison  <michael.collison@arm.com>
8439         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
8440         * config/aarch64/aarch64-option-extension.def: Add
8441         AARCH64_OPT_EXTENSION of 'fp16fml'.
8442         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
8443         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
8444         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
8445         * config/aarch64/constraints.md (Ui7): New constraint.
8446         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
8447         (VFMLA_SEL_W): Ditto.
8448         (f16quad): Ditto.
8449         (f16mac1): Ditto.
8450         (VFMLA16_LOW): New int iterator.
8451         (VFMLA16_HIGH): Ditto.
8452         (UNSPEC_FMLAL): New unspec.
8453         (UNSPEC_FMLSL): Ditto.
8454         (UNSPEC_FMLAL2): Ditto.
8455         (UNSPEC_FMLSL2): Ditto.
8456         (f16mac): New code attribute.
8457         * config/aarch64/aarch64-simd-builtins.def
8458         (aarch64_fmlal_lowv2sf): Ditto.
8459         (aarch64_fmlsl_lowv2sf): Ditto.
8460         (aarch64_fmlalq_lowv4sf): Ditto.
8461         (aarch64_fmlslq_lowv4sf): Ditto.
8462         (aarch64_fmlal_highv2sf): Ditto.
8463         (aarch64_fmlsl_highv2sf): Ditto.
8464         (aarch64_fmlalq_highv4sf): Ditto.
8465         (aarch64_fmlslq_highv4sf): Ditto.
8466         (aarch64_fmlal_lane_lowv2sf): Ditto.
8467         (aarch64_fmlsl_lane_lowv2sf): Ditto.
8468         (aarch64_fmlal_laneq_lowv2sf): Ditto.
8469         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
8470         (aarch64_fmlalq_lane_lowv4sf): Ditto.
8471         (aarch64_fmlsl_lane_lowv4sf): Ditto.
8472         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
8473         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
8474         (aarch64_fmlal_lane_highv2sf): Ditto.
8475         (aarch64_fmlsl_lane_highv2sf): Ditto.
8476         (aarch64_fmlal_laneq_highv2sf): Ditto.
8477         (aarch64_fmlsl_laneq_highv2sf): Ditto.
8478         (aarch64_fmlalq_lane_highv4sf): Ditto.
8479         (aarch64_fmlsl_lane_highv4sf): Ditto.
8480         (aarch64_fmlalq_laneq_highv4sf): Ditto.
8481         (aarch64_fmlsl_laneq_highv4sf): Ditto.
8482         * config/aarch64/aarch64-simd.md:
8483         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
8484         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
8485         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
8486         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
8487         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
8488         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
8489         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
8490         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
8491         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
8492         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
8493         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
8494         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
8495         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
8496         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
8497         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
8498         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
8499         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
8500         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
8501         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
8502         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
8503         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
8504         (vfmlsl_low_u32): Ditto.
8505         (vfmlalq_low_u32): Ditto.
8506         (vfmlslq_low_u32): Ditto.
8507         (vfmlal_high_u32): Ditto.
8508         (vfmlsl_high_u32): Ditto.
8509         (vfmlalq_high_u32): Ditto.
8510         (vfmlslq_high_u32): Ditto.
8511         (vfmlal_lane_low_u32): Ditto.
8512         (vfmlsl_lane_low_u32): Ditto.
8513         (vfmlal_laneq_low_u32): Ditto.
8514         (vfmlsl_laneq_low_u32): Ditto.
8515         (vfmlalq_lane_low_u32): Ditto.
8516         (vfmlslq_lane_low_u32): Ditto.
8517         (vfmlalq_laneq_low_u32): Ditto.
8518         (vfmlslq_laneq_low_u32): Ditto.
8519         (vfmlal_lane_high_u32): Ditto.
8520         (vfmlsl_lane_high_u32): Ditto.
8521         (vfmlal_laneq_high_u32): Ditto.
8522         (vfmlsl_laneq_high_u32): Ditto.
8523         (vfmlalq_lane_high_u32): Ditto.
8524         (vfmlslq_lane_high_u32): Ditto.
8525         (vfmlalq_laneq_high_u32): Ditto.
8526         (vfmlslq_laneq_high_u32): Ditto.
8527         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
8528         (AARCH64_FL_FOR_ARCH8_4): New.
8529         (AARCH64_ISA_F16FML): New ISA flag.
8530         (TARGET_F16FML): New feature flag for fp16fml.
8531         (doc/invoke.texi): Document new fp16fml option.
8533 2018-01-10  Michael Collison  <michael.collison@arm.com>
8535         * config/aarch64/aarch64-builtins.c:
8536         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
8537         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
8538         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
8539         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
8540         (AARCH64_ISA_SHA3): New ISA flag.
8541         (TARGET_SHA3): New feature flag for sha3.
8542         * config/aarch64/iterators.md (sha512_op): New int attribute.
8543         (CRYPTO_SHA512): New int iterator.
8544         (UNSPEC_SHA512H): New unspec.
8545         (UNSPEC_SHA512H2): Ditto.
8546         (UNSPEC_SHA512SU0): Ditto.
8547         (UNSPEC_SHA512SU1): Ditto.
8548         * config/aarch64/aarch64-simd-builtins.def
8549         (aarch64_crypto_sha512hqv2di): New builtin.
8550         (aarch64_crypto_sha512h2qv2di): Ditto.
8551         (aarch64_crypto_sha512su0qv2di): Ditto.
8552         (aarch64_crypto_sha512su1qv2di): Ditto.
8553         (aarch64_eor3qv8hi): Ditto.
8554         (aarch64_rax1qv2di): Ditto.
8555         (aarch64_xarqv2di): Ditto.
8556         (aarch64_bcaxqv8hi): Ditto.
8557         * config/aarch64/aarch64-simd.md:
8558         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
8559         (aarch64_crypto_sha512su0qv2di): Ditto.
8560         (aarch64_crypto_sha512su1qv2di): Ditto.
8561         (aarch64_eor3qv8hi): Ditto.
8562         (aarch64_rax1qv2di): Ditto.
8563         (aarch64_xarqv2di): Ditto.
8564         (aarch64_bcaxqv8hi): Ditto.
8565         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
8566         (vsha512h2q_u64): Ditto.
8567         (vsha512su0q_u64): Ditto.
8568         (vsha512su1q_u64): Ditto.
8569         (veor3q_u16): Ditto.
8570         (vrax1q_u64): Ditto.
8571         (vxarq_u64): Ditto.
8572         (vbcaxq_u16): Ditto.
8573         * config/arm/types.md (crypto_sha512): New type attribute.
8574         (crypto_sha3): Ditto.
8575         (doc/invoke.texi): Document new sha3 option.
8577 2018-01-10  Michael Collison  <michael.collison@arm.com>
8579         * config/aarch64/aarch64-builtins.c:
8580         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
8581         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
8582         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
8583         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
8584         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
8585         (AARCH64_ISA_SM4): New ISA flag.
8586         (TARGET_SM4): New feature flag for sm4.
8587         * config/aarch64/aarch64-simd-builtins.def
8588         (aarch64_sm3ss1qv4si): Ditto.
8589         (aarch64_sm3tt1aq4si): Ditto.
8590         (aarch64_sm3tt1bq4si): Ditto.
8591         (aarch64_sm3tt2aq4si): Ditto.
8592         (aarch64_sm3tt2bq4si): Ditto.
8593         (aarch64_sm3partw1qv4si): Ditto.
8594         (aarch64_sm3partw2qv4si): Ditto.
8595         (aarch64_sm4eqv4si): Ditto.
8596         (aarch64_sm4ekeyqv4si): Ditto.
8597         * config/aarch64/aarch64-simd.md:
8598         (aarch64_sm3ss1qv4si): Ditto.
8599         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
8600         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
8601         (aarch64_sm4eqv4si): Ditto.
8602         (aarch64_sm4ekeyqv4si): Ditto.
8603         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
8604         (sm3part_op): Ditto.
8605         (CRYPTO_SM3TT): Ditto.
8606         (CRYPTO_SM3PART): Ditto.
8607         (UNSPEC_SM3SS1): New unspec.
8608         (UNSPEC_SM3TT1A): Ditto.
8609         (UNSPEC_SM3TT1B): Ditto.
8610         (UNSPEC_SM3TT2A): Ditto.
8611         (UNSPEC_SM3TT2B): Ditto.
8612         (UNSPEC_SM3PARTW1): Ditto.
8613         (UNSPEC_SM3PARTW2): Ditto.
8614         (UNSPEC_SM4E): Ditto.
8615         (UNSPEC_SM4EKEY): Ditto.
8616         * config/aarch64/constraints.md (Ui2): New constraint.
8617         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
8618         * config/arm/types.md (crypto_sm3): New type attribute.
8619         (crypto_sm4): Ditto.
8620         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
8621         (vsm3tt1aq_u32): Ditto.
8622         (vsm3tt1bq_u32): Ditto.
8623         (vsm3tt2aq_u32): Ditto.
8624         (vsm3tt2bq_u32): Ditto.
8625         (vsm3partw1q_u32): Ditto.
8626         (vsm3partw2q_u32): Ditto.
8627         (vsm4eq_u32): Ditto.
8628         (vsm4ekeyq_u32): Ditto.
8629         (doc/invoke.texi): Document new sm4 option.
8631 2018-01-10  Michael Collison  <michael.collison@arm.com>
8633         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
8634         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
8635         (AARCH64_FL_FOR_ARCH8_4): New.
8636         (AARCH64_FL_V8_4): New flag.
8637         (doc/invoke.texi): Document new armv8.4-a option.
8639 2018-01-10  Michael Collison  <michael.collison@arm.com>
8641         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
8642         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
8643         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
8644         * config/aarch64/aarch64-option-extension.def: Add
8645         AARCH64_OPT_EXTENSION of 'sha2'.
8646         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
8647         (crypto): Disable sha2 and aes if crypto disabled.
8648         (crypto): Enable aes and sha2 if enabled.
8649         (simd): Disable sha2 and aes if simd disabled.
8650         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
8651         New flags.
8652         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
8653         (TARGET_SHA2): New feature flag for sha2.
8654         (TARGET_AES): New feature flag for aes.
8655         * config/aarch64/aarch64-simd.md:
8656         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
8657         conditional on TARGET_AES.
8658         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
8659         (aarch64_crypto_sha1hsi): Make pattern conditional
8660         on TARGET_SHA2.
8661         (aarch64_crypto_sha1hv4si): Ditto.
8662         (aarch64_be_crypto_sha1hv4si): Ditto.
8663         (aarch64_crypto_sha1su1v4si): Ditto.
8664         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
8665         (aarch64_crypto_sha1su0v4si): Ditto.
8666         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
8667         (aarch64_crypto_sha256su0v4si): Ditto.
8668         (aarch64_crypto_sha256su1v4si): Ditto.
8669         (doc/invoke.texi): Document new aes and sha2 options.
8671 2018-01-10  Martin Sebor  <msebor@redhat.com>
8673         PR tree-optimization/83781
8674         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
8675         as string arrays.
8677 2018-01-11  Martin Sebor  <msebor@gmail.com>
8678             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8680         PR tree-optimization/83501
8681         PR tree-optimization/81703
8683         * tree-ssa-strlen.c (get_string_cst): Rename...
8684         (get_string_len): ...to this.  Handle global constants.
8685         (handle_char_store): Adjust.
8687 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
8688             Jim Wilson  <jimw@sifive.com>
8690         * config/riscv/riscv-protos.h (riscv_output_return): New.
8691         * config/riscv/riscv.c (struct machine_function): New naked_p field.
8692         (riscv_attribute_table, riscv_output_return),
8693         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
8694         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
8695         (riscv_compute_frame_info): Only compute frame->mask if not a naked
8696         function.
8697         (riscv_expand_prologue): Add early return for naked function.
8698         (riscv_expand_epilogue): Likewise.
8699         (riscv_function_ok_for_sibcall): Return false for naked function.
8700         (riscv_set_current_function): New.
8701         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
8702         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
8703         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
8704         * doc/extend.texi (RISC-V Function Attributes): New.
8706 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
8708         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
8709         check for 128-bit long double before checking TCmode.
8710         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
8711         128-bit long doubles before checking TFmode or TCmode.
8712         (FLOAT128_IBM_P): Likewise.
8714 2018-01-10  Martin Sebor  <msebor@redhat.com>
8716         PR tree-optimization/83671
8717         * builtins.c (c_strlen): Unconditionally return zero for the empty
8718         string.
8719         Use -Warray-bounds for warnings.
8720         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
8721         for non-constant array indices with COMPONENT_REF, arrays of
8722         arrays, and pointers to arrays.
8723         (gimple_fold_builtin_strlen): Determine and set length range for
8724         non-constant character arrays.
8726 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
8728         PR middle-end/81897
8729         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
8730         empty blocks.
8732 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
8734         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
8736 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
8738         PR target/83399
8739         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
8740         VECTOR_MEM_ALTIVEC_OR_VSX_P.
8741         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
8742         indexed_or_indirect_operand predicate.
8743         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
8744         (*vsx_le_perm_load_v8hi): Likewise.
8745         (*vsx_le_perm_load_v16qi): Likewise.
8746         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
8747         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
8748         (*vsx_le_perm_store_v8hi): Likewise.
8749         (*vsx_le_perm_store_v16qi): Likewise.
8750         (eight unnamed splitters): Likewise.
8752 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
8754         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
8755         * config/rs6000/emmintrin.h: Likewise.
8756         * config/rs6000/mmintrin.h: Likewise.
8757         * config/rs6000/xmmintrin.h: Likewise.
8759 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
8761         PR c++/43486
8762         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
8763         "public_flag".
8764         * tree.c (tree_nop_conversion): Return true for location wrapper
8765         nodes.
8766         (maybe_wrap_with_location): New function.
8767         (selftest::check_strip_nops): New function.
8768         (selftest::test_location_wrappers): New function.
8769         (selftest::tree_c_tests): Call it.
8770         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
8771         (maybe_wrap_with_location): New decl.
8772         (EXPR_LOCATION_WRAPPER_P): New macro.
8773         (location_wrapper_p): New inline function.
8774         (tree_strip_any_location_wrapper): New inline function.
8776 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
8778         PR target/83735
8779         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
8780         stack_realign_offset for the largest alignment of stack slot
8781         actually used.
8782         (ix86_find_max_used_stack_alignment): New function.
8783         (ix86_finalize_stack_frame_flags): Use it.  Set
8784         max_used_stack_alignment if we don't realign stack.
8785         * config/i386/i386.h (machine_function): Add
8786         max_used_stack_alignment.
8788 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
8790         * config/arm/arm.opt (-mbranch-cost): New option.
8791         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
8792         account.
8794 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
8796         PR target/83629
8797         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
8798         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
8800 2018-01-10  Richard Biener  <rguenther@suse.de>
8802         PR debug/83765
8803         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
8804         early out so it also covers the case where we have a non-NULL
8805         origin.
8807 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
8809         PR tree-optimization/83753
8810         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
8811         for non-strided grouped accesses if the number of elements is 1.
8813 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
8815         PR target/81616
8816         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
8817         * i386.h (TARGET_USE_GATHER): Define.
8818         * x86-tune.def (X86_TUNE_USE_GATHER): New.
8820 2018-01-10  Martin Liska  <mliska@suse.cz>
8822         PR bootstrap/82831
8823         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
8824         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
8825         partitioning.
8826         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
8827         CLEANUP_NO_PARTITIONING is not set.
8829 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
8831         * doc/rtl.texi: Remove documentation of (const ...) wrappers
8832         for vectors, as a partial revert of r254296.
8833         * rtl.h (const_vec_p): Delete.
8834         (const_vec_duplicate_p): Don't test for vector CONSTs.
8835         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
8836         * expmed.c (make_tree): Likewise.
8838         Revert:
8839         * common.md (E, F): Use CONSTANT_P instead of checking for
8840         CONST_VECTOR.
8841         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
8842         checking for CONST_VECTOR.
8844 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
8846         PR middle-end/83575
8847         * predict.c (force_edge_cold): Handle in more sane way edges
8848         with no prediction.
8850 2018-01-09  Carl Love  <cel@us.ibm.com>
8852         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
8853         V4SI, V4SF types.
8854         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
8855         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
8856         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
8857         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
8858         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
8859         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
8860         * config/rs6000/rs6000-protos.h: Add extern defition for
8861         rs6000_generate_float2_double_code.
8862         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
8863         function.
8864         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
8865         (float2_v2df): Add define_expand.
8867 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
8869         PR target/83628
8870         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
8871         op_mode in the force_to_mode call.
8873 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
8875         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
8876         instead of checking each element individually.
8877         (aarch64_evpc_uzp): Likewise.
8878         (aarch64_evpc_zip): Likewise.
8879         (aarch64_evpc_ext): Likewise.
8880         (aarch64_evpc_rev): Likewise.
8881         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
8882         instead of checking each element individually.  Return true without
8883         generating rtl if
8884         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
8885         whether all selected elements come from the same input, instead of
8886         checking each element individually.  Remove calls to gen_rtx_REG,
8887         start_sequence and end_sequence and instead assert that no rtl is
8888         generated.
8890 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
8892         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
8893         order of HIGH and CONST checks.
8895 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
8897         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
8898         if the destination isn't an SSA_NAME.
8900 2018-01-09  Richard Biener  <rguenther@suse.de>
8902         PR tree-optimization/83668
8903         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
8904         move prologue...
8905         (canonicalize_loop_form): ... here, renamed from ...
8906         (canonicalize_loop_closed_ssa_form): ... this and amended to
8907         swap successor edges for loop exit blocks to make us use
8908         the RPO order we need for initial schedule generation.
8910 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
8912         PR tree-optimization/64811
8913         * match.pd: When optimizing comparisons with Inf, avoid
8914         introducing or losing exceptions from comparisons with NaN.
8916 2018-01-09  Martin Liska  <mliska@suse.cz>
8918         PR sanitizer/82517
8919         * asan.c (shadow_mem_size): Add gcc_assert.
8921 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
8923         Don't save registers in main().
8925         PR target/83738
8926         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
8927         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
8928         * config/avr/avr.c (avr_set_current_function): Don't error if
8929         naked, OS_task or OS_main are specified at the same time.
8930         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
8931         OS_main.
8932         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
8933         attribute.
8934         * common/config/avr/avr-common.c (avr_option_optimization_table):
8935         Switch on -mmain-is-OS_task for optimizing compilations.
8937 2018-01-09  Richard Biener  <rguenther@suse.de>
8939         PR tree-optimization/83572
8940         * graphite.c: Include cfganal.h.
8941         (graphite_transform_loops): Connect infinite loops to exit
8942         and remove fake edges at the end.
8944 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
8946         * ipa-inline.c (edge_badness): Revert accidental checkin.
8948 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
8950         PR ipa/80763
8951         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
8952         symbols; not inline clones.
8954 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
8956         PR target/83507
8957         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
8958         hard registers.  Formatting fixes.
8960         PR preprocessor/83722
8961         * gcc.c (try_generate_repro): Pass
8962         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
8963         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
8964         do_report_bug.
8966 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
8967             Kito Cheng  <kito.cheng@gmail.com>
8969         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
8970         (riscv_leaf_function_p): Delete.
8971         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
8973 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
8975         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
8976         function.
8977         (do_ifelse): New function.
8978         (do_isel): New function.
8979         (do_sub3): New function.
8980         (do_add3): New function.
8981         (do_load_mask_compare): New function.
8982         (do_overlap_load_compare): New function.
8983         (expand_compare_loop): New function.
8984         (expand_block_compare): Call expand_compare_loop() when appropriate.
8985         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
8986         option description.
8987         (-mblock-compare-inline-loop-limit): New option.
8989 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8991         PR target/83677
8992         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
8993         Reverse order of second and third operands in first alternative.
8994         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
8995         of first and second elements in UNSPEC_VPERMR vector.
8996         (altivec_expand_vec_perm_le): Likewise.
8998 2018-01-08  Jeff Law  <law@redhat.com>
9000         PR rtl-optimizatin/81308
9001         * tree-switch-conversion.c (cfg_altered): New file scoped static.
9002         (process_switch): If group_case_labels makes a change, then set
9003         cfg_altered.
9004         (pass_convert_switch::execute): If a switch is converted, then
9005         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
9007         PR rtl-optimization/81308
9008         * recog.c (split_all_insns): Conditionally cleanup the CFG after
9009         splitting insns.
9011 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
9013         PR target/83663 - Revert r255946
9014         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
9015         generation for cases where splatting a value is not useful.
9016         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
9017         across a vec_duplicate and a paradoxical subreg forming a vector
9018         mode to a vec_concat.
9020 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9022         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
9023         -march=armv8.3-a variants.
9024         * config/arm/t-multilib: Likewise.
9025         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
9027 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9029         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
9030         to generate rtl.
9031         (cceq_ior_compare_complement): Give it a name so I can use it, and
9032         change boolean_or_operator predicate to boolean_operator so it can
9033         be used to generate a crand.
9034         (eqne): New code iterator.
9035         (bd/bd_neg): New code_attrs.
9036         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
9037         a single define_insn.
9038         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
9039         decrement (bdnzt/bdnzf/bdzt/bdzf).
9040         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
9041         with the new names of the branch decrement patterns, and added the
9042         names of the branch decrement conditional patterns.
9044 2018-01-08  Richard Biener  <rguenther@suse.de>
9046         PR tree-optimization/83563
9047         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
9048         cache.
9050 2018-01-08  Richard Biener  <rguenther@suse.de>
9052         PR middle-end/83713
9053         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
9055 2018-01-08  Richard Biener  <rguenther@suse.de>
9057         PR tree-optimization/83685
9058         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
9059         references to abnormals.
9061 2018-01-08  Richard Biener  <rguenther@suse.de>
9063         PR lto/83719
9064         * dwarf2out.c (output_indirect_strings): Handle empty
9065         skeleton_debug_str_hash.
9066         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
9068 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
9070         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
9071         (emit_store_direct): Likewise.
9072         (arc_trampoline_adjust_address): Likewise.
9073         (arc_asm_trampoline_template): New function.
9074         (arc_initialize_trampoline): Use asm_trampoline_template.
9075         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
9076         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
9077         * config/arc/arc.md (flush_icache): Delete pattern.
9079 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
9081         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
9082         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
9083         munaligned-access.
9085 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
9087         PR target/83681
9088         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
9089         by not USED_FOR_TARGET.
9090         (make_pass_resolve_sw_modes): Likewise.
9092 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
9094         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
9095         USED_FOR_TARGET.
9097 2018-01-08  Richard Biener  <rguenther@suse.de>
9099         PR middle-end/83580
9100         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
9102 2018-01-08  Richard Biener  <rguenther@suse.de>
9104         PR middle-end/83517
9105         * match.pd ((t * 2) / 2) -> t): Add missing :c.
9107 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
9109         PR middle-end/81897
9110         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
9111         basic blocks with a small number of successors.
9112         (convert_control_dep_chain_into_preds): Improve handling of
9113         forwarder blocks.
9114         (dump_predicates): Split apart into...
9115         (dump_pred_chain): ...here...
9116         (dump_pred_info): ...and here.
9117         (can_one_predicate_be_invalidated_p): Add debugging printfs.
9118         (can_chain_union_be_invalidated_p): Improve check for invalidation
9119         of paths.
9120         (uninit_uses_cannot_happen): Avoid unnecessary if
9121         convert_control_dep_chain_into_preds yielded nothing.
9123 2018-01-06  Martin Sebor  <msebor@redhat.com>
9125         PR tree-optimization/83640
9126         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
9127         subtracting negative offset from size.
9128         (builtin_access::overlap): Adjust offset bounds of the access to fall
9129         within the size of the object if possible.
9131 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
9133         PR rtl-optimization/83699
9134         * expmed.c (extract_bit_field_1): Restrict the vector usage of
9135         extract_bit_field_as_subreg to cases in which the extracted
9136         value is also a vector.
9138         * lra-constraints.c (process_alt_operands): Test for the equivalence
9139         substitutions when detecting a possible reload cycle.
9141 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
9143         PR debug/83480
9144         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
9145         by default if flag_selective_schedling{,2}.  Formatting fixes.
9147         PR rtl-optimization/83682
9148         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
9149         if it has non-VECTOR_MODE element mode.
9150         (vec_duplicate_p): Likewise.
9152         PR middle-end/83694
9153         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
9154         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
9156 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
9158         PR target/83604
9159         * config/i386/i386-builtin.def
9160         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
9161         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
9162         Require also OPTION_MASK_ISA_AVX512F in addition to
9163         OPTION_MASK_ISA_GFNI.
9164         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
9165         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
9166         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
9167         to OPTION_MASK_ISA_GFNI.
9168         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
9169         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
9170         OPTION_MASK_ISA_AVX512BW.
9171         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
9172         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
9173         addition to OPTION_MASK_ISA_GFNI.
9174         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
9175         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
9176         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
9177         to OPTION_MASK_ISA_GFNI.
9178         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
9179         a requirement for all ISAs rather than any of them with a few
9180         exceptions.
9181         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
9182         processing.
9183         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
9184         bitmasks to be enabled with 3 exceptions, instead of requiring any
9185         enabled ISA with lots of exceptions.
9186         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
9187         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
9188         Change avx512bw in isa attribute to avx512f.
9189         * config/i386/sgxintrin.h: Add license boilerplate.
9190         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
9191         to __AVX512F__ and __AVX512VL to __AVX512VL__.
9192         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
9193         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
9194         defined.
9195         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
9196         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
9197         temporarily sse2 rather than sse if not enabled already.
9199         PR target/83604
9200         * config/i386/sse.md (VI248_VLBW): Rename to ...
9201         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
9202         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
9203         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
9204         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
9205         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
9206         mode iterator instead of VI248_VLBW.
9208 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
9210         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
9211         (record_modified): Skip clobbers; add debug output.
9212         (param_change_prob): Use sreal frequencies.
9214 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
9216         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
9217         punt for user-aligned variables.
9219 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
9221         * tree-chrec.c (chrec_contains_symbols): Return true for
9222         POLY_INT_CST.
9224 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
9226         PR target/82439
9227         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
9228         of (x|y) == x for BICS pattern.
9230 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
9232         PR tree-optimization/83605
9233         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
9234         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
9235         can throw.
9237 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
9239         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
9240         * config/epiphany/rtems.h: New file.
9242 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
9243             Uros Bizjak  <ubizjak@gmail.com>
9245         PR target/83554
9246         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
9247         QIreg_operand instead of register_operand predicate.
9248         * config/i386/i386.c (ix86_rop_should_change_byte_p,
9249         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
9250         comments instead of -fmitigate[-_]rop.
9252 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9254         PR bootstrap/81926
9255         * cgraphunit.c (symbol_table::compile): Switch to text_section
9256         before calling assembly_start debug hook.
9257         * run-rtl-passes.c (run_rtl_passes): Likewise.
9258         Include output.h.
9260 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9262         * tree-vrp.c (extract_range_from_binary_expr_1): Check
9263         range_int_cst_p rather than !symbolic_range_p before calling
9264         extract_range_from_multiplicative_op_1.
9266 2018-01-04  Jeff Law  <law@redhat.com>
9268         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
9269         redundant test in assertion.
9271 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9273         * doc/rtl.texi: Document machine_mode wrapper classes.
9275 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9277         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
9278         using tree_to_uhwi.
9280 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9282         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
9283         the VEC_PERM_EXPR fold to fail.
9285 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
9287         PR debug/83585
9288         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
9289         to switched_sections.
9291 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9293         PR target/83680
9294         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
9295         test for d.testing.
9297 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
9299         PR target/83387
9300         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
9301         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
9303 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
9305         PR debug/83666
9306         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
9307         is BLKmode and bitpos not zero or mode change is needed.
9309 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
9311         PR target/83675
9312         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
9313         TARGET_VIS2.
9315 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
9317         PR target/83628
9318         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
9319         instead of MULT rtx.  Update all corresponding splitters.
9320         (*saddl_se): Ditto.
9321         (*ssub<modesuffix>): Ditto.
9322         (*ssubl_se): Ditto.
9323         (*cmp_sadd_di): Update split patterns.
9324         (*cmp_sadd_si): Ditto.
9325         (*cmp_sadd_sidi): Ditto.
9326         (*cmp_ssub_di): Ditto.
9327         (*cmp_ssub_si): Ditto.
9328         (*cmp_ssub_sidi): Ditto.
9329         * config/alpha/predicates.md (const23_operand): New predicate.
9330         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
9331         Look for ASHIFT, not MULT inner operand.
9332         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
9334 2018-01-04  Martin Liska  <mliska@suse.cz>
9336         PR gcov-profile/83669
9337         * gcov.c (output_intermediate_file): Add version to intermediate
9338         gcov file.
9339         * doc/gcov.texi: Document new field 'version' in intermediate
9340         file format. Fix location of '-k' option of gcov command.
9342 2018-01-04  Martin Liska  <mliska@suse.cz>
9344         PR ipa/82352
9345         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
9347 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
9349         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
9351 2018-01-03  Martin Sebor  <msebor@redhat.com>
9353         PR tree-optimization/83655
9354         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
9355         checking calls with invalid arguments.
9357 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9359         * tree-vect-stmts.c (vect_get_store_rhs): New function.
9360         (vectorizable_mask_load_store): Delete.
9361         (vectorizable_call): Return false for masked loads and stores.
9362         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
9363         instead of gimple_assign_rhs1.
9364         (vectorizable_load): Handle IFN_MASK_LOAD.
9365         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
9367 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9369         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
9370         split out from..,
9371         (vectorizable_mask_load_store): ...here.
9372         (vectorizable_load): ...and here.
9374 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9376         * tree-vect-stmts.c (vect_build_all_ones_mask)
9377         (vect_build_zero_merge_argument): New functions, split out from...
9378         (vectorizable_load): ...here.
9380 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9382         * tree-vect-stmts.c (vect_check_store_rhs): New function,
9383         split out from...
9384         (vectorizable_mask_load_store): ...here.
9385         (vectorizable_store): ...and here.
9387 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9389         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
9390         split out from...
9391         (vectorizable_mask_load_store): ...here.
9393 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9395         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
9396         (vect_model_store_cost): Take a vec_load_store_type instead of a
9397         vect_def_type.
9398         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
9399         (vect_model_store_cost): Take a vec_load_store_type instead of a
9400         vect_def_type.
9401         (vectorizable_mask_load_store): Update accordingly.
9402         (vectorizable_store): Likewise.
9403         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
9405 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9407         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
9408         IFN_MASK_LOAD calls here rather than...
9409         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
9411 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9412             Alan Hayward  <alan.hayward@arm.com>
9413             David Sherwood  <david.sherwood@arm.com>
9415         * expmed.c (extract_bit_field_1): For vector extracts,
9416         fall back to extract_bit_field_as_subreg if vec_extract
9417         isn't available.
9419 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9420             Alan Hayward  <alan.hayward@arm.com>
9421             David Sherwood  <david.sherwood@arm.com>
9423         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
9424         they are variable or constant sized.
9425         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
9426         slots for constant-sized data.
9428 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9429             Alan Hayward  <alan.hayward@arm.com>
9430             David Sherwood  <david.sherwood@arm.com>
9432         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
9433         handling COND_EXPRs with boolean comparisons, try to find a better
9434         basis for the mask type than the boolean itself.
9436 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9438         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
9439         is calculated and how it can be overridden.
9440         * genmodes.c (max_bitsize_mode_any_mode): New variable.
9441         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
9442         if defined.
9443         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
9444         if nonzero.
9446 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9447             Alan Hayward  <alan.hayward@arm.com>
9448             David Sherwood  <david.sherwood@arm.com>
9450         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
9451         Remove the mode argument.
9452         (aarch64_simd_valid_immediate): Remove the mode and inverse
9453         arguments.
9454         * config/aarch64/iterators.md (bitsize): New iterator.
9455         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
9456         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
9457         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
9458         aarch64_simd_valid_immediate.
9459         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
9460         (aarch64_reg_or_bic_imm): Likewise.
9461         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
9462         with an insn_type enum and msl with a modifier_type enum.
9463         Replace element_width with a scalar_mode.  Change the shift
9464         to unsigned int.  Add constructors for scalar_float_mode and
9465         scalar_int_mode elements.
9466         (aarch64_vect_float_const_representable_p): Delete.
9467         (aarch64_can_const_movi_rtx_p)
9468         (aarch64_simd_scalar_immediate_valid_for_move)
9469         (aarch64_simd_make_constant): Update call to
9470         aarch64_simd_valid_immediate.
9471         (aarch64_advsimd_valid_immediate_hs): New function.
9472         (aarch64_advsimd_valid_immediate): Likewise.
9473         (aarch64_simd_valid_immediate): Remove mode and inverse
9474         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
9475         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
9476         and aarch64_float_const_representable_p on the result.
9477         (aarch64_output_simd_mov_immediate): Remove mode argument.
9478         Update call to aarch64_simd_valid_immediate and use of
9479         simd_immediate_info.
9480         (aarch64_output_scalar_simd_mov_immediate): Update call
9481         accordingly.
9483 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9484             Alan Hayward  <alan.hayward@arm.com>
9485             David Sherwood  <david.sherwood@arm.com>
9487         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
9488         (mode_nunits): Likewise CONST_MODE_NUNITS.
9489         * machmode.def (ADJUST_NUNITS): Document.
9490         * genmodes.c (mode_data::need_nunits_adj): New field.
9491         (blank_mode): Update accordingly.
9492         (adj_nunits): New variable.
9493         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
9494         parameter.
9495         (emit_mode_size_inline): Set need_bytesize_adj for all modes
9496         listed in adj_nunits.
9497         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
9498         listed in adj_nunits.  Don't emit case statements for such modes.
9499         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
9500         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
9501         nothing if adj_nunits is nonnull.
9502         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
9503         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
9504         (emit_mode_fbit): Update use of print_maybe_const_decl.
9505         (emit_move_size): Likewise.  Treat the array as non-const
9506         if adj_nunits.
9507         (emit_mode_adjustments): Handle adj_nunits.
9509 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9511         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
9512         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
9513         (VECTOR_MODES): Use it.
9514         (make_vector_modes): Take the prefix as an argument.
9516 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9517             Alan Hayward  <alan.hayward@arm.com>
9518             David Sherwood  <david.sherwood@arm.com>
9520         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
9521         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
9522         for MODE_VECTOR_BOOL.
9523         * machmode.def (VECTOR_BOOL_MODE): Document.
9524         * genmodes.c (VECTOR_BOOL_MODE): New macro.
9525         (make_vector_bool_mode): New function.
9526         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
9527         MODE_VECTOR_BOOL.
9528         * lto-streamer-in.c (lto_input_mode_table): Likewise.
9529         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
9530         Likewise.
9531         * stor-layout.c (int_mode_for_mode): Likewise.
9532         * tree.c (build_vector_type_for_mode): Likewise.
9533         * varasm.c (output_constant_pool_2): Likewise.
9534         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
9535         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
9536         for MODE_VECTOR_BOOL.
9537         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
9538         of mode class checks.
9539         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
9540         instead of a list of mode class checks.
9541         (expand_vector_scalar_condition): Likewise.
9542         (type_for_widest_vector_mode): Handle BImode as an inner mode.
9544 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9545             Alan Hayward  <alan.hayward@arm.com>
9546             David Sherwood  <david.sherwood@arm.com>
9548         * machmode.h (mode_size): Change from unsigned short to
9549         poly_uint16_pod.
9550         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
9551         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
9552         or if measurement_type is not polynomial.
9553         (fixed_size_mode::includes_p): Check for constant-sized modes.
9554         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
9555         return a poly_uint16 rather than an unsigned short.
9556         (emit_mode_size): Change the type of mode_size from unsigned short
9557         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
9558         (emit_mode_adjustments): Cope with polynomial vector sizes.
9559         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
9560         for GET_MODE_SIZE.
9561         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
9562         for GET_MODE_SIZE.
9563         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
9564         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
9565         * caller-save.c (setup_save_areas): Likewise.
9566         (replace_reg_with_saved_mem): Likewise.
9567         * calls.c (emit_library_call_value_1): Likewise.
9568         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
9569         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
9570         (gen_lowpart_for_combine): Likewise.
9571         * convert.c (convert_to_integer_1): Likewise.
9572         * cse.c (equiv_constant, cse_insn): Likewise.
9573         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
9574         (cselib_subst_to_values): Likewise.
9575         * dce.c (word_dce_process_block): Likewise.
9576         * df-problems.c (df_word_lr_mark_ref): Likewise.
9577         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
9578         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
9579         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
9580         (rtl_for_decl_location): Likewise.
9581         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
9582         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
9583         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
9584         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
9585         (expand_expr_real_1): Likewise.
9586         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
9587         (pad_below): Likewise.
9588         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
9589         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
9590         * ira.c (get_subreg_tracking_sizes): Likewise.
9591         * ira-build.c (ira_create_allocno_objects): Likewise.
9592         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
9593         (ira_sort_regnos_for_alter_reg): Likewise.
9594         * ira-costs.c (record_operand_costs): Likewise.
9595         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
9596         (resolve_simple_move): Likewise.
9597         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
9598         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
9599         (lra_constraints): Likewise.
9600         (CONST_POOL_OK_P): Reject variable-sized modes.
9601         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
9602         (add_pseudo_to_slot, lra_spill): Likewise.
9603         * omp-low.c (omp_clause_aligned_alignment): Likewise.
9604         * optabs-query.c (get_best_extraction_insn): Likewise.
9605         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
9606         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
9607         (expand_mult_highpart, valid_multiword_target_p): Likewise.
9608         * recog.c (offsettable_address_addr_space_p): Likewise.
9609         * regcprop.c (maybe_mode_change): Likewise.
9610         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
9611         * regrename.c (build_def_use): Likewise.
9612         * regstat.c (dump_reg_info): Likewise.
9613         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
9614         (find_reloads, find_reloads_subreg_address): Likewise.
9615         * reload1.c (eliminate_regs_1): Likewise.
9616         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
9617         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
9618         (simplify_binary_operation_1, simplify_subreg): Likewise.
9619         * targhooks.c (default_function_arg_padding): Likewise.
9620         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
9621         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
9622         (verify_gimple_assign_ternary): Likewise.
9623         * tree-inline.c (estimate_move_cost): Likewise.
9624         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
9625         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
9626         (get_address_cost_ainc): Likewise.
9627         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
9628         (vect_supportable_dr_alignment): Likewise.
9629         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
9630         (vectorizable_reduction): Likewise.
9631         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
9632         (vectorizable_operation, vectorizable_load): Likewise.
9633         * tree.c (build_same_sized_truth_vector_type): Likewise.
9634         * valtrack.c (cleanup_auto_inc_dec): Likewise.
9635         * var-tracking.c (emit_note_insn_var_location): Likewise.
9636         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
9637         (ADDR_VEC_ALIGN): Likewise.
9639 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9640             Alan Hayward  <alan.hayward@arm.com>
9641             David Sherwood  <david.sherwood@arm.com>
9643         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
9644         unsigned short.
9645         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
9646         or if measurement_type is polynomial.
9647         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
9648         * combine.c (make_extraction): Likewise.
9649         * dse.c (find_shift_sequence): Likewise.
9650         * dwarf2out.c (mem_loc_descriptor): Likewise.
9651         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
9652         (extract_bit_field, extract_low_bits): Likewise.
9653         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
9654         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
9655         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
9656         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
9657         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
9658         * reload.c (find_reloads): Likewise.
9659         * reload1.c (alter_reg): Likewise.
9660         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
9661         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
9662         * tree-if-conv.c (predicate_mem_writes): Likewise.
9663         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
9664         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
9665         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
9666         * valtrack.c (dead_debug_insert_temp): Likewise.
9667         * varasm.c (mergeable_constant_section): Likewise.
9668         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
9670 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9671             Alan Hayward  <alan.hayward@arm.com>
9672             David Sherwood  <david.sherwood@arm.com>
9674         * expr.c (expand_assignment): Cope with polynomial mode sizes
9675         when assigning to a CONCAT.
9677 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9678             Alan Hayward  <alan.hayward@arm.com>
9679             David Sherwood  <david.sherwood@arm.com>
9681         * machmode.h (mode_precision): Change from unsigned short to
9682         poly_uint16_pod.
9683         (mode_to_precision): Return a poly_uint16 rather than an unsigned
9684         short.
9685         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
9686         or if measurement_type is not polynomial.
9687         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
9688         in which the mode is already known to be a scalar_int_mode.
9689         * genmodes.c (emit_mode_precision): Change the type of mode_precision
9690         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
9691         initializer.
9692         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
9693         for GET_MODE_PRECISION.
9694         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
9695         for GET_MODE_PRECISION.
9696         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
9697         as polynomial.
9698         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
9699         (expand_field_assignment, make_extraction): Likewise.
9700         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
9701         (get_last_value): Likewise.
9702         * convert.c (convert_to_integer_1): Likewise.
9703         * cse.c (cse_insn): Likewise.
9704         * expr.c (expand_expr_real_1): Likewise.
9705         * lra-constraints.c (simplify_operand_subreg): Likewise.
9706         * optabs-query.c (can_atomic_load_p): Likewise.
9707         * optabs.c (expand_atomic_load): Likewise.
9708         (expand_atomic_store): Likewise.
9709         * ree.c (combine_reaching_defs): Likewise.
9710         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
9711         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
9712         * tree.h (type_has_mode_precision_p): Likewise.
9713         * ubsan.c (instrument_si_overflow): Likewise.
9715 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9716             Alan Hayward  <alan.hayward@arm.com>
9717             David Sherwood  <david.sherwood@arm.com>
9719         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
9720         polynomial numbers of units.
9721         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
9722         (valid_vector_subparts_p): New function.
9723         (build_vector_type): Remove temporary shim and take the number
9724         of units as a poly_uint64 rather than an int.
9725         (build_opaque_vector_type): Take the number of units as a
9726         poly_uint64 rather than an int.
9727         * tree.c (build_vector_from_ctor): Handle polynomial
9728         TYPE_VECTOR_SUBPARTS.
9729         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
9730         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
9731         (build_vector_from_val): If the number of units is variable,
9732         use build_vec_duplicate_cst for constant operands and
9733         VEC_DUPLICATE_EXPR otherwise.
9734         (make_vector_type): Remove temporary is_constant ().
9735         (build_vector_type, build_opaque_vector_type): Take the number of
9736         units as a poly_uint64 rather than an int.
9737         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
9738         VECTOR_CST_NELTS.
9739         * cfgexpand.c (expand_debug_expr): Likewise.
9740         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
9741         (store_constructor, expand_expr_real_1): Likewise.
9742         (const_scalar_mask_from_tree): Likewise.
9743         * fold-const-call.c (fold_const_reduction): Likewise.
9744         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
9745         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
9746         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
9747         (fold_relational_const): Likewise.
9748         (native_interpret_vector): Likewise.  Change the size from an
9749         int to an unsigned int.
9750         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
9751         TYPE_VECTOR_SUBPARTS.
9752         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
9753         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
9754         duplicating a non-constant operand into a variable-length vector.
9755         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
9756         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
9757         * ipa-icf.c (sem_variable::equals): Likewise.
9758         * match.pd: Likewise.
9759         * omp-simd-clone.c (simd_clone_subparts): Likewise.
9760         * print-tree.c (print_node): Likewise.
9761         * stor-layout.c (layout_type): Likewise.
9762         * targhooks.c (default_builtin_vectorization_cost): Likewise.
9763         * tree-cfg.c (verify_gimple_comparison): Likewise.
9764         (verify_gimple_assign_binary): Likewise.
9765         (verify_gimple_assign_ternary): Likewise.
9766         (verify_gimple_assign_single): Likewise.
9767         * tree-pretty-print.c (dump_generic_node): Likewise.
9768         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
9769         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
9770         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
9771         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
9772         (vect_shift_permute_load_chain): Likewise.
9773         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
9774         (expand_vector_condition, optimize_vector_constructor): Likewise.
9775         (lower_vec_perm, get_compute_type): Likewise.
9776         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
9777         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
9778         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
9779         (vect_recog_mask_conversion_pattern): Likewise.
9780         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
9781         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
9782         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
9783         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
9784         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
9785         (vectorizable_shift, vectorizable_operation, vectorizable_store)
9786         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
9787         (supportable_widening_operation): Likewise.
9788         (supportable_narrowing_operation): Likewise.
9789         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
9790         Likewise.
9791         * varasm.c (output_constant): Likewise.
9793 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9794             Alan Hayward  <alan.hayward@arm.com>
9795             David Sherwood  <david.sherwood@arm.com>
9797         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
9798         so that both the length == 3 and length != 3 cases set up their
9799         own permute vectors.  Add comments explaining why we know the
9800         number of elements is constant.
9801         (vect_permute_load_chain): Likewise.
9803 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9804             Alan Hayward  <alan.hayward@arm.com>
9805             David Sherwood  <david.sherwood@arm.com>
9807         * machmode.h (mode_nunits): Change from unsigned char to
9808         poly_uint16_pod.
9809         (ONLY_FIXED_SIZE_MODES): New macro.
9810         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
9811         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
9812         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
9813         New typedefs.
9814         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
9815         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
9816         or if measurement_type is not polynomial.
9817         * genmodes.c (ZERO_COEFFS): New macro.
9818         (emit_mode_nunits_inline): Make mode_nunits_inline return a
9819         poly_uint16.
9820         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
9821         Use ZERO_COEFFS when emitting initializers.
9822         * data-streamer.h (bp_pack_poly_value): New function.
9823         (bp_unpack_poly_value): Likewise.
9824         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
9825         for GET_MODE_NUNITS.
9826         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
9827         for GET_MODE_NUNITS.
9828         * tree.c (make_vector_type): Remove temporary shim and make
9829         the real function take the number of units as a poly_uint64
9830         rather than an int.
9831         (build_vector_type_for_mode): Handle polynomial nunits.
9832         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
9833         * emit-rtl.c (const_vec_series_p_1): Likewise.
9834         (gen_rtx_CONST_VECTOR): Likewise.
9835         * fold-const.c (test_vec_duplicate_folding): Likewise.
9836         * genrecog.c (validate_pattern): Likewise.
9837         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
9838         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
9839         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
9840         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
9841         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
9842         * rtlanal.c (subreg_get_info): Likewise.
9843         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
9844         (vect_grouped_load_supported): Likewise.
9845         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
9846         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
9847         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
9848         (simplify_const_unary_operation, simplify_binary_operation_1)
9849         (simplify_const_binary_operation, simplify_ternary_operation)
9850         (test_vector_ops_duplicate, test_vector_ops): Likewise.
9851         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
9852         instead of CONST_VECTOR_NUNITS.
9853         * varasm.c (output_constant_pool_2): Likewise.
9854         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
9855         explicit-encoded elements in the XVEC for variable-length vectors.
9857 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9859         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
9861 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9862             Alan Hayward  <alan.hayward@arm.com>
9863             David Sherwood  <david.sherwood@arm.com>
9865         * coretypes.h (fixed_size_mode): Declare.
9866         (fixed_size_mode_pod): New typedef.
9867         * builtins.h (target_builtins::x_apply_args_mode)
9868         (target_builtins::x_apply_result_mode): Change type to
9869         fixed_size_mode_pod.
9870         * builtins.c (apply_args_size, apply_result_size, result_vector)
9871         (expand_builtin_apply_args_1, expand_builtin_apply)
9872         (expand_builtin_return): Update accordingly.
9874 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
9876         * cse.c (hash_rtx_cb): Hash only the encoded elements.
9877         * cselib.c (cselib_hash_rtx): Likewise.
9878         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
9879         CONST_VECTOR encoding.
9881 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
9882             Jeff Law  <law@redhat.com>
9884         PR target/83641
9885         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
9886         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
9887         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
9888         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
9890         PR target/83641
9891         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
9892         explicitly probe *sp in a noreturn function if there were any callee
9893         register saves or frame pointer is needed.
9895 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
9897         PR debug/83621
9898         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
9899         BLKmode for ternary, binary or unary expressions.
9901         PR debug/83645
9902         * var-tracking.c (delete_vta_debug_insn): New inline function.
9903         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
9904         insns from get_insns () to NULL instead of each bb separately.
9905         Use delete_vta_debug_insn.  No longer static.
9906         (vt_debug_insns_local, variable_tracking_main_1): Adjust
9907         delete_vta_debug_insns callers.
9908         * rtl.h (delete_vta_debug_insns): Declare.
9909         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
9910         instead of variable_tracking_main.
9912 2018-01-03  Martin Sebor  <msebor@redhat.com>
9914         PR tree-optimization/83603
9915         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
9916         arguments past the endof the argument list in functions declared
9917         without a prototype.
9918         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
9919         Avoid checking when arguments are null.
9921 2018-01-03  Martin Sebor  <msebor@redhat.com>
9923         PR c/83559
9924         * doc/extend.texi (attribute const): Fix a typo.
9925         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
9926         issuing -Wsuggest-attribute for void functions.
9928 2018-01-03  Martin Sebor  <msebor@redhat.com>
9930         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
9931         offset_int::from instead of wide_int::to_shwi.
9932         (maybe_diag_overlap): Remove assertion.
9933         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
9934         * gimple-ssa-sprintf.c (format_directive): Same.
9935         (parse_directive): Same.
9936         (sprintf_dom_walker::compute_format_length): Same.
9937         (try_substitute_return_value): Same.
9939 2018-01-03  Jeff Law  <law@redhat.com>
9941         PR middle-end/83654
9942         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
9943         non-constant residual for zero at runtime and avoid probing in
9944         that case.  Reorganize code for trailing problem to mirror handling
9945         of the residual.
9947 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9949         PR tree-optimization/83501
9950         * tree-ssa-strlen.c (get_string_cst): New.
9951         (handle_char_store): Call get_string_cst.
9953 2018-01-03  Martin Liska  <mliska@suse.cz>
9955         PR tree-optimization/83593
9956         * tree-ssa-strlen.c: Include tree-cfg.h.
9957         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
9958         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
9959         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
9960         to false.
9961         (strlen_dom_walker::before_dom_children): Call
9962         gimple_purge_dead_eh_edges. Dump tranformation with details
9963         dump flags.
9964         (strlen_dom_walker::before_dom_children): Update call by adding
9965         new argument cleanup_eh.
9966         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
9968 2018-01-03  Martin Liska  <mliska@suse.cz>
9970         PR ipa/83549
9971         * cif-code.def (VARIADIC_THUNK): New enum value.
9972         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
9973         thunks.
9975 2018-01-03  Jan Beulich  <jbeulich@suse.com>
9977         * sse.md (mov<mode>_internal): Tighten condition for when to use
9978         vmovdqu<ssescalarsize> for TI and OI modes.
9980 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
9982         Update copyright years.
9984 2018-01-03  Martin Liska  <mliska@suse.cz>
9986         PR ipa/83594
9987         * ipa-visibility.c (function_and_variable_visibility): Skip
9988         functions with noipa attribure.
9990 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
9992         * gcc.c (process_command): Update copyright notice dates.
9993         * gcov-dump.c (print_version): Ditto.
9994         * gcov.c (print_version): Ditto.
9995         * gcov-tool.c (print_version): Ditto.
9996         * gengtype.c (create_file): Ditto.
9997         * doc/cpp.texi: Bump @copying's copyright year.
9998         * doc/cppinternals.texi: Ditto.
9999         * doc/gcc.texi: Ditto.
10000         * doc/gccint.texi: Ditto.
10001         * doc/gcov.texi: Ditto.
10002         * doc/install.texi: Ditto.
10003         * doc/invoke.texi: Ditto.
10005 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10007         * vector-builder.h (vector_builder::m_full_nelts): Change from
10008         unsigned int to poly_uint64.
10009         (vector_builder::full_nelts): Update prototype accordingly.
10010         (vector_builder::new_vector): Likewise.
10011         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
10012         (vector_builder::operator ==): Likewise.
10013         (vector_builder::finalize): Likewise.
10014         * int-vector-builder.h (int_vector_builder::int_vector_builder):
10015         Take the number of elements as a poly_uint64 rather than an
10016         unsigned int.
10017         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
10018         from unsigned int to poly_uint64.
10019         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
10020         (vec_perm_indices::new_vector): Likewise.
10021         (vec_perm_indices::length): Likewise.
10022         (vec_perm_indices::nelts_per_input): Likewise.
10023         (vec_perm_indices::input_nelts): Likewise.
10024         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
10025         number of elements per input as a poly_uint64 rather than an
10026         unsigned int.  Use the original encoding for variable-length
10027         vectors, rather than clamping each individual element.
10028         For the second and subsequent elements in each pattern,
10029         clamp the step and base before clamping their sum.
10030         (vec_perm_indices::series_p): Handle polynomial element counts.
10031         (vec_perm_indices::all_in_range_p): Likewise.
10032         (vec_perm_indices_to_tree): Likewise.
10033         (vec_perm_indices_to_rtx): Likewise.
10034         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
10035         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
10036         (tree_vector_builder::new_binary_operation): Handle polynomial
10037         element counts.  Return false if we need to know the number
10038         of elements at compile time.
10039         * fold-const.c (fold_vec_perm): Punt if the number of elements
10040         isn't known at compile time.
10042 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10044         * vec-perm-indices.h (vec_perm_builder): Change element type
10045         from HOST_WIDE_INT to poly_int64.
10046         (vec_perm_indices::element_type): Update accordingly.
10047         (vec_perm_indices::clamp): Handle polynomial element_types.
10048         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
10049         (vec_perm_indices::all_in_range_p): Likewise.
10050         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
10051         than shwi trees.
10052         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
10053         polynomial vec_perm_indices element types.
10054         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
10055         * fold-const.c (fold_vec_perm): Likewise.
10056         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
10057         * tree-vect-generic.c (lower_vec_perm): Likewise.
10058         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
10059         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
10060         element type to HOST_WIDE_INT.
10062 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10063             Alan Hayward  <alan.hayward@arm.com>
10064             David Sherwood  <david.sherwood@arm.com>
10066         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
10067         rather than an int.  Use plus_constant.
10068         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
10069         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
10071 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10072             Alan Hayward  <alan.hayward@arm.com>
10073             David Sherwood  <david.sherwood@arm.com>
10075         * calls.c (emit_call_1, expand_call): Change struct_value_size from
10076         a HOST_WIDE_INT to a poly_int64.
10078 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10079             Alan Hayward  <alan.hayward@arm.com>
10080             David Sherwood  <david.sherwood@arm.com>
10082         * calls.c (load_register_parameters): Cope with polynomial
10083         mode sizes.  Require a constant size for BLKmode parameters
10084         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
10085         forces a parameter to be padded at the lsb end in order to
10086         fill a complete number of words, require the parameter size
10087         to be ordered wrt UNITS_PER_WORD.
10089 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10090             Alan Hayward  <alan.hayward@arm.com>
10091             David Sherwood  <david.sherwood@arm.com>
10093         * reload1.c (spill_stack_slot_width): Change element type
10094         from unsigned int to poly_uint64_pod.
10095         (alter_reg): Treat mode sizes as polynomial.
10097 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10098             Alan Hayward  <alan.hayward@arm.com>
10099             David Sherwood  <david.sherwood@arm.com>
10101         * reload.c (complex_word_subreg_p): New function.
10102         (reload_inner_reg_of_subreg, push_reload): Use it.
10104 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10105             Alan Hayward  <alan.hayward@arm.com>
10106             David Sherwood  <david.sherwood@arm.com>
10108         * lra-constraints.c (process_alt_operands): Reject matched
10109         operands whose sizes aren't ordered.
10110         (match_reload): Refer to this check here.
10112 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10113             Alan Hayward  <alan.hayward@arm.com>
10114             David Sherwood  <david.sherwood@arm.com>
10116         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
10117         that the mode size is in the set {1, 2, 4, 8, 16}.
10119 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10120             Alan Hayward  <alan.hayward@arm.com>
10121             David Sherwood  <david.sherwood@arm.com>
10123         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
10124         Use plus_constant instead of gen_rtx_PLUS.
10126 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10127             Alan Hayward  <alan.hayward@arm.com>
10128             David Sherwood  <david.sherwood@arm.com>
10130         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
10131         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
10132         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
10133         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
10134         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
10135         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
10136         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
10137         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
10138         * config/i386/i386.c (ix86_push_rounding): ...this new function.
10139         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
10140         a poly_int64.
10141         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
10142         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
10143         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
10144         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
10145         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
10146         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
10147         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
10148         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
10149         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
10150         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
10151         function.
10152         * expr.c (emit_move_resolve_push): Treat the input and result
10153         of PUSH_ROUNDING as a poly_int64.
10154         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
10155         (emit_push_insn): Likewise.
10156         * lra-eliminations.c (mark_not_eliminable): Likewise.
10157         * recog.c (push_operand): Likewise.
10158         * reload1.c (elimination_effects): Likewise.
10159         * rtlanal.c (nonzero_bits1): Likewise.
10160         * calls.c (store_one_arg): Likewise.  Require the padding to be
10161         known at compile time.
10163 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10164             Alan Hayward  <alan.hayward@arm.com>
10165             David Sherwood  <david.sherwood@arm.com>
10167         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
10168         Use plus_constant instead of gen_rtx_PLUS.
10170 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10171             Alan Hayward  <alan.hayward@arm.com>
10172             David Sherwood  <david.sherwood@arm.com>
10174         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
10175         rather than an int.
10177 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10178             Alan Hayward  <alan.hayward@arm.com>
10179             David Sherwood  <david.sherwood@arm.com>
10181         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
10182         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
10183         via stack temporaries.  Treat the mode size as polynomial too.
10185 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10186             Alan Hayward  <alan.hayward@arm.com>
10187             David Sherwood  <david.sherwood@arm.com>
10189         * expr.c (expand_expr_real_2): When handling conversions involving
10190         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
10191         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
10192         as a poly_uint64 too.
10194 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10195             Alan Hayward  <alan.hayward@arm.com>
10196             David Sherwood  <david.sherwood@arm.com>
10198         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
10200 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10201             Alan Hayward  <alan.hayward@arm.com>
10202             David Sherwood  <david.sherwood@arm.com>
10204         * combine.c (can_change_dest_mode): Handle polynomial
10205         REGMODE_NATURAL_SIZE.
10206         * expmed.c (store_bit_field_1): Likewise.
10207         * expr.c (store_constructor): Likewise.
10208         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
10209         and polynomial REGMODE_NATURAL_SIZE.
10210         (gen_lowpart_common): Likewise.
10211         * reginfo.c (record_subregs_of_mode): Likewise.
10212         * rtlanal.c (read_modify_subreg_p): Likewise.
10214 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10215             Alan Hayward  <alan.hayward@arm.com>
10216             David Sherwood  <david.sherwood@arm.com>
10218         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
10219         numbers of elements.
10221 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10222             Alan Hayward  <alan.hayward@arm.com>
10223             David Sherwood  <david.sherwood@arm.com>
10225         * match.pd: Cope with polynomial numbers of vector elements.
10227 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10228             Alan Hayward  <alan.hayward@arm.com>
10229             David Sherwood  <david.sherwood@arm.com>
10231         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
10232         in a POINTER_PLUS_EXPR.
10234 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10235             Alan Hayward  <alan.hayward@arm.com>
10236             David Sherwood  <david.sherwood@arm.com>
10238         * omp-simd-clone.c (simd_clone_subparts): New function.
10239         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
10240         (ipa_simd_modify_function_body): Likewise.
10242 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10243             Alan Hayward  <alan.hayward@arm.com>
10244             David Sherwood  <david.sherwood@arm.com>
10246         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
10247         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
10248         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
10249         (expand_vector_condition, vector_element): Likewise.
10250         (subparts_gt): New function.
10251         (get_compute_type): Use subparts_gt.
10252         (count_type_subparts): Delete.
10253         (expand_vector_operations_1): Use subparts_gt instead of
10254         count_type_subparts.
10256 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10257             Alan Hayward  <alan.hayward@arm.com>
10258             David Sherwood  <david.sherwood@arm.com>
10260         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
10261         (vect_compile_time_alias): ...this new function.  Do the calculation
10262         on poly_ints rather than trees.
10263         (vect_prune_runtime_alias_test_list): Update call accordingly.
10265 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10266             Alan Hayward  <alan.hayward@arm.com>
10267             David Sherwood  <david.sherwood@arm.com>
10269         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
10270         numbers of units.
10271         (vect_schedule_slp_instance): Likewise.
10273 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10274             Alan Hayward  <alan.hayward@arm.com>
10275             David Sherwood  <david.sherwood@arm.com>
10277         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
10278         constant and extern definitions for variable-length vectors.
10279         (vect_get_constant_vectors): Note that the number of units
10280         is known to be constant.
10282 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10283             Alan Hayward  <alan.hayward@arm.com>
10284             David Sherwood  <david.sherwood@arm.com>
10286         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
10287         of units as polynomial.  Choose between WIDE and NARROW based
10288         on multiple_p.
10290 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10291             Alan Hayward  <alan.hayward@arm.com>
10292             David Sherwood  <david.sherwood@arm.com>
10294         * tree-vect-stmts.c (simd_clone_subparts): New function.
10295         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
10297 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10298             Alan Hayward  <alan.hayward@arm.com>
10299             David Sherwood  <david.sherwood@arm.com>
10301         * tree-vect-stmts.c (vectorizable_call): Treat the number of
10302         vectors as polynomial.  Use build_index_vector for
10303         IFN_GOMP_SIMD_LANE.
10305 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10306             Alan Hayward  <alan.hayward@arm.com>
10307             David Sherwood  <david.sherwood@arm.com>
10309         * tree-vect-stmts.c (get_load_store_type): Treat the number of
10310         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
10311         for variable-length vectors.
10312         (vectorizable_mask_load_store): Treat the number of units as
10313         polynomial, asserting that it is constant if the condition has
10314         already been enforced.
10315         (vectorizable_store, vectorizable_load): Likewise.
10317 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10318             Alan Hayward  <alan.hayward@arm.com>
10319             David Sherwood  <david.sherwood@arm.com>
10321         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
10322         of units as polynomial.  Punt if we can't tell at compile time
10323         which vector contains the final result.
10325 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10326             Alan Hayward  <alan.hayward@arm.com>
10327             David Sherwood  <david.sherwood@arm.com>
10329         * tree-vect-loop.c (vectorizable_induction): Treat the number
10330         of units as polynomial.  Punt on SLP inductions.  Use an integer
10331         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
10332         cast of such a series for variable-length floating-point
10333         reductions.
10335 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10336             Alan Hayward  <alan.hayward@arm.com>
10337             David Sherwood  <david.sherwood@arm.com>
10339         * tree.h (build_index_vector): Declare.
10340         * tree.c (build_index_vector): New function.
10341         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
10342         of units as polynomial, forcibly converting it to a constant if
10343         vectorizable_reduction has already enforced the condition.
10344         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
10345         to create a {1,2,3,...} vector.
10346         (vectorizable_reduction): Treat the number of units as polynomial.
10347         Choose vectype_in based on the largest scalar element size rather
10348         than the smallest number of units.  Enforce the restrictions
10349         relied on above.
10351 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10352             Alan Hayward  <alan.hayward@arm.com>
10353             David Sherwood  <david.sherwood@arm.com>
10355         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
10356         number of units as polynomial.
10358 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10359             Alan Hayward  <alan.hayward@arm.com>
10360             David Sherwood  <david.sherwood@arm.com>
10362         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
10363         * target.def (autovectorize_vector_sizes): Return the vector sizes
10364         by pointer, using vector_sizes rather than a bitmask.
10365         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
10366         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
10367         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
10368         Likewise.
10369         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
10370         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
10371         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
10372         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
10373         * omp-general.c (omp_max_vf): Likewise.
10374         * omp-low.c (omp_clause_aligned_alignment): Likewise.
10375         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
10376         * tree-vect-loop.c (vect_analyze_loop): Likewise.
10377         * tree-vect-slp.c (vect_slp_bb): Likewise.
10378         * doc/tm.texi: Regenerate.
10379         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
10380         to a poly_uint64.
10381         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
10382         the vector size as a poly_uint64 rather than an unsigned int.
10383         (current_vector_size): Change from an unsigned int to a poly_uint64.
10384         (get_vectype_for_scalar_type): Update accordingly.
10385         * tree.h (build_truth_vector_type): Take the size and number of
10386         units as a poly_uint64 rather than an unsigned int.
10387         (build_vector_type): Add a temporary overload that takes
10388         the number of units as a poly_uint64 rather than an unsigned int.
10389         * tree.c (make_vector_type): Likewise.
10390         (build_truth_vector_type): Take the number of units as a poly_uint64
10391         rather than an unsigned int.
10393 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10394             Alan Hayward  <alan.hayward@arm.com>
10395             David Sherwood  <david.sherwood@arm.com>
10397         * target.def (get_mask_mode): Take the number of units and length
10398         as poly_uint64s rather than unsigned ints.
10399         * targhooks.h (default_get_mask_mode): Update accordingly.
10400         * targhooks.c (default_get_mask_mode): Likewise.
10401         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
10402         * doc/tm.texi: Regenerate.
10404 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10405             Alan Hayward  <alan.hayward@arm.com>
10406             David Sherwood  <david.sherwood@arm.com>
10408         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
10409         * omp-general.c (omp_max_vf): Likewise.
10410         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
10411         (expand_omp_simd): Handle polynomial safelen.
10412         * omp-low.c (omplow_simd_context): Add a default constructor.
10413         (omplow_simd_context::max_vf): Change from int to poly_uint64.
10414         (lower_rec_simd_input_clauses): Update accordingly.
10415         (lower_rec_input_clauses): Likewise.
10417 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10418             Alan Hayward  <alan.hayward@arm.com>
10419             David Sherwood  <david.sherwood@arm.com>
10421         * tree-vectorizer.h (vect_nunits_for_cost): New function.
10422         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
10423         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
10424         (vect_analyze_slp_cost): Likewise.
10425         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
10426         (vect_model_load_cost): Likewise.
10428 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10429             Alan Hayward  <alan.hayward@arm.com>
10430             David Sherwood  <david.sherwood@arm.com>
10432         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
10433         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
10434         from an unsigned int * to a poly_uint64_pod *.
10435         (calculate_unrolling_factor): New function.
10436         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
10438 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10439             Alan Hayward  <alan.hayward@arm.com>
10440             David Sherwood  <david.sherwood@arm.com>
10442         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
10443         from an unsigned int to a poly_uint64.
10444         (_loop_vec_info::slp_unrolling_factor): Likewise.
10445         (_loop_vec_info::vectorization_factor): Change from an int
10446         to a poly_uint64.
10447         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
10448         (vect_get_num_vectors): New function.
10449         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
10450         (vect_get_num_copies): Use vect_get_num_vectors.
10451         (vect_analyze_data_ref_dependences): Change max_vf from an int *
10452         to an unsigned int *.
10453         (vect_analyze_data_refs): Change min_vf from an int * to a
10454         poly_uint64 *.
10455         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
10456         than an unsigned HOST_WIDE_INT.
10457         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
10458         (vect_analyze_data_ref_dependence): Change max_vf from an int *
10459         to an unsigned int *.
10460         (vect_analyze_data_ref_dependences): Likewise.
10461         (vect_compute_data_ref_alignment): Handle polynomial vf.
10462         (vect_enhance_data_refs_alignment): Likewise.
10463         (vect_prune_runtime_alias_test_list): Likewise.
10464         (vect_shift_permute_load_chain): Likewise.
10465         (vect_supportable_dr_alignment): Likewise.
10466         (dependence_distance_ge_vf): Take the vectorization factor as a
10467         poly_uint64 rather than an unsigned HOST_WIDE_INT.
10468         (vect_analyze_data_refs): Change min_vf from an int * to a
10469         poly_uint64 *.
10470         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
10471         vfm1 as a poly_uint64 rather than an int.  Make the same change
10472         for the returned bound_scalar.
10473         (vect_gen_vector_loop_niters): Handle polynomial vf.
10474         (vect_do_peeling): Likewise.  Update call to
10475         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
10476         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
10477         be constant.
10478         * tree-vect-loop.c (vect_determine_vectorization_factor)
10479         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
10480         (vect_get_known_peeling_cost): Likewise.
10481         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
10482         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
10483         (vect_transform_loop): Likewise.  Use the lowest possible VF when
10484         updating the upper bounds of the loop.
10485         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
10486         rather than an int.
10487         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
10488         polynomial unroll factors.
10489         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
10490         (vect_make_slp_decision): Likewise.
10491         (vect_supported_load_permutation_p): Likewise, and polynomial
10492         vf too.
10493         (vect_analyze_slp_cost): Handle polynomial vf.
10494         (vect_slp_analyze_node_operations): Likewise.
10495         (vect_slp_analyze_bb_1): Likewise.
10496         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
10497         than an unsigned HOST_WIDE_INT.
10498         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
10499         (vectorizable_load): Handle polynomial vf.
10500         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
10501         a poly_uint64.
10502         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
10504 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10505             Alan Hayward  <alan.hayward@arm.com>
10506             David Sherwood  <david.sherwood@arm.com>
10508         * match.pd: Handle bit operations involving three constants
10509         and try to fold one pair.
10511 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
10513         * tree-vect-loop-manip.c: Include gimple-fold.h.
10514         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
10515         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
10516         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
10517         Add a path that uses a step of VF instead of 1, but disable it
10518         for now.
10519         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
10520         and niters_no_overflow parameters.  Update calls to
10521         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
10522         Create a new SSA name if the latter choses to use a ste other
10523         than zero, and return it via niters_vector_mult_vf_var.
10524         * tree-vect-loop.c (vect_transform_loop): Update calls to
10525         vect_do_peeling, vect_gen_vector_loop_niters and
10526         slpeel_make_loop_iterate_ntimes.
10527         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
10528         (vect_gen_vector_loop_niters): Update declarations after above changes.
10530 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
10532         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
10533         128-bit round to integer instructions.
10534         (ceil<mode>2): Likewise.
10535         (btrunc<mode>2): Likewise.
10536         (round<mode>2): Likewise.
10538 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10540         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
10541         unaligned VSX load/store on P8/P9.
10542         (expand_block_clear): Allow the use of unaligned VSX
10543         load/store on P8/P9.
10545 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10547         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
10548         New function.
10549         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
10550         swap associated with both a load and a store.
10552 2018-01-02  Andrew Waterman  <andrew@sifive.com>
10554         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
10555         * config/riscv/riscv.md (clear_cache): Use it.
10557 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
10559         * web.c: Remove out-of-date comment.
10561 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10563         * expr.c (fixup_args_size_notes): Check that any existing
10564         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
10565         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
10566         (emit_single_push_insn): ...here.
10568 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10570         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
10571         (const_vector_encoded_nelts): New function.
10572         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
10573         (const_vector_int_elt, const_vector_elt): Declare.
10574         * emit-rtl.c (const_vector_int_elt_1): New function.
10575         (const_vector_elt): Likewise.
10576         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
10577         of CONST_VECTOR_ELT.
10579 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10581         * expr.c: Include rtx-vector-builder.h.
10582         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
10583         directly on the tree encoding.
10584         (const_vector_from_tree): Likewise.
10585         * optabs.c: Include rtx-vector-builder.h.
10586         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
10587         sequence of "u" values.
10588         * vec-perm-indices.c: Include rtx-vector-builder.h.
10589         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
10590         directly on the vec_perm_indices encoding.
10592 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10594         * doc/rtl.texi (const_vector): Describe new encoding scheme.
10595         * Makefile.in (OBJS): Add rtx-vector-builder.o.
10596         * rtx-vector-builder.h: New file.
10597         * rtx-vector-builder.c: Likewise.
10598         * rtl.h (rtx_def::u2): Add a const_vector field.
10599         (CONST_VECTOR_NPATTERNS): New macro.
10600         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
10601         (CONST_VECTOR_DUPLICATE_P): Likewise.
10602         (CONST_VECTOR_STEPPED_P): Likewise.
10603         (CONST_VECTOR_ENCODED_ELT): Likewise.
10604         (const_vec_duplicate_p): Check for a duplicated vector encoding.
10605         (unwrap_const_vec_duplicate): Likewise.
10606         (const_vec_series_p): Check for a non-duplicated vector encoding.
10607         Say that the function only returns true for integer vectors.
10608         * emit-rtl.c: Include rtx-vector-builder.h.
10609         (gen_const_vec_duplicate_1): Delete.
10610         (gen_const_vector): Call gen_const_vec_duplicate instead of
10611         gen_const_vec_duplicate_1.
10612         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
10613         (gen_const_vec_duplicate): Use rtx_vector_builder.
10614         (gen_const_vec_series): Likewise.
10615         (gen_rtx_CONST_VECTOR): Likewise.
10616         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
10617         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
10618         Build a new vector rather than modifying a CONST_VECTOR in-place.
10619         (handle_special_swappables): Update call accordingly.
10620         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
10621         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
10622         Build a new vector rather than modifying a CONST_VECTOR in-place.
10623         (handle_special_swappables): Update call accordingly.
10625 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10627         * simplify-rtx.c (simplify_const_binary_operation): Use
10628         CONST_VECTOR_ELT instead of XVECEXP.
10630 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10632         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
10633         the selector elements to be different from the data elements
10634         if the selector is a VECTOR_CST.
10635         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
10636         ssizetype for the selector.
10638 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10640         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
10641         before testing each element individually.
10642         * tree-vect-generic.c (lower_vec_perm): Likewise.
10644 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10646         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
10647         * selftest-run-tests.c (selftest::run_tests): Call it.
10648         * vector-builder.h (vector_builder::operator ==): New function.
10649         (vector_builder::operator !=): Likewise.
10650         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
10651         (vec_perm_indices::all_from_input_p): New function.
10652         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
10653         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
10654         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
10655         instead of reading the VECTOR_CST directly.  Detect whether both
10656         vector inputs are the same before constructing the vec_perm_indices,
10657         and update the number of inputs argument accordingly.  Use the
10658         utility functions added above.  Only construct sel2 if we need to.
10660 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10662         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
10663         the broadcast of the low byte.
10664         (expand_mult_highpart): Use an explicit encoding for the permutes.
10665         * optabs-query.c (can_mult_highpart_p): Likewise.
10666         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
10667         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
10668         (vectorizable_bswap): Likewise.
10669         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
10670         explicit encoding for the power-of-2 permutes.
10671         (vect_permute_store_chain): Likewise.
10672         (vect_grouped_load_supported): Likewise.
10673         (vect_permute_load_chain): Likewise.
10675 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10677         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
10678         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
10679         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
10680         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
10681         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
10682         (vect_gen_perm_mask_any): Likewise.
10684 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10686         * int-vector-builder.h: New file.
10687         * vec-perm-indices.h: Include int-vector-builder.h.
10688         (vec_perm_indices): Redefine as an int_vector_builder.
10689         (auto_vec_perm_indices): Delete.
10690         (vec_perm_builder): Redefine as a stand-alone class.
10691         (vec_perm_indices::vec_perm_indices): New function.
10692         (vec_perm_indices::clamp): Likewise.
10693         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
10694         (vec_perm_indices::new_vector): New function.
10695         (vec_perm_indices::new_expanded_vector): Update for new
10696         vec_perm_indices class.
10697         (vec_perm_indices::rotate_inputs): New function.
10698         (vec_perm_indices::all_in_range_p): Operate directly on the
10699         encoded form, without computing elided elements.
10700         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
10701         encoding.  Update for new vec_perm_indices class.
10702         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
10703         the given vec_perm_builder.
10704         (expand_vec_perm_var): Update vec_perm_builder constructor.
10705         (expand_mult_highpart): Use vec_perm_builder instead of
10706         auto_vec_perm_indices.
10707         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
10708         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
10709         or double series encoding as appropriate.
10710         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
10711         vec_perm_indices instead of auto_vec_perm_indices.
10712         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
10713         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
10714         (vect_permute_store_chain): Likewise.
10715         (vect_grouped_load_supported): Likewise.
10716         (vect_permute_load_chain): Likewise.
10717         (vect_shift_permute_load_chain): Likewise.
10718         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
10719         (vect_transform_slp_perm_load): Likewise.
10720         (vect_schedule_slp_instance): Likewise.
10721         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
10722         (vectorizable_mask_load_store): Likewise.
10723         (vectorizable_bswap): Likewise.
10724         (vectorizable_store): Likewise.
10725         (vectorizable_load): Likewise.
10726         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
10727         vec_perm_indices instead of auto_vec_perm_indices.  Use
10728         tree_to_vec_perm_builder to read the vector from a tree.
10729         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
10730         vec_perm_builder instead of a vec_perm_indices.
10731         (have_whole_vector_shift): Use vec_perm_builder and
10732         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
10733         truncation to calc_vec_perm_mask_for_shift.
10734         (vect_create_epilog_for_reduction): Likewise.
10735         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
10736         from auto_vec_perm_indices to vec_perm_indices.
10737         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
10738         instead of changing individual elements.
10739         (aarch64_vectorize_vec_perm_const): Use new_vector to install
10740         the vector in d.perm.
10741         * config/arm/arm.c (expand_vec_perm_d::perm): Change
10742         from auto_vec_perm_indices to vec_perm_indices.
10743         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
10744         instead of changing individual elements.
10745         (arm_vectorize_vec_perm_const): Use new_vector to install
10746         the vector in d.perm.
10747         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
10748         Update vec_perm_builder constructor.
10749         (rs6000_expand_interleave): Likewise.
10750         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
10751         (rs6000_expand_interleave): Likewise.
10753 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10755         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
10756         to qimode could truncate the indices.
10757         * optabs.c (expand_vec_perm_var): Likewise.
10759 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10761         * Makefile.in (OBJS): Add vec-perm-indices.o.
10762         * vec-perm-indices.h: New file.
10763         * vec-perm-indices.c: Likewise.
10764         * target.h (vec_perm_indices): Replace with a forward class
10765         declaration.
10766         (auto_vec_perm_indices): Move to vec-perm-indices.h.
10767         * optabs.h: Include vec-perm-indices.h.
10768         (expand_vec_perm): Delete.
10769         (selector_fits_mode_p, expand_vec_perm_var): Declare.
10770         (expand_vec_perm_const): Declare.
10771         * target.def (vec_perm_const_ok): Replace with...
10772         (vec_perm_const): ...this new hook.
10773         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
10774         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
10775         * doc/tm.texi: Regenerate.
10776         * optabs.def (vec_perm_const): Delete.
10777         * doc/md.texi (vec_perm_const): Likewise.
10778         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
10779         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
10780         expand_vec_perm for constant permutation vectors.  Assert that
10781         the mode of variable permutation vectors is the integer equivalent
10782         of the mode that is being permuted.
10783         * optabs-query.h (selector_fits_mode_p): Declare.
10784         * optabs-query.c: Include vec-perm-indices.h.
10785         (selector_fits_mode_p): New function.
10786         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
10787         is defined, instead of checking whether the vec_perm_const_optab
10788         exists.  Use targetm.vectorize.vec_perm_const instead of
10789         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
10790         fit in the vector mode before using a variable permute.
10791         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
10792         vec_perm_indices instead of an rtx.
10793         (expand_vec_perm): Replace with...
10794         (expand_vec_perm_const): ...this new function.  Take the selector
10795         as a vec_perm_indices rather than an rtx.  Also take the mode of
10796         the selector.  Update call to shift_amt_for_vec_perm_mask.
10797         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
10798         Use vec_perm_indices::new_expanded_vector to expand the original
10799         selector into bytes.  Check whether the indices fit in the vector
10800         mode before using a variable permute.
10801         (expand_vec_perm_var): Make global.
10802         (expand_mult_highpart): Use expand_vec_perm_const.
10803         * fold-const.c: Includes vec-perm-indices.h.
10804         * tree-ssa-forwprop.c: Likewise.
10805         * tree-vect-data-refs.c: Likewise.
10806         * tree-vect-generic.c: Likewise.
10807         * tree-vect-loop.c: Likewise.
10808         * tree-vect-slp.c: Likewise.
10809         * tree-vect-stmts.c: Likewise.
10810         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
10811         Delete.
10812         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
10813         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
10814         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
10815         (aarch64_vectorize_vec_perm_const): ...this new function.
10816         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
10817         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
10818         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
10819         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
10820         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
10821         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
10822         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
10823         into...
10824         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
10825         check for NEON modes.
10826         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
10827         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
10828         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
10829         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
10830         into...
10831         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
10832         the old VEC_PERM_CONST conditions.
10833         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
10834         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
10835         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
10836         (ia64_vectorize_vec_perm_const_ok): Merge into...
10837         (ia64_vectorize_vec_perm_const): ...this new function.
10838         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
10839         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
10840         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
10841         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
10842         * config/mips/mips.c (mips_expand_vec_perm_const)
10843         (mips_vectorize_vec_perm_const_ok): Merge into...
10844         (mips_vectorize_vec_perm_const): ...this new function.
10845         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
10846         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
10847         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
10848         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
10849         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
10850         (rs6000_expand_vec_perm_const): Delete.
10851         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
10852         Delete.
10853         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
10854         (altivec_expand_vec_perm_const_le): Take each operand individually.
10855         Operate on constant selectors rather than rtxes.
10856         (altivec_expand_vec_perm_const): Likewise.  Update call to
10857         altivec_expand_vec_perm_const_le.
10858         (rs6000_expand_vec_perm_const): Delete.
10859         (rs6000_vectorize_vec_perm_const_ok): Delete.
10860         (rs6000_vectorize_vec_perm_const): New function.
10861         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
10862         an element count and rtx array.
10863         (rs6000_expand_extract_even): Update call accordingly.
10864         (rs6000_expand_interleave): Likewise.
10865         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
10866         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
10867         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
10868         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
10869         (rs6000_expand_vec_perm_const): Delete.
10870         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
10871         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
10872         (altivec_expand_vec_perm_const_le): Take each operand individually.
10873         Operate on constant selectors rather than rtxes.
10874         (altivec_expand_vec_perm_const): Likewise.  Update call to
10875         altivec_expand_vec_perm_const_le.
10876         (rs6000_expand_vec_perm_const): Delete.
10877         (rs6000_vectorize_vec_perm_const_ok): Delete.
10878         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
10879         reference to the SPE evmerge intructions.
10880         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
10881         an element count and rtx array.
10882         (rs6000_expand_extract_even): Update call accordingly.
10883         (rs6000_expand_interleave): Likewise.
10884         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
10885         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
10886         new function.
10887         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
10889 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10891         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
10892         vector mode and that that mode matches the mode of the data
10893         being permuted.
10894         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
10895         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
10896         directly using expand_vec_perm_1 when forcing selectors into
10897         registers.
10898         (expand_vec_perm_var): New function, split out from expand_vec_perm.
10900 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10902         * optabs-query.h (can_vec_perm_p): Delete.
10903         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
10904         * optabs-query.c (can_vec_perm_p): Split into...
10905         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
10906         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
10907         particular selector is valid.
10908         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
10909         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
10910         (vect_grouped_load_supported): Likewise.
10911         (vect_shift_permute_load_chain): Likewise.
10912         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
10913         (vect_transform_slp_perm_load): Likewise.
10914         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
10915         (vectorizable_bswap): Likewise.
10916         (vect_gen_perm_mask_checked): Likewise.
10917         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
10918         implementations of variable permutation vectors into account
10919         when deciding which selector to use.
10920         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
10921         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
10922         with a false third argument.
10923         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
10924         to test whether the constant selector is valid and can_vec_perm_var_p
10925         to test whether a variable selector is valid.
10927 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10929         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
10930         * optabs-query.c (can_vec_perm_p): Likewise.
10931         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
10932         instead of vec_perm_indices.
10933         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
10934         (vect_gen_perm_mask_checked): Likewise,
10935         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
10936         (vect_gen_perm_mask_checked): Likewise,
10938 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
10940         * optabs-query.h (qimode_for_vec_perm): Declare.
10941         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
10942         (qimode_for_vec_perm): ...this new function.
10943         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
10945 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10947         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
10948         does not have a conditional at the top.
10950 2018-01-02  Richard Biener  <rguenther@suse.de>
10952         * ipa-inline.c (big_speedup_p): Fix expression.
10954 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
10956         PR target/81616
10957         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
10958         for generic 4->6.
10960 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
10962         PR target/81616
10963         Generic tuning.
10964         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
10965         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
10966         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
10967         cond_taken_branch_cost 3->4.
10969 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
10971         PR tree-optimization/83581
10972         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
10973         TODO_cleanup_cfg if any changes have been made.
10975         PR middle-end/83608
10976         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
10977         convert_modes if target mode has the right side, but different mode
10978         class.
10980         PR middle-end/83609
10981         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
10982         last argument when extracting from CONCAT.  If either from_real or
10983         from_imag is NULL, use expansion through memory.  If result is not
10984         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
10985         the parts directly to inner mode, if even that fails, use expansion
10986         through memory.
10988         PR middle-end/83623
10989         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
10990         check for bswap in mode rather than HImode and use that in expand_unop
10991         too.
10993 Copyright (C) 2018 Free Software Foundation, Inc.
10995 Copying and distribution of this file, with or without modification,
10996 are permitted in any medium without royalty provided the copyright
10997 notice and this notice are preserved.