[NDS32] Implment n15 pipeline.
[official-gcc.git] / gcc / ChangeLog
blob4901cb1fd0742d7a1b08589d9b8cb0b398f11269
1 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2             Chung-Ju Wu  <jasonwucj@gmail.com>
4         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
5         * config/nds32/nds32-graywolf.md: New file.
6         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
7         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
8         pipeline.
9         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
10         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
11         * config/nds32/nds32.md (pipeline_model): Add graywolf.
12         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
13         * config/nds32/pipelines.md: Include n15 settings.
15 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
16             Chung-Ju Wu  <jasonwucj@gmail.com>
18         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
19         * config/nds32/nds32-n13.md: New file.
20         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
21         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
22         pipeline.
23         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
24         * config/nds32/nds32.md (pipeline_model): Add n13.
25         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
26         * config/nds32/pipelines.md: Include n13 settings.
28 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
29             Chung-Ju Wu  <jasonwucj@gmail.com>
31         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
32         * config/nds32/nds32-n10.md: New file.
33         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
34         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
35         pipeline.
36         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
37         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
38         * config/nds32/nds32.md (pipeline_model): Add n10.
39         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
40         * config/nds32/pipelines.md: Include n10 settings.
42 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
43             Kito Cheng  <kito.cheng@gmail.com>
44             Chung-Ju Wu  <jasonwucj@gmail.com>
46         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
47         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
48         Add enum values for DSP extension instructions.
49         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
50         New constraints.
51         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
52         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
53         New code iterators.
54         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
55         * config/nds32/nds32-dspext.md: New file for DSP implementation.
56         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
57         * config/nds32/nds32-intrinsic.md: Likewise.
58         * config/nds32/nds32_intrinsic.h: Likewise.
59         * config/nds32/nds32-md-auxiliary.c: Likewise.
60         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
61         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
62         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
63         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
64         * config/nds32/nds32-protos.h: New declarations for DSP extension.
65         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
66         TYPE_DMAC in switch statement.
67         * config/nds32/nds32.c: New checking and implementation for DSP
68         extension instructions.
69         * config/nds32/nds32.h: Likewise.
70         * config/nds32/nds32.md: Likewise.
71         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
72         * config/nds32/predicates.md: Implement new predicates for DSP
73         extension.
75 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
77         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
78         Reformat alternatives and attributes so it is easier to identify
79         which constraints/attributes go with which instruction.
80         (mov<mode>_hardfloat32, FMOVE64): Likewise.
81         (mov<mode>_softfloat32, FMOVE64): Likewise.
82         (mov<mode>_hardfloat64, FMOVE64): Likewise.
83         (mov<mode>_softfloat64, FMOVE64): Likewise.
85 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
87         * doc/extend.texi (PowerPC Built-in Functions): Rename this
88         subsection.
89         (Basic PowerPC Built-in Functions): The new name of the
90         subsection previously known as "PowerPC Built-in Functions".
91         (Basic PowerPC Built-in Functions Available on all Configurations):
92         New subsubsection.
93         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
94         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
95         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
96         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
98 2018-05-11  Martin Jambor  <mjambor@suse.cz>
100         PR ipa/85655
101         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
102         single const.
104 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
106         PR target/85733
107         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
109 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
111         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
112         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
113         (ix86_handle_option): Handle -mwaitpkg.
114         * config.gcc: New header.
115         * config/i386/cpuid.h (bit_WAITPKG): New bit.
116         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
117         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
118         function type.
119         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
120         OPTION_MASK_ISA_WAITPKG.
121         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
122         (ix86_option_override_internal): Add PTA_WAITPKG.
123         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
124         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
125         IX86_BUILTIN_TPAUSE.
126         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
127         __builtin_ia32_umwait and __builtin_ia32_tpause.
128         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
129         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
130         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
131         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
132         UNSPECV_TPAUSE): New.
133         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
134         * config/i386/i386.opt: Add -mwaitpkg.
135         * config/i386/waitpkgintrin.h: New file.
136         * config/i386/x86intrin.h: New header.
137         * doc/invoke.texi: Add -mwaitpkg.
139 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
141         PR target/85606
142         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
143         equivalent.
144         (cortex-m0): Use armv6s-m isa.
145         (cortex-m0plus): Likewise.
146         (cortex-m1): Likewise.
147         (cortex-m0.small-multiply): Likewise.
148         (cortex-m0plus.small-multiply): Likewise.
149         (cortex-m1.small-multiply): Likewise.
151 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
152             Jakub Jelinek  <jakub@redhat.com>
154         PR tree-optimization/85692
155         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
156         source permute as well.
158 2018-05-11  Martin Liska  <mliska@suse.cz>
160         PR sanitizer/85556
161         * doc/extend.texi: Document LLVM style format for no_sanitize
162         attribute.
164 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
166         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
167         mode_supports_vsx_dform_quad to mode_supports_dq_form.
168         (mode_supports_vsx_dform_quad): Likewise.
169         (mode_supports_vmx_dform): Move these functions to be next to the
170         other mode_supports functions.
171         (mode_supports_dq_form): Likewise.
172         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
173         mode_supports_dq_form.
174         (reg_offset_addressing_ok_p): Likewise.
175         (offsettable_ok_by_alignment): Likewise.
176         (rs6000_legitimate_offset_address_p): Likewise.
177         (legitimate_lo_sum_address_p): Likewise.
178         (rs6000_legitimize_address): Likewise.
179         (rs6000_legitimize_reload_address): Likewise.
180         (rs6000_secondary_reload_inner): Likewise.
181         (rs6000_preferred_reload_class): Likewise.
182         (rs6000_output_move_128bit): Likewise.
184 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
186         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
187         Generate SImode target register for null target.
188         <case IX86_BUILTIN_XGETBV>: Ditto.
189         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
190         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
192 2018-05-10  Carl Love  <cel@us.ibm.com>
194         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
195         dcbtt and dcbtstt if operands[2] is 0.
197 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
199         PR target/85693
200         * config/i386/sse.md (usadv64qi): New expander.
202 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
204         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
205         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
206         -maltivec=be support.
207         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
208         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
209         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
210         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
211         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
212         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
213         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
214         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
215         altivec_vsumsws): Adjust.
216         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
217         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
218         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
219         support.
220         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
221         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
222         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
223         (altivec_lve<VI_char>x): Delete expand.
224         (*altivec_lve<VI_char>x_internal): Rename to...
225         (altivec_lve<VI_char>x): ... this.
226         (altivec_lvxl_<mode>): Delete expand.
227         (*altivec_lvxl_<mode>_internal): Rename to ...
228         (altivec_lvxl_<mode>): ... this.
229         (altivec_stvxl_<mode>): Delete expand.
230         (*altivec_stvxl_<mode>_internal): Rename to ...
231         (altivec_stvxl_<mode>): ... this.
232         (altivec_stve<VI_char>x): Delete expand.
233         (*altivec_stve<VI_char>x_internal): Rename to ...
234         (altivec_stve<VI_char>x): ... this.
235         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
236         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
237         reduc_plus_scal_<mode>): Adjust.
238         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
239         comment.
240         (rs6000_cpu_cpp_builtins): Adjust.
241         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
242         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
243         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
244         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
245         -maltivec=be support.
246         (rs6000_split_vec_extract_var): Adjust.
247         (rs6000_split_v4si_init): Adjust.
248         (swap_selector_for_mode): Delete.
249         (altivec_expand_lvx_be, altivec_expand_stvx_be,
250         altivec_expand_stvex_be): Delete.
251         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
252         -maltivec=be support.
253         (rs6000_gimple_fold_builtin): Ditto.
254         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
255         Adjust.
256         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
257         (TARGET_DIRECT_MOVE_64BIT): Adjust.
258         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
259         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
260         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
261         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
262         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
263         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
264         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
265         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
266         anonymous split): Adjust.
267         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
268         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
270 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
272         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
273         when --with-gxx-include-dir is also specified.
274         * configure: Regenerate.
276 2018-05-09  Jim Wilson  <jimw@sifive.com>
278         PR target/84797
279         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
280         * config/riscv/t-withmultilib: New.
281         * config/riscv/withmultilib.h: New.
282         * doc/install.texi: Document RISC-V --with-multilib-list support.
284 2018-05-09  Richard Biener  <rguenther@suse.de>
286         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
287         vector.
288         (vect_bb_vectorization_profitable_p): Adjust.  Compute
289         actual scalar cost using the cost vector and the add_stmt_cost
290         machinery.
292 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
294         PR rtl-optimization/85645
295         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
296         in the REG_CFA_REGISTER note for LR, don't leave it empty.
298 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
300         PR rtl-optimization/85645
301         * shrink-wrap.c (spread_components): Return a boolean saying if
302         anything was changed.
303         (try_shrink_wrapping_separate): Iterate spread_components until
304         nothing changes anymore.
306 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
308         PR rtl-optimization/85645
309         * regrename.c (build_def_use): Also kill the chains that include the
310         destination of a REG_CFA_REGISTER note.
312 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
314         PR rtl-optimization/85645
315         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
316         insn that has a REG_CFA_REGISTER note.
318 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
320         * cfgexpand.c (expand_clobber): New function.
321         (expand_gimple_stmt_1): Use it.
322         * tree-vect-stmts.c (vect_clobber_variable): New function,
323         split out from...
324         (vectorizable_simd_clone_call): ...here.
325         (vectorizable_store): Emit a clobber either side of an
326         IFN_STORE_LANES sequence.
327         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
329 2018-05-09  Tom de Vries  <tom@codesourcery.com>
331         PR target/85626
332         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
333         (define_insn "trap_if_false"): Add exit after trap.
335 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
337         PR rtl-optimization/85638
338         * bb-reorder.c: Include common/common-target.h.
339         (create_forwarder_block): New function extracted from...
340         (fix_up_crossing_landing_pad): ...here.  Rename into...
341         (dw2_fix_up_crossing_landing_pad): ...this.
342         (sjlj_fix_up_crossing_landing_pad): New function.
343         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
344         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
345         from both partitions and exit the loop after one iteration.
347 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
349         Revert:
350         * doc/extend.texi (PowerPC Built-in Functions): Rename this
351         subsection.
352         (Basic PowerPC Built-in Functions): The new name of the
353         subsection previously known as "PowerPC Built-in Functions".
354         (Basic PowerPC Built-in Functions Available on all Configurations):
355         New subsubsection.
356         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
357         subsubsection.
358         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
359         subsubsection.
360         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
361         subsubsection.
362         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
363         subsubsection.
365 2018-05-08  Jim Wilson  <jimw@sifive.com>
367         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
368         (LD_EMUL_SUFFIX): New.
369         (LINK_SPEC): Use it.
371 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
373         * doc/extend.texi (PowerPC Built-in Functions): Rename this
374         subsection.
375         (Basic PowerPC Built-in Functions): The new name of the
376         subsection previously known as "PowerPC Built-in Functions".
377         (Basic PowerPC Built-in Functions Available on all Configurations):
378         New subsubsection.
379         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
380         subsubsection.
381         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
382         subsubsection.
383         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
384         subsubsection.
385         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
386         subsubsection.
388 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
390         PR target/85683
391         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
392         after cmpelim optimization.
394 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
396         * config.gcc: Support "goldmont".
397         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
398         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
399         PROCESSOR_GOLDMONT.
400         * config/i386/i386.c (m_GOLDMONT): Define.
401         (processor_target_table): Add "goldmont".
402         (PTA_GOLDMONT): Define.
403         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
404         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
405         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
406         (fold_builtin_cpu): Add "goldmont".
407         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
408         (ix86_option_override_internal): Add "goldmont".
409         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
410         (processor_type): Add PROCESSOR_GOLDMONT.
411         * config/i386/i386.md: Add CPU "glm".
412         * config/i386/glm.md: New file.
413         * config/i386/x86-tune.def: Add m_GOLDMONT.
414         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
416 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
418         PR target/85572
419         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
420         E_V4DImode.
421         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
422         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
423         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
425         PR target/85317
426         * config/i386/i386.c (ix86_fold_builtin): Handle
427         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
429         PR target/85480
430         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
431         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
433 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
435         PR target/85658
436         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
437         (check_arch): Likewise.
438         (check_fpu): Return the result rather than printing it.
439         (end arch): Fix operator precedence.
440         (end cpu): Likewise.
441         (END): Print the result from check_fpu.
443 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
444             Alan Hayward  <alan.hayward@arm.com>
445             David Sherwood  <david.sherwood@arm.com>
447         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
448         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
449         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
450         (*fcmuo<mode>_and): New patterns.
452 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
454         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
455         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
456         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
457         (cmp_op, sve_imm_con): New code attributes.
458         (SVE_COND_INT_CMP, imm_con): Delete.
459         (cmp_op): Remove above unspecs from int attribute.
460         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
461         to...
462         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
463         comparison-specific unspecs.
464         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
465         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
466         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
467         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
468         (*vec_fcm<cmp_op><mode>): Rename to...
469         (*fcm<cmp_op><mode>): ...this and adjust likewise.
470         (*vec_fcmuo<mode>): Rename to...
471         (*fcmuo<mode>): ...this and adjust likewise.
472         (*pred_fcm<cmp_op><mode>): New pattern.
473         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
474         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
475         functions.
476         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
477         and UNORDERED.
478         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
479         (aarch64_emit_sve_predicated_cond): New function.
480         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
481         (aarch64_emit_unspec_cond_or): Replace with...
482         (aarch64_emit_sve_or_conds): ...this new function.  Use
483         aarch64_emit_sve_ptrue_op for the individual comparisons and
484         aarch64_emit_binop to OR them together.
485         (aarch64_emit_inverted_unspec_cond): Replace with...
486         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
487         aarch64_emit_sve_ptrue_op for the comparison and
488         aarch64_emit_unop to invert the result.
489         (aarch64_expand_sve_vec_cmp_float): Update after the above
490         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
492 2018-05-07  Nathan Sidwell  <nathan@acm.org>
494         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
495         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
496         (Backwards Compatibility): Likewise.
498 2018-05-07  Luis Machado  <luis.machado@linaro.org>
500         PR bootstrap/85681
501         Revert:
502         2018-05-07  Luis Machado  <luis.machado@linaro.org>
504         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
505         <prefetch_dynamic_strides>: New const bool field.
506         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
507         prefetch_dynamic_strides.
508         (exynosm1_prefetch_tune): Likewise.
509         (thunderxt88_prefetch_tune): Likewise.
510         (thunderx_prefetch_tune): Likewise.
511         (thunderx2t99_prefetch_tune): Likewise.
512         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
513         (aarch64_override_options_internal): Update to set
514         PARAM_PREFETCH_DYNAMIC_STRIDES.
515         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
516         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
517         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
518         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
519         prefetch-dynamic-strides setting.
521         2018-05-07  Luis Machado  <luis.machado@linaro.org>
523         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
524         <minimum_stride>: New const int field.
525         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
526         minimum_stride field.
527         (exynosm1_prefetch_tune): Likewise.
528         (thunderxt88_prefetch_tune): Likewise.
529         (thunderx_prefetch_tune): Likewise.
530         (thunderx2t99_prefetch_tune): Likewise.
531         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
532         (aarch64_override_options_internal): Update to set
533         PARAM_PREFETCH_MINIMUM_STRIDE.
534         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
535         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
536         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
537         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
538         stride is constant and is below the minimum stride threshold.
540 2018-05-07  Luis Machado  <luis.machado@linaro.org>
542         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
543         to 512.
545 2018-05-07  Luis Machado  <luis.machado@linaro.org>
547         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
548         <prefetch_dynamic_strides>: New const bool field.
549         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
550         prefetch_dynamic_strides.
551         (exynosm1_prefetch_tune): Likewise.
552         (thunderxt88_prefetch_tune): Likewise.
553         (thunderx_prefetch_tune): Likewise.
554         (thunderx2t99_prefetch_tune): Likewise.
555         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
556         (aarch64_override_options_internal): Update to set
557         PARAM_PREFETCH_DYNAMIC_STRIDES.
558         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
559         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
560         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
561         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
562         prefetch-dynamic-strides setting.
564 2018-05-07  Luis Machado  <luis.machado@linaro.org>
566         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
567         <minimum_stride>: New const int field.
568         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
569         minimum_stride field.
570         (exynosm1_prefetch_tune): Likewise.
571         (thunderxt88_prefetch_tune): Likewise.
572         (thunderx_prefetch_tune): Likewise.
573         (thunderx2t99_prefetch_tune): Likewise.
574         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
575         (aarch64_override_options_internal): Update to set
576         PARAM_PREFETCH_MINIMUM_STRIDE.
577         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
578         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
579         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
580         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
581         stride is constant and is below the minimum stride threshold.
583 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
585         PR c++/85659
586         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
587         the type is addressable.  Don't force op into register if it has
588         BLKmode.
590 2018-05-05  Roland McGrath  <mcgrathr@google.com>
592         PR other/77609
593         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
594         any section for which we don't know a specific type it should have,
595         regardless of name.  Previously this was done only for the exact
596         names ".init_array", ".fini_array", and ".preinit_array".
597         (default_elf_asm_named_section): Add comment about
598         relationship with default_section_type_flags and SECTION_NOTYPE.
599         (get_section): Don't consider it a type conflict if one side has
600         SECTION_NOTYPE and the other doesn't, as long as neither has the
601         SECTION_BSS et al used in the default_section_type_flags logic.
603 2018-05-05  Tom de Vries  <tom@codesourcery.com>
605         PR target/85653
606         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
607         (workaround_barsyncs): New function.
608         (nvptx_reorg): Use workaround_barsyncs.
609         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
610         (define_expand "nvptx_membar_cta"): New define_expand.
611         (define_insn "*nvptx_membar_cta"): New insn.
613 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
615         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
616         To improve optimization opportunities.
617         * builtin-types.def: The new needed builtin types for the above.
619 2018-05-04  Richard Biener  <rguenther@suse.de>
621         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
622         * gimple-ssa-store-merging.c
623         (imm_store_chain_info::output_merged_store): Remove redundant create,
624         release split_store vector contents on failure.
625         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
626         scalar stmt vector on cache hit.
628 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
630         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
631         Xilinx FP support.
632         * config.gcc (powerpc-xilinx-eabi*): Remove.
633         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
634         support.
635         (fusion_addis_mem_combo_load): Ditto.
636         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
637         FP support.
638         (rs6000_cpu_cpp_builtins): Ditto.
639         * config/rs6000/rs6000-linux.c
640         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
641         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
642         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
643         support.
644         (rs6000_setup_reg_addr_masks): Ditto.
645         (rs6000_init_hard_regno_mode_ok): Ditto.
646         (rs6000_option_override_internal): Ditto.
647         (legitimate_lo_sum_address_p): Ditto.
648         (rs6000_legitimize_address): Ditto.
649         (rs6000_legitimize_reload_address): Ditto.
650         (rs6000_legitimate_address_p): Ditto.
651         (abi_v4_pass_in_fpr): Ditto.
652         (setup_incoming_varargs): Ditto.
653         (rs6000_gimplify_va_arg): Ditto.
654         (rs6000_split_multireg_move): Ditto.
655         (rs6000_savres_strategy): Ditto.
656         (rs6000_emit_prologue_components): Ditto.
657         (rs6000_emit_epilogue_components): Ditto.
658         (rs6000_emit_prologue): Ditto.
659         (rs6000_emit_epilogue): Ditto.
660         (rs6000_elf_file_end): Ditto.
661         (rs6000_function_value): Ditto.
662         (rs6000_libcall_value): Ditto.
663         * config/rs6000/rs6000.h: Ditto.
664         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
665         (TARGET_MINMAX): ... this.  New.
666         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
667         * config/rs6000/rs6000.md: Remove Xilinx FP support.
668         (*movsi_internal1_single): Delete.
669         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
670         mfpu=, mxilinx-fpu): Delete.
671         * config/rs6000/singlefp.h: Delete.
672         * config/rs6000/sysv4.h: Remove Xilinx FP support.
673         * config/rs6000/t-rs6000: Ditto.
674         * config/rs6000/t-xilinx: Delete.
675         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
676         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
677         (VStype_simple): Delete.
678         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
679         * config/rs6000/xfpu.h: Delete.
680         * config/rs6000/xfpu.md: Delete.
681         * config/rs6000/xilinx.h: Delete.
682         * config/rs6000/xilinx.opt: Delete.
683         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
684         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
686 2018-05-04  Tom de Vries  <tom@codesourcery.com>
688         PR libgomp/85639
689         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
690         if ignore == 0.
692 2018-05-04  Richard Biener  <rguenther@suse.de>
694         PR middle-end/85627
695         * tree-complex.c (update_complex_assignment): We are always in SSA form.
696         (expand_complex_div_wide): Likewise.
697         (expand_complex_operations_1): Likewise.
698         (expand_complex_libcall): Preserve EH info of the original stmt.
699         (tree_lower_complex): Handle removed blocks.
700         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
701         on complex multiplication and division libcall builtins.
703 2018-05-04  Richard Biener  <rguenther@suse.de>
705         PR middle-end/85574
706         * fold-const.c (negate_expr_p): Restrict negation of operand
707         zero of a division to when we know that can happen without
708         overflow.
709         (fold_negate_expr_1): Likewise.
711 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
713         PR libstdc++/85466
714         * real.h (real_nextafter): Declare.
715         * real.c (real_nextafter): New function.
716         * fold-const-call.c (fold_const_nextafter): New function.
717         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
718         CASE_CFN_NEXTTOWARD.
719         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
720         even when arg1_mode is different from arg0_mode.
722 2018-05-03  Nathan Sidwell  <nathan@acm.org>
724         * doc/extend.texi (Deprecated Features): Remove
725         -ffriend-injection.
726         (Backwards Compatibility): Likewise.
727         * doc/invoke.texi (C++ Language Options): Likewise.
728         (C++ Dialect Options): Likewise.
730 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
732         PR target/85530
733         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
734         _mm512_mask_mullox_epi64): New intrinsics.
736 2018-05-03  Tom de Vries  <tom@codesourcery.com>
738         PR testsuite/85106
739         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
740         dump files): Add offload-tree.
742 2018-05-03  Richard Biener  <rguenther@suse.de>
744         PR tree-optimization/85615
745         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
746         to loops not nested in BBs loop father to avoid creating multi-entry
747         loops.
749 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
751         PR tree-optimization/70291
752         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
753         arguments.  Change return type to tree.  Emit libcall as a new
754         statement rather than replacing existing one when inplace_p is true.
755         (expand_complex_multiplication_components): New function.
756         (expand_complex_multiplication): Expand floating-point complex
757         multiplication using the above.
758         (expand_complex_division): Rename inner_type parameter to type.
759         Update expand_complex_libcall call-site.
760         (expand_complex_operations_1): Update expand_complex_multiplication
761         and expand_complex_division call-sites.
763 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
765         PR target/85582
766         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
767         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
768         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
769         the highest significant bit of the shift count mask is clear.  In
770         check whether and[sq]i3 is needed verify that all significant bits
771         of the shift count other than the highest are set.
773 2018-05-02  Tom de Vries  <tom@codesourcery.com>
775         PR libgomp/82428
776         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
777         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
778         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
779         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
780         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
781         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
782         __builtin_goacc_parlevel_size.
784 2018-05-02  Richard Biener  <rguenther@suse.de>
786         PR tree-optimization/85597
787         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
788         do not use split vect_get_vec_defs call but call vect_get_slp_defs
789         directly.
791 2018-05-02  Tom de Vries  <tom@codesourcery.com>
793         PR testsuite/85106
794         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
795         dump files): Add ltrans-tree.
797 2018-05-02  Tom de Vries  <tom@codesourcery.com>
799         PR testsuite/85106
800         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
801         dump files): Add wpa-ipa.
803 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
805         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
806         powerpc*-*-linux*paired* target.
807         * config/rs6000/750cl.h: Delete.
808         * config/rs6000/paired.h: Delete.
809         * config/rs6000/paired.md: Delete.
810         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
811         float support.
812         * config/rs6000/rs6000-builtin.def: Remove paired float support.
813         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
814         comment.  Remove paired float support.
815         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
816         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
817         VECTOR_PAIRED.
818         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
819         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
820         declarations.
821         * config/rs6000/rs6000.c: Remove paired float support.
822         (paired_expand_vector_init, paired_expand_vector_move,
823         paired_emit_vector_compare, paired_emit_vector_cond_expr,
824         (paired_expand_lv_builtin, paired_expand_stv_builtin,
825         paired_expand_builtin, paired_expand_predicate_builtin,
826         paired_init_builtins): Delete.
827         * config/rs6000/rs6000.h: Remove paired float support.
828         * config/rs6000/rs6000.md: Remove paired float support.
829         (move_from_CR_ov_bit): Delete.
830         * config/rs6000/rs6000.opt (mpaired): Delete.
831         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
832         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
834 2018-05-02  Richard Biener  <rguenther@suse.de>
836         PR middle-end/85567
837         * gimplify.c (gimplify_save_expr): When in SSA form allow
838         SAVE_EXPRs to compute to SSA vars.
840 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
842         PR target/85582
843         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
844         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
845         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
846         clobber operands[2], instead use a new pseudo.  Formatting fixes.
848 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
850         PR tree-optimization/85586
851         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
852         exit early for statements in the same group if the accesses are
853         not strided.
855 2018-05-02  Tom de Vries  <tom@codesourcery.com>
857         PR lto/85451
858         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
859         error message.
861 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
863         PR tree-optimization/85143
864         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
866 2018-05-01  Tom de Vries  <tom@codesourcery.com>
868         PR lto/85451
869         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
870         not found" error message.
872 2018-05-01  Tom de Vries  <tom@codesourcery.com>
874         PR other/83786
875         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
876         * vec.c (test_ordered_remove_if): New function.
877         (vec_c_tests): Call test_ordered_remove_if.
878         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
879         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
880         * tree-vect-patterns.c (vect_pattern_recog_1): Use
881         VEC_ORDERED_REMOVE_IF.
883 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
885         PR tree-optimization/82665
886         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
887         pointer subtraction where arguments come from a memchr call.
889 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
891         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
892         --push-state --as-needed and --pop-state instead of --as-needed and
893         --no-as-needed if ld supports it.
894         * configure: Regenerated.
896         PR web/85578
897         * doc/install.texi2html: Replace _002d with - and _002a with * in
898         generated html files using sed.
900 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
902         PR c++/85523
903         * gcc-rich-location.c (blank_line_before_p): New function.
904         (use_new_line): New function.
905         (gcc_rich_location::add_fixit_insert_formatted): New function.
906         * gcc-rich-location.h
907         (gcc_rich_location::add_fixit_insert_formatted): New function.
909 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
911         * selftest.c (assert_streq): Rename "expected" and "actual" to
912         "val1" and "val2".  Extend NULL-handling to cover both inputs
913         symmetrically, while still requiring both to be non-NULL for a pass.
914         * selftest.h (assert_streq): Rename "expected" and "actual" to
915         "val1" and "val2".
916         (ASSERT_EQ): Likewise.
917         (ASSERT_EQ_AT): Likewise.
918         (ASSERT_KNOWN_EQ): Likewise.
919         (ASSERT_KNOWN_EQ_AT): Likewise.
920         (ASSERT_NE): Likewise.
921         (ASSERT_MAYBE_NE): Likewise.
922         (ASSERT_MAYBE_NE_AT): Likewise.
923         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
924         the assertion to pass.
925         (ASSERT_STREQ_AT): Likewise.
927 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
929         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
930         interaction with -pie.
932 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
934         * selftest.h: Fix alphabetization of per-source-file selftest
935         declarations.
937 2018-04-30  Jason Merrill  <jason@redhat.com>
939         PR c++/61982 - dead stores to destroyed objects.
940         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
941         of clobber.
943 2018-04-30  Jason Merrill  <jason@redhat.com>
945         * tree.c (build_clobber): New.
946         * tree.h: Declare it.
947         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
949 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
951         * diagnostic-show-locus.c (layout::layout): Update for
952         location_get_source_line returning a char_span.
953         (struct char_span): Move to input.h.
954         (struct correction): Update for fields in char_span becoming
955         private.
956         (struct source_line): Update for location_get_source_line
957         returning a char_span.
958         (layout::print_line): Likewise.
959         * edit-context.c (edited_file::print_content): Likewise.
960         (edited_file::print_diff_hunk): Likewise.
961         (edited_file::print_run_of_changed_lines): Likewise.
962         (edited_file::get_num_lines): Likewise.
963         (edited_line::edited_line): Likewise.
964         * final.c (asm_show_source): Likewise.
965         * input.c (location_get_source_line): Convert return type
966         from const char * to char_span, losing the final "line_len"
967         param.
968         (dump_location_info): Update for the above.
969         (get_substring_ranges_for_loc): Likewise.  Use a char_span
970         when handling the literal within the line.
971         (test_reading_source_line): Update for location_get_source_line
972         returning a char_span.
973         * input.h (class char_span): Move here from
974         diagnostic-show-locus.c, converting from a struct to a class.
975         Make data members private.
976         (char_span::operator bool): New.
977         (char_span::length): New.
978         (char_span::get_buffer): New.
979         (char_span::operator[]): New.
980         (char_span::subspan): Make const.
981         (char_span::xstrdup): New.
982         (location_get_source_line): Convert return type from const char *
983         to char_span, losing the final "line_size" param.
985 2018-04-30  Jan Hubicka  <jh@suse.cz>
987         * lto-wrapper.c (ltrans_priorities): New static var.
988         (cmp_priority): New.
989         (run_gcc): Read priorities and if doing parallel build order
990         the Makefile by them.
992 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
994         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
996 2018-04-30  Richard Biener  <rguenther@suse.de>
998         * tree-cfg.c (verify_address): Remove base argument, add
999         flag whether to check TREE_ADDRESSABLE and do that.
1000         (verify_expr): Remove.
1001         (verify_types_in_gimple_reference): Add pieces from verify_expr.
1002         (verify_gimple_assign_single): Likewise.
1003         (verify_gimple_switch): Likewise.
1004         (verify_expr_location_1): Dereference tp once.  Add (disabled)
1005         piece from verify_expr.
1006         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
1008 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1010         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
1012 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1014         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
1015         (small_data_pattern): Likewise.
1016         (arc_rewrite_small_data): Likewise.
1017         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
1018         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
1019         (get_symbol_alignment): New function.
1020         (legitimate_small_data_address_p): Likewise.
1021         (legitimate_scaled_address): Update, call
1022         legitimate_small_data_address_p.
1023         (output_sdata): New static variable.
1024         (arc_print_operand): Update how we handle small data operands.
1025         (arc_print_operand_address): Likewise.
1026         (arc_legitimate_address_p): Update, use
1027         legitimate_small_data_address_p.
1028         (arc_rewrite_small_data_p): Remove.
1029         (arc_rewrite_small_data_1): Likewise.
1030         (arc_rewrite_small_data): Likewise.
1031         (small_data_pattern): Likewise.
1032         (compact_sda_memory_operand): Update to use
1033         legitimate_small_data_address_p and get_symbol_alignment.
1034         (prepare_move_operands): Don't rewite sdata pattern.
1035         (prepare_extend_operands): Remove.
1036         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
1037         pattern.
1038         (zero_extendqisi2): Likewise.
1039         (zero_extendhisi2): Likewise.
1040         (extendqihi2): Likewise.
1041         (extendqisi2): Likewise.
1042         (extendhisi2): Likewise.
1043         (addsi3): Likewise.
1044         (subsi3): Likewise.
1045         (andsi3): Likewise.
1046         * config/arc/constraints.md (Usd): Change it to memory constraint.
1048 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1050         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
1051         as source of std instructions.
1052         * config/arc/arc.md (movsi_insn): Update pattern predicate to
1053         allow 6-bit constants as source for store instructions.
1054         (movdi_insn): Update instruction pattern to allow 6-bit constants
1055         as source for store instructions.
1057 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
1059         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
1061 2018-04-30  Nathan Sidwell  <nathan@acm.org>
1062             Sandra Loosemore <sandra@codesourcery.com>
1064         * dumpfile.c (dump_open): Allow '-' for stdout.
1065         * doc/invoke.texi (Developer Options): Document dump filename
1066         determination early.  Document stdin/stdout selection.
1068 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
1070         Microblaze Target: PIC data text relative
1072         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
1073         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
1074         Add declaration.
1075         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
1076         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
1077         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
1078         New addressing mode for data-text relative position indepenedent code.
1079         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
1080         'ADDRESS_SYMBOLIC_TXT_REL'.
1081         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
1082         (microblaze_legitimate_pic_operand): Exclude function calls from
1083         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
1084         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
1085         addresses cases.
1086         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
1087         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
1088         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
1089         for 'address + offset'.
1090         (microblaze_expand_prologue): Add new function prologue call for
1091         'r20' assignation.
1092         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
1093         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
1094         table in case of TARGET_PIC_DATA_TEXT_REL.
1095         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
1096         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
1097         Add new macros 'UNSPEC_TEXT',
1098         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
1099         + exclude function calls from 'UNSPEC_PLT' in case of data text
1100         relative mode.
1101         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
1102         new target hook for generating address diff vector tables in case of
1103         flag_pic.
1104         * doc/tm.texi : Regenerate.
1105         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
1106         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
1107         of addr diff vector generation.
1108         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
1109         target hook definition.
1110         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
1111         Add default function for generate_pic_addr_diff_vec -> flag_pic.
1112         * doc/invoke.texi (Add new pic option): Add new microblaze pic
1113         option for data text relative.
1115 2018-04-30  Richard Biener  <rguenther@suse.de>
1117         * tree-chrec.h (evolution_function_is_constant_p): Remove
1118         redundant check.
1119         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
1121 2018-04-30  Richard Biener  <rguenther@suse.de>
1123         PR bootstrap/85571
1124         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
1126 2018-04-30  Richard Biener  <rguenther@suse.de>
1128         PR tree-optimization/28364
1129         PR tree-optimization/85275
1130         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
1131         copying first exit test.
1133 2018-04-28  Mark Wielaard  <mark@klomp.org>
1135         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
1136         dwarf_version >= 5.
1137         (dwarf_AT): Handle DW_AT_addr_base.
1138         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
1140 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
1142         PR target/84431
1143         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
1144         (*ashl<dwi>3_doubleword_mask_1): Ditto.
1145         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
1146         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
1148 2018-04-28  Richard Biener  <rguenther@suse.de>
1150         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
1151         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
1152         to reflect use.  Only add interesting stmts.
1154 2018-04-27  Martin Jambor  <mjambor@suse.cz>
1156         PR ipa/85549
1157         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
1158         the jump function allows for passing through aggregate values.
1160 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
1162         * input.h (in_system_header_at): Convert from macro to inline
1163         function.
1164         (from_macro_expansion_at): Likewise.
1165         (from_macro_definition_at): Likewise.
1167 2018-04-27  Jeff Law  <law@redhat.com>
1169         * config.gcc: Mark tile* targets as deprecated/obsolete.
1171 2018-04-27  Richard Biener  <rguenther@suse.de>
1173         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
1174         fix for ILP32.
1176 2018-04-27  Richard Biener  <rguenther@suse.de>
1178         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
1180 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
1182         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
1183         with Yd constraint. Set "preferred_for_speed" attribute from
1184         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
1185         with Yd constraint.
1186         (*movdi_internal): Ditto.
1187         (movti_interunit splitters): Remove
1188         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
1189         (movdi_interunit splitters): Ditto.
1190         * config/i386/constraints.md (Ye): Remove.
1191         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
1193 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1195         PR target/85512
1196         * config/aarch64/constraints.md (Usg): Limit to 31.
1197         (Usj): Limit to 63.
1199 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
1201         PR tree-optimization/85529
1202         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
1203         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
1204         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
1205         zero extension or masking of the MSB bit.
1206         (optimize_range_tests): Add FIRST_BB argument, pass it through
1207         to optimize_range_tests_var_bound.
1208         (maybe_optimize_range_tests, reassociate_bb): Adjust
1209         optimize_range_tests callers.
1211 2018-04-26  Richard Biener  <rguenther@suse.de>
1212             Jakub Jelinek  <jakub@redhat.com>
1214         * cgraph.h (symbol_table): Just declare debug method here.
1215         * symtab.c (symbol_table::debug): Define.
1217 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
1219         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
1221 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
1223         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
1224         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
1225         (*movdi_internal): Substitute Yi and Yj constraint with x
1226         and Ym and Yn constraint with y constraint.  Update "isa"
1227         attribute and set "preferred_for_speed" attribute from
1228         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
1229         (*movsi_internal): Ditto.
1230         (*movdf_internal): Ditto.
1231         (*movsf_internal): Ditto.
1232         (*zero_extendsidi2): Ditto.
1233         * config/i386/sse.md (vec_set<mode>_0): Ditto.
1234         (sse2_loadld): Ditto.
1235         (*vec_extract<ssevecmodelower>_0): Ditto.
1236         (*vec_extractv4si_0_zext_sse4): Ditto.
1237         (vec_concatv2di): Ditto.
1238         (*vec_dup<mode>): Ditto.
1239         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
1240         * config/i386/constraints.md (Yi): Remove.
1241         (Yj): Remove.
1242         (Ym): Remove.
1243         (Yn): Remove.
1245 2018-04-26  Nathan Sidwell  <nathan@acm.org>
1247         * dumpfile.c (dump_open): New.
1248         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
1249         (dump_finish): Detect stdio/stderr by value not name.
1251 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
1253         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
1255 2018-04-26  Tom de Vries  <tom@codesourcery.com>
1257         PR target/84952
1258         * config/nvptx/nvptx.c (verify_neutering_jumps)
1259         (verify_neutering_labels): New function
1260         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
1262 2018-04-26  Tom de Vries  <tom@codesourcery.com>
1264         PR target/84025
1265         * config/nvptx/nvptx.c (needs_neutering_p): New function.
1266         (nvptx_single): Use needs_neutering_p to skip over insns that do not
1267         need neutering.
1269 2018-04-26  Richard Biener <rguenther@suse.de>
1270             Tom de Vries  <tom@codesourcery.com>
1272         PR lto/85422
1273         * lto-streamer-out.c (output_function): Fixup loops if required to match
1274         discovery done in the reader.
1276 2018-04-26  Richard Biener  <rguenther@suse.de>
1278         PR tree-optimization/85116
1279         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
1280         have a loop exit from the single latch predecessor.  Remove
1281         case of header with just condition.
1282         (ch_base::copy_headers): Exclude infinite loops from any
1283         processing.
1284         (pass_ch::execute): Record exits.
1286 2018-04-26  Richard Biener  <rguenther@suse.de>
1288         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
1289         prologue cost vector and pass it to vect_get_load_cost.
1290         (vect_get_peeling_costs_all_drs): Likewise.
1291         (vect_peeling_hash_get_lowest_cost): Likewise.
1292         (vect_enhance_data_refs_alignment): Likewise.
1294 2018-04-26  Richard Biener  <rguenther@suse.de>
1296         PR middle-end/85450
1297         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
1298         checking of integer<->pointer conversions.
1299         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
1300         sign-/zero-extending pointer types.
1301         (expand_omp_for_static_chunk): Likewise.
1303 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
1304             Jean Lee  <xiaoyur347@gmail.com>
1306         * config/mips/mips.c (mips_asan_shadow_offset): New function.
1307         (TARGET_ASAN_SHADOW_OFFSET): Define.
1308         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
1309         true for -fsanitize=address.
1311 2018-04-25  Mark Wielaard  <mark@klomp.org>
1313         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
1314         shorter ones.
1316 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
1318         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
1319         than "alu", remove explicit "memory" and "imm_disp" attributes.
1320         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
1322         PR middle-end/85414
1323         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
1324         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
1325         gen_lowpart_no_emit.
1327 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
1329         PR target/85473
1330         * config/i386/i386.c (ix86_expand_builtin): Change memory
1331         operand to XI, extend p0 to Pmode.
1332         * config/i386/i386.md: Change unspec volatile and operand
1333         1 mode to XI, change operand 0 mode to P.
1335 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1337         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
1338         GET_MODE_MASK before any checking.
1339         (nds32_can_use_bset_p): Likewise.
1340         (nds32_can_use_btgl_p): Likewise.
1342 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1344         * config/nds32/nds32-doubleword.md: New define_split pattern for
1345         illegal register number.
1347 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1349         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
1351 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
1353         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
1355 2018-04-25  Richard Biener  <rguenther@suse.de>
1357         * lto-streamer.h (LTO_major_version): Bump to 8.
1359 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
1361         * BASE-VER: Set to 9.0.0.
1363 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
1365         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
1366         in __abskf2 and __powikf2.
1368 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1370         PR target/85512
1371         * config/aarch64/constraints.md (Usg, Usj): New constraints.
1372         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
1373         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
1374         Use the above on operand 2.  Reindent.
1375         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
1377 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1379         PR target/85485
1380         * common/config/i386/i386-common.c (ix86_handle_option): Don't
1381         handle OPT_mcet.
1382         * config/i386/i386.opt (mcet): Removed.
1383         * doc/install.texi: Remove -mcet documentation.
1384         * doc/invoke.texi: Likewise.
1386 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1388         PR target/85485
1389         * doc/install.texi: Remove -mcet from bootstrap-cet.
1391 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1393         PR target/85511
1394         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
1395         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
1396         if TARGET_64BIT.
1398         PR target/85503
1399         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
1400         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
1401         containing a CONST_VECTOR.
1403 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
1405         * doc/install.texi: Update newlib dependency for nvptx.
1407 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1409         PR target/85508
1410         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
1411         instead of INTVAL when shifting x left.
1413 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
1415         PR tree-optimization/85478
1416         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
1417         vect_grouped_store_supported for single element vectors.
1419 2018-04-24  Richard Biener  <rguenther@suse.de>
1421         PR target/85491
1422         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
1423         load cost increase to the case of non-constant step.
1425 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
1427         PR target/84828
1428         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
1429         destination if any_malformed_asm.
1431 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
1433         PR middle-end/85496
1434         * expr.c (store_field): In the bitfield case, if the value comes from
1435         a function call and is returned in registers by means of a PARALLEL,
1436         do not change the mode of the temporary unless BLKmode and VOIDmode.
1438 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
1440         PR rtl-optimization/85423
1441         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
1442         dependencies to debug insns when the previous insn is non-debug.
1444 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
1446         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
1447         enums into a single definition.
1448         (fls): Fix predicates and printing.
1449         (seti): Likewise.
1451 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
1453         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
1454         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
1455         and short u6 immediate.
1456         (check_if_valid_sleep_operand): Remove.
1457         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
1459 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1461         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
1462         flag_always_save_lp condition.
1463         * config/nds32/nds32.opt (malways-save-lp): New option.
1465 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1467         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
1468         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
1469         * config/nds32/nds32.h
1470         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
1471         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
1473 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1475         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
1476         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
1478 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
1479             Chung-Ju Wu  <jasonwucj@gmail.com>
1481         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
1482         Declare.
1483         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
1484         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
1486 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1488         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
1490 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1492         * config/nds32/nds32-protos.h (nds32_data_alignment,
1493         nds32_local_alignment): Declare.
1494         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
1495         nds32_local_alignment): New functions.
1496         (TARGET_CONSTANT_ALIGNMENT): Define.
1497         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
1499 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1501         * config/nds32/nds32.c
1502         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
1503         (TARGET_MODES_TIEABLE_P): Likewise.
1505 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
1507         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
1508         level Ofast and Og.
1510 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
1511             Chung-Ju Wu  <jasonwucj@gmail.com>
1513         * config/nds32/constants.md (unspec_volatile_element): Add enum values
1514         for unaligned access.
1515         * config/nds32/nds32-intrinsic.c: Implementation of expanding
1516         unaligned access.
1517         * config/nds32/nds32-intrinsic.md: Likewise.
1518         * config/nds32/nds32_intrinsic.h: Likewise.
1519         * config/nds32/nds32.h (nds32_builtins): Likewise.
1520         * config/nds32/nds32.opt (munaligned-access): New option.
1521         * config/nds32/nds32.c (nds32_asm_file_start): Display
1522         flag_unaligned_access status.
1524 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
1526         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
1527         -mno-relax is present.
1528         * config/riscv/linux.h (LINK_SPEC): Ditto.
1530 2018-04-20  Martin Sebor  <msebor@redhat.com>
1532         PR c/85365
1533         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
1534         for null pointers.
1535         (gimple_fold_builtin_stxcpy_chk): Same.
1536         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
1538 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
1540         PR target/85456
1541         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
1542         __powikf2 when long double is IEEE 128-bit.
1544 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
1546         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
1547         step to make sure stack always aligned.
1549 2018-04-20  Carl Love  <cel@us.ibm.com>
1551         PR target/83402
1552         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
1553         size check for arg0.
1555 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
1556             Tom de Vries  <tom@codesourcery.com>
1558         PR target/85445
1559         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
1560         Emit insns for calls too.
1561         (nvptx_find_par): Always look for worker-level predecessor insn.
1562         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
1563         calls.
1564         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
1565         (nvptx_process_pars): Propagate frames for calls.
1567 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
1569         PR target/85469
1570         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
1571         Removed.
1572         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
1573         (ix86_handle_option): Don't handle OPT_mibt.
1574         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
1575         __SHSTK__.
1576         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
1577         has_ibt and ibt.
1578         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
1579         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
1580         (ix86_target_macros): Define __CET__ with flag_cf_protection
1581         for -fcf-protection.
1582         * config/i386/i386.c (isa2_opts): Remove -mibt.
1583         * config/i386/i386.h (TARGET_IBT): Removed.
1584         (TARGET_IBT_P): Likewise.
1585         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
1586         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
1587         * config/i386/i386.opt (mcet): Update help message.
1588         (mshstk): Likewise.
1589         (mibt): Removed.
1590         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
1591         -mcet as an alias for -mshstk.
1593 2018-04-20  Richard Biener <rguenther@suse.de>
1595         PR middle-end/85475
1596         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
1597         complexity by forcing a single use of the multiply operand.
1599 2018-04-20  Martin Jambor  <mjambor@suse.cz>
1601         ipa/85449
1602         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
1603         recursion dependency to only apply to non-clones.
1605 2018-04-20  Martin Jambor  <mjambor@suse.cz>
1607         ipa/85447
1608         * ipa-cp.c (create_specialized_node): Check that clones of
1609         self-recursive edges exist during IPA-CP.
1611 2018-04-19  Toon Moene  <toon@moene.org>
1613         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
1614         by -O3. 
1616 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
1618         PR tree-optimization/85467
1619         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
1620         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
1621         VECTOR_CST element to type.
1623 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1625         PR target/85397
1626         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
1627         * config/i386/i386.md (builtin_setjmp_setup): Removed.
1628         (builtin_longjmp): Likewise.
1629         (save_stack_nonlocal): New pattern.
1630         (restore_stack_nonlocal): Likewise.
1632 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1634         PR target/85404
1635         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
1636         Replace ASM_OUTPUT_LABEL with fprintf.
1638 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
1640         PR target/85417
1641         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
1642         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
1643         * config/i386/i386-c.c (ix86_target_macros_internal): Also
1644         define __IBT__ and __SHSTK__ for -fcf-protection.
1645         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
1646         TARGET_IBT.
1647         (ix86_trampoline_init): Likewise.
1648         (x86_output_mi_thunk): Likewise.
1649         (ix86_notrack_prefixed_insn_p): Likewise.
1650         (ix86_option_override_internal): Don't disallow -fcf-protection.
1651         * config/i386/i386.md (rdssp<mode>): Also enable for
1652         -fcf-protection.
1653         (incssp<mode>): Likewise.
1654         (nop_endbr): Likewise.
1655         * config/i386/i386.opt (mcet): Change help message to built-in
1656         functions only.
1657         (mibt): Likewise.
1658         (mshstk): Likewise.
1659         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
1660         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
1661         enable CET built-in functions.
1663 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
1665         * common/config/i386/i386-common.c 
1666         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
1667         OPTION_MASK_ISA_MOVDIRI_UNSET,
1668         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
1669         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
1670         * config.gcc (movdirintrin.h): New header.
1671         * config/i386/cpuid.h (bit_MOVDIRI,
1672         bit_MOVDIR64B): New bits.
1673         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
1674         and -mmvodir64b.
1675         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
1676         (VOID, PVOID, PCVOID)): New function types.
1677         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
1678         __builtin_ia32_directstoreu_u64,
1679          __builtin_ia32_movdir64b): New builtins.
1680         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
1681         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
1682         and -mmovdiri.
1683         (ix86_valid_target_attribute_inner_p): Ditto.
1684         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
1685         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
1686         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
1687         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
1688         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
1689         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
1690         (movdiri<mode>, movdir64b_<mode>): New.
1691         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
1692         * config/i386/immintrin.h: Include movdirintrin.h.
1693         * config/i386/movdirintrin.h: New file.
1694         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
1696 2018-04-19  Richard Biener  <rguenther@suse.de>
1698         PR middle-end/85455
1699         * cfg.c (clear_bb_flags): When loop state says we have
1700         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
1702 2018-04-19  Richard Biener  <rguenther@suse.de>
1704         PR tree-optimization/84737
1705         * tree-vect-data-refs.c (vect_copy_ref_info): New function
1706         copying restrict info.
1707         (vect_setup_realignment): Use it.
1708         * tree-vectorizer.h (vect_copy_ref_info): Declare.
1709         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
1710         the first DR to all generated stores.
1711         (vectorizable_load): Likewise for loads.
1713 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
1715         PR tree-optimization/85446
1716         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
1717         the integral and pointer types to have the same precision.
1719         * doc/install.texi: Document --disable-cet being the default and
1720         --enable-cet=auto.
1722 2018-04-18  Martin Liska  <mliska@suse.cz>
1724         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
1725         style.
1727 2018-04-18  Martin Liska  <mliska@suse.cz>
1729         Revert
1730         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1732         PR ipa/83983
1733         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
1734         arguments if they are comparable.
1736 2018-04-18  Martin Liska  <mliska@suse.cz>
1738         Revert
1739         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
1741         PR lto/84805
1742         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
1743         incomplete types.
1745 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
1747         PR target/85388
1748         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
1749         ENDBR after calling __morestack.
1751 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
1753         PR jit/85384
1754         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
1755         by using gcc_base_ver to generate a gcc_driver_version, and use
1756         it when generating GCC_DRIVER_NAME.
1757         * configure: Regenerate.
1759 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
1761         PR target/81084
1762         * config.gcc: Obsolete powerpc*-*-*spe*.
1764 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
1766         PR debug/84637
1767         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
1768         (stabstr_D): Change type of unum from unsigned int to
1769         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
1770         type.
1772 2018-04-17  Jim Wilson  <jimw@sifive.com>
1774         PR 84856
1775         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
1776         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
1777         Set arg_pointer_offset after using pretend_args_size.
1779 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
1781         PR rtl-optimization/85431
1782         * dse.c (record_store): Ignore zero width stores.
1784         PR sanitizer/85230
1785         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
1786         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
1787         __builtin_stack_restore rather than after it.
1788         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
1789         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
1790         argument instead of virtual_dynamic_stack_rtx.
1792 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1794         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
1795         New prototype.
1796         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1797         Add note to error message to explain internal mapping of overloaded
1798         built-in function name to non-overloaded built-in function name.
1799         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
1800         function.
1802 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
1804         PR target/85424
1805         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
1806         where the inputs overlap with the output.
1808 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
1810         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
1811         (=v, v) alternative and explicit "memory" attribute.
1812         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
1813         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
1814         attributes.
1815         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
1816         "sselog1" type instead of "sselog".
1817         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
1818         "sselog".  Remove explicit "memory" attribute.
1819         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
1820         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
1821         attributes.
1822         (vec_extract_hi_v32hi): Merge all alternatives into one, use
1823         "sselog1" type instead of "sselog".  Remove explicit "memory"
1824         attribute.
1825         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
1826         use "sselog1" type instead of "sselog".  Remove explicit "memory"
1827         attribute.
1828         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
1829         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
1830         attributes.
1831         (vec_extract_hi_v64qi): Merge all alternatives into one, use
1832         "sselog1" type instead of "sselog".  Remove explicit "memory"
1833         attribute.
1834         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
1835         use "sselog1" type instead of "sselog".  Remove explicit "memory"
1836         attribute.
1838         PR target/85430
1839         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
1841         PR middle-end/85414
1842         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
1843         on a SUBREG.
1845 2018-04-17  Martin Jambor  <mjambor@suse.cz>
1847         PR ipa/85421
1848         * ipa-cp.c (create_specialized_node): Call
1849         expand_all_artificial_thunks if necessary.
1851 2018-04-17  Martin Liska  <mliska@suse.cz>
1853         PR lto/85405
1854         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
1855         in message, remote space in between '_G' and '('.
1857 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
1859         PR target/85281
1860         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
1861         avx512f_vmcmp<mode>3<round_saeonly_name>,
1862         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
1863         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
1864         avx512f_rndscale<mode><round_saeonly_name>,
1865         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
1866         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
1867         Use %<iptr>2 instead of %2 for -masm=intel.
1868         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
1869         avx512f_vcvttss2usi<round_saeonly_name>,
1870         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
1871         -masm=intel.
1872         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
1873         avx512f_vcvttsd2usi<round_saeonly_name>,
1874         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
1875         Use %q1 instead of %1 for -masm=intel.
1876         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
1877         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
1878         of %3 for -masm=intel.
1879         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
1880         -masm=intel.
1881         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
1882         -masm=intel.
1883         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
1884         -masm=intel.
1885         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
1886         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
1887         %g1.
1888         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
1889         -masm=intel.
1890         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
1891         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
1892         %g1 and one with %0 and %1.
1893         (avx512er_vmrcp28<mode><round_saeonly_name>,
1894         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
1895         %1 for -masm=intel.
1896         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
1897         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
1898         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
1899         of %0 and %{%4%} for -masm=intel.
1900         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
1901         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
1902         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
1903         order of %0 and %{%5%}%{z%} for -masm=intel.
1905 2018-04-17  Jan Hubicka  <jh@suse.cz>
1907         PR lto/85405
1908         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
1910 2018-04-17  Martin Liska  <mliska@suse.cz>
1912         PR ipa/85329
1913         * multiple_target.c (create_dispatcher_calls): Set apostrophes
1914         for target_clone error message.  Make default implementation
1915         clone to be a local declaration.
1916         (separate_attrs): Add new argument and check for an empty
1917         string.
1918         (expand_target_clones): Handle it.
1919         (ipa_target_clone): Make redirection just for target_clones
1920         functions.
1922 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
1923             Tom de Vries  <tom@codesourcery.com>
1925         PR middle-end/84955
1926         * omp-expand.c (expand_oacc_for): Add dummy false branch for
1927         tiled basic blocks without omp continue statements.
1929 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
1931         PR target/83660
1932         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
1933         vec_extract expression as having side effects to make sure it gets
1934         a cleanup point.
1936 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
1938         PR target/85403
1939         * config/i386/i386.c (get_builtin_code_for_version): Check
1940         error_mark_node.
1942 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
1944         PR target/84331
1945         * gcc/config.gcc: Support "skylake".
1946         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
1947         PROCESSOR_SKYLAKE.
1948         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
1949         (processor_target_table): Add "skylake".
1950         (ix86_option_override_internal): Add "skylake".
1951         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
1952         PROCESSOR_CANNONLAKE.
1953         (get_builtin_code_for_version): Fix priority for
1954         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
1955         PROCESSOR_SKYLAKE-AVX512.
1956         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
1957         (processor_type): Add PROCESSOR_SKYLAKE.
1959 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
1960             Jason Merrill  <jason@redhat.com>
1962         PR c++/85112
1963         * convert.c (convert_to_integer_1): Use direct recursion for
1964         enumeral types and types with a precision less than the number
1965         of bits in their mode.
1967 2018-04-16  Julia Koval  <julia.koval@intel.com>
1969         PR target/84413
1970         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
1971         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
1973 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
1975         PR target/85293
1976         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
1977         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
1978         and -mno-direct-move.
1980 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
1982         PR target/83402
1983         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
1984         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
1985         Ensure negative shifts result in {0}.
1987 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
1989         PR rtl-optimization/79916
1990         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
1991         regs (if any) to define how to gnerate SD moves when LRA is in
1992         progress.
1994 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
1996         PR rtl-optimization/85393
1997         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
1998         * except.c (expand_dw2_landing_pad_for_region): Make static.
1999         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
2000         a label and unconditional jump to old_bb, rather than
2001         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
2002         basic block.
2004         PR rtl-optimization/85376
2005         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
2006         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
2007         instead of a specific value.
2009 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
2010             Bin Cheng  <bin.cheng@arm.com>
2012         PR tree-optimization/82965
2013         PR tree-optimization/83991
2014         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
2015         by_profile_only parameter.
2016         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
2017         information if the loop was predicted to iterate too many times.
2018         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
2020 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
2022         PR lto/71991
2023         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
2024         always inline.
2026 2018-04-13  Martin Liska  <mliska@suse.cz>
2027             Jakub Jelinek  <jakub@redhat.com>
2029         PR middle-end/81657
2030         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
2031         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
2032         * builtins.c (expand_builtin_memory_copy_args): Use
2033         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
2034         handle dest_addr == pc_rtx.
2036 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
2038         PR target/85291
2039         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
2040         asked to not generate direct moves.
2041         (fix_trunc<mode>si2_stfiwx): Similar.
2042         (fix_trunc<mode>si2_internal): Similar.
2044 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2046         PR debug/83157
2047         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
2048         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
2049         lookup if dest in some wider mode is known to be const0_rtx and
2050         if so, record permanent equivalence for it to be ZERO_EXTEND of
2051         the narrower mode destination.
2053 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
2055         * lto-streamer-out.c (output_function): Revert 259346.
2056         * omp-expand.c (expand_oacc_for): Likewise.
2058 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
2060         PR rtl-optimization/85354
2061         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
2062         * sel-sched.c (sel_global_init): ... here.
2064 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
2066         PR target/85238
2067         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
2068         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
2069         mode for PE-COFF targets.
2070         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
2071         (i386_pe_asm_lto_end): Likewise.
2072         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
2073         (TARGET_ASM_LTO_END): Likewise.
2074         * config/i386/winnt.c (saved_debug_info_level): New static variable.
2075         (i386_pe_asm_lto_start): New function.
2076         (i386_pe_asm_lto_end): Likewise.
2078 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
2079             Richard Biener  <rguenther@suse.de>
2081         PR middle-end/84955
2082         * lto-streamer-out.c (output_function): Fix CFG loop state before
2083         streaming out.
2084         * omp-expand.c (expand_oacc_for): Handle calls to internal
2085         functions like regular functions.
2087 2018-04-12  Richard Biener  <rguenther@suse.de>
2089         PR lto/85371
2090         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
2091         for the early LTO debug to properly generate references to it
2092         during DIE emission.  Do not re-use that for the skeleton for
2093         split-dwarf.
2094         (dwarf2out_early_finish): Likewise.
2096 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2098         PR target/85328
2099         * config/i386/sse.md
2100         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
2101         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
2102         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
2103         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
2104         and output is a reg, avoid creating invalid lowpart subreg, but
2105         instead split into a 512-bit move.  Don't split if not AVX512VL,
2106         input is xmm16+ reg and output is a mem.
2107         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
2108         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
2109         xmm16+ reg and output is a mem.
2111 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2113         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
2114         also for flag_dwarf2_cfi_asm.
2116 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
2118         PR rtl-optimization/85342
2119         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
2120         a bool scalar var inside of the loop instead.  Don't try to update
2121         recog_data.operand after failed apply_change_group.
2123 2018-04-12  Tom de Vries  <tom@codesourcery.com>
2125         PR target/85296
2126         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
2127         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
2128         array with flexible array member as array without given dimension.
2129         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
2130         argument for undefined param to true.
2132 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
2134         PR target/85321
2135         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
2136         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
2137         from PowerPC section.
2138         * config/rs6000/sysv4.opt (mcall-): Improve help text.
2139         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
2140         help text that is too long.
2141         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
2142         help text that is too long.
2143         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
2144         help text that is too long.
2146 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
2148         * config/alpha/alpha.md (stack_probe_internal): Rename
2149         from "probe_stack".  Update all callers.
2151 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2153         PR rtl-optimization/84566
2154         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
2155         sched_macro_fuse_insns.
2157 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2159         PR target/84301
2160         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
2161         (compute_block_dependences): ... from here.
2163 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2165         PR tree-optimization/85331
2166         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
2167         from int to HOST_WIDE_INT.
2169 2018-04-11  Martin Jambor  <mjambor@suse.cz>
2171         PR ipa/84149
2172         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
2173         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
2174         not the same as the source val.
2175         (cgraph_edge_brings_value_p): New parameter.
2176         (gather_edges_for_value): Pass destination value to
2177         cgraph_edge_brings_value_p.
2178         (perhaps_add_new_callers): Likewise.
2179         (get_info_about_necessary_edges): Likewise and exclude values brought
2180         only by self-recursive edges.
2181         (create_specialized_node): Redirect only clones of self-calling edges.
2182         (+self_recursive_pass_through_p): New function.
2183         (find_more_scalar_values_for_callers_subset): Use it.
2184         (find_aggregate_values_for_callers_subset): Likewise.
2185         (known_aggs_to_agg_replacement_list): Removed.
2186         (decide_whether_version_node): Re-calculate known constants for all
2187         remaining context clones.
2189 2018-04-11  Richard Biener  <rguenther@suse.de>
2191         PR lto/85339
2192         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
2193         from early DWARF output.
2194         (dwarf2out_early_finish): Output line info unconditionally into
2195         early DWARF and add reference to it.
2197 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2199         PR target/85281
2200         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
2201         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
2202         other than V2DFmode using iptr mode attribute.
2203         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
2205 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
2207         PR rtl-optimization/84659
2208         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
2210 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
2212         PR debug/85302
2213         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
2214         SIZEP is NULL.
2215         (output_loc_list): Pass address of a dummy size variable even in the
2216         locview handling loop.
2217         (index_location_lists): Add comment on why skip_loc_list_entry can't
2218         call size_of_locs.
2220 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
2222         PR target/85261
2223         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
2224         into register.
2226 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
2228         PR target/85321
2229         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
2230         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
2231         and -mstring-compare-inline-limit.
2233 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2235         PR target/85287
2236         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
2237         for stack clash protection in a register whenever we need it to be in
2238         a register.
2240 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2242         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
2243         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
2245 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
2247         PR target/85321
2248         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
2249         the help text.
2250         (mlong-double-): Ditto.
2251         * config/rs6000/sysv4.opt (msdata=): Ditto.
2252         (mtls-size=): Ditto.
2254 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2256         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
2257         erroneous entries for
2258         "vector int vec_ldl (int, long int *)", and
2259         "vector unsigned int vec_ldl (int, unsigned long int *)".
2260         Add comments and entries for
2261         "vector bool char vec_ldl (int, bool char *)",
2262         "vector bool short vec_ldl (int, bool short *)",
2263         "vector bool int vec_ldl (int, bool int *)",
2264         "vector bool long long vec_ldl (int, bool long long *)",
2265         "vector pixel vec_ldl (int, pixel *)",
2266         "vector long long vec_ldl (int, long long *)",
2267         "vector unsigned long long vec_ldl (int, unsigned long long *)".
2268         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
2269         type tree bool_long_long_type_node and correct definition of
2270         bool_V2DI_type_node to make reference to this new type tree.
2271         (rs6000_mangle_type): Replace erroneous reference to
2272         bool_long_type_node with bool_long_long_type_node.
2273         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
2274         comments to emphasize sign distinctions for char and int types and
2275         replace RS6000_BTI_bool_long constant with
2276         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
2277         use of RS6000_BTI_pixel.
2278         (bool_long_type_node): Remove this macro definition.
2279         (bool_long_long_type_node): New macro definition
2281 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2283         PR rtl-optimization/85300
2284         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
2285         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
2286         simplify_unary_operation fails.
2288 2018-04-10  Martin Liska  <mliska@suse.cz>
2290         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
2291         cgraph_edge and ipa_ref.
2293 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2295         PR target/85177
2296         PR target/85255
2297         * config/i386/sse.md
2298         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
2299         computation of the VEC_MERGE selector from mask.
2300         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
2301         Fix decoding of the VEC_MERGE selector into mask.
2303 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
2305         PR tree-optimization/85286
2306         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
2308 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
2310         * final.c (final_1): Set insn_last_address as well as
2311         insn_current_address.
2313 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2315         PR target/85173
2316         * explow.c (emit_stack_probe): Call validize_mem on memory location
2317         before passing it to gen_probe_stack.  Create address operand and
2318         legitimize it for the probe_stack_address case.
2320 2018-04-09  Jan Hubicka  <jh@suse.cz>
2322         PR lto/85078
2323         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
2324         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
2325         * tree.c (free_lang_data_in_type): Fix handling of binfos;
2326         walk basetypes.
2327         (free_lang_data): Rebuild type inheritance graph.
2329 2018-04-09  Martin Sebor  <msebor@redhat.com>
2331         * invoke.texi (-finline-small-functions): Mention other optimization
2332         options.
2333         (-findirect-inlining, -fpartial-inlining): Same.
2334         (-finline-functions-called-once): Same.
2335         (-freorder-blocks-and-partition): Same.
2337 2018-04-09  Jan Hubicka  <jh@suse.cz>
2339         PR rtl/84058
2340         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
2341         jumps; choose last target that matches the criteria (i.e.
2342         no partition changes for non-crossing jumps).
2343         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
2344         support for redirecting crossing jumps to non-crossing.
2346 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
2348         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
2349         also for naked functions.
2351 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
2353         * config/arc/arc.md (add_shift): New pattern.
2354         (add_shift2): Likewise.
2355         (sub_shift): Likewise.
2356         (sub_shift_cmp0_noout): Likewise.
2357         (compare_si_ashiftsi): Likewise.
2358         (xbfu_cmp0_noout): New combine pattern.
2359         (xbfu_cmp0"): Likewise.
2360         (movsi_set_cc_insn): Place the predicable variant first.
2361         (commutative_binary_cmp0_noout): Remove clobber.
2362         (commutative_binary_cmp0): New pattern.
2363         (noncommutative_binary_cmp0): Likewise.
2364         (noncommutative_binary_cmp0_noout): Likewise.
2365         (noncommutative_binary_comparison_result_used): Removed.
2366         (rsub_cmp0): New pattern.
2367         (rsub_cmp0_noout): Likewise.
2368         (extzvsi): Changed, keep only meaningful variants.
2369         (SQH, SEZ): New iterators.
2370         (SQH_postfix): New mode attribute.
2371         (SEZ_prefix): New code attribute.
2372         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
2373         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
2374         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
2375         of numerical value.
2376         (noncommutative_operator): Check the availability of barrel
2377         shifter option.
2379 2018-04-09  Richard Biener  <rguenther@suse.de>
2381         PR tree-optimization/85284
2382         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
2383         Only use the niter constraining form of simple_iv when the exit
2384         is always executed.
2386 2018-04-09  Tom de Vries  <tom@codesourcery.com>
2388         PR target/84041
2389         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
2390         (define_expand "*memory_barrier"): New define_expand.
2391         (define_insn "memory_barrier"): New insn.
2393 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2395         PR rtl-optimization/80463
2396         PR rtl-optimization/83972
2397         PR rtl-optimization/83480
2399         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
2400         correct producer for the insn.
2401         (tidy_control_flow): Fixup seqnos in case of debug insns.
2403 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2405         PR rtl-optimization/83913
2407         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
2408         different sched-times when merging exprs.
2410 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2412         PR rtl-optimization/83962
2414         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
2415         tidy_fallthru_edge and tidy_control_flow.
2417 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
2419         PR rtl-optimization/83530
2421         * sel-sched.c (force_next_insn): New global variable.
2422         (remove_insn_for_debug): When force_next_insn is true, also leave only
2423         next insn in the ready list.
2424         (sel_sched_region): When the region wasn't scheduled, make another pass
2425         over it with force_next_insn set to 1.
2427 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
2429         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
2430         into tm_file.
2431         * config/nds32/constants.md (unspec_volatile_element): Add enum values
2432         for interrupt control.
2433         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
2434         functions for interrupt control.
2435         * config/nds32/nds32-intrinsic.md: Likewise.
2436         * config/nds32/nds32_intrinsic.h: Likewise.
2437         * config/nds32/nds32.h (nds32_builtins): Likewise.
2439 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
2441         * config/nds32/nds32.c (nds32_init_machine_status,
2442         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
2443         strict_aligned_p field.
2444         (nds32_expand_to_rtl_hook): New function.
2445         (TARGET_EXPAND_TO_RTL_HOOK): Define.
2446         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
2448 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2449             Chung-Ju Wu  <jasonwucj@gmail.com>
2451         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
2452         * config/nds32/nds32-n7.md: New file.
2453         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
2454         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
2455         pipeline.
2456         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
2457         * config/nds32/nds32.md (pipeline_model): Add n7.
2458         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
2459         * config/nds32/pipelines.md: Include n7 settings.
2461 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2462             Chung-Ju Wu  <jasonwucj@gmail.com>
2464         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
2465         * config/nds32/nds32-e8.md: New file.
2466         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
2467         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
2468         pipeline.
2469         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
2470         * config/nds32/nds32.md (pipeline_model): Add e8.
2471         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
2472         * config/nds32/pipelines.md: Include e8 settings.
2474 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2475             Chung-Ju Wu  <jasonwucj@gmail.com>
2477         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
2478         * config/nds32/nds32-n8.md: New file.
2479         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
2480         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
2481         pipeline.
2482         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
2483         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
2484         * config/nds32/nds32.md (pipeline_model): Add n8.
2485         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
2486         * config/nds32/pipelines.md: Include n8 settings.
2488 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
2489             Chung-Ju Wu  <jasonwucj@gmail.com>
2491         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
2492         * config/nds32/nds32-n9-2r1w.md: New file.
2493         * config/nds32/nds32-n9-3r2w.md: New file.
2494         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
2495         nds32_register_ports): New or modify for cpu n9.
2496         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
2497         pipeline.
2498         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
2499         * config/nds32/nds32-utils.c: New file.
2500         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
2501         TARGET_MUL_SLOW): Define.
2502         * config/nds32/nds32.md (pipeline_model): New attribute.
2503         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
2504         New options that support cpu n9.
2505         * config/nds32/pipelines.md: Include n9 settings.
2506         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
2508 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
2510         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
2511         information if necessary.
2512         (output_cond_branch_compare_zero): Likewise.
2513         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
2514         (nds32_target_alignment): Refine for alignment.
2515         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
2516         (FUNCTION_BOUNDARY): Modify.
2517         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
2518         align case.
2519         * config/nds32/nds32.opt (malways-align, malign-functions): New.
2521 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
2523         * config/nds32/constants.md (unspec_volatile_element): Add values for
2524         TLB operation and data prefetch.
2525         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
2526         functions for TLB operation and data prefetch.
2527         * config/nds32/nds32-intrinsic.md: Likewise.
2528         * config/nds32/nds32_intrinsic.h: Likewise.
2529         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
2530         (nds32_print_operand): Likewise.
2531         * config/nds32/nds32.h (nds32_builtins): Likewise.
2533 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
2534         Andrew Pinski <pinsika@gcc.gnu.org>
2536         PR middle-end/82976
2537         * match.pd: Use constant_boolean_node of correct type instead of
2538         boolean_true_node or boolean_false_node for simplifying
2539         pointer comparisons to zero.
2541 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
2543         PR tree-optimization/80021
2544         * tree.c (verify_type_variant): Make error call in verify_variant_match
2545         translatable and remove final full stop.
2547 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2549         * config/nds32/constants.md (unspec_volatile_element): Add
2550         UNSPEC_VOLATILE_EH_RETURN.
2551         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
2552         nds32_output_stack_pop): Support dwarf exception handling process.
2553         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
2554         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
2555         exception handling process.
2556         (nds32_compute_stack_frame): Likewise.
2557         (nds32_return_addr_rtx): Likewise.
2558         (nds32_initial_elimination_offset): Likewise.
2559         (nds32_expand_prologue): Likewise.
2560         (nds32_expand_epilogue): Likewise.
2561         (nds32_dynamic_chain_address): New function.
2562         * config/nds32/nds32.h (machine_function): Add fields for dwarf
2563         exception handling.
2564         (DYNAMIC_CHAIN_ADDRESS): Define.
2565         (EH_RETURN_DATA_REGNO): Define.
2566         (EH_RETURN_STACKADJ_RTX): Define.
2567         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
2568         patterns for dwarf exception handling.
2570 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2572         * config/nds32/nds32.h: Clean up obsolete macros.
2574 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2576         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2577         Add enum values for particular instructions.
2578         * config/nds32/nds32-intrinsic.c: Implementation of expanding
2579         particular intrinsic functions.
2580         * config/nds32/nds32-intrinsic.md: Likewise.
2581         * config/nds32/nds32_intrinsic.h: Likewise.
2582         * config/nds32/nds32.h (nds32_builtins): Likewise.
2583         * config/nds32/nds32.md (type): Add pbsad and pbsada.
2584         (btst, ave): New patterns for particular instructions.
2586 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2588         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2589         Add enum values for atomic load/store and memory sync.
2590         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
2591         and memory sync.
2592         * config/nds32/nds32-intrinsic.md: Likewise.
2593         * config/nds32/nds32_intrinsic.h: Likewise.
2594         * config/nds32/nds32.h (nds32_builtins): Likewise.
2596 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
2598         PR tree-optimization/85257
2599         * fold-const.c (native_encode_vector): If not all elts could fit
2600         and off is -1, return 0 rather than offset.
2601         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
2602         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
2603         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
2604         adjust buffer in native_interpret_expr call.
2606 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2608         * config/nds32/constants.md (unspec_volatile_element): Add cache
2609         control enum values.
2610         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
2611         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
2612         * config/nds32/nds32.c (nds32_cctl_names): New.
2613         (nds32_print_operand): Handle cache control register names.
2614         * config/nds32/nds32.h (nds32_builtins): New enum values.
2615         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
2616         macros.
2617         * config/nds32/nds32.md (type): Add mmu.
2618         * config/nds32/pipelines.md (simple_insn): Add mmu.
2620 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2622         * config/nds32/nds32.md (type): Remove call.
2623         * config/nds32/pipelines.md (simple_insn): Likewise.
2625 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2627         * config/nds32/constants.md (unspec_volatile_element): Add
2628         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
2629         UNSPEC_VOLATILE_FMFCFG.
2630         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
2631         description for fmfcfg and fmfcsr.
2632         (bdesc_1arg): Add fmtcsr.
2633         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
2634         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
2635         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
2636         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
2637         unspec_fmfcfg): New patterns.
2638         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
2639         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
2640         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
2641         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
2642         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
2643         __nds32__fmfcfg): Define.
2645 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
2647         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
2648         intrinsic register names.
2649         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
2650         intrinsic register enum values and macros.
2652 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
2654         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
2655         for load/store addressing form.
2656         (nds32_print_operand_address): Likewise.
2658 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
2660         PR target/85196
2661         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
2662         based on LABEL_REF.  Remove useless assertion.
2663         (pic_address_needs_scratch): Fix formatting.
2664         (sparc_legitimize_pic_address): Minor tweaks.
2665         (sparc_delegitimize_address): Adjust assertion accordingly.
2666         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
2667         into symbolic_operand.
2668         (movsi_high_pic_label_ref): Likewise.
2669         (movsi_lo_sum_pic_label_ref): Likewise.
2670         (movdi_pic_label_ref): Likewise.
2671         (movdi_high_pic_label_ref): Likewise.
2672         (movdi_lo_sum_pic_label_ref): Likewise.
2674 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
2676         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
2677         custom LIB_SPEC setup.
2679 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
2680             Kito Cheng  <kito.cheng@gmail.com>
2682         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
2683         * config/riscv/freebsd.h: New.
2685 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
2687         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
2688         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
2689         file.
2691 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
2692             Kito Cheng  <kito.cheng@gmail.com>
2694         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
2695         nds32_output_call, nds32_symbol_binds_local_p): New functions.
2696         * config/nds32/nds32-protos.h (nds32_output_call,
2697         nds32_output_return): Declare.
2698         * config/nds32/nds32.md: Refine all the call and return patterns.
2700 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
2702         PR debug/85252
2703         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
2704         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
2706         PR rtl-optimization/84872
2707         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
2708         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
2709         EDGE_CROSSING edge.
2711 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
2713         * expr.c (copy_blkmode_to_reg): Revert 254862.
2714         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
2716 2018-04-06  Richard Biener  <rguenther@suse.de>
2718         PR middle-end/85244
2719         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
2720         after seeing a component reference with an adjacent field.  Treat
2721         refs to arrays at struct end of external decls similar to
2722         refs to unconstrained commons.
2724 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
2726         PR sanitizer/85213
2727         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
2728         look through SAVE_EXPRs with non-side-effects argument.  Adjust
2729         recursive calls.
2730         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
2731         save_p here.
2733 2018-04-06  Richard Biener  <rguenther@suse.de>
2735         PR middle-end/85180
2736         * alias.c (find_base_term): New wrapper around find_base_term
2737         unwinding CSELIB_VAL_PTR changes.
2738         (find_base_term): Do not restore CSELIB_VAL_PTR during the
2739         recursion.
2741 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2743         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
2744         instructions.
2745         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
2746         constant definitions.
2747         ("nop"): lr 0,0 -> nopr r0
2748         ("nop_lr0", "nop_lr1"): New insn definitions.
2750 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
2752         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
2753         NDS32_V3PUSH_AVAILABLE_P macro.
2755 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
2756             Chung-Ju Wu  <jasonwucj@gmail.com>
2758         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
2759         (nds32*-*-*): Add float and fpu_config into supported_defaults.
2760         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
2761         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
2762         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
2763         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
2764         * config/nds32/constraints.md: New constraints and checking for hard
2765         float configuration.
2766         * config/nds32/iterators.md: New mode iterator and attribute for hard
2767         float configuration.
2768         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
2769         patterns.
2770         * config/nds32/nds32-fpu.md: New file.
2771         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
2772         deal with hard float code generation.
2773         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
2774         ARCH_V3S.
2775         (abi_type, float_reg_number): New enum type.
2776         * config/nds32/nds32-predicates.c: New predicates for hard float.
2777         * config/nds32/nds32-protos.h: Declare functions for hard float.
2778         * config/nds32/nds32.c: Implementation for hard float configuration.
2779         * config/nds32/nds32.h: Definitions for hard float configuration.
2780         * config/nds32/nds32.md: Include hard float machine description and
2781         modify patterns for hard float configuration.
2782         * config/nds32/nds32.opt: New options for hard float configuration.
2783         * config/nds32/predicates.md: New predicates for hard float
2784         configuration.
2786 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
2788         * common/config/nds32/nds32-common.c
2789         (nds32_option_optimization_table): Enable -mreleax-hint by default.
2791 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
2793         PR middle-end/85195
2794         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
2795         CONSTRUCTOR_ELT (ctor, ...)->value.
2797 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
2799         PR target/85193
2800         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
2802 2018-04-05  Tom de Vries  <tom@codesourcery.com>
2804         PR target/85204
2805         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
2806         cond jump.
2808 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
2809             Kito Cheng  <kito.cheng@gmail.com>
2811         * config/nds32/constraints.md (U33): Fine-tune checking condition.
2812         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
2813         * config/nds32/nds32.h (nds32_16bit_address_type): Add
2814         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
2816 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
2817             Kito Cheng  <kito.cheng@gmail.com>
2819         * config/nds32/constraints.md (Ufe): New memory constraint.
2820         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
2821         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
2822         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
2823         operands.
2824         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
2825         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
2827 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2829         * config/nds32/nds32.md: Use optimize_size in the condition for
2830         alu-shift instructions.
2832 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2834         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
2836 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2838         * config/nds32/nds32.md (negsi2): Refine pattern.
2840 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
2841             Chung-Ju Wu  <jasonwucj@gmail.com>
2843         * config/nds32/iterators.md (shift_rotate): New code iterator.
2844         (shift): New code attribute.
2845         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
2846         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
2847         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
2848         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
2849         bit-wise operations.
2850         (andsi3, *andsi3): Ditto.
2851         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
2852         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
2853         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
2854         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
2855         nds32_ior_operand, nds32_xor_operand): New predicates.
2857 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2859         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
2860         (addsi3, subsi3): ... this.
2862 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2864         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
2866 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2868         * config/nds32/nds32.md: Adjust indention.
2870 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
2872         * config/nds32/nds32.md (feature): New attribute.
2874 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
2876         * config/nds32/nds32.md (subtype): New attribute.
2878 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
2880         PR target/85203
2881         * config/arm/arm-builtins.c (arm_expand_builtin): Change
2882         expansion to perform a bitwise AND of the argument followed by a
2883         boolean negation of the result.
2885 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
2887         PR rtl-optimization/84878
2888         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
2889         the basic block.  Assert the use reference is not artificial and that
2890         it has an associated insn.
2892 2018-04-04  Michael Matz  <matz@suse.de>
2894         * builtins.c (compute_objsize): Pass correct operand
2895         to array_at_struct_end_p.
2897 2018-04-04  Richard Biener  <rguenther@suse.de>
2899         PR lto/85176
2900         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
2901         from contexts for DINFO_LEVEL_TERSE and below.
2903 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
2905         * config/nds32/nds32-doubleword.md (move_<mode>): Require
2906         resiter_operand condition.
2907         * config/nds32/nds32.md (*move<mode>): Ditto.
2909 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
2910             Monk Chiang  <sh.chiang04@gmail.com>
2912         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
2914 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
2916         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
2918 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
2919             Kito Cheng  <kito.cheng@gmail.com>
2921         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
2922         nds32_cond_code_str, output_cond_branch,
2923         output_cond_branch_compare_zero, nds32_expand_cbranch,
2924         nds32_expand_cstore, nds32_expand_movcc,
2925         nds32_output_cbranchsi4_equality_zero,
2926         nds32_output_cbranchsi4_equality_reg,
2927         nds32_output_cbranchsi4_equality_reg_or_const_int,
2928         nds32_output_cbranchsi4_greater_less_zero: New functions.
2929         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
2930         nds32_expand_cstore, nds32_expand_movcc,
2931         nds32_output_cbranchsi4_equality_zero,
2932         nds32_output_cbranchsi4_equality_reg,
2933         nds32_output_cbranchsi4_equality_reg_or_const_int,
2934         nds32_output_cbranchsi4_greater_less_zero): Declare.
2935         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
2936         nds32_rimm11s_operand): New predicates.
2937         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
2938         * config/nds32/nds32.md: Rewrite all the branch and conditional move
2939         patterns.
2941 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
2943         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
2944         * config/nds32/nds32.md: Ditto.
2945         * config/nds32/pipelines.md: Ditto.
2947 2018-04-04  Richard Biener  <rguenther@suse.de>
2949         PR tree-optimization/85168
2950         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
2951         propagating abnormals.
2953 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
2955         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
2957 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
2958             Kito Cheng  <kito.cheng@gmail.com>
2960         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
2961         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
2962         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
2963         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
2964         * config/nds32/nds32.md (sibcall_internal): New.
2965         (sibcall_register): Remove.
2966         (sibcall_immediate): Remove.
2967         (sibcall_value_internal): New.
2968         (sibcall_value_register): Remove.
2969         (sibcall_value_immediate): Remove.
2970         * config/nds32/predicates.md (nds32_general_register_operand): New.
2971         (nds32_call_address_operand): New.
2973 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
2975         PR rtl-optimization/85167
2976         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
2977         bb_defs if *split_p, instead preinitialize it to NULL.
2979         PR tree-optimization/85156
2980         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
2981         evaluating the argument multiple times.
2983 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
2985         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
2986         than vector.
2987         (_mm_cvtpd_ps): Likewise.
2988         (_mm_cvttpd_epi32): Likewise.
2989         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
2990         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
2991         vector, pixel, and bool following altivec.h include.
2993 2018-04-03  Martin Sebor  <msebor@redhat.com>
2995         * doc/extend.texi (Common Function Attributes): Clarify.
2996         (const attribute): Likewise.
2997         (pure attribute): Likewise.
2999 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3001         PR target/85169
3002         * config/i386/i386.c (ix86_expand_vector_set): Use
3003         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
3005 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
3007         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
3008         instructions when changing rounding bits to preserve precision bits
3009         in the x87 control word.
3011 2018-04-03  Martin Liska  <mliska@suse.cz>
3013         PR tree-optimization/82491
3014         * rtl.h (strip_offset_and_add): Replace += suboffset with
3015         poly_uint64 () + suboffset.
3017 2018-03-29  Martin Liska  <mliska@suse.cz>
3018             Martin Jambor  <mjambor@suse.cz>
3020         PR ipa/84947
3021         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
3022         param_type is not an integral or pointer type.
3024 2018-04-03  Richard Biener  <rguenther@suse.de>
3026         * sese.h (recompute_all_dominators): Remove.
3028 2018-04-02  Martin Sebor  <msebor@redhat.com>
3030         * doc/invoke.texi (-Wrestrict): Fix typos.
3032 2018-04-02  Jim Wilson  <jimw@sifive.com>
3034         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
3035         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
3036         (<optab>di3, <optab>si3_extend): Likewise.
3037         (<optab>si3_mask, <optab>si3_mask_1): New.
3038         (<optab>di3_mask, <optab>di3_mask_1): New.
3039         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
3040         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
3041         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
3043 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
3045         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
3046         example.
3048 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
3050         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
3051         (nds32_canonicalize_comparison): New function.
3053 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3054             Kito Cheng  <kito.cheng@gmail.com>
3055             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
3057         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
3058         * config/nds32/constants.md (unspec_volatile_element): Add
3059         UNSPEC_VOLATILE_RELAX_GROUP.
3060         * config/nds32/nds32-relax-opt.c: New file.
3061         * config/nds32/nds32-predicates.c
3062         (nds32_symbol_load_store_p): New function.
3063         * config/nds32/nds32-protos.h
3064         (nds32_symbol_load_store_p): Declare function.
3065         (make_pass_nds32_relax_opt): Declare new rtl pass function.
3066         * config/nds32/nds32.c
3067         (nds32_register_pass): New function to register pass.
3068         (nds32_register_passes): New function to register passes.
3069         * config/nds32/nds32.md (relax_group): New pattern.
3070         * config/nds32/nds32.opt (mrelax-hint): New option.
3071         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
3073 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
3075         * config/nds32/t-nds32: Modify files dependency.
3077 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3079         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
3080         (PROFILE_HOOK): Define its implementation.
3082 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
3084         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
3085         type and 32-bit size.
3087 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
3089         PR middle-end/85090
3090         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
3091         (V_128_256): New mode iterator.
3092         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
3093         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
3094         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
3095         of V.
3096         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
3097         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
3099 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
3101         PR target/83315
3102         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
3103         NaN inputs correctly.
3105 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
3107         PR target/80546
3108         * config/rs6000/vsx.md (??r): New mode attribute.
3109         (*vsx_mov<mode>_64bit): Use it.
3110         (*vsx_mov<mode>_32bit): Likewise.
3112 2018-03-30  Martin Sebor  <msebor@redhat.com>
3114         PR tree-optimization/84818
3115         * builtins.c (check_access): Use warning_n.
3117 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
3119         PR target/83822
3120         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
3121         condition.
3122         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
3123         condition.
3125 2018-03-30  Julia Koval  <julia.koval@intel.com>
3127         PR target/84413
3128         * x86-tune.def (movx, partial_reg_dependency): Enable for
3129         m_SKYLAKE_AVX512.
3131 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
3133         PR inline-asm/84985
3134         * lra-constraints.c (process_alt_operands): Move setting
3135         this_alternative_matches below.
3137 2018-03-29  Martin Liska  <mliska@suse.cz>
3139         PR lto/84995.
3140         * doc/invoke.texi: Document how LTO works with debug info.
3141         Describe auto-load support of binutils.  Mention 'x86-64'
3142         as valid option value of -march option.
3144 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
3146         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
3148         PR c/85094
3149         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
3150         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
3151         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
3152         checking.
3154 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
3156         PR target/84912
3157         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
3158         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
3159         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
3160         for RS6000_BTM_POWERPC64.
3161         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
3162         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
3163         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
3164         definition.
3165         (DIVDE): Use it.
3166         (DIVDEU): Likewise.
3168 2018-03-28 Carl Love  <cel@us.ibm.com>
3170         Revert
3171         2017-09-27  Carl Love  <cel@us.ibm.com>
3173         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
3174         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
3175         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
3176         fctiw instruction.
3178 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3180         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
3181         instead of __vector bool.
3182         (_mm_max_pu8): Likewise.
3183         (_mm_min_pi16): Likewise.
3185 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
3187         PR target/84912
3188         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
3189         (DIVWEUO): Likewise.
3190         (DIVDEO): Likewise.
3191         (DIVDEUO): Likewise.
3192         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
3193         DIVWEUO and DIVDEUO.
3194         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
3195         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
3196         (div_extend): Likewise.
3197         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
3198         builtin function.
3199         (__builtin_divweuo): Likewise.
3200         (__builtin_divdeo): Likewise.
3201         (__builtin_divdeuo): Likewise.
3203 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
3205         PR target/85095
3206         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
3207         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
3209         PR tree-optimization/82004
3210         * gimple-match-head.c (optimize_pow_to_exp): New function.
3211         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
3212         Don't fold to exp if optimize_pow_to_exp is false.
3214 2018-03-28  Martin Liska  <mliska@suse.cz>
3216         PR other/84819
3217         * calls.c (initialize_argument_information): Fix trailing space.
3218         * common.opt: Fix typo and provide better explanation for
3219         -fsanitize-coverage option.
3220         * config/i386/i386.opt: Fix typo.
3222 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
3223             Martin Liska  <mliska@suse.cz>
3225         PR sanitizer/85081
3226         * gimplify.c (asan_poison_variable): Don't do the check for
3227         gimplify_omp_ctxp here.
3228         (gimplify_decl_expr): Do it here.
3229         (gimplify_target_expr): Likewise.
3231 2018-03-28  Martin Liska  <mliska@suse.cz>
3233         PR target/84988
3234         * config/i386/i386.c (ix86_function_arg_advance): Do not call
3235         chkp_type_bounds_count if MPX is not enabled.
3237 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
3239         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
3241 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
3243         PR target/84914
3244         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
3245         function to create the function decl for complex long double
3246         multiply and divide for -mabi=ieeelongdouble.
3247         (init_float128_ieee): Call it.
3249 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
3251         PR target/85044
3252         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
3253         -fcf-protection=branch -mibt.
3254         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
3256 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3258         PR target/81863
3259         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
3261 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
3263         PR target/85056
3264         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
3265         extern array declarations.
3267 2018-03-27  Richard Biener  <rguenther@suse.de>
3269         PR middle-end/84067
3270         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
3271         explicit single_use checks.
3273 2018-03-27  Richard Biener  <rguenther@suse.de>
3275         PR tree-optimization/85082
3276         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
3277         Valueize the VUSE.
3279 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3281         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
3282         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
3283         Turn on fasynchronous-unwind-tables and funwind-tables.
3285 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
3287         PR target/85073
3288         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
3289         (*bmi_blsr_<mode>_ccz): Ditto.
3291 2018-03-26  Tom de Vries  <tom@codesourcery.com>
3293         PR tree-optimization/85063
3294         * omp-general.c (offloading_function_p): New function.  Factor out
3295         of ...
3296         * omp-offload.c (pass_omp_target_link::gate): ... here.
3297         * omp-general.h (offloading_function_p): Declare.
3298         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
3299         with attribute omp declare target for offloading functions.
3301 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
3303         PR tree-optimization/84005
3304         * tree-data-ref.h (get_base_for_alignment): Declare.
3305         * tree-data-ref.c (get_base_for_alignment_1): New function.
3306         (get_base_for_alignment): Likewise.
3307         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
3308         get_base_for_alignment to find a suitable base object, instead
3309         of always using drb->base_address.
3311 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3313         PR inline-asm/85022
3314         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
3315         known size by default.
3317 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
3319         PR inline-asm/85030
3320         * lra-constraints.c (process_alt_operands): Don't match BLKmode
3321         and non BLKmode operands.
3323 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3325         PR target/85026
3326         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
3327         Clean up attributes.
3329 2018-03-23  Richard Biener  <rguenther@suse.de>
3331         PR debug/85020
3332         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
3333         we are going to emit early debug for LTO.
3335 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3337         PR inline-asm/85034
3338         * function.c (match_asm_constraints_1): Don't optimize if input
3339         doesn't satisfy general_operand predicate for output's mode.
3341         PR inline-asm/85022
3342         * alias.c (write_dependence_p): Don't require for x_canonicalized
3343         non-VOIDmode if x has VOIDmode.
3345         PR sanitizer/85029
3346         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
3347         just don't try to optimize it rather than assert it never happens.
3349 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3351         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
3352         macro expansions for definition of ST_INTERNAL_<mode> and
3353         LD_INTERNAL_<mode> builtins.
3354         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
3355         Remove prototype.
3356         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
3357         function.
3358         (altivec_expand_st_builtin): Likewise.
3359         (altivec_expand_builtin): Remove calls to deleted functions.
3360         (rs6000_address_for_altivec): Delete this function.
3361         * config/rs6000/vector.md: Remove expands for
3362         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
3364 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
3366         PR target/84826
3367         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
3368         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
3369         re-computing once computed.
3370         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
3371         (arm_init_machine_status): Initialize
3372         machine->static_chain_stack_bytes.
3374 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3376         PR target/84760
3377         * doc/extend.texi: Add four new prototypes for vec_ld.
3378         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
3379         definitions for more logical presentation.
3380         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
3381         entries for V1TI variants of __builtin_altivec_ld builtin.
3382         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
3383         handling of V1TI variant of LVX icode pattern.
3384         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
3385         (rs6000_gimple_fold_builtin): Likewise.
3386         (altivec_init_builtins): Add code to define
3387         __builtin_altivec_lvx_v1ti function.
3389 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
3391         PR inline-asm/84941
3392         * function.c (match_asm_constraints_1): Don't do the optimization
3393         if input isn't a REG, SUBREG, MEM or constant.
3395 2018-03-22  Tom de Vries  <tom@codesourcery.com>
3397         PR tree-optimization/84956
3398         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
3399         bb_has_abnormal_pred.
3401 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
3403         PR sanitizer/85018
3404         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
3405         DECL_INITIAL (decl) to decl at the end.
3406         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
3407         adjust the comment.
3409 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
3411         * doc/extend.texi (__builtin_tgmath): Document when complex
3412         integer types are treated as _Complex _Float64.
3414 2018-03-21  Tom de Vries  <tom@codesourcery.com>
3416         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
3418 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3420         PR tree-optimization/84960
3421         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
3422         if it is ENTRY block, move them into single succ of ENTRY in that case.
3424 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
3426         PR tree-optimization/84811
3427         * poly-int.h (poly_span_traits): Remove the T3 parameter and
3428         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
3429         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
3430         (known_subrange_p): Update accordingly.  Cast each value involved
3431         in the size comparison, rather than casting the result of the
3432         subtraction.
3434 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3436         PR tree-optimization/84982
3437         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
3438         by flipping the least significant bit rather than all bits from
3439         bitpos to bitpos + bitsize - 1.
3441 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3443         * doc/extend.texi (Deprecated Features): Remove mention of
3444         long-deleted deprecations.
3446 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3448         PR jit/84288
3449         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
3450         * configure: Regenerate.
3452 2018-03-21  Tom de Vries  <tom@codesourcery.com>
3454         PR tree-optimization/83126
3455         * tree-parloops.c (num_phis): New function.
3456         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
3458 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3460         * doc/extend.texi (Deprecated Features): Update deprecated flags,
3461         mention anon-struct/union members and trailing attributes.
3463 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
3465         PR tree-optimization/84969
3466         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
3467         builtin memset partitions if they set different rhs values.
3469 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3471         PR rtl-optimization/84989
3472         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
3473         VEC_DUPLICATE with scalar result mode.
3475 2018-03-21  Martin Liska  <mliska@suse.cz>
3477         PR ipa/84963
3478         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
3479         not intended return statement.
3481 2018-03-21  Martin Liska  <mliska@suse.cz>
3483         PR target/84988
3484         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
3485         (chkp_find_bound_slots_1): Limit number of iterations.
3487 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
3489         PR target/84838
3490         * Minor grammar fixes for x86 options.
3492 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3494         PR debug/84875
3495         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
3496         holding REG_CFA_RESTORE notes, instead turn them into a USE.
3498 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
3500         PR target/83789
3501         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
3502         (altivec_lvx_<mode>_1op): Likewise.
3503         (altivec_stvx_<mode>_2op): Likewise.
3504         (altivec_stvx_<mode>_1op): Likewise.
3505         (altivec_lvx_<VM2:mode>): New define_expand.
3506         (altivec_stvx_<VM2:mode>): Likewise.
3507         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
3508         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
3509         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
3510         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
3511         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
3512         (rs6000_gen_lvx): Likewise.
3513         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
3514         (altivec_expand_stv_builtin): Likewise.
3515         (altivec_expand_builtin): Likewise.
3516         * config/rs6000/vector.md: Likewise.
3518 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3520         PR target/82518
3521         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
3522         BYTES_BIG_ENDIAN.
3524 2018-03-20  Richard Biener  <rguenther@suse.de>
3526         PR target/84986
3527         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
3528         sign-conversions as zero, fall back to standard scalar_stmt
3529         cost for the rest.
3531 2018-03-20  Martin Liska  <mliska@suse.cz>
3533         PR ipa/84825
3534         * predict.c (rebuild_frequencies): Handle case when we have
3535         PROFILE_ABSENT, but flag_guess_branch_prob is false.
3537 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3539         PR target/84990
3540         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
3541         flag_section_anchors.
3542         * varasm.c (use_blocks_for_decl_p): Remove hack for
3543         dw2_force_const_mem.
3545         PR target/84845
3546         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
3547         to ...
3548         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
3549         be created, use lowpart_subreg of operands[0] rather than operands[0]
3550         itself.
3551         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
3552         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
3553         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
3554         and n constraint instead of aarch64_shift_imm_di and Usd.
3555         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
3556         (*aarch64_<optab>_reg_minus<mode>3): ... this.
3558 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
3560         PR target/82989
3561         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
3562         to favor GPR over NEON registers.
3563         (<shift>di3_neon): Likewise.
3565 2018-03-20  Tom de Vries  <tom@codesourcery.com>
3567         PR target/84952
3568         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
3569         (nvptx_process_pars): Emit bar.sync asap and alap.
3571 2018-03-20  Tom de Vries  <tom@codesourcery.com>
3573         PR target/84954
3574         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
3575         seen_label if seen_label is already set.
3577 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
3579         PR target/84945
3580         * config/i386/i386.c (fold_builtin_cpu): For features above 31
3581         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
3582         Use 1U instead of 1.  Formatting fixes.
3584         PR c/84953
3585         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
3586         instead of TREE_TYPE (s1) for the return value.
3588 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
3590         PR tree-optimization/84946
3591         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
3592         bitsize + bitsize in poly_uint64 rather than poly_int64.
3594         PR sanitizer/78651
3595         * dwarf2asm.c: Include fold-const.c.
3596         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
3597         of decl rather than decl itself.
3599         PR rtl-optimization/84643
3600         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
3602 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
3604         PR sanitizer/78651
3605         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
3606         calling assemble_variable.
3608 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
3610         PR target/81647
3611         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
3612         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
3614 2018-03-19  Jim Wilson  <jimw@sifive.com>
3616         PR bootstrap/84856
3617         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
3618         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
3619         (riscv_first_stack_step): Likewise.
3620         (riscv_option_override): Use STACK_BOUNDARY instead of
3621         MIN_STACK_BOUNDARY.
3622         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
3623         MIN_STACK_BOUNDARY.
3624         (BIGGEST_ALIGNMENT): Set to 128.
3625         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
3626         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
3627         STACK_BOUNDARY.
3629 2018-03-19  Richard Biener  <rguenther@suse.de>
3631         PR tree-optimization/84933
3632         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
3633         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
3635 2018-03-19  Richard Biener  <rguenther@suse.de>
3637         PR tree-optimization/84859
3638         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
3639         (cond_if_else_store_replacement): Perform sinking operation on
3640         single-store BBs regardless of MAX_STORES_TO_SINK setting.
3641         Generalize what a BB with a single eligible store is.
3643 2018-03-19  Richard Biener  <rguenther@suse.de>
3645         PR tree-optimization/84929
3646         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
3647         chrec_is_positive against non-chrec arg.
3649 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
3651         PR target/84711
3652         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
3654 2018-03-18  Martin Liska  <mliska@suse.cz>
3656         PR rtl-optimization/84635
3657         * regrename.c (build_def_use): Use matches_mode only when
3658         matches >= 0.
3660 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
3662         PR tree-optimization/84913
3663         * tree-vect-loop.c (vectorizable_reduction): Don't try to
3664         vectorize chains of COND_EXPRs.
3666 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3668         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
3670 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3672         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
3674 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
3676         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
3678 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
3679             Kito Cheng  <kito.cheng@gmail.com>
3681         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
3682         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
3683         (nds32_adjust_reg_alloc_order): New function.
3684         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
3686 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
3688         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
3689         nds32_print_operand, nds32_print_operand_address): Use
3690         HOST_WIDE_INT_PRINT_DEC instead.
3692 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
3694         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
3696 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
3698         PR target/84902
3699         * config/i386/i386.c (initial_ix86_tune_features,
3700         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
3701         unsigned long long.
3702         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
3703         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
3704         rather than 1u << ix86_tune.  Formatting fix.
3705         (ix86_option_override_internal): Change ix86_arch_mask from
3706         unsigned int to unsigned HOST_WIDE_INT, initialize to
3707         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
3708         (ix86_function_specific_restore): Likewise.
3710 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3712         PR target/84899
3713         * postreload.c (reload_combine_recognize_pattern): Perform
3714         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
3715         truncate_int_for_mode the result for the destination's mode.
3717         PR c/84909
3718         * hsa-gen.c (mem_type_for_type): Fix comment typo.
3719         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
3720         Likewise.
3721         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
3722         Likewise.
3724 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
3726         PR target/84876
3727         * lra-assigns.c (lra_split_hard_reg_for): Don't use
3728         regno_allocno_class_array and sorted_pseudos.
3729         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
3730         insns where regno is used.
3732 2018-03-16  Martin Liska  <mliska@suse.cz>
3734         PR ipa/84833
3735         * multiple_target.c (create_dispatcher_calls): Redirect
3736         reference in the symbol table.
3738 2018-03-16  Martin Liska  <mliska@suse.cz>
3740         PR ipa/84722
3741         * multiple_target.c (create_dispatcher_calls): Redirect also
3742         an alias.
3744 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3746         PR c++/79937
3747         PR c++/82410
3748         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
3749         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
3750         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
3752 2018-03-16  Julia Koval  <julia.koval@intel.com>
3754         * doc/invoke.texi (Skylake Server): Add CLWB.
3755         Cannonlake): Remove CLWB.
3757 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3759         PR tree-optimization/84841
3760         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
3761         1 << 3.
3762         (FLOAT_ONE_CONST_TYPE): Define.
3763         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
3764         (sort_by_operand_rank): Put entries with higher constant_type last
3765         rather than first to match comments.
3767 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
3769         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
3770         split predicate.
3772 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
3774         PR c++/79085
3775         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
3776         check and use address of target always.
3778 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
3780         PR target/84574
3781         * config/i386/i386.c (indirect_thunk_needed): Update comments.
3782         (indirect_thunk_bnd_needed): Likewise.
3783         (indirect_thunks_used): Likewise.
3784         (indirect_thunks_bnd_used): Likewise.
3785         (indirect_return_needed): New.
3786         (indirect_return_bnd_needed): Likewise.
3787         (output_indirect_thunk_function): Add a bool argument for
3788         function return.
3789         (output_indirect_thunk_function): Don't generate alias for
3790         function return thunk.
3791         (ix86_code_end): Call output_indirect_thunk_function to generate
3792         function return thunks.
3793         (ix86_output_function_return): Set indirect_return_bnd_needed
3794         and indirect_return_needed instead of indirect_thunk_bnd_needed
3795         and indirect_thunk_needed.
3797 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
3799         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
3800         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
3801         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
3803 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
3804             Paul Hua <paul.hua.gm@gmail.com>
3806         PR c/84852
3807         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
3809 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
3811         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
3812         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
3813         resp. SFmode cases.
3815 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
3817         PR target/84711
3818         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
3819         instead of GET_MODE_SIZE when comparing Units.
3821 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
3823         PR target/68256
3824         * varasm.c (hash_section): Return an unchangeble hash value
3825         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
3826         Return !aarch64_can_use_per_function_literal_pools_p ().
3828 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
3830         PR target/84860
3831         * optabs.c (emit_conditional_move): Pass address of cmode's copy
3832         rather than address of cmode as last argument to prepare_cmp_insn.
3834 2018-03-15  Julia Koval  <julia.koval@intel.com>
3836         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
3837         F_AVX512VNNI, F_AVX512BITALG): New.
3839 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
3841         PR target/83451
3842         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
3843         insn for floating-point loads and stores.
3845 2018-03-14  Carl Love  <cel@us.ibm.com>
3847         * config/rs6000/rs6000-c.c: Add macro definitions for
3848         ALTIVEC_BUILTIN_VEC_PERMXOR.
3849         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
3850         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
3851         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
3852         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
3853         UNSPEC_VPERMXOR.
3854         * config/doc/extend.texi: Add prototypes for vec_permxor.
3856 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
3858         PR c/84852
3859         * diagnostic-show-locus.c (class layout_point): Convert m_line
3860         from int to linenum_type.
3861         (line_span::comparator): Use linenum "compare" function when
3862         comparing line numbers.
3863         (test_line_span): New function.
3864         (layout_range::contains_point): Convert param "row" from int to
3865         linenum_type.
3866         (layout_range::intersects_line_p): Likewise.
3867         (layout::will_show_line_p): Likewise.
3868         (layout::print_source_line): Likewise.
3869         (layout::should_print_annotation_line_p): Likewise.
3870         (layout::print_annotation_line): Likewise.
3871         (layout::print_leading_fixits): Likewise.
3872         (layout::annotation_line_showed_range_p): Likewise.
3873         (struct line_corrections): Likewise for field m_row.
3874         (line_corrections::line_corrections): Likewise for param "row".
3875         (layout::print_trailing_fixits): Likewise.
3876         (layout::get_state_at_point): Likewise.
3877         (layout::get_x_bound_for_row): Likewise.
3878         (layout::print_line): Likewise.
3879         (diagnostic_show_locus): Likewise for locals "last_line" and
3880         "row".
3881         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
3882         * input.c (selftest::test_linenum_comparisons): New function.
3883         (selftest::input_c_tests): Call it.
3884         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
3885         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
3886         * selftest.h (ASSERT_GT): New macro.
3887         (ASSERT_GT_AT): New macro.
3888         (ASSERT_LT): New macro.
3889         (ASSERT_LT_AT): New macro.
3891 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
3893         PR rtl-optimization/84780
3894         * combine.c (distribute_links): Don't make a link based on pc_rtx.
3896 2018-03-14  Martin Liska  <mliska@suse.cz>
3898         * tree.c (record_node_allocation_statistics): Use
3899         get_stats_node_kind.
3900         (get_stats_node_kind): New function extracted from
3901         record_node_allocation_statistics.
3902         (free_node): Use get_stats_node_kind.
3904 2018-03-14  Richard Biener  <rguenther@suse.de>
3906         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
3907         that the value-set of ANTIC_IN doesn't grow.
3909         Revert
3910         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
3911         member.
3912         (BB_VISITED_WITH_VISITED_SUCCS): New define.
3913         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
3915 2018-03-14  Julia Koval  <julia.koval@intel.com>
3917         * config.gcc (icelake-client, icelake-server): New.
3918         (icelake): Remove.
3919         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
3920         (initial_ix86_arch_features): Ditto.
3921         (PTA_SKYLAKE): Add SGX.
3922         (PTA_ICELAKE): Remove.
3923         (PTA_ICELAKE_CLIENT): New.
3924         (PTA_ICELAKE_SERVER): New.
3925         (ix86_option_override_internal): Split up icelake on icelake client and
3926         icelake server.
3927         (get_builtin_code_for_version): Ditto.
3928         (fold_builtin_cpu): Ditto.
3929         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
3930         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
3931         * config/i386/i386.h (processor_type): Ditto.
3932         * doc/invoke.texi: Ditto.
3934 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
3936         PR sanitizer/83392
3937         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
3938         INTEGER_CST offset, add it together with bitpos / 8 and
3939         sign extend based on POINTER_SIZE.
3941         PR target/84844
3942         Revert
3943         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
3945         PR target/78090
3946         * config/i386/constraints.md (Yc): New register constraint.
3947         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
3948         Use Yc constraint for alternative 2 of operand 0.  Remove
3949         preferred_for_speed attribute.
3951 2018-03-14  Richard Biener  <rguenther@suse.de>
3953         PR tree-optimization/84830
3954         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
3955         with the old one to avoid oscillations.
3957 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
3959         PR target/83712
3960         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
3961         pseudos.
3962         (assign_by_spills): Return a flag of reload assignment failure.
3963         Do not process the reload assignment failures.  Do not spill other
3964         reload pseudos if they has the same reg class.  Update n if
3965         necessary.
3966         (lra_assign): Add a return arg.  Set up from the result of
3967         assign_by_spills call.
3968         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
3969         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
3970         usage_insns if it is not NULL.
3971         (spill_hard_reg_in_range): New function.
3972         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
3973         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
3974         function prototypes.
3975         (lra_assign): Change prototype.
3976         * lra.c (lra): Add code to deal with fails by splitting hard reg
3977         live ranges.
3979 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
3981         * config/riscv/riscv.opt (mrelax): New option.
3982         * config/riscv/riscv.c (riscv_file_start): Emit ".option
3983         "norelax" when riscv_mrelax is disabled.
3984         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
3986 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
3988         PR target/84743
3989         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
3990         reassociation for int modes.
3992 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
3994         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
3995         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
3996         for big-endian.
3997         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
3998         * config/aarch64/aarch64-sve.md
3999         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
4000         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
4001         (*extend<mode><Vwide>2): Rename to...
4002         (aarch64_sve_extend<mode><Vwide>2): ...this.
4003         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
4004         renaming the old pattern to...
4005         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
4006         unsigned packs.
4007         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
4008         define_expand, renaming the old pattern to...
4009         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
4010         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
4011         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
4012         account when deciding which SVE instruction the optab should use.
4013         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
4015 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4017         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
4018         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
4019         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
4020         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
4021         (tlsdesc_small_<mode>): Turn a define_expand and use
4022         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
4023         (tlsdesc_small_advsimd_<mode>): ...this.
4024         (tlsdesc_small_sve_<mode>): New pattern.
4026 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4028         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
4029         (UNSPEC_UMUL_HIGHPART): New constants.
4030         (MUL_HIGHPART): New int iteraor.
4031         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
4032         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
4033         define_expand.
4034         (*<su>mul<mode>3_highpart): New define_insn.
4036 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
4038         PR lto/84805
4039         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4040         incomplete types.
4042 2018-03-13  Martin Liska  <mliska@suse.cz>
4044         PR ipa/84658.
4045         * (sem_item_optimizer::sem_item_optimizer): Initialize new
4046         vector.
4047         (sem_item_optimizer::~sem_item_optimizer): Release it.
4048         (sem_item_optimizer::merge_classes): Register variable aliases.
4049         (sem_item_optimizer::fixup_pt_set): New function.
4050         (sem_item_optimizer::fixup_points_to_sets): Likewise.
4051         * ipa-icf.h: Declare new variables and functions.
4053 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
4055         PR middle-end/84834
4056         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
4057         integer_pow2p@2 and test integer_pow2p in condition.
4058         (A < 0 ? C : 0): Similarly for @1.
4060         PR middle-end/84831
4061         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
4062         characters starting at p contain '\0' character, don't look beyond
4063         that.
4065         PR target/84827
4066         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
4067         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
4069         PR target/84828
4070         * reg-stack.c (change_stack): Change update_end var from int to
4071         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
4072         also call set_block_for_insn on the newly added insns and rescan.
4074         PR target/84786
4075         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
4076         on the last operand.
4078         PR c++/84704
4079         * tree.c (stabilize_reference_1): Return save_expr (e) for
4080         STATEMENT_LIST even if it doesn't have side-effects.
4082 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
4084         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
4086 2018-03-12  Renlin Li  <renlin.li@arm.com>
4088         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
4089         aarch64_output_scalar_simd_mov_immediate.
4091 2018-03-12  Martin Sebor  <msebor@redhat.com>
4093         PR tree-optimization/83456
4094         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
4095         for perfectly overlapping calls to memcpy.
4096         (gimple_fold_builtin_memory_chk): Same.
4097         (gimple_fold_builtin_strcpy): Handle no-warning.
4098         (gimple_fold_builtin_stxcpy_chk): Same.
4099         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
4101 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
4103         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
4104         parameter.  Use it for SFmode.
4105         (rs6000_function_arg_advance_1): Adjust.
4106         (rs6000_function_arg): Adjust.
4107         (rs6000_gimplify_va_arg): Pass false for that new parameter.
4109 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
4111         PR rtl-optimization/84169
4112         PR rtl-optimization/84780
4113         * combine.c (can_combine_p): Check for a 2-insn combination whether
4114         the destination register is used between the two insns, too.
4116 2018-03-12  Richard Biener  <rguenther@suse.de>
4118         PR tree-optimization/84803
4119         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
4120         for refs DR analysis didn't process.
4122 2018-03-12  Richard Biener  <rguenther@suse.de>
4124         PR tree-optimization/84777
4125         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
4126         force-vectorize loops ignore whether we are optimizing for size.
4128 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
4130         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
4131         (TARGET_MD_ASM_ADJUST): Define.
4133 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
4134             Kito Cheng  <kito.cheng@gmail.com>
4135             Chung-Ju Wu  <jasonwucj@gmail.com>
4137         * config/nds32/nds32.c (nds32_compute_stack_frame,
4138         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
4139         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
4140         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
4141         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
4142         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
4143         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
4144         * config/nds32/nds32.md (prologue, epilogue): Use macro
4145         NDS32_V3PUSH_AVAILABLE_P to do checking.
4147 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
4149         PR debug/58150
4150         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
4151         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
4152         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
4153         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
4154         addition of most attributes on !orig_type_die or the attribute not
4155         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
4157 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4158             Chung-Ju Wu  <jasonwucj@gmail.com>
4160         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
4161         __NDS32_VH__ macro.
4162         * config/nds32/nds32.opt (mvh): New option.
4164 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4165             Chung-Ju Wu  <jasonwucj@gmail.com>
4167         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
4168         function.
4169         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
4170         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
4171         definition.
4173 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
4174             Chung-Ju Wu  <jasonwucj@gmail.com>
4176         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
4177         function.
4178         * config/nds32/nds32-multiple.md (strlensi): New pattern.
4179         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
4181 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
4182             Kito Cheng  <kito.cheng@gmail.com>
4183             Chung-Ju Wu  <jasonwucj@gmail.com>
4185         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
4186         UNSPEC_FFMISM and UNSPEC_FLMISM.
4187         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
4188         for ffb, ffmism and flmism.
4189         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
4190         (unspec_ffmism): Ditto.
4191         (unspec_flmism): Ditto.
4192         (nds32_expand_builtin_impl): Check if string extension is available.
4193         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
4194         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
4196 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
4198         Reverting patch:
4199         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
4201         PR target/83712
4202         * lra-assigns.c (assign_by_spills): Return a flag of reload
4203         assignment failure.  Do not process the reload assignment
4204         failures.  Do not spill other reload pseudos if they has the same
4205         reg class.
4206         (lra_assign): Add a return arg.  Set up from the result of
4207         assign_by_spills call.
4208         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4209         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4210         usage_insns if it is not NULL.
4211         (spill_hard_reg_in_range): New function.
4212         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4213         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4214         function prototypes.
4215         (lra_assign): Change prototype.
4216         * lra.c (lra): Add code to deal with fails by splitting hard reg
4217         live ranges.
4219 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
4221         PR target/84807
4222         * config/i386/i386.opt: Replace Enforcment with Enforcement.
4224 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
4226         PR debug/84620
4227         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
4228         (dw_val_node): Add val_symbolic_view.
4229         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
4230         (symview_upper_bound): New.
4231         (new_line_info_table): Initialize symviews_since_reset.
4232         (dwarf2out_source_line): Count symviews_since_reset and set
4233         symview_upper_bound.
4234         (dw_val_equal_p): Handle symview.
4235         (add_AT_symview): New.
4236         (print_dw_val): Handle symview.
4237         (attr_checksum, attr_checksum_ordered): Likewise.
4238         (same_dw_val_p, size_of_die): Likewise.
4239         (value_format, output_die): Likewise.
4240         (add_high_low_attributes): Use add_AT_symview for entry_view.
4241         (dwarf2out_finish): Reset symview_upper_bound, clear
4242         zero_view_p.
4244 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
4246         PR target/83969
4247         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
4248         Add strict argument and use it.
4249         (rs6000_split_multireg_move): Update for new strict argument.
4250         (mem_operand_gpr): Disallow all non-offsettable addresses.
4251         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
4253 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
4255         PR target/84772
4256         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
4257         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
4258         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
4260         PR c++/84767
4261         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
4262         decl, use remap_type if we want to use the type.
4264 2018-03-09  Martin Sebor  <msebor@redhat.com>
4266         PR tree-optimization/84526
4267         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4268         Remove dead code.
4269         (builtin_access::generic_overlap): Be prepared to handle non-array
4270         base objects.
4272 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
4274         PR rtl-optimization/84682
4275         * lra-constraints.c (process_address_1): Check is_address flag
4276         for address constraints.
4277         (process_alt_operands): Likewise.
4278         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
4279         preprocess_constraints.
4280         * recog.h (preprocess_constraints): Add oploc parameter.
4281         Adjust callers.
4282         * recog.c (preprocess_constraints): Test address_operand for
4283         CT_ADDRESS constraints.
4285 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
4287         PR target/83712
4288         * lra-assigns.c (assign_by_spills): Return a flag of reload
4289         assignment failure.  Do not process the reload assignment
4290         failures.  Do not spill other reload pseudos if they has the same
4291         reg class.
4292         (lra_assign): Add a return arg.  Set up from the result of
4293         assign_by_spills call.
4294         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4295         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4296         usage_insns if it is not NULL.
4297         (spill_hard_reg_in_range): New function.
4298         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4299         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4300         function prototypes.
4301         (lra_assign): Change prototype.
4302         * lra.c (lra): Add code to deal with fails by splitting hard reg
4303         live ranges.
4305 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4307         PR target/83193
4308         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
4309         Accept complain bool parameter.  Only emit errors if it is true.
4310         (arm_parse_cpu_option_name): Likewise.
4311         (arm_target_thumb_only): Adjust callers of the above.
4312         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
4313         prototype to take a default true bool parameter.
4314         (arm_parse_arch_option_name): Likewise.
4316 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
4317             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4319         PR jit/64089
4320         PR jit/84288
4321         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
4322         * configure: Regenerate.
4323         * configure.ac ("linker --version-script option"): New.
4324         ("linker soname option"): New.
4326 2018-03-09  Richard Biener  <rguenther@suse.de>
4328         PR tree-optimization/84775
4329         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
4330         immediate uses of predicate stmts and mark them modified.
4332         Revert
4333         PR tree-optimization/84178
4334         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
4335         to caller.
4336         (version_loop_for_if_conversion): Delay update_ssa call.
4337         (tree_if_conversion): Delay update_ssa until after predicate
4338         insertion.
4340 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
4342         PR target/84763
4343         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
4344         when the function accesses prior frames.
4346 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
4348         PR debug/84456
4349         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
4350         gen_llsym, otherwise call maybe_gen_llsym.
4352         PR inline-asm/84742
4353         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
4354         has ',' character inside of it.
4356 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4358         PR target/84748
4359         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
4360         as clobbering CC_REGNUM.
4362 2018-03-08  Richard Biener  <rguenther@suse.de>
4364         PR middle-end/84552
4365         * tree-scalar-evolution.c: Include tree-into-ssa.h.
4366         (follow_copies_to_constant): Do not follow SSA names registered
4367         for update.
4369 2018-03-08  Richard Biener  <rguenther@suse.de>
4371         PR tree-optimization/84178
4372         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
4373         to caller.
4374         (version_loop_for_if_conversion): Delay update_ssa call.
4375         (tree_if_conversion): Delay update_ssa until after predicate
4376         insertion.
4378 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
4380         PR tree-optimization/84178
4381         * tree-if-conv.c (release_bb_predicate): Remove the
4382         the assertion that the stmts have NULL use_ops.
4383         Discard the statements, asserting that they haven't
4384         yet been added to a BB.
4386 2018-03-08  Richard Biener  <rguenther@suse.de>
4388         PR tree-optimization/84746
4389         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
4390         (phi_translate): Pass in destination ANTIC_OUT set.
4391         (phi_translate_1): Likewise.  For a simplified result lookup
4392         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
4393         (phi_translate_set): Adjust.
4394         (do_pre_regular_insertion): Likewise.
4395         (do_pre_partial_partial_insertion): Likewise.
4397 2018-03-08  Martin Liska  <mliska@suse.cz>
4399         PR gcov-profile/84735
4400         * doc/gcov.texi: Document usage of profile files.
4401         * gcov-io.h: Document changes in the format.
4403 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
4405         PR debug/84404
4406         PR debug/84408
4407         * dwarf2out.c (struct dw_line_info_table): Update comments for
4408         view == -1.
4409         (FORCE_RESET_NEXT_VIEW): New.
4410         (FORCE_RESETTING_VIEW_P): New.
4411         (RESETTING_VIEW_P): Check for -1 too.
4412         (ZERO_VIEW_P): Likewise.
4413         (new_line_info_table): Force-reset next view.
4414         (dwarf2out_begin_function): Likewise.
4415         (dwarf2out_source_line): Simplify zero_view_p initialization.
4416         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
4417         view directly.  Omit view when omitting .loc at line 0.
4419 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
4421         PR tree-optimization/84740
4422         * tree-switch-conversion.c (process_switch): Call build_constructors
4423         only if info.phi_count is non-zero.
4425         PR tree-optimization/84739
4426         * tree-tailcall.c (find_tail_calls): Check call arguments against
4427         DECL_ARGUMENTS (current_function_decl) rather than
4428         DECL_ARGUMENTS (func) when checking for tail recursion.
4430 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
4432         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
4433         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
4434         Volker Reichelt's entry and add entries for people that perform
4435         GCC fuzzy testing and report numerous bugs.
4437 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
4439         PR target/82411
4440         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
4441         readonly data in sdata, if that is disabled.
4442         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
4443         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
4444         -mreadonly-in-sdata option.
4446 2018-03-07  Martin Sebor  <msebor@redhat.com>
4448         PR tree-optimization/84468
4449         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
4450         basic block when looking for nul assignment.
4452 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
4454         PR target/84277
4455         * except.h (output_function_exception_table): Adjust prototype.
4456         * except.c (output_function_exception_table): Remove FNNAME parameter
4457         and add SECTION parameter.  Ouput one part of the table at a time.
4458         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
4459         the first part of the exception table and emit unwind directives.
4460         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
4461         (i386_pe_seh_cold_init): Likewise.
4462         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
4463         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
4464         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
4465         (ix86_output_call_insn): Emit a nop in one more case for SEH.
4466         * config/i386/winnt.c: Include except.h.
4467         (struct seh_frame_state): Add reg_offset, after_prologue and
4468         in_cold_section fields.
4469         (i386_pe_seh_end_prologue): Set seh->after_prologue.
4470         (i386_pe_seh_cold_init): New function.
4471         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
4472         to seh->in_cold_section.
4473         (seh_emit_push): Record the offset of the push.
4474         (seh_emit_save): Record the offet of the save.
4475         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
4476         Test seh->after_prologue to disregard the epilogue.
4477         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
4478         (i386_pe_end_cold_function): New function.
4480 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
4482         PR fortran/84565
4483         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
4484         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
4486         PR c++/84704
4487         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
4488         on tmp_var.
4489         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
4490         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
4492         PR middle-end/84723
4493         * multiple_target.c: Include tree-inline.h and intl.h.
4494         (expand_target_clones): Diagnose and fail if node->definition and
4495         !tree_versionable_function_p (node->decl).
4497 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
4499         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
4500         sprint_ul.
4501         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
4502         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
4503         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
4505 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
4507         PR target/84710
4508         * combine.c (try_combine): Use reg_or_subregno instead of handling
4509         just paradoxical SUBREGs and REGs.
4511 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
4513          * config/arc/arc.c (arc_finalize_pic): Remove function.
4514          (arc_must_save_register): We use single base PIC register, remove
4515          checks to save/restore the PIC register.
4516          (arc_expand_prologue): Likewise.
4517          * config/arc/arc-protos.h (arc_set_default_type_attributes):
4518          Remove.
4519          (arc_verify_short): Likewise.
4520          (arc_attr_type): Likewise.
4521          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
4522          (walk_stores): Likewise.
4523          (arc_address_cost): Make it static.
4524          (arc_verify_short): Likewise.
4525          (branch_dest): Likewise.
4526          (arc_attr_type): Likewise.
4527          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
4528          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
4529          (arc_final_prescan_insn): Remove inserting the nops due to
4530          hardware hazards.  It is done in reorg step.
4531          (insn_length_variant_t): Remove.
4532          (insn_length_parameters_t): Likewise.
4533          (arc_insn_length_parameters): Likewise.
4534          (arc_get_insn_variants): Likewise.
4535          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
4537 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
4539         PR inline-asm/84683
4540         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
4541         assertion failure.
4543         PR tree-optimization/84687
4544         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
4545         on new_node->decl.
4546         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
4548 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4550         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
4551         Rename to ppc_speculation_barrier.
4552         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
4553         __builtin_ppc_speculation_barrier.
4555 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
4557         PR target/84700
4558         * combine.c (combine_simplify_rtx): Don't try to simplify if
4559         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
4560         are equal to x.
4562 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
4564         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
4565         to 32 bytes when compiling for POWER9.
4567 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
4569         PR target/84564
4570         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
4571         regparm >= 3 with no arg reg available also for calls with
4572         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
4574         PR target/84524
4575         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
4576         orig,vex.
4577         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
4579 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
4581         PR target/84264
4582         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
4584 2018-03-05  Richard Biener  <rguenther@suse.de>
4586         PR tree-optimization/84486
4587         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
4588         When inserting a __builtin_assume_aligned call set the LHS
4589         SSA name alignment info accordingly.
4591 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
4593         PR tree-optimization/84114
4594         * config/aarch64/aarch64.c (aarch64_reassociation_width)
4595         Avoid reassociation of FLOAT_MODE addition.
4597 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
4599         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
4600         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
4601         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
4602         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
4603         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
4604         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
4605         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
4606         and -mwbnoinvd.
4607         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
4608         __builtin_ia32_wbinvd): New builtins.
4609         (SPECIAL_ARGS2): New.
4610         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
4611         (SPECIAL_ARGS2): New.
4612         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
4613         (ix86_valid_target_attribute_inner_p): Ditto.
4614         (ix86_init_mmx_sse_builtins): Add special_args2.
4615         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
4616         TARGET_WBNOINVD_P): New.
4617         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
4618         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
4619         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
4620         * config/i386/immintrin.h (_wbinvd): New intrinsic.
4621         * config/i386/pconfigintrin.h: New file.
4622         * config/i386/wbnoinvdintrin.h: Ditto.
4623         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
4624         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
4626 2018-03-05  Richard Biener  <rguenther@suse.de>
4628         PR tree-optimization/84670
4629         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
4630         member.
4631         (BB_VISITED_WITH_VISITED_SUCCS): New define.
4632         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
4633         (compute_antic_aux): Only assert the number of values in ANTIC_IN
4634         doesn't grow if all successors (recursively) were visited at least
4635         once.
4637 2018-03-05  Richard Biener  <rguenther@suse.de>
4639         PR tree-optimization/84650
4640         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
4641         if executed in the loop pipeline.
4643 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
4645         * doc/configfiles.texi (Configuration Files): Move info about
4646         conditionalizing $target-protos.h to...
4647         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
4648         differs from $target-protos.h.
4650 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
4651             Chung-Ju Wu  <jasonwucj@gmail.com>
4653         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
4654         * config/nds32/nds32-multiple.md (setmemsi): Define.
4655         * config/nds32/nds32-memory-manipulation.c
4656         (nds32_gen_dup_4_byte_to_word_value): New.
4657         (emit_setmem_word_loop): New.
4658         (emit_setmem_byte_loop): New.
4659         (nds32_expand_setmem_loop): New.
4660         (nds32_expand_setmem_loop_v3m): New.
4661         (nds32_expand_setmem_unroll): New.
4662         (nds32_expand_setmem): New.
4664 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
4665             Chung-Ju Wu  <jasonwucj@gmail.com>
4667         * config/nds32/nds32-memory-manipulation.c
4668         (nds32_emit_load_store): New.
4669         (nds32_emit_post_inc_load_store): New.
4670         (nds32_emit_mem_move): New.
4671         (nds32_emit_mem_move_block): New.
4672         (nds32_expand_movmemsi_loop_unknown_size): New.
4673         (nds32_expand_movmemsi_loop_known_size): New.
4674         (nds32_expand_movmemsi_loop): New.
4675         (nds32_expand_movmemsi_unroll): New.
4676         (nds32_expand_movmemqi): Rename ...
4677         (nds32_expand_movmemsi): ... to this.
4678         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
4679         (movmemsi): ... to this.
4680         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
4681         (nds32_expand_movmemsi): ... to this.
4683 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
4684             Monk Chiang  <sh.chiang04@gmail.com>
4685             Chung-Ju Wu  <jasonwucj@gmail.com>
4687         * config/nds32/nds32-protos.h
4688         (nds32_expand_load_multiple): New arguments.
4689         (nds32_expand_store_multiple): Ditto.
4690         (nds32_valid_multiple_load_store): Rename ...
4691         (nds32_valid_multiple_load_store_p): ... to this.
4692         * config/nds32/nds32-memory-manipulation.c
4693         (nds32_expand_load_multiple): Refine implementation.
4694         (nds32_expand_store_multiple): Ditto.
4695         * config/nds32/nds32-multiple.md
4696         (load_multiple): Update nds32_expand_load_multiple interface.
4697         (store_multiple): Update nds32_expand_store_multiple interface.
4698         * config/nds32/nds32-predicates.c
4699         (nds32_valid_multiple_load_store): Rename ...
4700         (nds32_valid_multiple_load_store_p): ... to this and refine
4701         implementation.
4702         * config/nds32/predicates.md
4703         (nds32_load_multiple_and_update_address_operation): New predicate.
4704         (nds32_store_multiple_and_update_address_operation): New predicate.
4706 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
4707             Chung-Ju Wu  <jasonwucj@gmail.com>
4709         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
4710         (combo): New attribute.
4711         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
4713 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
4715         * config/nds32/nds32.opt: Change -mcmodel= default value.
4717 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
4718             Monk Chiang  <sh.chiang04@gmail.com>
4719             Chung-Ju Wu  <jasonwucj@gmail.com>
4721         * config/nds32/constants.md (unspec_element): New enum.
4722         * config/nds32/constraints.md (Umw): New constraint.
4723         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
4724         * config/nds32/nds32-intrinsic.md: Likewise.
4725         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
4726         (nds32_valid_smw_lwm_base_p): New.
4727         (nds32_output_smw_single_word): New.
4728         (nds32_output_lmw_single_word): New.
4729         (nds32_expand_unaligned_load): New.
4730         (nds32_expand_unaligned_store): New.
4731         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
4732         (nds32_output_smw_single_word): Declare.
4733         (nds32_output_lmw_single_word): Declare.
4734         (nds32_expand_unaligned_load): Declare.
4735         (nds32_expand_unaligned_store): Declare.
4736         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
4737         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
4738         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
4739         NDS32_BUILTIN_UASTORE_DW.
4740         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
4741         predicate.
4743 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
4744             Kito Cheng  <kito.cheng@gmail.com>
4745             Chung-Ju Wu  <jasonwucj@gmail.com>
4747         * config/nds32/nds32-intrinsic.c
4748         (nds32_expand_builtin_null_ftype_reg): Delete.
4749         (nds32_expand_builtin_reg_ftype_imm): Ditto.
4750         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
4751         (nds32_read_argument): New.
4752         (nds32_legitimize_target): Ditto.
4753         (nds32_legitimize_argument): Ditto.
4754         (nds32_check_constant_argument): Ditto.
4755         (nds32_expand_unop_builtin): Ditto.
4756         (nds32_expand_unopimm_builtin): Ditto.
4757         (nds32_expand_binop_builtin): Ditto.
4758         (nds32_builtin_decl_impl): Ditto.
4759         (builtin_description): Ditto.
4760         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
4761         (nds32_init_builtins_impl): Ditto.
4762         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
4763         (nds32_builtin_decl): New.
4764         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
4765         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
4767 2018-03-02  Jeff Law  <law@redhat.com>
4769         * reorg.c (stop_search_p): Handle DEBUG_INSN.
4770         (redundant_insn, fill_simple_delay_slots): Likewise.
4771         (fill_slots_from_thread): Likewise.
4772         * resource.c (mark_referenced_resources): Likewise.
4773         (mark_set_resources, find_dead_or_set_registers): Likewise.
4775 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
4777         * substring-locations.h (format_warning_va): Formatting fix for
4778         ATTRIBUTE_GCC_DIAG.
4779         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
4780         argument.
4781         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
4782         * substring-locations.c: Include intl.h.
4783         (format_warning_va): Turned into small wrapper around
4784         format_warning_n_va, renamed to ...
4785         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
4786         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
4787         use ngettext.
4788         (format_warning_at_substring_n): New function.
4789         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
4790         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
4791         format_warning_at_substring with just a shorter name instead of
4792         const function pointer.
4793         (fmtwarn_n): New function.
4794         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
4795         appropriate, get rid of all the fmtstr temporaries, move conditionals
4796         with G_() wrapped string literals directly into fmtwarn arguments,
4797         cast dir.len to (int), formatting fixes.
4799 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
4801         * doc/invoke.texi: Remove "Cilk Plus" references.
4803 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
4804             Richard Biener  <rguenther@suse.de>
4806         PR ipa/84628
4807         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
4808         for error or warning attributes if CALL_FROM_THUNK_P is set.
4809         Formatting fixes.
4811 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
4813         PR target/56540
4814         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
4815         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
4817         PR target/56540
4818         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
4819         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
4821         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
4822         instead of -1U in last predictors element's probability member.
4824 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4826         PR ipa/83983
4827         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
4828         arguments if they are comparable.
4830 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
4832         PR tree-optimization/84634
4833         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
4834         masks and masked_loop_p with a single loop_masks, making sure it's
4835         null for bb vectorization.
4837 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
4839         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
4840         (vect_analyze_data_ref_access): Use loop->safe_len rather than
4841         loop->force_vectorize to check whether there is no alias.
4843 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
4845         PR target/84614
4846         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
4847         prototypes.
4848         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
4849         comments.
4850         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
4851         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
4852         instead of a loop around prev_real_insn.
4853         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
4854         prev_real_insn.
4856         PR inline-asm/84625
4857         * config/i386/i386.c (ix86_print_operand): Use conditional
4858         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
4859         zero vector.
4861 2018-03-02  Richard Biener  <rguenther@suse.de>
4863         PR tree-optimization/84427
4864         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
4865         (bitmap_set_subtract_values): Rewrite to handle multiple
4866         exprs per value.
4867         (clean): Likewise.
4868         (prune_clobbered_mems): Likewise.
4869         (phi_translate): Take edge instead of pred/phiblock.
4870         (phi_translate_1): Likewise.
4871         (phi_translate_set): Likewise.  Insert all translated
4872         exprs for a value into the set, keeping possibly multiple
4873         expressions per value.
4874         (compute_antic_aux): Adjust for phi_translate changes.
4875         When intersecting union the expressions and prune those
4876         not in the final value set, keeping possibly multiple
4877         expressions per value.  Do not use value-insertion
4878         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
4879         all expressions.  Add verification that the value-sets
4880         only shrink during iteration.
4881         (compute_partial_antic_aux): Adjust for the phi_translate changes.
4882         (do_pre_regular_insertion): Likewise.
4883         (do_pre_partial_partial_insertion): Likewise.
4885 2018-03-02  Richard Biener  <rguenther@suse.de>
4887         PR target/82005
4888         * config/darwin.c (saved_debug_info_level): New static global.
4889         (darwin_asm_lto_start): Disable debug info generation for LTO out.
4890         (darwin_asm_lto_end): Restore debug info generation settings.
4892 2018-03-01  Martin Liska  <mliska@suse.cz>
4894         PR sanitizer/82484
4895         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
4896         volatile arguments.
4898 2018-03-01  Richard Biener  <rguenther@suse.de>
4900         PR debug/84645
4901         * dwarf2out.c (gen_variable_die): Properly handle late VLA
4902         type annotation with LTO when debug was disabled at compile-time.
4904 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
4906         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
4907         XINT with INTVAL.
4908         (mips_final_postscan_insn): Likewise.
4910 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
4912         PR rtl-optimization/84528
4913         * alias.c (init_alias_target): Add commentary.
4914         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
4915         a unique base value if the frame pointer is not eliminated
4916         to the stack pointer.
4918 2018-03-01  Tom de Vries  <tom@codesourcery.com>
4920         PR rtl-optimization/83327
4921         * lra-int.h (hard_regs_spilled_into): Declare.
4922         * lra.c (hard_regs_spilled_into): Define.
4923         (init_reg_info): Init hard_regs_spilled_into.
4924         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
4925         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
4926         (process_bb_lives): Handle hard_regs_spilled_into.
4927         (lra_create_live_ranges_1): Before doing liveness propagation, clear
4928         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
4930 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
4932         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
4933         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
4934         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
4935         * config/rs6000/aix72.h: New file.
4937 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
4939         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
4940         instead of warning_at with conditional singular and plural messages
4941         where possible.
4943         PR target/52991
4944         * stor-layout.c (update_alignment_for_field): For
4945         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
4946         && !DECL_PACKED (field), do the alignment update, just use
4947         only desired_align instead of MAX (type_align, desired_align)
4948         as the alignment.
4949         (place_field): Don't do known_align < desired_align handling
4950         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
4951         is non-NULL, instead do it after rli->prev_field handling and
4952         only if not within a bitfield word.  For DECL_PACKED (field)
4953         use type_align of BITS_PER_UNIT.
4955 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
4957         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
4958         superfluous parentheses and trailing spaces.
4960 2018-02-28  Richard Biener  <rguenther@suse.de>
4962         PR tree-optimization/84584
4963         * graphite-scop-detection.c (scop_detection::add_scop): Discard
4964         SCoPs with fake exit edge.
4966 2018-02-28  Martin Liska  <mliska@suse.cz>
4968         PR testsuite/84597
4969         * timevar.c (timer::print): Fix format to properly print 100%
4970         values.
4972 2018-02-28  Richard Biener  <rguenther@suse.de>
4974         PR middle-end/84607
4975         * genmatch.c (capture_info::walk_match): Do not mark
4976         captured expressions without operands as expr_p given
4977         they act more like predicates and should be subject to
4978         "lost tail" side-effect preserving.
4980 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
4982         PR rtl-optimization/81611
4983         * auto-inc-dec.c (attempt_change): Move dead note from
4984         mem_insn if it's the next use of regno
4985         (find_address): Take address use of reg holding
4986         non-incremented value.  Add parm to limit search to the named
4987         reg only.
4988         (merge_in_block): Attempt to use a mem insn that is the next
4989         use of the original regno.
4991 2018-02-27  Martin Sebor  <msebor@redhat.com>
4993         PR c++/83871
4994         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
4995         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
4997 2018-02-27  Martin Sebor  <msebor@redhat.com>
4999         PR translation/84207
5000         * diagnostic-core.h (warning_n, error_n, inform_n): Change
5001         n argument to unsigned HOST_WIDE_INT.
5002         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
5003         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
5004         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
5005         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
5007 2018-02-27  Richard Biener  <rguenther@suse.de>
5009         PR tree-optimization/84512
5010         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
5011         Do not use the estimate returned from record_stmt_cost for
5012         the scalar iteration cost but sum properly using add_stmt_cost.
5014 2018-02-27  Richard Biener  <rguenther@suse.de>
5016         PR tree-optimization/84466
5017         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
5018         Adjust last change to less strictly validate use operands.
5020 2018-02-27  Martin Liska  <mliska@suse.cz>
5022         PR gcov-profile/84548
5023         * gcov.c (process_file): Allow partial overlap and consider it
5024         also as group functions.
5025         (output_lines): Properly calculate range of lines for a group.
5027 2018-02-27  Martin Liska  <mliska@suse.cz>
5029         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
5030         'ggc' suffixes.  Change first column width.
5031         (timer::print): Fix formatting of the column.
5033 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
5035         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
5036         preserve inline entry blocks for the sake of debug inline
5037         entry point markers alone.
5038         (remove_unused_locals): Suggest in comments a better place to
5039         force the preservation of inline entry blocks that are
5040         otherwise unused, but do not preserve them.
5042 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5044         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
5046 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5048         PR target/84039
5049         * config/i386/constraints.md (Bs): Replace
5050         ix86_indirect_branch_register with
5051         TARGET_INDIRECT_BRANCH_REGISTER.
5052         (Bw): Likewise.
5053         * config/i386/i386.md (indirect_jump): Likewise.
5054         (tablejump): Likewise.
5055         (*sibcall_memory): Likewise.
5056         (*sibcall_value_memory): Likewise.
5057         Peepholes of indirect call and jump via memory: Likewise.
5058         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
5059         (*sibcall_value_GOT_32): Likewise.
5060         * config/i386/predicates.md (indirect_branch_operand): Likewise.
5061         (GOT_memory_operand): Likewise.
5062         (call_insn_operand): Likewise.
5063         (sibcall_insn_operand): Likewise.
5064         (GOT32_symbol_operand): Likewise.
5065         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
5067 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
5069         PR rtl-optimization/83496
5070         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
5071         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
5072         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
5073         redundant insn, if any.
5074         (relax_delay_slots): Likewise.
5075         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
5077 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
5079         PR tree-optimization/83965
5080         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
5081         that grouped statements are part of a reduction chain.  Return
5082         true if the statement is not marked as a reduction itself but
5083         is part of a group.
5084         (vect_recog_dot_prod_pattern): Don't check whether the statement
5085         is part of a group here.
5086         (vect_recog_sad_pattern): Likewise.
5087         (vect_recog_widen_sum_pattern): Likewise.
5089 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
5091         PR debug/84545
5092         * final.c (rest_of_clean_state): Also look for calls inside sequences.
5094 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
5096         PR target/84530
5097         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
5098         the bool argument.
5099         (ix86_output_indirect_function_return): New prototype.
5100         (ix86_split_simple_return_pop_internal): Likewise.
5101         * config/i386/i386.c (indirect_return_via_cx): New.
5102         (indirect_return_via_cx_bnd): Likewise.
5103         (indirect_thunk_name): Handle return va CX_REG.
5104         (output_indirect_thunk_function): Create alias for
5105         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
5106         (ix86_output_indirect_jmp): Remove the bool argument.
5107         (ix86_output_indirect_function_return): New function.
5108         (ix86_split_simple_return_pop_internal): Likewise.
5109         * config/i386/i386.md (*indirect_jump): Don't pass false
5110         to ix86_output_indirect_jmp.
5111         (*tablejump_1): Likewise.
5112         (simple_return_pop_internal): Change it to define_insn_and_split.
5113         Call ix86_split_simple_return_pop_internal to split it for
5114         -mfunction-return=.
5115         (simple_return_indirect_internal): Call
5116         ix86_output_indirect_function_return instead of
5117         ix86_output_indirect_jmp.
5119 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
5121         PR bootstrap/84405
5122         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
5123         memset and value initialization afterwards.
5125 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
5127         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
5129 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5131         PR target/84521
5132         * common/config/aarch64/aarch64-common.c
5133         (aarch_option_optimization_table[]): Switch
5134         off fomit-frame-pointer
5136 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
5137             Chung-Ju Wu  <jasonwucj@gmail.com>
5139         * config/nds32/nds32-multiple.md (load_multiple): Disallow
5140         volatile memory.
5141         (store_multiple): Ditto.
5143 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
5145         * config.gcc: Add --with-cpu support for nds32 target.
5146         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
5147         * config/nds32/nds32.opt: Add -mcpu= option.
5149 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
5151         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
5152         isel=yes): Warn for these deprecated options.
5154 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
5156         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
5157         ISA_2_5_MASKS_EMBEDDED.
5159 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
5161         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
5162         p->max as pointers rather than using iterative_hash_expr.
5164 2018-02-23  Carl Love  <cel@us.ibm.com>
5166         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
5167         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
5168         BU_P8V_OVERLOAD_2.
5169         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
5170         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
5171         P8V_BUILTIN_VEC_VUNSIGNED2.
5173 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
5175         PR target/81572
5176         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
5177         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
5178         LRA_UNKNOWN_ALT.
5179         * lra-constraints.c (curr_insn_transform): Set up
5180         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
5181         LRA_UNKNOWN_ALT.
5182         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
5183         * lra-eliminations.c (spill_pseudos): Ditto.
5184         (process_insn_for_elimination): Ditto.
5185         * lra-lives.c (reg_early_clobber_p): Use the new macros.
5186         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
5187         LRA_NON_CLOBBERED_ALT.
5189 2018-02-22  Martin Sebor  <msebor@redhat.com>
5191         PR tree-optimization/84480
5192         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
5193         to maybe_diag_stxncpy_trunc.  Call it.
5194         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
5195         from gimple_fold_builtin_strcpy.  Print inlining stack.
5196         (handle_builtin_stxncpy): Print inlining stack.
5197         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
5199 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
5201         PR target/84176
5202         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
5203         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
5204         and -fcheck-pointer-bounds are used together.
5205         (indirect_thunk_prefix): New enum.
5206         (indirect_thunk_need_prefix): New function.
5207         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
5208         "_nt" instead of "_bnd" for NOTRACK prefix.
5209         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
5210         (output_indirect_thunk_function): Likewise.
5211         (): Likewise.
5212         (ix86_code_end): Update output_indirect_thunk_function calls.
5213         (ix86_output_indirect_branch_via_reg): Replace
5214         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
5215         (ix86_output_indirect_branch_via_push): Likewise.
5216         (ix86_output_function_return): Likewise.
5217         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
5218         incompatible with -fcf-protection=branch and
5219         -fcheck-pointer-bounds.
5221 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
5223         PR target/83335
5224         * config/aarch64/aarch64.c (aarch64_print_address_internal):
5225         Change gcc_assert call to output_operand_lossage.
5227 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
5229         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
5231 2018-02-22  DJ Delorie  <dj@redhat.com>
5232             Sebastian Perta  <sebastian.perta@renesas.com>
5233             Oleg Endo  <olegendo@gcc.gnu.org>
5235         * config/rx/rx.c (rx_rtx_costs): New function.
5236         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
5238 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5240         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
5242 2018-02-22  Martin Liska  <mliska@suse.cz>
5244         PR driver/83193
5245         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
5246         Add "native" as a possible value.
5248 2018-02-22  Martin Liska  <mliska@suse.cz>
5250         PR driver/83193
5251         * config/i386/i386.c (ix86_option_override_internal):
5252         Add "native" as a possible value for -march and -mtune.
5254 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
5256         PR target/84502
5257         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
5258         to all type variants.
5260         PR tree-optimization/84503
5261         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
5262         width as info->bitpos + info->bitsize - start.
5263         (merged_store_group::merge_overlapping): Simplify width computation.
5264         (check_no_overlap): New function.
5265         (imm_store_chain_info::try_coalesce_bswap): Compute expected
5266         start + width and last_order of the group, fail if check_no_overlap
5267         fails.
5268         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
5269         to group if check_no_overlap fails.
5271 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
5273         * config/rs6000/altivec.md: Delete contraint arguments to
5274         define_expand, define_split, and define_peephole2, and in
5275         define_insn_and_split if always unused.
5276         * config/rs6000/darwin.md: Ditto.
5277         * config/rs6000/dfp.md: Ditto.
5278         * config/rs6000/rs6000.md: Ditto.
5279         * config/rs6000/sync.md: Ditto.
5280         * config/rs6000/vector.md: Ditto.
5281         * config/rs6000/vsx.md: Ditto.
5283 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
5285         * config/rs6000/altivec.md: Write output control strings as braced
5286         blocks instead of double-quoted strings.
5287         * config/rs6000/darwin.md: Ditto.
5288         * config/rs6000/rs6000.md: Ditto.
5289         * config/rs6000/vector.md: Ditto.
5290         * config/rs6000/vsx.md: Ditto.
5292 2018-02-21  Jason Merrill  <jason@redhat.com>
5294         PR c++/84314 - ICE with templates and fastcall attribute.
5295         * attribs.c (build_type_attribute_qual_variant): Remove assert.
5297 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
5299         * ipa-cp.c (determine_versionability): Fix comment typos.
5301 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
5303         PR c/84229
5304         * ipa-cp.c (determine_versionability): Do not version functions caling
5305         va_arg_pack.
5307 2018-02-21  Martin Liska  <mliska@suse.cz>
5309         PR driver/83193
5310         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
5311         Add "native" as a possible value.
5312         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
5313         the macro when native cpu detection is available.
5315 2018-02-21  Martin Liska  <mliska@suse.cz>
5317         PR driver/83193
5318         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
5319         Add "native" as a possible value.
5320         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
5321         when native cpu detection is available.
5323 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
5324             Martin Sebor  <msebor@redhat.com>
5326         PR tree-optimization/84478
5327         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
5328         false.
5329         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
5330         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
5331         support which is conservatively correct, for 2 only stay conservative
5332         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
5333         argument to the 2 argument get_range_strlen, adjust 6 arg
5334         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
5335         false.
5336         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
5337         (gimple_fold_builtin_strlen): Pass true as last argument to
5338         get_range_strlen.
5340 2018-02-20  Martin Sebor  <msebor@redhat.com>
5342         PR middle-end/84095
5343         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
5344         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
5345         (builtin_memref::builtin_memref): Factor out parts into
5346         set_base_and_offset and call it.
5348 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
5350         PR middle-end/84406
5351         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
5352         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
5353         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
5354         search at the associated MODE_INT.
5356 2018-02-20  Jeff Law  <law@redhat.com>
5358         PR middle-end/82123
5359         PR tree-optimization/81592
5360         PR middle-end/79257
5361         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
5362         for range data rather than using global data.
5363         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
5364         range data rather than using global data.
5365         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
5366         pass it to children as needed.
5367         (struct directive::fmtresult): Similarly.
5368         (struct directive::set_width): Similarly.
5369         (struct directive::set_precision): Similarly.
5370         (format_integer, format_directive, parse_directive): Similarly.
5371         (format_none): Accept unnamed vr_values parameter.
5372         (format_percent, format_floating, format_character): Similarly.
5373         (format_string, format_plain): Similarly.
5374         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
5375         the EVRP range analyzer for range data rather than using global data.
5376         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
5377         gimple-ssa-evrp-analyze.h
5378         (class sprintf_dom_walker): Add after_dom_children member function.
5379         Add evrp_range_analyzer member.
5380         (sprintf_dom_walker::before_dom_children): Call into the EVRP
5381         range analyzer as needed.
5382         (sprintf_dom_walker::after_dom_children): New member function.
5383         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
5384         if not optimizing.
5385         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
5386         (evrp_range_analyzer::pop_to_marker): Likewise.
5388 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
5390         PR tree-optimization/84419
5391         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
5392         with the required type if its current type is compatible but
5393         different.
5395 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
5397         PR middle-end/82004
5398         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
5399         after vectorization.
5401 2018-02-20  Martin Liska  <mliska@suse.cz>
5403         PR driver/83193
5404         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
5405         possible values if we don't have a hint.
5407 2018-02-20  Martin Liska  <mliska@suse.cz>
5409         PR c/84310
5410         PR target/79747
5411         * final.c (shorten_branches): Build align_tab array with one
5412         more element.
5413         * opts.c (finish_options): Add alignment option limit check.
5414         (MAX_CODE_ALIGN): Likewise.
5415         (MAX_CODE_ALIGN_VALUE): Likewise.
5416         * doc/invoke.texi: Document maximum allowed option value for
5417         all -falign-* options.
5419 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
5421         PR target/84146
5422         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
5423         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
5424         * var-tracking.c (emit_note_insn_var_location): Remove all references
5425         to NOTE_INSN_CALL_ARG_LOCATION.
5426         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
5427         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
5428         Use copy_rtx_if_shared.
5429         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
5430         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
5431         (dwarf2out_var_location): Remove handling of
5432         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
5433         on call_insn.
5434         * final.c (final_scan_insn): Remove all references to
5435         NOTE_INSN_CALL_ARG_LOCATION.
5436         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
5437         before dumping final insns.
5438         * except.c (emit_note_eh_region_end): Remove all references to
5439         NOTE_INSN_CALL_ARG_LOCATION.
5440         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
5441         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
5442         * config/arc/arc.c (hwloop_optimize): Likewise.
5443         * config/arm/arm.c (create_fix_barrier): Likewise.
5444         * config/s390/s390.c (s390_chunkify_start): Likewise.
5445         * config/sh/sh.c (find_barrier): Likewise.
5446         * config/i386/i386.c (rest_of_insert_endbranch,
5447         ix86_seh_fixup_eh_fallthru): Likewise.
5448         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
5449         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
5450         * config/frv/frv.c (frv_function_prologue): Likewise.
5451         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
5452         reg note.
5453         (note_outside_basic_block_p): Remove all references to
5454         NOTE_INSN_CALL_ARG_LOCATION.
5455         * gengtype.c (adjust_field_rtx_def): Likewise.
5456         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
5457         Likewise.
5458         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
5459         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
5461         PR c++/84444
5462         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
5463         is ADDR_EXPR.
5465         PR tree-optimization/84452
5466         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
5467         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
5468         is NULL.
5470 2018-02-19  Martin Liska  <mliska@suse.cz>
5472         PR sanitizer/82183
5473         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
5475 2018-02-19  Martin Liska  <mliska@suse.cz>
5476             Richard Sandiford  <richard.sandiford@linaro.org>
5478         PR tree-optimization/82491
5479         * gimple-fold.c (get_base_constructor): Make earlier bail out
5480         to prevent ubsan.
5482 2018-02-19  Carl Love  <cel@us.ibm.com>
5484         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
5485         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
5486         BU_P8V_OVERLOAD_1.
5487         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
5488         P8V_BUILTIN_VEC_NEG.
5490 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
5492         * config/rl78/rl78.md (movdf): New define expand.
5494 2018-02-19  Martin Liska  <mliska@suse.cz>
5496         PR other/80589
5497         * doc/invoke.texi: Fix typo.
5498         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
5500 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
5502         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
5503         handle rs6000_single_float and rs6000_double_float specially for
5504         e500 family CPUs.
5506 2018-02-16  Jeff Law  <law@redhat.com>
5508         * config/rx/rx.c (add_pop_cfi_notes): New function.;
5509         (pop_regs): Use it.
5511 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
5513         PR ipa/84425
5514         * ipa-inline.c (inline_small_functions): Fix a typo.
5516 2018-02-16  Nathan Sidwell  <nathan@acm.org>
5518         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
5520 2018-02-16  Carl Love  <cel@us.ibm.com>
5522         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
5523         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
5524         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
5525         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
5526         expansion to P8V_BUILTIN_VEC_FLOAT2.
5528 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
5530         PR rtl-optimization/70023
5531         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
5532         src_regno into account.
5534 2018-02-16  Carl Love  <cel@us.ibm.com>
5536         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
5537         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
5538         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
5539         * config/rs6000/rs6000.c: Remove case statements for
5540         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
5541         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
5542         and P9V_BUILTIN_VEC_VINSERT4B.
5543         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
5544         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
5545         * config/rs6000/vsx.md:
5546         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
5547         vec_insert4b.
5549 2018-02-16  Carl Love  <cel@us.ibm.com>
5551         * config/rs6000/altivec.h: Add builtin names vec_extract4b
5552         vec_insert4b.
5553         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
5554         definitions.
5555         * config/rs6000/rs6000-c.c: Add the definitions for
5556         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
5557         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
5558         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
5559         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
5560         definition for insert4b and define insn *insert3b_internal.
5561         * doc/extend.texi: Add documentation for vec_extract4b.
5563 2018-02-16  Nathan Sidwell  <nathan@acm.org>
5565         * doc/extend.texi (Backwards Compatibility): Mention friend
5566         injection.  Note for-scope is deprecated.
5567         * doc/invoke.texi (-ffriend-injection): Deprecate.
5569 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
5571         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
5572         that moved to I2, also allow destinations that are a paradoxical
5573         subreg (instead of a normal reg).
5575 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
5577         PR target/83831
5578         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
5579         to QImode.
5581 2018-02-16  Richard Biener  <rguenther@suse.de>
5583         PR tree-optimization/84037
5584         PR tree-optimization/84016
5585         PR target/82862
5586         * config/i386/i386.c (ix86_builtin_vectorization_cost):
5587         Adjust vec_construct for the fact we need additional higher latency
5588         128bit inserts for AVX256 and AVX512 vector builds.
5589         (ix86_add_stmt_cost): Scale vector construction cost for
5590         elementwise loads.
5592 2018-02-16  Richard Biener  <rguenther@suse.de>
5594         PR tree-optimization/84417
5595         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
5596         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
5597         (non_rewritable_lvalue_p): Likewise, use poly-ints.
5599 2018-02-16  Martin Liska  <mliska@suse.cz>
5601         PR sanitizer/84307
5602         * internal-fn.def (ASAN_CHECK): Set proper flags.
5603         (ASAN_MARK): Likewise.
5605 2018-02-16  Julia Koval  <julia.koval@intel.com>
5607         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
5608         from PTA_CANNONLAKE.
5610 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
5612         PR target/84272
5613         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
5614         Use ++iter rather than iter++ for std::list iterators.
5615         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
5616         defer deleting them until all nodes in the forest are processed.  Do
5617         free even leaf nodes.  Change to_process into auto_vec.
5619         PR bootstrap/84405
5620         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
5621         * vec.h (vec_default_construct): Use memset instead of placement new
5622         if BROKEN_VALUE_INITIALIZATION is defined.
5623         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
5624         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
5625         is defined.
5627         PR rtl-optimization/83723
5628         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
5629         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
5630         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
5631         recursive calls.
5632         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
5633         callers.
5634         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
5636 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
5638         PR rtl-optimization/81443
5639         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
5640         from inner REGs to paradoxical SUBREGs.
5642 2018-02-16  Richard Biener  <rguenther@suse.de>
5644         PR tree-optimization/84399
5645         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
5646         For operands we can analyze at their definition make sure we can
5647         analyze them at each use as well.
5649 2018-02-16  Richard Biener  <rguenther@suse.de>
5651         PR tree-optimization/84190
5652         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
5653         volatile accesses if the decl isn't volatile.
5655 2018-02-15  Jason Merrill  <jason@redhat.com>
5657         PR c++/84314 - ICE with templates and fastcall attribute.
5658         * attribs.c (build_type_attribute_qual_variant): Don't clobber
5659         TYPE_CANONICAL on an existing type.
5661 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
5663         PR tree-optimization/84383
5664         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
5665         dstoff nor call operand_equal_p if dstbase is NULL.
5667         PR tree-optimization/84334
5668         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
5669         also a CONSTANT_CLASS_P, punt.
5671 2018-02-14  Jim Wilson  <jimw@sifive.com>
5673         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
5674         first SMALL_OPERAND check.  New local min_second_step.  Move assert
5675         to where locals are set.  Add TARGET_RVC support.
5676         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
5678 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
5680         * doc/invoke.texi: Correct -Wformat-overflow code sample.
5682 2018-02-14  Martin Sebor  <msebor@redhat.com>
5684         PR tree-optimization/83698
5685         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
5686         arrays constrain the offset range to their bounds.
5687         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
5688         (builtin_access::overlap): Avoid setting the size of overlap if it's
5689         already been set.
5690         (maybe_diag_overlap): Also consider arrays when deciding what values
5691         of offsets to include in diagnostics.
5693 2018-02-14  Martin Sebor  <msebor@redhat.com>
5695         PR c/84108
5696         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
5697         that correspond to the kind of a declaration.
5699 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
5701         PR target/83984
5702         * config/pa/pa.md: Load address of PIC label using the linkage table
5703         if the label is nonlocal.
5705 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5707         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
5708         warning message if user requests -maltivec=be.
5709         * doc/invoke.texi: Document deprecation of -maltivec=be.
5711 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
5713         PR target/84220
5714         * config/rs6000/rs6000-c.c: Update definitions for
5715         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
5716         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
5718 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5720         PR target/84239
5721         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
5722         add _get_ssp intrinsics. Remove argument from
5723         __builtin_ia32_rdssp[d|q].
5724         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
5725         * config/i386/i386-builtin.def: Remove argument from
5726         __builtin_ia32_rdssp[d|q].
5727         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
5728         ix86_expand_special_args_builtin for _rdssp[d|q].
5729         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
5730         Clear register before usage.
5731         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
5732         Add documentation for new _get_ssp and _inc_ssp intrinsics.
5734 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
5736         PR tree-optimization/84357
5737         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
5738         operand 1 of an ARRAY_REF too.
5740 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
5742         PR target/83831
5743         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
5744         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
5745         declarations.
5746         (set_of_reg): New struct.
5747         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
5748         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
5749         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
5750         functions.
5751         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
5752         Split into bitclr, bitset, bitinvert patterns if appropriate.
5753         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
5754         use rx_fuse_in_memory_bitop.
5755         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
5756         to named insn, correct maximum insn length.
5758 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
5760         PR target/79242
5761         * machmode.def: Define a complex mode for PARTIAL_INT.
5762         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
5763         MODE_PARTIAL_INT.
5764         * doc/rtl.texi: Document CSPImode.
5765         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
5766         handling.
5767         (msp430_hard_regno_nregs_with_padding): Likewise.
5769 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
5771         PR target/84279
5772         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
5774 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
5776         PR rtl-optimization/84169
5777         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
5778         we generated a parallel as new i3 and we split that to new i2 and i3
5779         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
5780         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
5781         those to i2, not i1.  Partially rewrite this scan code.
5783 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
5785         PR c/82210
5786         * stor-layout.c (place_field): For variable length fields, adjust
5787         offset_align afterwards not just based on the field's alignment,
5788         but also on the size.
5790         PR middle-end/84309
5791         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
5792         of exps and logs in the use_exp2 case.
5794 2018-02-13  Jeff Law  <law@redhat.com>
5796         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
5797         entry for "vector".
5799         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
5800         ARGS as unused.
5802 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
5804         PR debug/84342
5805         PR debug/84319
5806         * common.opt (gas-loc-support, gas-locview-support): New.
5807         (ginline-points, ginternal-reset-location-views): New.
5808         * doc/invoke.texi: Document them.  Use @itemx where intended.
5809         (gvariable-location-views): Adjust.
5810         * target.def (reset_location_view): New.
5811         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
5812         (TARGET_RESET_LOCATION_VIEW): New.
5813         * doc/tm.texi: Rebuilt.
5814         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
5815         (dwarf2out_default_as_locview_support): New.
5816         (output_asm_line_debug_info): Use option variables.
5817         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
5818         (output_loc_list): Likewise.
5819         (add_high_low_attributes): Check option variables.
5820         Don't output entry view attribute in strict mode.
5821         (gen_inlined_subroutine_die): Check option variables.
5822         (dwarf2out_inline_entry): Likewise.
5823         (init_sections_and_labels): Likewise.
5824         (dwarf2out_early_finish): Likewise.
5825         (maybe_reset_location_view): New, from...
5826         (dwarf2out_var_location): ... here.  Call it.
5827         * debug.h (dwarf2out_default_as_loc_support): Declare.
5828         (dwarf2out_default_as_locview_support): Declare.
5829         * hooks.c (hook_int_rtx_insn_0): New.
5830         * hooks.h (hook_int_rtx_insn_0): Declare.
5831         * toplev.c (process_options): Take -gas-loc-support and
5832         -gas-locview-support from dwarf2out.  Enable
5833         -gvariable-location-views by default only with locview
5834         assembler support.  Enable -ginternal-reset-location-views by
5835         default only if the target defines the corresponding hook.
5836         Enable -ginline-points by default if location views are
5837         enabled; force it disabled if statement frontiers are
5838         disabled.
5839         * tree-inline.c (expand_call_inline): Check option variables.
5840         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
5842 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
5844         PR tree-optimization/84321
5845         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
5846         handling.  Also check whether the anti-range contains any values
5847         that satisfy the mask; switch to a VR_RANGE if not.
5849 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
5851         PR sanitizer/84340
5852         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
5854 2018-02-13  Martin Jambor  <mjambor@suse.cz>
5856         PR c++/83990
5857         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
5858         of call statements, also set location of a load to a temporary.
5860 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
5862         * config/rl78/rl78.c (add_vector_labels): New function.
5863         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
5864         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
5865         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
5866         which checks that no arguments are passed.
5867         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
5868         * doc/extend.texi: Documentation for the new attribute.
5870 2018-02-13  Andreas Schwab  <schwab@suse.de>
5872         * config/riscv/linux.h (CPP_SPEC): Define.
5874 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
5876         PR target/84335
5877         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
5878         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
5879         OPTION_MASK_ISA_AES as first argument to def_builtin_const
5880         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
5881         instead of OPTION_MASK_ISA_PCLMUL as first argument to
5882         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
5883         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
5884         temporarily for AES and PCLMUL builtins.
5886         PR tree-optimization/84339
5887         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
5888         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
5889         Formatting fixes.
5891         PR middle-end/84309
5892         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
5893         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
5894         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
5895         inline function.
5896         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
5897         inline function.
5898         * omp-simd-clone.h: New file.
5899         * omp-simd-clone.c: Include omp-simd-clone.h.
5900         (expand_simd_clones): No longer static.
5901         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
5902         cgraph.h and omp-simd-clone.h.
5903         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
5904         (vect_recog_widen_shift_pattern): Formatting fix.
5905         (vect_pattern_recog_1): Don't check optab for calls.
5907         PR target/84336
5908         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
5909         operands[2] into a REG before using gen_lowpart on it.
5911 2018-02-12  Jeff Law  <law@redhat.com>
5913         PR target/83760
5914         * config/sh/sh.c (find_barrier): Consider a sibling call
5915         a barrier as well.
5917         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
5918         successfully back substituting a reg.
5920 2018-02-12  Richard Biener  <rguenther@suse.de>
5922         PR tree-optimization/84037
5923         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
5924         parameter, move visited init to caller.
5925         (vect_slp_analyze_operations): Separate cost from validity
5926         check, initialize visited once for all instances.
5927         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
5928         for all instances.
5929         * tree-vect-stmts.c (vect_model_simple_cost): Make early
5930         out an assert.
5931         (vect_model_promotion_demotion_cost): Likewise.
5932         (vectorizable_bswap): Guard cost modeling with !slp_node
5933         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
5934         SLP stmts.
5935         (vectorizable_call): Likewise.
5936         (vectorizable_conversion): Likewise.
5937         (vectorizable_assignment): Likewise.
5938         (vectorizable_shift): Likewise.
5939         (vectorizable_operation): Likewise.
5940         (vectorizable_store): Likewise.
5941         (vectorizable_load): Likewise.
5942         (vectorizable_condition): Likewise.
5943         (vectorizable_comparison): Likewise.
5945 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
5947         PR sanitizer/84307
5948         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
5949         (ASAN_MARK): Fix fnspec to account for return value, change pointer
5950         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
5952 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
5954         PR middle-end/83665
5955         * params.def (inline-min-speedup): Increase from 8 to 15.
5956         (max-inline-insns-auto): Decrease from 40 to 30.
5957         * ipa-split.c (consider_split): Add some buffer for function to
5958         be considered inlining candidate.
5959         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
5960         default values.
5962 2018-02-12  Richard Biener  <rguenther@suse.de>
5964         PR tree-optimization/84037
5965         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
5966         matched stmts if we cannot swap the non-matched ones.
5968 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
5970         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
5971         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
5972         _mm_maskz_scalef_round_ss): New intrinsics.
5973         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
5974         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
5975         __builtin_ia32_scalefss_round): Remove.
5976         (__builtin_ia32_scalefsd_mask_round,
5977         __builtin_ia32_scalefss_mask_round): New intrinsics.
5978         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
5979         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
5980         ((match_operand:VF_128 2 "<round_nimm_predicate>"
5981         "<round_constraint>")): Changed to ...
5982         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
5983         "<round_scalar_constraint>")): ... this.
5984         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
5985         %0, %1, %2<round_op3>}"): Changed to ...
5986         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
5987         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
5988         %2<round_scalar_mask_op3>}"): ... this.
5989         * config/i386/subst.md (round_scalar_nimm_predicate): New.
5991 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
5993         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
5994         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
5995         (_mm_maskz_sqrt_round_ss): New intrinsics.
5996         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
5997         (__builtin_ia32_sqrtsd_mask_round)
5998         (__builtin_ia32_sqrtss_mask_round): New builtins.
5999         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
6000         (__builtin_ia32_sqrtss_round): Remove.
6001         (__builtin_ia32_sqrtsd_mask_round)
6002         (__builtin_ia32_sqrtss_mask_round): New builtins.
6003         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
6004         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
6005         ((match_operand:VF_128 1 "vector_operand"
6006         "xBm,<round_constraint>")): Changed to ...
6007         ((match_operand:VF_128 1 "vector_operand"
6008         "xBm,<round_scalar_constraint>")): ... this.
6009         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
6010         %0, %2, %<iptr>1<round_op3>}): Changed to ...
6011         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
6012         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
6013         %<iptr>1<round_scalar_mask_op3>}): ... this.
6014         ((set_attr "prefix" "<round_prefix>")): Changed to ...
6015         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
6017 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
6019         PR target/84266
6020         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
6021         Cast vec_cmpeq result to correct type.
6022         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
6023         Cast vec_cmpgt result to correct type.
6025 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
6027         * final.c (final_scan_insn_1): Renamed from...
6028         (final_scan_insn): ... this.  New wrapper, to recover
6029         seen from the outermost call in recursive ones.
6030         * config/sparc/sparc.c (output_return): Drop seen from call.
6031         (output_sibcall): Likewise.
6032         * config/visium/visium.c (output_branch): Likewise.
6034 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
6036         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
6037         function label.
6039 2018-02-10  Alan Modra  <amodra@gmail.com>
6041         PR target/84300
6042         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
6043         Specify LR as an input.
6045 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
6047         PR sanitizer/83987
6048         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
6049         remove_member_access_dummy_vars): New functions.
6050         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
6051         lower_omp_1, execute_lower_omp): Use them.
6053         PR rtl-optimization/84308
6054         * shrink-wrap.c (spread_components): Release todo vector.
6056 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
6058         PR rtl-optimization/57193
6059         * ira-color.c (struct allocno_color_data): Add member
6060         conflict_allocno_hard_prefs.
6061         (update_conflict_allocno_hard_prefs): New.
6062         (bucket_allocno_compare_func): Add a preference based on
6063         conflict_allocno_hard_prefs.
6064         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
6065         (color_allocnos): Remove a dead code.  Initiate
6066         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
6068 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
6070         PR target/84226
6071         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
6072         constraint from =wa to wa.  Avoid a subreg on the output operand,
6073         instead use a pseudo and subreg it in a move.
6074         (p9_xxbrd_<mode>): Changed to ...
6075         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
6076         (p9_xxbrd_v2df): New expander.
6077         (p9_xxbrw_<mode>): Changed to ...
6078         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
6079         (p9_xxbrw_v4sf): New expander.
6081 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
6083         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
6085 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
6087         PR target/83926
6088         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
6089         multiply in 32-bit mode.
6090         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
6091         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
6092         mode.
6094 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
6096         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
6097         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
6098         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
6099         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
6101 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
6103         PR lto/84213
6104         * dwarf2out.c (is_trivial_indirect_ref): New function.
6105         (dwarf2out_late_global_decl): Do not generate a location
6106         attribute for variables that have a non-trivial DECL_VALUE_EXPR
6107         and that are not defined in the current unit.
6109 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
6111         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
6112         instead of a libcall for UNORDERED.
6114 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
6116         PR target/82641
6117         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
6118         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
6120 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
6122         PR target/PR84295
6123         * config/s390/s390.c (s390_set_current_function): Invoke
6124         s390_indirect_branch_settings also if fndecl didn't change.
6126 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
6128         * config/rs6000/rs6000.md (blockage): Set length to zero.
6130 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
6132         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
6134 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
6136         PR sanitizer/84285
6137         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
6138         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
6139         -static-lib*san.
6141         PR debug/84252
6142         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
6143         PARALLEL incoming that failed vt_get_decl_and_offset check.
6145         PR middle-end/84237
6146         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
6147         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
6148         TREE_READONLY bit.
6149         (get_variable_section): For decls in named .bss* sections pass true as
6150         second argument to bss_initializer_p.
6152 2018-02-09  Marek Polacek  <polacek@redhat.com>
6153             Jakub Jelinek  <jakub@redhat.com>
6155         PR c++/83659
6156         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
6157         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
6158         Sync some changes from cxx_fold_indirect_ref.
6160 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
6162         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
6163         markers.
6164         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
6165         (BLOCK_INLINE_ENTRY_LABEL): New.
6166         (dwarf2out_var_location): Disregard inline entry markers.
6167         (inline_entry_data): New struct.
6168         (inline_entry_data_hasher): New hashtable type.
6169         (inline_entry_data_hasher::hash): New.
6170         (inline_entry_data_hasher::equal): New.
6171         (inline_entry_data_table): New variable.
6172         (add_high_low_attributes): Add DW_AT_entry_pc and
6173         DW_AT_GNU_entry_view attributes if a pending entry is found
6174         in inline_entry_data_table.  Add old entry_pc attribute only
6175         if debug nonbinding markers are disabled.
6176         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
6177         markers are enabled.
6178         (block_within_block_p, dwarf2out_inline_entry): New.
6179         (dwarf2out_finish): Check that no entries remained in
6180         inline_entry_data_table.
6181         * final.c (reemit_insn_block_notes): Handle inline entry notes.
6182         (final_scan_insn, notice_source_line): Likewise.
6183         (rest_of_clean_state): Skip inline entry markers.
6184         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
6185         markers.
6186         * gimple.c (gimple_build_debug_inline_entry): New.
6187         * gimple.h (enum gimple_debug_subcode): Add
6188         GIMPLE_DEBUG_INLINE_ENTRY.
6189         (gimple_build_debug_inline_entry): Declare.
6190         (gimple_debug_inline_entry_p): New.
6191         (gimple_debug_nonbind_marker_p): Adjust.
6192         * insn-notes.def (INLINE_ENTRY): New.
6193         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
6194         inline entry marker notes.
6195         (print_insn): Likewise.
6196         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
6197         (INSN_DEBUG_MARKER_KIND): Likewise.
6198         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
6199         * tree-inline.c (expand_call_inline): Build and insert
6200         debug_inline_entry stmt.
6201         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
6202         inline entry blocks early, if nonbind markers are enabled.
6203         (dump_scope_block): Dump fragment info.
6204         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
6205         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
6206         (gimple_build_debug_inline_entry): New.
6207         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
6208         Enable/disable inline entry points too.
6209         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
6210         (DEBUG_INSN): Describe inline entry markers.
6212         * common.opt (gvariable-location-views): New.
6213         (gvariable-location-views=incompat5): New.
6214         * config.in: Rebuilt.
6215         * configure: Rebuilt.
6216         * configure.ac: Test assembler for view support.
6217         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
6218         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
6219         * dwarf2out.c (var_loc_view): New typedef.
6220         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
6221         (dwarf2out_locviews_in_attribute): New.
6222         (dwarf2out_locviews_in_loclist): New.
6223         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
6224         (enum dw_line_info_opcode): Add LI_adv_address.
6225         (struct dw_line_info_table): Add view.
6226         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
6227         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
6228         (zero_view_p): New variable.
6229         (ZERO_VIEW_P): New macro.
6230         (output_asm_line_debug_info): New.
6231         (struct var_loc_node): Add view.
6232         (add_AT_view_list, AT_loc_list): New.
6233         (add_var_loc_to_decl): Add view param.  Test it against last.
6234         (new_loc_list): Add view params.  Record them.
6235         (AT_loc_list_ptr): Handle loc and view lists.
6236         (view_list_to_loc_list_val_node): New.
6237         (print_dw_val): Handle dw_val_class_view_list.
6238         (size_of_die): Likewise.
6239         (value_format): Likewise.
6240         (loc_list_has_views): New.
6241         (gen_llsym): Set vl_symbol too.
6242         (maybe_gen_llsym, skip_loc_list_entry): New.
6243         (dwarf2out_maybe_output_loclist_view_pair): New.
6244         (output_loc_list): Output view list or entries too.
6245         (output_view_list_offset): New.
6246         (output_die): Handle dw_val_class_view_list.
6247         (output_dwarf_version): New.
6248         (output_compilation_unit_header): Use it.
6249         (output_skeleton_debug_sections): Likewise.
6250         (output_rnglists, output_line_info): Likewise.
6251         (output_pubnames, output_aranges): Update version comments.
6252         (output_one_line_info_table): Output view numbers in asm comments.
6253         (dw_loc_list): Determine current endview, pass it to new_loc_list.
6254         Call maybe_gen_llsym.
6255         (loc_list_from_tree_1): Adjust.
6256         (add_AT_location_description): Create view list attribute if
6257         needed, check it's absent otherwise.
6258         (convert_cfa_to_fb_loc_list): Adjust.
6259         (maybe_emit_file): Call output_asm_line_debug_info for test.
6260         (dwarf2out_var_location): Reset views as needed.  Precompute
6261         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
6262         attribute.  Set view.
6263         (new_line_info_table): Reset next view.
6264         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
6265         (dwarf2out_source_line): Likewise.  Output view resets and labels to
6266         the assembler, or select appropriate line info opcodes.
6267         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
6268         (optimize_string_length): Catch it.  Adjust.
6269         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
6270         dw_val_class_view_list, and remove it if no longer needed.
6271         (hash_loc_list): Hash view numbers.
6272         (loc_list_hasher::equal): Compare them.
6273         (optimize_location_lists): Check whether a view list symbol is
6274         needed, and whether the locview attribute is present, and
6275         whether they match.  Remove the locview attribute if no longer
6276         needed.
6277         (index_location_lists): Call skip_loc_list_entry for test.
6278         (dwarf2out_finish): Call output_asm_line_debug_info for test.
6279         Use output_dwarf_version.
6280         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
6281         (struct dw_val_node): Add val_view_list.
6282         * final.c (SEEN_NEXT_VIEW): New.
6283         (set_next_view_needed): New.
6284         (clear_next_view_needed): New.
6285         (maybe_output_next_view): New.
6286         (final_start_function): Rename to...
6287         (final_start_function_1): ... this.  Take pointer to FIRST,
6288         add SEEN parameter.  Emit param bindings in the initial view.
6289         (final_start_function): Reintroduce SEEN-less interface.
6290         (final): Rename to...
6291         (final_1): ... this.  Take SEEN parameter.  Output final pending
6292         next view at the end.
6293         (final): Reintroduce seen-less interface.
6294         (final_scan_insn): Output pending next view before switching
6295         sections or ending a block.  Mark the next view as needed when
6296         outputting variable locations.  Notify debug backend of section
6297         changes, and of location view changes.
6298         (rest_of_handle_final): Adjust.
6299         * toplev.c (process_options): Autodetect value for debug variable
6300         location views option.  Warn on incompat5 without -gdwarf-5.
6301         * doc/invoke.texi (gvariable-location-views): New.
6302         (gvariable-location-views=incompat5): New.
6303         (gno-variable-location-views): New.
6305 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
6307         PR tree-optimization/84136
6308         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
6309         that the result of find_edge is non-NULL.
6311 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
6313         PR target/83008
6314         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
6315         storing integer register in SImode.  Fix cost of 256 and 512
6316         byte aligned SSE register store.
6318 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
6320         * config/i386/i386.c (ix86_multiplication_cost): Fix
6321         multiplication cost for TARGET_AVX512DQ.
6323 2018-02-08  Marek Polacek  <polacek@redhat.com>
6325         PR tree-optimization/84238
6326         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
6327         get_range_strlen.
6329 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6331         PR tree-optimization/84265
6332         * tree-vect-stmts.c (vectorizable_store): Don't treat
6333         VMAT_CONTIGUOUS accesses as grouped.
6334         (vectorizable_load): Likewise.
6336 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6338         PR tree-optimization/81635
6339         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
6340         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
6341         (test_round_for_mask): New functions.
6342         (wide_int_cc_tests): Call test_round_for_mask.
6343         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
6344         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
6345         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
6346         range returned by get_range_info.
6348 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
6350         PR ipa/81360
6351         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
6352         * symtab.c: Include builtins.h
6353         (symtab_node::output_to_lto_symbol_table_p): Move here
6354         from lto-streamer-out.c:output_symbol_p.
6355         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
6356         (output_symbol_p): Move all logic to symtab.c
6357         (produce_symtab): Update.
6359 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
6361         * config/s390/s390-opts.h (enum indirect_branch): Define.
6362         * config/s390/s390-protos.h (s390_return_addr_from_memory)
6363         (s390_indirect_branch_via_thunk)
6364         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
6365         (enum s390_indirect_branch_type): Define.
6366         * config/s390/s390.c (struct s390_frame_layout, struct
6367         machine_function): Remove.
6368         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
6369         (indirect_branch_table_label_no, indirect_branch_table_name):
6370         Define variables.
6371         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
6372         (enum s390_indirect_branch_option): Define.
6373         (s390_return_addr_from_memory): New function.
6374         (s390_handle_string_attribute): New function.
6375         (s390_attribute_table): Add new attribute handler.
6376         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
6377         (s390_indirect_branch_via_thunk): New function.
6378         (s390_indirect_branch_via_inline_thunk): New function.
6379         (s390_function_ok_for_sibcall): When jumping via thunk disallow
6380         sibling call optimization for non z10 compiles.
6381         (s390_emit_call): Force indirect branch target to be a single
6382         register.  Add r1 clobber for non-z10 compiles.
6383         (s390_emit_epilogue): Emit return jump via return_use expander.
6384         (s390_reorg): Handle JUMP_INSNs as execute targets.
6385         (s390_option_override_internal): Perform validity checks for the
6386         new command line options.
6387         (s390_indirect_branch_attrvalue): New function.
6388         (s390_indirect_branch_settings): New function.
6389         (s390_set_current_function): Invoke s390_indirect_branch_settings.
6390         (s390_output_indirect_thunk_function):  New function.
6391         (s390_code_end): Implement target hook.
6392         (s390_case_values_threshold): Implement target hook.
6393         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
6394         macros.
6395         * config/s390/s390.h (struct s390_frame_layout)
6396         (struct machine_function): Move here from s390.c.
6397         (TARGET_INDIRECT_BRANCH_NOBP_RET)
6398         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
6399         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
6400         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
6401         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
6402         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
6403         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
6404         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
6405         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
6406         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
6407         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
6408         (mnemonic attribute): Add values which aren't recognized
6409         automatically.
6410         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
6411         pattern for branch conversion.  Fix mnemonic attribute.
6412         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
6413         indirect branch via thunk if requested.
6414         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
6415         ("*indirect_jump"): Disable for branch conversion using out of
6416         line thunks.
6417         ("indirect_jump_via_thunk<mode>_z10")
6418         ("indirect_jump_via_thunk<mode>")
6419         ("indirect_jump_via_inlinethunk<mode>_z10")
6420         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
6421         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
6422         ("casesi_jump_via_inlinethunk<mode>_z10")
6423         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
6424         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
6425         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
6426         ("*indirect2_jump"): Disable for branch conversion.
6427         ("casesi_jump"): Turn into expander and expand patterns for branch
6428         conversion.
6429         ("return_use"): New expander.
6430         ("*return"): Emit return via thunk and rename it to ...
6431         ("*return<mode>"): ... this one.
6432         * config/s390/s390.opt: Add new options and and enum for the
6433         option values.
6435 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
6437         * lra-constraints.c (match_reload): Unconditionally use
6438         gen_lowpart_SUBREG, rather than selecting between that
6439         and equivalent gen_rtx_SUBREG code.
6441 2018-02-08  Richard Biener  <rguenther@suse.de>
6443         PR tree-optimization/84233
6444         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
6445         changed flag instead of boguously re-using phi_inserted.
6447 2018-02-08  Martin Jambor  <mjambor@suse.cz>
6449         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
6450         static local variables.
6452 2018-02-08  Richard Biener  <rguenther@suse.de>
6454         PR tree-optimization/84278
6455         * tree-vect-stmts.c (vectorizable_store): When looking for
6456         smaller vector types to perform grouped strided loads/stores
6457         make sure the mode is supported by the target.
6458         (vectorizable_load): Likewise.
6460 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
6462         * config/aarch64/aarch64.c (aarch64_components_for_bb):
6463         Increase LDP/STP opportunities by adding adjacent callee-saves.
6465 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
6467         PR rtl-optimization/84068
6468         PR rtl-optimization/83459
6469         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
6471 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
6473         PR tree-optimization/84224
6474         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
6475         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
6476         non-zero arguments.
6478 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
6480         PR target/84113
6481         * config/rs6000/altivec.md (*restore_world): Remove LR use.
6482         * config/rs6000/predicates.md (restore_world_operation): Adjust op
6483         count, remove one USE.
6485 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
6487         * doc/install.texi (Configuration): Document the
6488         --with-long-double-format={ibm,ieee} PowerPC configuration
6489         options.
6491         PR target/84154
6492         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
6493         Convert from define_expand to be define_insn_and_split.  Rework
6494         float/double/_Float128 conversions to QI/HI/SImode to work with
6495         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
6496         conversions to QI/HImode types did a store and then a load to
6497         truncate the value.  For conversions to VSX registers, don't split
6498         the insn, instead emit the code directly.  Use the code iterator
6499         any_fix to combine signed and unsigned conversions.
6500         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
6501         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
6502         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
6503         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
6504         (fix_<mode>di2_hw): Likewise.
6505         (fixuns_<mode>di2_hw): Likewise.
6506         (fix_<mode>si2_hw): Likewise.
6507         (fixuns_<mode>si2_hw): Likewise.
6508         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
6509         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
6510         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
6511         fix<uns>_trunc<SFDF:mode>si2_p8.
6512         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
6513         used.
6514         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
6515         (fix<uns>_<mode>_mem): Likewise.
6516         (fctiw<u>z_<mode>_mem): Likewise.
6517         (fix<uns>_<mode>_mem): Likewise.
6518         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
6519         the register allocator from doing a direct move to the GPRs to do
6520         a store, and instead use the ISA 3.0 store byte/half-word from
6521         vector register instruction.  For IEEE 128-bit floating point,
6522         also optimize stores of 32-bit ints.
6523         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
6525 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
6527         * genextract.c (push_pathstr_operand): New function to support
6528         [a-zA-Z].
6529         (walk_rtx): Call push_pathstr_operand.
6530         (print_path): Support [a-zA-Z].
6532 2018-02-07  Richard Biener  <rguenther@suse.de>
6534         PR tree-optimization/84037
6535         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
6536         (cse_and_gimplify_to_preheader): Declare.
6537         (vect_get_place_in_interleaving_chain): Likewise.
6538         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
6539         ivexpr_map.
6540         (_loop_vec_info::~_loop_vec_info): Delete it.
6541         (cse_and_gimplify_to_preheader): New function.
6542         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
6543         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
6544         (vectorizable_load): Likewise.  For grouped stores always base
6545         the IV on the first element.
6546         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
6547         condition before gimplifying.
6549 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
6551         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
6552         *DIV_EXPR and *MOD_EXPR.
6554 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
6556         PR target/84248
6557         * config/i386/i386.c (ix86_option_override_internal): Mask out
6558         the CF_SET bit when checking -fcf-protection.
6560 2018-02-07  Tom de Vries  <tom@codesourcery.com>
6562         PR libgomp/84217
6563         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
6564         enough.
6566 2018-02-07  Richard Biener  <rguenther@suse.de>
6568         PR tree-optimization/84204
6569         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
6570         this place.
6572         PR tree-optimization/84205
6573         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
6574         special-case isl_ast_op_zdiv_r.
6576         PR tree-optimization/84223
6577         * graphite-scop-detection.c (gather_bbs::before_dom_children):
6578         Only add conditions from within the region.
6579         (gather_bbs::after_dom_children): Adjust.
6581 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
6583         PR target/84209
6584         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
6585         * config/avr/avr.md: Only post-reload split REG-REG moves if
6586         either register is GENERAL_REG_P.
6588 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
6590         PR tree-optimization/84235
6591         * tree-ssa-scopedtables.c
6592         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
6593         if the subtraction is performed in floating point type where NaNs are
6594         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
6595         build 1.  Formatting fix.
6597 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
6599         PR target/84146
6600         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
6601         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
6602         and skip it regardless of bb boundaries.  Use CALL_P macro,
6603         don't test INSN_P (insn) together with CALL_P or JUMP_P check
6604         unnecessarily, formatting fix.
6606 2018-02-06  Michael Collison  <michael.collison@arm.com>
6608         * config/arm/thumb2.md:
6609         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
6610         (*thumb_mov_notscc): Ditto.
6612 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
6614         PR target/84154
6615         * config/rs6000/rs6000.md (su code attribute): Use "u" for
6616         unsigned_fix, not "s".
6618 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6620         * configure.ac (gcc_fn_eh_frame_ro): New function.
6621         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
6622         correct .eh_frame permissions.
6623         * configure: Regenerate.
6625 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
6627         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
6628         irrelevant options.
6630 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6632         * config/rs6000/rs6000.c (rs6000_option_override_internal):
6633         Display warning message for -mno-speculate-indirect-jumps.
6635 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
6637         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
6638         Undocumented.
6639         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
6641 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
6643         PR tree-optimization/84225
6644         * tree-eh.c (find_trapping_overflow): Only call
6645         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
6647 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6649         PR target/84145
6650         * config/i386/i386.c: Reimplement the check of possible options
6651         -mibt/-mshstk conbination. Change error messages.
6652         * doc/invoke.texi: Fix a typo: remove extra '='.
6654 2018-02-06  Marek Polacek  <polacek@redhat.com>
6656         PR tree-optimization/84228
6657         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
6659 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
6661         PR target/82641
6662         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
6663         emitted arch directives.
6664         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
6665         __ARM_FEATURE_COPROC before changing architectures.
6667 2018-02-06  Richard Biener  <rguenther@suse.de>
6669         * config/i386/i386.c (print_reg): Fix typo.
6670         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
6672 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
6674         * configure: Regenerate.
6676 2018-02-05  Martin Sebor  <msebor@redhat.com>
6678         PR tree-optimization/83369
6679         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
6680         inlining context.
6682 2018-02-05  Martin Liska  <mliska@suse.cz>
6684         * doc/invoke.texi: Cherry-pick upstream r323995.
6686 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
6688         * ira.c (ira_init_register_move_cost): Adjust comment.
6690 2018-02-05  Martin Liska  <mliska@suse.cz>
6692         PR gcov-profile/84137
6693         * doc/gcov.texi: Fix typo in documentation.
6695 2018-02-05  Martin Liska  <mliska@suse.cz>
6697         PR gcov-profile/83879
6698         * doc/gcov.texi: Document necessity of --dynamic-list-data when
6699         using dlopen functionality.
6701 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
6703         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
6704         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
6705         _mm_maskz_range_ss, _mm_mask_range_round_ss,
6706         _mm_maskz_range_round_ss): New intrinsics.
6707         (__builtin_ia32_rangesd128_round)
6708         (__builtin_ia32_rangess128_round): Remove.
6709         (__builtin_ia32_rangesd128_mask_round,
6710         __builtin_ia32_rangess128_mask_round): New builtins.
6711         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
6712         __builtin_ia32_rangess128_round): Remove.
6713         (__builtin_ia32_rangesd128_mask_round,
6714         __builtin_ia32_rangess128_mask_round): New builtins.
6715         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
6716         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
6717         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
6718         "<round_saeonly_constraint>")): Changed to ...
6719         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
6720         "<round_saeonly_scalar_constraint>")): ... this.
6721         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
6722         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
6723         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
6724         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
6725         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
6727 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
6729         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
6730         options.
6731         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
6732         Remove all values except native, 8540 and 8548.
6734 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
6736         * config/i386/i386.c (ix86_output_function_return): Pass
6737         INVALID_REGNUM, instead of -1, as invalid register number to
6738         indirect_thunk_name and output_indirect_thunk.
6740 2018-02-02  Julia Koval  <julia.koval@intel.com>
6742         * config.gcc: Add -march=icelake.
6743         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
6744         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
6745         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
6746         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
6747         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
6748         (processor_target_table): Add icelake.
6749         (ix86_option_override_internal): Handle new PTAs.
6750         (get_builtin_code_for_version): Handle icelake.
6751         (M_INTEL_COREI7_ICELAKE): New.
6752         (fold_builtin_cpu): Handle icelake.
6753         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
6754         * doc/invoke.texi: Add -march=icelake.
6756 2018-02-02  Julia Koval  <julia.koval@intel.com>
6758         * config/i386/i386.c (ix86_option_override_internal): Change flags type
6759         to wide_int_bitmask.
6760         * wide-int-bitmask.h: New.
6762 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6764         PR target/84066
6765         * config/i386/i386.md: Replace Pmode with word_mode in
6766         builtin_setjmp_setup and builtin_longjmp to support x32.
6768 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
6770         PR target/56010
6771         PR target/83743
6772         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
6773         #include "opts.h".
6774         (rs6000_supported_cpu_names): New static variable.
6775         (linux_cpu_translation_table): Likewise.
6776         (elf_platform) <cpu>: Define new static variable and use it.
6777         Translate kernel AT_PLATFORM name to canonical name if needed.
6778         Error if platform name is unknown.
6780 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
6782         PR target/84089
6783         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
6785 2018-02-01  Jeff Law  <law@redhat.com>
6787         PR target/84128
6788         * config/i386/i386.c (release_scratch_register_on_entry): Add new
6789         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
6790         the scratch if RELEASE_VIA_POP is false.
6791         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
6792         If we have to save a temporary register, decrement SIZE appropriately.
6793         Pass new arguments to release_scratch_register_on_entry.
6794         (ix86_adjust_stack_and_probe): Likewise.
6795         (ix86_emit_probe_stack_range): Pass new arguments to
6796         release_scratch_register_on_entry.
6798 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
6800         PR rtl-optimization/84157
6801         * combine.c (change_zero_ext): Use REG_P predicate in
6802         front of HARD_REGISTER_P predicate.
6804 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
6806         * config/avr/avr.c (avr_option_override): Move disabling of
6807         -fdelete-null-pointer-checks to...
6808         * common/config/avr/avr-common.c (avr_option_optimization_table):
6809         ...here.
6811 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6813         PR tree-optimization/81635
6814         * tree-data-ref.c (split_constant_offset_1): For types that
6815         wrap on overflow, try to use range info to prove that wrapping
6816         cannot occur.
6818 2018-02-01  Renlin Li  <renlin.li@arm.com>
6820         PR target/83370
6821         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
6822         TAILCALL_ADDR_REGS.
6823         (aarch64_register_move_cost): Likewise.
6824         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
6825         TAILCALL_ADDR_REGS.
6826         (REG_CLASS_NAMES): Likewise.
6827         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
6828         TAILCALL_ADDR_REGS. Remove IP registers.
6829         * config/aarch64/aarch64.md (Ucs): Update register constraint.
6831 2018-02-01  Richard Biener  <rguenther@suse.de>
6833         * domwalk.h (dom_walker::dom_walker): Add additional constructor
6834         for specifying RPO order and allow NULL for that.
6835         * domwalk.c (dom_walker::dom_walker): Likewise.
6836         (dom_walker::walk): Handle NULL RPO order.
6837         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
6838         in RPO order.
6839         (rewrite_update_dom_walker): Likewise.
6840         (mark_def_dom_walker): Likewise.
6842 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6844         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
6845         (aarch64_maybe_expand_sve_subreg_move): Declare.
6846         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
6847         * config/aarch64/predicates.md (aarch64_any_register_operand): New
6848         predicate.
6849         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
6850         that are semantically a reverse operation.
6851         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
6852         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
6853         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
6854         functions.
6855         (aarch64_can_change_mode_class): For big-endian, forbid changes
6856         between two SVE modes if they have different element sizes.
6858 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6860         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
6861         the TImode handling for big-endian targets.
6863 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6865         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
6866         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
6867         not just bytes.
6868         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
6869         Remove BSWAP handing for big-endian targets and use the form of
6870         LD1RQ appropariate for the mode.
6872 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6874         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
6875         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
6876         duplicated element.
6878 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
6880         PR tearget/83845
6881         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
6882         check for operands that need to go through aarch64_sve_reload_be.
6884 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
6886         PR tree-optimization/81661
6887         PR tree-optimization/84117
6888         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
6889         * tree-eh.c: Include gimplify.h.
6890         (find_trapping_overflow, replace_trapping_overflow,
6891         rewrite_to_non_trapping_overflow): New functions.
6892         * tree-vect-loop.c: Include tree-eh.h.
6893         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
6894         * tree-data-ref.c: Include tree-eh.h.
6895         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
6897 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
6899         PR rtl-optimization/84123
6900         * combine.c (change_zero_ext): Check if hard register satisfies
6901         can_change_dest_mode before calling gen_lowpart_SUBREG.
6903 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
6905         PR target/82444
6906         * ira.c (ira_init_register_move_cost): Remove assert.
6908 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
6910         PR rtl-optimization/84071
6911         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
6912         * doc/tm.texi: Regenerate.
6914 2018-01-31  Richard Biener  <rguenther@suse.de>
6916         PR tree-optimization/84132
6917         * tree-data-ref.c (analyze_miv_subscript): Properly
6918         check whether evolution_function_is_affine_multivariate_p
6919         before calling gcd_of_steps_may_divide_p.
6921 2018-01-31  Julia Koval  <julia.koval@intel.com>
6923         PR target/83618
6924         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
6925         * config/i386/i386.md (rdpid_rex64) New.
6926         (rdpid): Make 32bit only.
6928 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
6930         PR lto/84105
6931         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
6932         an IDENTIFIER_NODE for FUNCTION_TYPE's.
6934 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
6936         Revert
6937         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
6939         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
6941 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
6943         PR rtl-optimization/84071
6944         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
6945         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
6947 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
6949         * config/arc/arc.c (arc_handle_aux_attribute): New function.
6950         (arc_attribute_table): Add 'aux' attribute.
6951         (arc_in_small_data_p): Consider aux like variables.
6952         (arc_is_aux_reg_p): New function.
6953         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
6954         (arc_get_aux_arg): New function.
6955         (prepare_move_operands): Handle aux-register access.
6956         (arc_handle_aux_attribute): New function.
6957         * doc/extend.texi (ARC Variable attributes): Add subsection.
6959 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
6961         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
6962         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
6963         (arc_attribute_table): Add 'uncached' attribute.
6964         (arc_print_operand): Print '.di' flag for uncached memory
6965         accesses.
6966         (arc_in_small_data_p): Do not consider for small data the uncached
6967         types.
6968         (arc_is_uncached_mem_p): New function.
6969         * config/arc/predicates.md (compact_store_memory_operand): Check
6970         for uncached memory accesses.
6971         (nonvol_nonimm_operand): Likewise.
6972         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
6974 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
6976         PR c/84100
6977         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
6978         falign-loops=): Add Optimization flag.
6980 2018-01-30  Jeff Law  <law@redhat.com>
6982         PR target/84064
6983         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
6984         INT_REGISTERS_SAVED.  Check it prior to calling
6985         get_scratch_register_on_entry.
6986         (ix86_adjust_stack_and_probe): Similarly.
6987         (ix86_emit_probe_stack_range): Similarly.
6988         (ix86_expand_prologue): Corresponding changes.
6990 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6992         PR target/40411
6993         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
6994         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
6996 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
6998         PR target/84112
6999         * lra-constraints.c (curr_insn_transform): Process AND in the
7000         address.
7002 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
7004         PR rtl-optimization/83986
7005         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
7006         dependence against last_pending_memory_flush in addition to
7007         pending_jump_insns.
7009 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
7011         PR tree-optimization/81611
7012         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
7013         copies.
7015 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
7017         PR target/83758
7018         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
7019         a reg rtx.
7021 2018-01-30  Richard Biener  <rguenther@suse.de>
7022             Jakub Jelinek  <jakub@redhat.com>
7024         PR tree-optimization/84111
7025         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
7026         inner loops added during recursion, as they don't have up-to-date
7027         SSA form.
7029 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
7031         PR ipa/81360
7032         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
7033         (can_inline_edge_by_limits_p): ... here.
7034         (can_early_inline_edge_p, check_callers,
7035         update_caller_keys, update_callee_keys, recursive_inlining,
7036         add_new_edges_to_heap, speculation_useful_p,
7037         inline_small_functions,
7038         inline_small_functions, flatten_function,
7039         inline_to_all_callers_1): Update.
7041 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
7043         * profile-count.c (profile_count::combine_with_ipa_count): Handle
7044         zeros correctly.
7046 2018-01-30  Richard Biener  <rguenther@suse.de>
7048         PR tree-optimization/83008
7049         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
7050         invariant and constant vector uses in stmts when they need
7051         more than one stmt.
7053 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7055         PR bootstrap/84017
7056         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
7057         * configure: Regenerate.
7059 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7061         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
7062         pattern.
7063         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
7064         Use gen_rtx_REG rather than gen_lowpart.
7066 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7068         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
7069         rather than 0 when creating partial subregs.
7071 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
7073         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
7074         of usage.
7076 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
7078         PR target/81550
7079         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
7080         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
7081         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
7082         flags.  This restores the settings used before the 2017-07-24.
7083         Turning off pre increment/decrement/modify allows IVOPTS to
7084         optimize DF/SF loops where the index is an int.
7086 2018-01-29  Richard Biener  <rguenther@suse.de>
7087             Kelvin Nilsen  <kelvin@gcc.gnu.org>
7089         PR bootstrap/80867
7090         * tree-vect-stmts.c (vectorizable_call): Don't call
7091         targetm.vectorize_builtin_md_vectorized_function if callee is
7092         NULL.
7094 2018-01-22  Carl Love  <cel@us.ibm.com>
7096         * doc/extend.tex: Fix typo in second arg in
7097         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
7099 2018-01-29  Richard Biener  <rguenther@suse.de>
7101         PR tree-optimization/84086
7102         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
7103         (flush_ssaname_freelist): When SSA names were released reset
7104         the SCEV hash table.
7106 2018-01-29  Richard Biener  <rguenther@suse.de>
7108         PR tree-optimization/84057
7109         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
7110         removed paths when removing edges.
7112 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
7114         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
7115         -mfunction-return=@var{choice}.
7117 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
7119         PR diagnostic/84034
7120         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
7121         Handle CR like TAB.
7122         (layout::print_source_line): Likewise.
7123         (test_get_line_width_without_trailing_whitespace): Add test cases.
7125 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
7127         PR middle-end/84040
7128         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
7129         debug insns.
7131 2018-01-26  Jim Wilson  <jimw@sifive.com>
7133         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
7135         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
7136         specified.
7138 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7140         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
7141         and CMP + SUB-immediate -> SUBS.
7143 2018-01-26  Martin Sebor  <msebor@redhat.com>
7145         PR tree-optimization/83896
7146         * tree-ssa-strlen.c (get_string_len): Rename...
7147         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
7148         Avoid assuming length is constant.
7149         (handle_char_store): Use HOST_WIDE_INT for string length.
7151 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
7153         PR target/81763
7154         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
7155         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
7157 2018-01-26  Richard Biener  <rguenther@suse.de>
7159         PR rtl-optimization/84003
7160         * dse.c (record_store): Only record redundant stores when
7161         the earlier store aliases at least all accesses the later one does.
7163 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
7165         PR rtl-optimization/83985
7166         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
7167         REG_CFA_RESTORE insns.
7168         (delete_unmarked_insns): Don't ignore separate shrink wrapping
7169         REG_CFA_RESTORE insns here.
7171         PR c/83989
7172         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
7173         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
7175 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7177         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
7178         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
7179         (arc_init): Likewise.
7180         (arc_override_options): Likewise.
7181         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
7182         value.
7183         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
7184         support.
7185         * config/arc/arc.h (TARGET_DBNZ): Define.
7186         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
7187         properly set the tune attribute.
7188         (dbnz): Use TARGET_DBNZ guard.
7189         * config/arc/arc.opt (mtune): Add core3 option.
7191 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7193         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
7194         recognize new pic like addresses.
7195         (arc_delegitimize_address): Clean up.
7197 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7199         * config/arc/arc-arches.def: Option mrf16 valid for all
7200         architectures.
7201         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
7202         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
7203         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
7204         * config/arc/arc-tables.opt: Regenerate.
7205         * config/arc/arc.c (arc_conditional_register_usage): Handle
7206         reduced register file case.
7207         (arc_file_start): Set must have build attributes.
7208         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
7209         mrf16 option value.
7210         * config/arc/arc.opt (mrf16): Add new option.
7211         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
7212         * config/arc/genmultilib.awk: Handle new mrf16 option.
7213         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
7214         * config/arc/t-multilib: Regenerate.
7215         * doc/invoke.texi (ARC Options): Document mrf16 option.
7217 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7219         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
7220         * config/arc/arc.c (arc_handle_secure_attribute): New function.
7221         (arc_attribute_table): Add 'secure_call' attribute.
7222         (arc_print_operand): Print secure call operand.
7223         (arc_function_ok_for_sibcall): Don't optimize tail calls when
7224         secure.
7225         (arc_is_secure_call_p): New function.  * config/arc/arc.md
7226         (call_i): Add support for sjli instruction.
7227         (call_value_i): Likewise.
7228         * config/arc/constraints.md (Csc): New constraint.
7230 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
7231             John Eric Martin  <John.Martin@emmicro-us.com>
7233         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
7234         * config/arc/arc.c (_arc_jli_section): New struct.
7235         (arc_jli_section): New type.
7236         (rc_jli_sections): New static variable.
7237         (arc_handle_jli_attribute): New function.
7238         (arc_attribute_table): Add jli_always and jli_fixed attribute.
7239         (arc_file_end): New function.
7240         (TARGET_ASM_FILE_END): Define.
7241         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
7242         (arc_add_jli_section): New function.
7243         (jli_call_scan): Likewise.
7244         (arc_reorg): Call jli_call_scan.
7245         (arc_output_addsi): Remove 'S' from printing asm operand.
7246         (arc_is_jli_call_p): New function.
7247         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
7248         operand.
7249         (movhi_insn): Likewise.
7250         (movsi_insn): Likewise.
7251         (movsi_set_cc_insn): Likewise.
7252         (loadqi_update): Likewise.
7253         (load_zeroextendqisi_update): Likewise.
7254         (load_signextendqisi_update): Likewise.
7255         (loadhi_update): Likewise.
7256         (load_zeroextendhisi_update): Likewise.
7257         (load_signextendhisi_update): Likewise.
7258         (loadsi_update): Likewise.
7259         (loadsf_update): Likewise.
7260         (movsicc_insn): Likewise.
7261         (bset_insn): Likewise.
7262         (bxor_insn): Likewise.
7263         (bclr_insn): Likewise.
7264         (bmsk_insn): Likewise.
7265         (bicsi3_insn): Likewise.
7266         (cmpsi_cc_c_insn): Likewise.
7267         (movsi_ne): Likewise.
7268         (movsi_cond_exec): Likewise.
7269         (clrsbsi2): Likewise.
7270         (norm_f): Likewise.
7271         (normw): Likewise.
7272         (swap): Likewise.
7273         (divaw): Likewise.
7274         (flag): Likewise.
7275         (sr): Likewise.
7276         (kflag): Likewise.
7277         (ffs): Likewise.
7278         (ffs_f): Likewise.
7279         (fls): Likewise.
7280         (call_i): Remove 'S' asm letter, add jli instruction.
7281         (call_value_i): Likewise.
7282         * config/arc/arc.op (mjli-always): New option.
7283         * config/arc/constraints.md (Cji): New constraint.
7284         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
7285         operand.
7286         (subsf3_fpx): Likewise.
7287         (mulsf3_fpx): Likewise.
7288         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
7289         asm operand.
7290         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
7291         function attrbutes.
7292         * doc/invoke.texi (ARC): Document mjli-always option.
7294 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
7296         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
7297         avoid addition with 0 and use incw and decw where possible.
7299 2018-01-26  Richard Biener  <rguenther@suse.de>
7301         PR tree-optimization/81082
7302         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
7303         association if it requires casting to unsigned.
7304         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
7305         from fold_plusminus_mult_expr to catch important cases late when
7306         range info is available.
7308 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7310         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
7311         * configure.ac (hidden_linkonce): New test.
7312         * configure: Regenerate.
7313         * config.in: Regenerate.
7315 2018-01-26  Julia Koval  <julia.koval@intel.com>
7317         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
7318         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
7319         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
7320         _mm_mask_bitshuffle_epi64_mask): Fix type.
7321         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
7322         USI_FTYPE_V4DI_V4DI_USI): Remove.
7323         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
7324         __builtin_ia32_vpshufbitqmb256_mask,
7325         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
7326         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
7327         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
7329 2018-01-26  Alan Modra  <amodra@gmail.com>
7331         PR target/84033
7332         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
7333         UNSPEC_VBPERMQ.  Sort other unspecs.
7335 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
7337         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
7339 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
7341         PR middle-end/83055
7342         * predict.c (drop_profile): Do not push/pop cfun; update also
7343         node->count.
7344         (handle_missing_profiles): Fix logic looking for zero profiles.
7346 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
7348         PR middle-end/83977
7349         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
7350         on functions with #pragma omp declare simd or functions with simd
7351         attribute.
7352         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
7353         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
7354         Remove trailing \n from warning_at calls.
7356 2018-01-25  Tom de Vries  <tom@codesourcery.com>
7358         PR target/84028
7359         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
7360         for neutered workers.
7362 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
7364         PR target/68467
7365         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
7366         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
7368 2018-01-24  Jeff Law  <law@redhat.com>
7370         PR target/83994
7371         * i386.c (get_probe_interval): Move to earlier point.
7372         (ix86_compute_frame_layout): If -fstack-clash-protection and
7373         the frame is larger than the probe interval, then use pushes
7374         to save registers rather than reg->mem moves.
7375         (ix86_expand_prologue): Remove conditional for int_registers_saved
7376         assertion.
7378 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
7380         PR target/84014
7381         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
7382         min/max for never referenced object.
7384 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
7386         PR middle-end/83977
7387         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
7388         here.
7389         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
7390         attributes from DECL_ATTRIBUTES (decl) without affecting
7391         DECL_ATTRIBUTES (current_function_decl).
7392         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
7393         functions with non-NULL DECL_ABSTRACT_ORIGIN.
7395 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
7397         PR tree-optimization/83979
7398         * fold-const.c (fold_comparison): Use constant_boolean_node
7399         instead of boolean_{true,false}_node.
7401 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
7403         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
7404         with zero counts.
7406 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7408         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
7409         Simplify the clause that sets the length attribute.
7410         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
7411         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
7412         clause that sets the length attribute.
7413         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
7415 2018-01-24  Tom de Vries  <tom@codesourcery.com>
7417         PR target/83589
7418         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
7419         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
7420         Add strict parameter.
7421         (prevent_branch_around_nothing): Insert dummy insn between branch to
7422         label and label with no ptx insn inbetween.
7423         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
7425 2018-01-24  Tom de Vries  <tom@codesourcery.com>
7427         PR target/81352
7428         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
7429         for neutered threads in warp.
7430         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
7432 2018-01-24  Richard Biener  <rguenther@suse.de>
7434         PR tree-optimization/83176
7435         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
7436         operands.
7438 2018-01-24  Richard Biener  <rguenther@suse.de>
7440         PR tree-optimization/82819
7441         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
7442         code generating pluses that are no-ops in the target precision.
7444 2018-01-24  Richard Biener  <rguenther@suse.de>
7446         PR middle-end/84000
7447         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
7449 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7451         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
7452         to merge probabilities.
7453         * predict.c (probably_never_executed): Also mark as cold functions
7454         with global 0 profile and guessed local profile.
7455         * profile-count.c (profile_probability::combine_with_count): New
7456         member function.
7457         * profile-count.h (profile_probability::operator*,
7458         profile_probability::operator*=, profile_probability::operator/,
7459         profile_probability::operator/=): Reduce precision to adjusted
7460         and set value to guessed on contradictory divisions.
7461         (profile_probability::combine_with_freq): Remove.
7462         (profile_probability::combine_wiht_count): Declare.
7463         (profile_count::force_nonzero):: Set to adjusted.
7464         (profile_count::probability_in):: Set quality to adjusted.
7465         * tree-ssa-tail-merge.c (replace_block_by): Use
7466         combine_with_count.
7468 2018-01-23  Andrew Waterman  <andrew@sifive.com>
7469             Jim Wilson  <jimw@sifive.com>
7471         * config/riscv/riscv.c (riscv_stack_boundary): New.
7472         (riscv_option_override): Set riscv_stack_boundary.  Handle
7473         riscv_preferred_stack_boundary_arg.
7474         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
7475         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
7476         (STACK_BOUNDARY): Set to riscv_stack_boundary.
7477         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
7478         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
7479         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
7481 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
7483         PR target/83905
7484         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
7485         of struct ix86_frame.
7486         (ix86_expand_epilogue): Likewise.  Add a local variable for
7487         the reg_save_offset field in struct ix86_frame.
7489 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
7491         PR tree-optimization/82604
7492         * tree-loop-distribution.c (enum partition_kind): New enum item
7493         PKIND_PARTIAL_MEMSET.
7494         (partition_builtin_p): Support above new enum item.
7495         (generate_code_for_partition): Ditto.
7496         (compute_access_range): Differentiate cases that equality can be
7497         proven at all loops, the innermost loops or no loops.
7498         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
7499         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
7500         (finalize_partitions, distribute_loop): Don't fuse partition of
7501         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
7502         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
7503         parloop is enabled.
7505 2018-01-23  Martin Liska  <mliska@suse.cz>
7507         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
7508         order to ignore the predictor.
7509         (PRED_POLYMORPHIC_CALL): Likewise.
7510         (PRED_RECURSIVE_CALL): Likewise.
7512 2018-01-23  Martin Liska  <mliska@suse.cz>
7514         * tree-profile.c (tree_profiling): Print function header to
7515         aware reader which function we are working on.
7516         * value-prof.c (gimple_find_values_to_profile): Do not print
7517         not interesting value histograms.
7519 2018-01-23  Martin Liska  <mliska@suse.cz>
7521         * profile-count.h (enum profile_quality): Add
7522         profile_uninitialized as the first value. Do not number values
7523         as they are zero based.
7524         (profile_count::verify): Update sanity check.
7525         (profile_probability::verify): Likewise.
7527 2018-01-23  Nathan Sidwell  <nathan@acm.org>
7529         * doc/invoke.texi (ffor-scope): Deprecate.
7531 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7533         PR tree-optimization/83510
7534         * domwalk.c (set_all_edges_as_executable): New function.
7535         (dom_walker::dom_walker): Convert bool param
7536         "skip_unreachable_blocks" to enum reachability.  Move setup of
7537         edge flags to set_all_edges_as_executable and only do it when
7538         reachability is REACHABLE_BLOCKS.
7539         * domwalk.h (enum dom_walker::reachability): New enum.
7540         (dom_walker::dom_walker): Convert bool param
7541         "skip_unreachable_blocks" to enum reachability.
7542         (set_all_edges_as_executable): New decl.
7543         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
7544         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
7545         "reachability".
7546         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
7547         but converting true to REACHABLE_BLOCKS.
7548         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
7549         * tree-vrp.c
7550         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
7551         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
7552         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
7553         REACHABLE_BLOCKS.
7554         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
7555         if check_all_array_refs will be called.
7557 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7559         * tree.c (selftest::test_location_wrappers): Add more test
7560         coverage.
7562 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
7564         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
7565         (selftest::test_bit_in_range): Likewise.
7567 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
7569         PR testsuite/83888
7570         * doc/sourcebuild.texi (vect_float): Say that the selector
7571         only describes the situation when -funsafe-math-optimizations is on.
7572         (vect_float_strict): Document.
7574 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
7576         PR tree-optimization/83965
7577         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
7578         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
7579         instead of checking only for a reduction.
7580         (vect_recog_widen_sum_pattern): Likewise.
7582 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7584         * predict.c (probably_never_executed): Only use precise profile info.
7585         (compute_function_frequency): Skip after inlining hack since we now
7586         have quality checking.
7588 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
7590         * profile-count.h (profile_probability::very_unlikely,
7591         profile_probability::unlikely, profile_probability::even): Set
7592         precision to guessed.
7594 2018-01-23  Richard Biener  <rguenther@suse.de>
7596         PR tree-optimization/83963
7597         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
7598         Properly terminate dominator walk when crossing the exit edge not
7599         when visiting its source block.
7601 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
7603         PR c++/83918
7604         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
7605         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
7607 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
7609         PR tree-optimization/83957
7610         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
7611         semicolon after for body surrounded by braces.
7613         PR tree-optimization/83081
7614         * profile-count.h (profile_probability::split): New method.
7615         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
7616         Use profile_probability::split.
7617         (do_compare_rtx_and_jump): Fix adjustment of probabilities
7618         when splitting a single conditional jump into 2.
7620 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
7622         PR tree-optimization/69452
7623         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
7624         decl.
7626 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7628         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
7629         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
7630         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
7632 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7634         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
7635         * config/rl78/rl78.md (movdi): New define_expand.
7636         * config/rl78/rl78.c (rl78_split_movdi): New function.
7638 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7640         PR target/83862
7641         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
7642         no longer used.
7643         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
7644         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
7645         128-bit to produce an UNSPEC move to get the double word with the
7646         signbit and then a shift directly to do signbit.
7647         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
7648         implementation with a new version that just does either a direct
7649         move or a regular move.  Move memory interface to separate insns.
7650         Move insns so they are next to the expander.
7651         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
7652         with signbit move.  Split big and little endian case.
7653         (signbit<mode>2_dm_mem_le): Likewise.
7654         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
7655         (signbit<mode>2_dm2): Likewise.
7657 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7659         * config/rl78/rl78.md (anddi3): New define_expand.
7661 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7663         * config/rl78/rl78.md (umindi3): New define_expand.
7665 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7667         * config/rl78/rl78.md (smindi3): New define_expand.
7669 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7671         * config/rl78/rl78.md (smaxdi3): New define_expand.
7673 2018-01-22  Carl Love  <cel@us.ibm.com>
7675         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
7676         LVX_V1TI): Add macro expansion.
7677         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
7678         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
7679         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
7680         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
7681         Change check to determine if the instruction is a byte reversing
7682         entry.  Fix typo in comment.
7683         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
7684         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
7685         Add def_builtin calls for new builtins.
7686         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
7687         Add define_insn expansion.
7689 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7691         * config/rl78/rl78.md (umaxdi3): New define_expand.
7693 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
7695         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
7696         for non-QImode registers.
7698 2018-01-22  Richard Biener  <rguenther@suse.de>
7700         PR tree-optimization/83963
7701         * graphite-scop-detection.c (scop_detection::get_sese): Delay
7702         including the loop exit block.
7703         (scop_detection::merge_sese): Likewise.
7704         (scop_detection::add_scop): Do it here instead.
7706 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7708         * doc/sourcebuild.texi (arm_softfloat): Document.
7710 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
7712         PR gcc/77734
7713         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
7714         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
7715         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
7717 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7718             David Edelsohn  <dje.gcc@gmail.com>
7720         PR target/83946
7721         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
7722         Change "crset eq" to "crset 2".
7723         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
7724         (*call_indirect_aix<mode>_nospec): Likewise.
7725         (*call_value_indirect_aix<mode>_nospec): Likewise.
7726         (*call_indirect_elfv2<mode>_nospec): Likewise.
7727         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
7728         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
7729         change assembly output from . to $.
7730         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
7731         (indirect_jump<mode>_nospec): Change assembly output from . to $.
7732         (*tablejump<mode>_internal1_nospec): Likewise.
7734 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
7736         PR target/80870
7737         * config/sh/sh_optimize_sett_clrt.cc:
7738         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
7740 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
7742         PR tree-optimization/83940
7743         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
7744         offset_dt to vect_constant_def rather than vect_unknown_def_type.
7745         (vect_check_load_store_mask): Add a mask_dt_out parameter and
7746         use it to pass back the definition type.
7747         (vect_check_store_rhs): Likewise rhs_dt_out.
7748         (vect_build_gather_load_calls): Add a mask_dt argument and use
7749         it instead of a call to vect_is_simple_use.
7750         (vectorizable_store): Update calls to vect_check_load_store_mask
7751         and vect_check_store_rhs.  Use the dt returned by the latter instead
7752         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
7753         instead of calls to vect_is_simple_use.  Pass the scalar rather
7754         than the vector operand to vect_is_simple_use when handling
7755         second and subsequent copies of an rhs value.
7756         (vectorizable_load): Update calls to vect_check_load_store_mask
7757         and vect_build_gather_load_calls.  Use the cached mask_dt and
7758         gs_info.offset_dt instead of calls to vect_is_simple_use.
7760 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
7762         PR middle-end/83945
7763         * tree-emutls.c: Include gimplify.h.
7764         (lower_emutls_2): New function.
7765         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
7766         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
7767         it before further processing.
7769         PR target/83930
7770         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
7771         UINTVAL (trueop1) instead of INTVAL (op1).
7773 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
7775         PR debug/81570
7776         PR debug/83728
7777         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
7778         INCOMING_FRAME_SP_OFFSET if not defined.
7779         (scan_trace): Add ENTRY argument.  If true and
7780         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
7781         emit a note to adjust the CFA offset.
7782         (create_cfi_notes): Adjust scan_trace callers.
7783         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
7784         INCOMING_FRAME_SP_OFFSET in the CIE.
7785         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
7786         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
7787         Likewise.
7788         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
7789         * doc/tm.texi: Regenerated.
7791 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7793         PR rtl-optimization/83147
7794         * lra-constraints.c (remove_inheritance_pseudos): Use
7795         lra_substitute_pseudo_within_insn.
7797 2018-01-19  Tom de Vries  <tom@codesourcery.com>
7798             Cesar Philippidis  <cesar@codesourcery.com>
7800         PR target/83920
7801         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
7803 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
7805         PR target/83790
7806         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
7807         spaces for function labels.
7809 2018-01-19  Martin Liska  <mliska@suse.cz>
7811         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
7812         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
7813         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
7814         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
7815         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
7816         (PRED_CONST_RETURN): Change from 69 to 65.
7817         (PRED_NULL_RETURN): Change from 91 to 71.
7818         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
7819         (PRED_LOOP_GUARD): Change from 66 to 73.
7821 2018-01-19  Martin Liska  <mliska@suse.cz>
7823         * predict.c (predict_insn_def): Add new assert.
7824         (struct branch_predictor): Change type to signed integer.
7825         (test_prediction_value_range): Amend test to cover
7826         PROB_UNINITIALIZED.
7827         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
7828         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
7829         (PRED_LOOP_ITERATIONS_MAX): Likewise.
7830         (PRED_LOOP_IV_COMPARE): Likewise.
7831         * predict.h (PROB_UNINITIALIZED): Define new constant.
7833 2018-01-19  Martin Liska  <mliska@suse.cz>
7835         * predict.c (dump_prediction): Add new format for
7836         analyze_brprob.py script which is enabled with -details
7837         suboption.
7838         * profile-count.h (precise_p): New function.
7840 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
7842         PR tree-optimization/83922
7843         * tree-vect-loop.c (vect_verify_full_masking): Return false if
7844         there are no statements that need masking.
7845         (vect_active_double_reduction_p): New function.
7846         (vect_analyze_loop_operations): Use it when handling phis that
7847         are not in the loop header.
7849 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
7851         PR tree-optimization/83914
7852         * tree-vect-loop.c (vectorizable_induction): Don't convert
7853         init_expr or apply the peeling adjustment for inductions
7854         that are nested within the vectorized loop.
7856 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7858         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
7859         instead of NEG.
7861 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
7863         PR sanitizer/81715
7864         PR testsuite/83882
7865         * function.h (gimplify_parameters): Add gimple_seq * argument.
7866         * function.c: Include gimple.h and options.h.
7867         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
7868         for the added local temporaries if needed.
7869         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
7870         if there are any parameter cleanups, wrap whole body into a
7871         try/finally with the cleanups.
7873 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
7875         PR target/82964
7876         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
7877         Use GET_MODE_CLASS for scalar floating point.
7879 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
7881         PR ipa/82256
7882         patch by PaX Team
7883         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
7884         Fix call of call_cgraph_insertion_hooks.
7886 2018-01-18  Martin Sebor  <msebor@redhat.com>
7888         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
7890 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
7892         PR ipa/83619
7893         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
7894         frequencies.
7896 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
7898         PR other/70268
7899         * common.opt: (-ffile-prefix-map): New option.
7900         * opts.c (common_handle_option): Defer it.
7901         * opts-global.c (handle_common_deferred_options): Handle it.
7902         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
7903         * file-prefix-map.h: New file.
7904         (remap_debug_filename, add_debug_prefix_map): ...here.
7905         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
7906         * final.c (debug_prefix_map, add_debug_prefix_map
7907         remap_debug_filename): Move to...
7908         * file-prefix-map.c: New file.
7909         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
7910         generalize, get rid of alloca(), use strrchr() instead of strchr().
7911         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
7912         Implement in terms of add_prefix_map().
7913         (remap_macro_filename, remap_debug_filename): Implement in term of
7914         remap_filename().
7915         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
7916         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
7917         * dbxout.c: Include file-prefix-map.h.
7918         * varasm.c: Likewise.
7919         * vmsdbgout.c: Likewise.
7920         * xcoffout.c: Likewise.
7921         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
7922         * doc/cppopts.texi (-fmacro-prefix-map): Document.
7923         * doc/invoke.texi (-ffile-prefix-map): Document.
7924         (-fdebug-prefix-map): Update description.
7926 2018-01-18  Martin Liska  <mliska@suse.cz>
7928         * config/i386/i386.c (indirect_thunk_name): Document that also
7929         lfence is emitted.
7930         (output_indirect_thunk): Document why both instructions
7931         (pause and lfence) are generated.
7933 2018-01-18  Richard Biener  <rguenther@suse.de>
7935         PR tree-optimization/83887
7936         * graphite-scop-detection.c
7937         (scop_detection::get_nearest_dom_with_single_entry): Remove.
7938         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
7939         (scop_detection::merge_sese): Re-implement with a flood-fill
7940         algorithm that properly finds a SESE region if it exists.
7942 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
7944         PR c/61240
7945         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
7946         pointer_diff optimizations use view_convert instead of convert.
7948 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7950         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
7951         Generate different code for -mno-speculate-indirect-jumps.
7952         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
7953         (*call_indirect_aix<mode>): Disable for
7954         -mno-speculate-indirect-jumps.
7955         (*call_indirect_aix<mode>_nospec): New define_insn.
7956         (*call_value_indirect_aix<mode>): Disable for
7957         -mno-speculate-indirect-jumps.
7958         (*call_value_indirect_aix<mode>_nospec): New define_insn.
7959         (*sibcall_nonlocal_sysv<mode>): Generate different code for
7960         -mno-speculate-indirect-jumps.
7961         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
7963 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
7965         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
7966         long double type, set the flags for noting the default long double
7967         type, even if we don't pass or return a long double type.
7969 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
7971         PR ipa/83051
7972         * ipa-inline.c (flatten_function): Do not overwrite final inlining
7973         failure.
7975 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
7977         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
7978         support for merge[hl].
7979         (fold_mergehl_helper): New helper function.
7980         (tree-vector-builder.h): New #include for tree_vector_builder usage.
7981         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
7982         (altivec_vmrglw_direct): Add xxmrglw insn.
7984 2018-01-17  Andrew Waterman  <andrew@sifive.com>
7986         * config/riscv/riscv.c (riscv_conditional_register_usage): If
7987         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
7989 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
7991         PR lto/83121
7992         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
7993         call the lto_location_cache before reading the
7994         DECL_SOURCE_LOCATION of the types.
7996 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
7997             Richard Sandiford  <richard.sandiford@linaro.org>
7999         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
8000         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
8001         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
8002         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
8003         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
8004         Add declaration.
8005         * config/aarch64/constraints.md (aarch64_movti_operand):
8006         Limit immediates.
8007         * config/aarch64/predicates.md (Uti): Add new constraint.
8009 2018-01-17 Carl Love  <cel@us.ibm.com>
8011         * config/rs6000/vsx.md (define_expand xl_len_r,
8012         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
8013         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
8014         lxvll.
8015         (define_expand, define_insn): Move the shift left from  the
8016         define_insn to the define_expand for lxvl and stxvl instructions.
8017         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
8018         and XL_LEN_R definitions to PURE.
8020 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
8022         * config/i386/i386.c (indirect_thunk_name): Declare regno
8023         as unsigned int.  Compare regno with INVALID_REGNUM.
8024         (output_indirect_thunk): Ditto.
8025         (output_indirect_thunk_function): Ditto.
8026         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
8027         in the call to output_indirect_thunk_function.
8029 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
8031         PR middle-end/83884
8032         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
8033         rather than the size of inner_type to determine the stack slot size
8034         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
8036 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
8038         PR target/83546
8039         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
8040         to PTA_SILVERMONT.
8042 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
8044         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
8045         endian Linux systems to optionally enable multilibs for selecting
8046         the long double type if the user configured an explicit type.
8047         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
8048         have no long double multilibs if not defined.
8049         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
8050         warn if the user used -mabi={ieee,ibm}longdouble and we built
8051         multilibs for long double.
8052         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
8053         appropriate multilib option.
8054         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
8055         multilib options.
8056         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
8057         for building long double multilibs.
8058         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
8060 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
8062         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
8063         copies.
8065         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
8066         64 bits.
8067         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
8068         128 bits.
8070         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
8071         variables.
8073         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
8074         return value.
8076 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
8078         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
8079         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
8081 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8083         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
8084         different rtl trees depending on TARGET_64BIT.
8085         (rs6000_gen_lvx): Likewise.
8087 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
8089         * config/visium/visium.md (nop): Tweak comment.
8090         (hazard_nop): Likewise.
8092 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8094         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
8095         -mspeculate-indirect-jumps.
8096         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
8097         for -mno-speculate-indirect-jumps.
8098         (*call_indirect_elfv2<mode>_nospec): New define_insn.
8099         (*call_value_indirect_elfv2<mode>): Disable for
8100         -mno-speculate-indirect-jumps.
8101         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
8102         (indirect_jump): Emit different RTL for
8103         -mno-speculate-indirect-jumps.
8104         (*indirect_jump<mode>): Disable for
8105         -mno-speculate-indirect-jumps.
8106         (*indirect_jump<mode>_nospec): New define_insn.
8107         (tablejump): Emit different RTL for
8108         -mno-speculate-indirect-jumps.
8109         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
8110         (tablejumpsi_nospec): New define_expand.
8111         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
8112         (tablejumpdi_nospec): New define_expand.
8113         (*tablejump<mode>_internal1): Disable for
8114         -mno-speculate-indirect-jumps.
8115         (*tablejump<mode>_internal1_nospec): New define_insn.
8116         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
8117         option.
8119 2018-01-16  Artyom Skrobov tyomitch@gmail.com
8121         * caller-save.c (insert_save): Drop unnecessary parameter.  All
8122         callers updated.
8124 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8125             Richard Biener  <rguenth@suse.de>
8127         PR libgomp/83590
8128         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
8129         return early, inline manually is_gimple_sizepos.  Make sure if we
8130         call gimplify_expr we don't end up with a gimple constant.
8131         * tree.c (variably_modified_type_p): Don't return true for
8132         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
8133         * gimplify.h (is_gimple_sizepos): Remove.
8135 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8137         PR tree-optimization/83857
8138         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
8139         vectorizable_live_operation for pure SLP statements.
8140         (vectorizable_live_operation): Handle PHIs.
8142 2018-01-16  Richard Biener  <rguenther@suse.de>
8144         PR tree-optimization/83867
8145         * tree-vect-stmts.c (vect_transform_stmt): Precompute
8146         nested_in_vect_loop_p since the scalar stmt may get invalidated.
8148 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8150         PR c/83844
8151         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
8152         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
8153         If off is not INTEGER_CST, issue a may not be aligned warning
8154         rather than isn't aligned.  Use isn%'t rather than isn't.
8155         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
8156         into MULT_EXPR.
8157         <case MULT_EXPR>: Improve the case when bottom and one of the
8158         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
8159         operand, in that case check if the other operand is multiple of
8160         bottom divided by the INTEGER_CST operand.
8162 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8164         PR target/83858
8165         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
8166         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
8167         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
8168         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
8169         * config/pa/pa.c (pa_function_arg_advance): Likewise.
8170         (pa_function_arg, pa_arg_partial_bytes): Likewise.
8171         (pa_function_arg_size): New function.
8173 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8175         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
8176         in a separate statement.
8178 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
8180         PR tree-optimization/83847
8181         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
8182         group gathers and scatters.
8184 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
8186         PR rtl-optimization/86620
8187         * params.def (max-sched-ready-insns): Bump minimum value to 1.
8189         PR rtl-optimization/83213
8190         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
8191         to last if both are JUMP_INSNs.
8193         PR tree-optimization/83843
8194         * gimple-ssa-store-merging.c
8195         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
8196         store_immediate_info for bswap/nop orig_stores.
8198 2018-01-15  Andrew Waterman  <andrew@sifive.com>
8200         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
8201         !TARGET_MUL.
8202         <UDIV>: Increase cost if !TARGET_DIV.
8204 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
8206         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
8207         (define_attr "cr_logical_3op"): New.
8208         (cceq_ior_compare): Adjust.
8209         (cceq_ior_compare_complement): Adjust.
8210         (*cceq_rev_compare): Adjust.
8211         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
8212         (is_cracked_insn): Adjust.
8213         (insn_must_be_first_in_group): Adjust.
8214         * config/rs6000/40x.md: Adjust.
8215         * config/rs6000/440.md: Adjust.
8216         * config/rs6000/476.md: Adjust.
8217         * config/rs6000/601.md: Adjust.
8218         * config/rs6000/603.md: Adjust.
8219         * config/rs6000/6xx.md: Adjust.
8220         * config/rs6000/7450.md: Adjust.
8221         * config/rs6000/7xx.md: Adjust.
8222         * config/rs6000/8540.md: Adjust.
8223         * config/rs6000/cell.md: Adjust.
8224         * config/rs6000/e300c2c3.md: Adjust.
8225         * config/rs6000/e500mc.md: Adjust.
8226         * config/rs6000/e500mc64.md: Adjust.
8227         * config/rs6000/e5500.md: Adjust.
8228         * config/rs6000/e6500.md: Adjust.
8229         * config/rs6000/mpc.md: Adjust.
8230         * config/rs6000/power4.md: Adjust.
8231         * config/rs6000/power5.md: Adjust.
8232         * config/rs6000/power6.md: Adjust.
8233         * config/rs6000/power7.md: Adjust.
8234         * config/rs6000/power8.md: Adjust.
8235         * config/rs6000/power9.md: Adjust.
8236         * config/rs6000/rs64.md: Adjust.
8237         * config/rs6000/titan.md: Adjust.
8239 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8241         * config/i386/predicates.md (indirect_branch_operand): Rewrite
8242         ix86_indirect_branch_register logic.
8244 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8246         * config/i386/constraints.md (Bs): Update
8247         ix86_indirect_branch_register check.  Don't check
8248         ix86_indirect_branch_register with GOT_memory_operand.
8249         (Bw): Likewise.
8250         * config/i386/predicates.md (GOT_memory_operand): Don't check
8251         ix86_indirect_branch_register here.
8252         (GOT32_symbol_operand): Likewise.
8254 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8256         * config/i386/predicates.md (constant_call_address_operand):
8257         Rewrite ix86_indirect_branch_register logic.
8258         (sibcall_insn_operand): Likewise.
8260 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8262         * config/i386/constraints.md (Bs): Replace
8263         ix86_indirect_branch_thunk_register with
8264         ix86_indirect_branch_register.
8265         (Bw): Likewise.
8266         * config/i386/i386.md (indirect_jump): Likewise.
8267         (tablejump): Likewise.
8268         (*sibcall_memory): Likewise.
8269         (*sibcall_value_memory): Likewise.
8270         Peepholes of indirect call and jump via memory: Likewise.
8271         * config/i386/i386.opt: Likewise.
8272         * config/i386/predicates.md (indirect_branch_operand): Likewise.
8273         (GOT_memory_operand): Likewise.
8274         (call_insn_operand): Likewise.
8275         (sibcall_insn_operand): Likewise.
8276         (GOT32_symbol_operand): Likewise.
8278 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
8280         PR middle-end/83837
8281         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
8282         type rather than type addr's type points to.
8283         (expand_omp_atomic_mutex): Likewise.
8284         (expand_omp_atomic): Likewise.
8286 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
8288         PR target/83839
8289         * config/i386/i386.c (output_indirect_thunk_function): Use
8290         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
8291         for  __x86_return_thunk.
8293 2018-01-15  Richard Biener  <rguenther@suse.de>
8295         PR middle-end/83850
8296         * expmed.c (extract_bit_field_1): Fix typo.
8298 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8300         PR target/83687
8301         * config/arm/iterators.md (VF): New mode iterator.
8302         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
8303         Remove integer-related logic from pattern.
8304         (neon_vabd<mode>_3): Likewise.
8306 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
8308         PR middle-end/82694
8309         * common.opt (fstrict-overflow): No longer an alias.
8310         (fwrapv-pointer): New option.
8311         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
8312         also for pointer types based on flag_wrapv_pointer.
8313         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
8314         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
8315         opts->x_flag_wrapv got set.
8316         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
8317         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
8318         POINTER_TYPE_OVERFLOW_UNDEFINED.
8319         * match.pd: Likewise in address comparison pattern.
8320         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
8322 2018-01-15  Richard Biener  <rguenther@suse.de>
8324         PR lto/83804
8325         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
8326         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
8327         Reset type names to their identifier if their TYPE_DECL doesn't
8328         have linkage (and thus is used for ODR and devirt).
8329         (save_debug_info_for_decl): Remove.
8330         (save_debug_info_for_type): Likewise.
8331         (add_tree_to_fld_list): Adjust.
8332         * tree-pretty-print.c (dump_generic_node): Make dumping of
8333         type names more robust.
8335 2018-01-15  Richard Biener  <rguenther@suse.de>
8337         * BASE-VER: Bump to 8.0.1.
8339 2018-01-14  Martin Sebor  <msebor@redhat.com>
8341         PR other/83508
8342         * builtins.c (check_access): Avoid warning when the no-warning bit
8343         is set.
8345 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
8347         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
8348         * ira-color (allocno_hard_regs_compare): Likewise.
8350 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
8352         PR target/83013
8353         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
8354         Use .pushsection/.popsection.
8356 2018-01-14  Martin Sebor  <msebor@redhat.com>
8358         PR c++/81327
8359         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
8361 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
8363         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
8364         entry from extra_headers.
8365         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
8366         extra_headers, make the list bitwise identical to the i?86-*-* one.
8368 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8370         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
8371         -mcmodel=large with -mindirect-branch=thunk,
8372         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
8373         -mfunction-return=thunk-extern.
8374         * doc/invoke.texi: Document -mcmodel=large is incompatible with
8375         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
8376         -mfunction-return=thunk and -mfunction-return=thunk-extern.
8378 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8380         * config/i386/i386.c (print_reg): Print the name of the full
8381         integer register without '%'.
8382         (ix86_print_operand): Handle 'V'.
8383          * doc/extend.texi: Document 'V' modifier.
8385 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8387         * config/i386/constraints.md (Bs): Disallow memory operand for
8388         -mindirect-branch-register.
8389         (Bw): Likewise.
8390         * config/i386/predicates.md (indirect_branch_operand): Likewise.
8391         (GOT_memory_operand): Likewise.
8392         (call_insn_operand): Likewise.
8393         (sibcall_insn_operand): Likewise.
8394         (GOT32_symbol_operand): Likewise.
8395         * config/i386/i386.md (indirect_jump): Call convert_memory_address
8396         for -mindirect-branch-register.
8397         (tablejump): Likewise.
8398         (*sibcall_memory): Likewise.
8399         (*sibcall_value_memory): Likewise.
8400         Disallow peepholes of indirect call and jump via memory for
8401         -mindirect-branch-register.
8402         (*call_pop): Replace m with Bw.
8403         (*call_value_pop): Likewise.
8404         (*sibcall_pop_memory): Replace m with Bs.
8405         * config/i386/i386.opt (mindirect-branch-register): New option.
8406         * doc/invoke.texi: Document -mindirect-branch-register option.
8408 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8410         * config/i386/i386-protos.h (ix86_output_function_return): New.
8411         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
8412         set function_return_type.
8413         (indirect_thunk_name): Add ret_p to indicate thunk for function
8414         return.
8415         (output_indirect_thunk_function): Pass false to
8416         indirect_thunk_name.
8417         (ix86_output_indirect_branch_via_reg): Likewise.
8418         (ix86_output_indirect_branch_via_push): Likewise.
8419         (output_indirect_thunk_function): Create alias for function
8420         return thunk if regno < 0.
8421         (ix86_output_function_return): New function.
8422         (ix86_handle_fndecl_attribute): Handle function_return.
8423         (ix86_attribute_table): Add function_return.
8424         * config/i386/i386.h (machine_function): Add
8425         function_return_type.
8426         * config/i386/i386.md (simple_return_internal): Use
8427         ix86_output_function_return.
8428         (simple_return_internal_long): Likewise.
8429         * config/i386/i386.opt (mfunction-return=): New option.
8430         (indirect_branch): Mention -mfunction-return=.
8431         * doc/extend.texi: Document function_return function attribute.
8432         * doc/invoke.texi: Document -mfunction-return= option.
8434 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
8436         * config/i386/i386-opts.h (indirect_branch): New.
8437         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
8438         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
8439         with local indirect jump when converting indirect call and jump.
8440         (ix86_set_indirect_branch_type): New.
8441         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
8442         (indirectlabelno): New.
8443         (indirect_thunk_needed): Likewise.
8444         (indirect_thunk_bnd_needed): Likewise.
8445         (indirect_thunks_used): Likewise.
8446         (indirect_thunks_bnd_used): Likewise.
8447         (INDIRECT_LABEL): Likewise.
8448         (indirect_thunk_name): Likewise.
8449         (output_indirect_thunk): Likewise.
8450         (output_indirect_thunk_function): Likewise.
8451         (ix86_output_indirect_branch_via_reg): Likewise.
8452         (ix86_output_indirect_branch_via_push): Likewise.
8453         (ix86_output_indirect_branch): Likewise.
8454         (ix86_output_indirect_jmp): Likewise.
8455         (ix86_code_end): Call output_indirect_thunk_function if needed.
8456         (ix86_output_call_insn): Call ix86_output_indirect_branch if
8457         needed.
8458         (ix86_handle_fndecl_attribute): Handle indirect_branch.
8459         (ix86_attribute_table): Add indirect_branch.
8460         * config/i386/i386.h (machine_function): Add indirect_branch_type
8461         and has_local_indirect_jump.
8462         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
8463         to true.
8464         (tablejump): Likewise.
8465         (*indirect_jump): Use ix86_output_indirect_jmp.
8466         (*tablejump_1): Likewise.
8467         (simple_return_indirect_internal): Likewise.
8468         * config/i386/i386.opt (mindirect-branch=): New option.
8469         (indirect_branch): New.
8470         (keep): Likewise.
8471         (thunk): Likewise.
8472         (thunk-inline): Likewise.
8473         (thunk-extern): Likewise.
8474         * doc/extend.texi: Document indirect_branch function attribute.
8475         * doc/invoke.texi: Document -mindirect-branch= option.
8477 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
8479         PR ipa/83051
8480         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
8482 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
8484         * ipa-inline.c (want_inline_small_function_p): Return false if
8485         inlining has already failed with CIF_FINAL_ERROR.
8486         (update_caller_keys): Call want_inline_small_function_p before
8487         can_inline_edge_p.
8488         (update_callee_keys): Likewise.
8490 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8492         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
8493         New function.
8494         (rs6000_quadword_masked_address_p): Likewise.
8495         (quad_aligned_load_p): Likewise.
8496         (quad_aligned_store_p): Likewise.
8497         (const_load_sequence_p): Add comment to describe the outer-most loop.
8498         (mimic_memory_attributes_and_flags): New function.
8499         (rs6000_gen_stvx): Likewise.
8500         (replace_swapped_aligned_store): Likewise.
8501         (rs6000_gen_lvx): Likewise.
8502         (replace_swapped_aligned_load): Likewise.
8503         (replace_swapped_load_constant): Capitalize argument name in
8504         comment describing this function.
8505         (rs6000_analyze_swaps): Add a third pass to search for vector loads
8506         and stores that access quad-word aligned addresses and replace
8507         with stvx or lvx instructions when appropriate.
8508         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
8509         New function prototype.
8510         (rs6000_quadword_masked_address_p): Likewise.
8511         (rs6000_gen_lvx): Likewise.
8512         (rs6000_gen_stvx): Likewise.
8513         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
8514         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
8515         when memory address is aligned.
8516         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
8517         this split to select lvx instruction when memory address is aligned.
8518         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
8519         instruction when memory address is aligned.
8520         (*vsx_le_perm_load_v16qi): Likewise.
8521         (four unnamed splitters): Modify to select the stvx instruction
8522         when memory is aligned.
8524 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
8526         * predict.c (determine_unlikely_bbs): Handle correctly BBs
8527         which appears in the queue multiple times.
8529 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8530             Alan Hayward  <alan.hayward@arm.com>
8531             David Sherwood  <david.sherwood@arm.com>
8533         * tree-vectorizer.h (vec_lower_bound): New structure.
8534         (_loop_vec_info): Add check_nonzero and lower_bounds.
8535         (LOOP_VINFO_CHECK_NONZERO): New macro.
8536         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
8537         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
8538         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
8539         fields.  Make seg_len the distance travelled, not including the
8540         access size.
8541         (dr_direction_indicator): Declare.
8542         (dr_zero_step_indicator): Likewise.
8543         (dr_known_forward_stride_p): Likewise.
8544         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
8545         tree-ssanames.h.
8546         (runtime_alias_check_p): Allow runtime alias checks with
8547         variable strides.
8548         (operator ==): Compare access_size and align.
8549         (prune_runtime_alias_test_list): Rework for new distinction between
8550         the access_size and seg_len.
8551         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
8552         segment lengths.
8553         (get_segment_min_max): New function.
8554         (create_intersect_range_checks): Use it.
8555         (dr_step_indicator): New function.
8556         (dr_direction_indicator): Likewise.
8557         (dr_zero_step_indicator): Likewise.
8558         (dr_known_forward_stride_p): Likewise.
8559         * tree-loop-distribution.c (data_ref_segment_size): Return
8560         DR_STEP * (niters - 1).
8561         (compute_alias_check_pairs): Update call to the dr_with_seg_len
8562         constructor.
8563         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
8564         (vect_preserves_scalar_order_p): New function, split out from...
8565         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
8566         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
8567         (vect_vfa_access_size): New function.
8568         (vect_vfa_align): Likewise.
8569         (vect_compile_time_alias): Take access_size_a and access_b arguments.
8570         (dump_lower_bound): New function.
8571         (vect_check_lower_bound): Likewise.
8572         (vect_small_gap_p): Likewise.
8573         (vectorizable_with_step_bound_p): Likewise.
8574         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
8575         depencies if the vectorization factor is 1.  Convert the checks
8576         for nonzero steps into checks on the bounds of DR_STEP.  Try using
8577         a bunds check for variable steps if the minimum required step is
8578         relatively small. Update calls to the dr_with_seg_len
8579         constructor and to vect_compile_time_alias.
8580         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
8581         function.
8582         (vect_loop_versioning): Call it.
8583         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
8584         when retrying.
8585         (vect_estimate_min_profitable_iters): Account for any bounds checks.
8587 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8588             Alan Hayward  <alan.hayward@arm.com>
8589             David Sherwood  <david.sherwood@arm.com>
8591         * doc/sourcebuild.texi (vect_scatter_store): Document.
8592         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
8593         optabs.
8594         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
8595         Document.
8596         * genopinit.c (main): Add supports_vec_scatter_store and
8597         supports_vec_scatter_store_cached to target_optabs.
8598         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
8599         IFN_MASK_SCATTER_STORE.
8600         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
8601         functions.
8602         * internal-fn.h (internal_store_fn_p): Declare.
8603         (internal_fn_stored_value_index): Likewise.
8604         * internal-fn.c (scatter_store_direct): New macro.
8605         (expand_scatter_store_optab_fn): New function.
8606         (direct_scatter_store_optab_supported_p): New macro.
8607         (internal_store_fn_p): New function.
8608         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
8609         IFN_MASK_SCATTER_STORE.
8610         (internal_fn_mask_index): Likewise.
8611         (internal_fn_stored_value_index): New function.
8612         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
8613         for scatter stores.
8614         * optabs-query.h (supports_vec_scatter_store_p): Declare.
8615         * optabs-query.c (supports_vec_scatter_store_p): New function.
8616         * tree-vectorizer.h (vect_get_store_rhs): Declare.
8617         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
8618         true for scatter stores.
8619         (vect_gather_scatter_fn_p): Handle scatter stores too.
8620         (vect_check_gather_scatter): Consider using scatter stores if
8621         supports_vec_scatter_store_p.
8622         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
8623         scatter stores too.
8624         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
8625         internal_fn_stored_value_index.
8626         (check_load_store_masking): Handle scatter stores too.
8627         (vect_get_store_rhs): Make public.
8628         (vectorizable_call): Use internal_store_fn_p.
8629         (vectorizable_store): Handle scatter store internal functions.
8630         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
8631         when deciding whether the end of the group has been reached.
8632         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
8633         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
8634         (mask_scatter_store<mode>): New insns.
8636 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8637             Alan Hayward  <alan.hayward@arm.com>
8638             David Sherwood  <david.sherwood@arm.com>
8640         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
8641         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
8642         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
8643         function.
8644         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
8645         Use vect_truncate_gather_scatter_offset if we can't treat the
8646         operation as a normal gather load or scatter store.
8647         (get_group_load_store_type): Take the gather_scatter_info
8648         as argument.  Try using a gather load or scatter store for
8649         single-element groups.
8650         (get_load_store_type): Update calls to get_group_load_store_type
8651         and vect_use_strided_gather_scatters_p.
8653 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8654             Alan Hayward  <alan.hayward@arm.com>
8655             David Sherwood  <david.sherwood@arm.com>
8657         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
8658         optional tree argument.
8659         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
8660         null target hooks.
8661         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
8662         but continue to use the current value as a fallback.
8663         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
8664         to compare the updates.
8665         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
8666         (get_load_store_type): Use it when handling a strided access.
8667         (vect_get_strided_load_store_ops): New function.
8668         (vect_get_data_ptr_increment): Likewise.
8669         (vectorizable_load): Handle strided gather loads.  Always pass
8670         a step to vect_create_data_ref_ptr and bump_vector_ptr.
8672 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8673             Alan Hayward  <alan.hayward@arm.com>
8674             David Sherwood  <david.sherwood@arm.com>
8676         * doc/md.texi (gather_load@var{m}): Document.
8677         (mask_gather_load@var{m}): Likewise.
8678         * genopinit.c (main): Add supports_vec_gather_load and
8679         supports_vec_gather_load_cached to target_optabs.
8680         * optabs-tree.c (init_tree_optimization_optabs): Use
8681         ggc_cleared_alloc to allocate target_optabs.
8682         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
8683         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
8684         functions.
8685         * internal-fn.h (internal_load_fn_p): Declare.
8686         (internal_gather_scatter_fn_p): Likewise.
8687         (internal_fn_mask_index): Likewise.
8688         (internal_gather_scatter_fn_supported_p): Likewise.
8689         * internal-fn.c (gather_load_direct): New macro.
8690         (expand_gather_load_optab_fn): New function.
8691         (direct_gather_load_optab_supported_p): New macro.
8692         (direct_internal_fn_optab): New function.
8693         (internal_load_fn_p): Likewise.
8694         (internal_gather_scatter_fn_p): Likewise.
8695         (internal_fn_mask_index): Likewise.
8696         (internal_gather_scatter_fn_supported_p): Likewise.
8697         * optabs-query.c (supports_at_least_one_mode_p): New function.
8698         (supports_vec_gather_load_p): Likewise.
8699         * optabs-query.h (supports_vec_gather_load_p): Declare.
8700         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
8701         and memory_type field.
8702         (NUM_PATTERNS): Bump to 15.
8703         * tree-vect-data-refs.c: Include internal-fn.h.
8704         (vect_gather_scatter_fn_p): New function.
8705         (vect_describe_gather_scatter_call): Likewise.
8706         (vect_check_gather_scatter): Try using internal functions for
8707         gather loads.  Recognize existing calls to a gather load function.
8708         (vect_analyze_data_refs): Consider using gather loads if
8709         supports_vec_gather_load_p.
8710         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
8711         (vect_get_gather_scatter_offset_type): Likewise.
8712         (vect_convert_mask_for_vectype): Likewise.
8713         (vect_add_conversion_to_patterm): Likewise.
8714         (vect_try_gather_scatter_pattern): Likewise.
8715         (vect_recog_gather_scatter_pattern): New pattern recognizer.
8716         (vect_vect_recog_func_ptrs): Add it.
8717         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
8718         internal_fn_mask_index and internal_gather_scatter_fn_p.
8719         (check_load_store_masking): Take the gather_scatter_info as an
8720         argument and handle gather loads.
8721         (vect_get_gather_scatter_ops): New function.
8722         (vectorizable_call): Check internal_load_fn_p.
8723         (vectorizable_load): Likewise.  Handle gather load internal
8724         functions.
8725         (vectorizable_store): Update call to check_load_store_masking.
8726         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
8727         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
8728         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
8729         (aarch64_gather_scale_operand_d): New predicates.
8730         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
8731         (mask_gather_load<mode>): New insns.
8733 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8734             Alan Hayward  <alan.hayward@arm.com>
8735             David Sherwood  <david.sherwood@arm.com>
8737         * optabs.def (fold_left_plus_optab): New optab.
8738         * doc/md.texi (fold_left_plus_@var{m}): Document.
8739         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
8740         * internal-fn.c (fold_left_direct): Define.
8741         (expand_fold_left_optab_fn): Likewise.
8742         (direct_fold_left_optab_supported_p): Likewise.
8743         * fold-const-call.c (fold_const_fold_left): New function.
8744         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
8745         * tree-parloops.c (valid_reduction_p): New function.
8746         (gather_scalar_reductions): Use it.
8747         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
8748         (vect_finish_replace_stmt): Declare.
8749         * tree-vect-loop.c (fold_left_reduction_fn): New function.
8750         (needs_fold_left_reduction_p): New function, split out from...
8751         (vect_is_simple_reduction): ...here.  Accept reductions that
8752         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
8753         (vect_force_simple_reduction): Also store the reduction type in
8754         the assignment's STMT_VINFO_REDUC_TYPE.
8755         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
8756         (merge_with_identity): New function.
8757         (vect_expand_fold_left): Likewise.
8758         (vectorize_fold_left_reduction): Likewise.
8759         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
8760         scalar phi in place for it.  Check for target support and reject
8761         cases that would reassociate the operation.  Defer the transform
8762         phase to vectorize_fold_left_reduction.
8763         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
8764         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
8765         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
8767 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8769         * tree-if-conv.c (predicate_mem_writes): Remove redundant
8770         call to ifc_temp_var.
8772 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8773             Alan Hayward  <alan.hayward@arm.com>
8774             David Sherwood  <david.sherwood@arm.com>
8776         * target.def (legitimize_address_displacement): Take the original
8777         offset as a poly_int.
8778         * targhooks.h (default_legitimize_address_displacement): Update
8779         accordingly.
8780         * targhooks.c (default_legitimize_address_displacement): Likewise.
8781         * doc/tm.texi: Regenerate.
8782         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
8783         as an argument, moving assert of ad->disp == ad->disp_term to...
8784         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
8785         Try calling targetm.legitimize_address_displacement before expanding
8786         the address rather than afterwards, and adjust for the new interface.
8787         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
8788         Match the new hook interface.  Handle SVE addresses.
8789         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
8790         new hook interface.
8792 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8794         * Makefile.in (OBJS): Add early-remat.o.
8795         * target.def (select_early_remat_modes): New hook.
8796         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
8797         * doc/tm.texi: Regenerate.
8798         * targhooks.h (default_select_early_remat_modes): Declare.
8799         * targhooks.c (default_select_early_remat_modes): New function.
8800         * timevar.def (TV_EARLY_REMAT): New timevar.
8801         * passes.def (pass_early_remat): New pass.
8802         * tree-pass.h (make_pass_early_remat): Declare.
8803         * early-remat.c: New file.
8804         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
8805         function.
8806         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
8808 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8809             Alan Hayward  <alan.hayward@arm.com>
8810             David Sherwood  <david.sherwood@arm.com>
8812         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
8813         vfm1 with a bound_epilog parameter.
8814         (vect_do_peeling): Update calls accordingly, and move the prologue
8815         call earlier in the function.  Treat the base bound_epilog as 0 for
8816         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
8817         this base when peeling for gaps.
8818         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
8819         with fully-masked loops.
8820         (vect_estimate_min_profitable_iters): Handle the single peeled
8821         iteration in that case.
8823 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8824             Alan Hayward  <alan.hayward@arm.com>
8825             David Sherwood  <david.sherwood@arm.com>
8827         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
8828         single-element interleaving even if the size is not a power of 2.
8829         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
8830         accesses for single-element interleaving if the group size is
8831         not a power of 2.
8833 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8834             Alan Hayward  <alan.hayward@arm.com>
8835             David Sherwood  <david.sherwood@arm.com>
8837         * doc/md.texi (fold_extract_last_@var{m}): Document.
8838         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
8839         * optabs.def (fold_extract_last_optab): New optab.
8840         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
8841         * internal-fn.c (fold_extract_direct): New macro.
8842         (expand_fold_extract_optab_fn): Likewise.
8843         (direct_fold_extract_optab_supported_p): Likewise.
8844         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
8845         * tree-vect-loop.c (vect_model_reduction_cost): Handle
8846         EXTRACT_LAST_REDUCTION.
8847         (get_initial_def_for_reduction): Do not create an initial vector
8848         for EXTRACT_LAST_REDUCTION reductions.
8849         (vectorizable_reduction): Leave the scalar phi in place for
8850         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
8851         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
8852         epilogue code for EXTRACT_LAST_REDUCTION and defer the
8853         transform phase to vectorizable_condition.
8854         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
8855         split out from...
8856         (vect_finish_stmt_generation): ...here.
8857         (vect_finish_replace_stmt): New function.
8858         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
8859         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
8860         pattern.
8861         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
8863 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8864             Alan Hayward  <alan.hayward@arm.com>
8865             David Sherwood  <david.sherwood@arm.com>
8867         * doc/md.texi (extract_last_@var{m}): Document.
8868         * optabs.def (extract_last_optab): New optab.
8869         * internal-fn.def (EXTRACT_LAST): New internal function.
8870         * internal-fn.c (cond_unary_direct): New macro.
8871         (expand_cond_unary_optab_fn): Likewise.
8872         (direct_cond_unary_optab_supported_p): Likewise.
8873         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
8874         loops using EXTRACT_LAST.
8875         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
8876         (extract_last_<mode>): ...this optab.
8877         (vec_extract<mode><Vel>): Update accordingly.
8879 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8880             Alan Hayward  <alan.hayward@arm.com>
8881             David Sherwood  <david.sherwood@arm.com>
8883         * target.def (empty_mask_is_expensive): New hook.
8884         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
8885         * doc/tm.texi: Regenerate.
8886         * targhooks.h (default_empty_mask_is_expensive): Declare.
8887         * targhooks.c (default_empty_mask_is_expensive): New function.
8888         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
8889         if the target says that empty masks are expensive.
8890         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
8891         New function.
8892         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
8894 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8895             Alan Hayward  <alan.hayward@arm.com>
8896             David Sherwood  <david.sherwood@arm.com>
8898         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
8899         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
8900         (vect_use_loop_mask_for_alignment_p): New function.
8901         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
8902         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
8903         niters_skip argument.  Make sure that the first niters_skip elements
8904         of the first iteration are inactive.
8905         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
8906         Update call to vect_set_loop_masks_directly.
8907         (get_misalign_in_elems): New function, split out from...
8908         (vect_gen_prolog_loop_niters): ...here.
8909         (vect_update_init_of_dr): Take a code argument that specifies whether
8910         the adjustment should be added or subtracted.
8911         (vect_update_init_of_drs): Likewise.
8912         (vect_prepare_for_masked_peels): New function.
8913         (vect_do_peeling): Skip prologue peeling if we're using a mask
8914         instead.  Update call to vect_update_inits_of_drs.
8915         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
8916         mask_skip_niters.
8917         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
8918         alignment.  Do not include the number of peeled iterations in
8919         the minimum threshold in that case.
8920         (vectorizable_induction): Adjust the start value down by
8921         LOOP_VINFO_MASK_SKIP_NITERS iterations.
8922         (vect_transform_loop): Call vect_prepare_for_masked_peels.
8923         Take the number of skipped iterations into account when calculating
8924         the loop bounds.
8925         * tree-vect-stmts.c (vect_gen_while_not): New function.
8927 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8928             Alan Hayward  <alan.hayward@arm.com>
8929             David Sherwood  <david.sherwood@arm.com>
8931         * doc/sourcebuild.texi (vect_fully_masked): Document.
8932         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
8933         default value to 0.
8934         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
8935         split out from...
8936         (vect_analyze_loop_2): ...here. Don't check the vectorization
8937         factor against the number of loop iterations if the loop is
8938         fully-masked.
8940 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8941             Alan Hayward  <alan.hayward@arm.com>
8942             David Sherwood  <david.sherwood@arm.com>
8944         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
8945         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
8946         (dump_groups): Update accordingly.
8947         (iv_use::mem_type): New member variable.
8948         (address_p): New function.
8949         (record_use): Add a mem_type argument and initialize the new
8950         mem_type field.
8951         (record_group_use): Add a mem_type argument.  Use address_p.
8952         Remove obsolete null checks of base_object.  Update call to record_use.
8953         (find_interesting_uses_op): Update call to record_group_use.
8954         (find_interesting_uses_cond): Likewise.
8955         (find_interesting_uses_address): Likewise.
8956         (get_mem_type_for_internal_fn): New function.
8957         (find_address_like_use): Likewise.
8958         (find_interesting_uses_stmt): Try find_address_like_use before
8959         calling find_interesting_uses_op.
8960         (addr_offset_valid_p): Use the iv mem_type field as the type
8961         of the addressed memory.
8962         (add_autoinc_candidates): Likewise.
8963         (get_address_cost): Likewise.
8964         (split_small_address_groups_p): Use address_p.
8965         (split_address_groups): Likewise.
8966         (add_iv_candidate_for_use): Likewise.
8967         (autoinc_possible_for_pair): Likewise.
8968         (rewrite_groups): Likewise.
8969         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
8970         (determine_group_iv_cost): Update after split of USE_ADDRESS.
8971         (get_alias_ptr_type_for_ptr_address): New function.
8972         (rewrite_use_address): Rewrite address uses in calls that were
8973         identified by find_address_like_use.
8975 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8976             Alan Hayward  <alan.hayward@arm.com>
8977             David Sherwood  <david.sherwood@arm.com>
8979         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
8980         TARGET_MEM_REFs.
8981         * gimple-expr.h (is_gimple_addressable: Likewise.
8982         * gimple-expr.c (is_gimple_address): Likewise.
8983         * internal-fn.c (expand_call_mem_ref): New function.
8984         (expand_mask_load_optab_fn): Use it.
8985         (expand_mask_store_optab_fn): Likewise.
8987 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
8988             Alan Hayward  <alan.hayward@arm.com>
8989             David Sherwood  <david.sherwood@arm.com>
8991         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
8992         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
8993         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
8994         (cond_umax@var{mode}): Document.
8995         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
8996         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
8997         (cond_umin_optab, cond_umax_optab): New optabs.
8998         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
8999         (COND_IOR, COND_XOR): New internal functions.
9000         * internal-fn.h (get_conditional_internal_fn): Declare.
9001         * internal-fn.c (cond_binary_direct): New macro.
9002         (expand_cond_binary_optab_fn): Likewise.
9003         (direct_cond_binary_optab_supported_p): Likewise.
9004         (get_conditional_internal_fn): New function.
9005         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
9006         Cope with reduction statements that are vectorized as calls rather
9007         than assignments.
9008         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
9009         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
9010         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
9011         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
9012         (UNSPEC_COND_EOR): New unspecs.
9013         (optab): Add mappings for them.
9014         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
9015         (sve_int_op, sve_fp_op): New int attributes.
9017 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9018             Alan Hayward  <alan.hayward@arm.com>
9019             David Sherwood  <david.sherwood@arm.com>
9021         * optabs.def (while_ult_optab): New optab.
9022         * doc/md.texi (while_ult@var{m}@var{n}): Document.
9023         * internal-fn.def (WHILE_ULT): New internal function.
9024         * internal-fn.h (direct_internal_fn_supported_p): New override
9025         that takes two types as argument.
9026         * internal-fn.c (while_direct): New macro.
9027         (expand_while_optab_fn): New function.
9028         (convert_optab_supported_p): Likewise.
9029         (direct_while_optab_supported_p): New macro.
9030         * wide-int.h (wi::udiv_ceil): New function.
9031         * tree-vectorizer.h (rgroup_masks): New structure.
9032         (vec_loop_masks): New typedef.
9033         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
9034         and fully_masked_p.
9035         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
9036         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
9037         (vect_max_vf): New function.
9038         (slpeel_make_loop_iterate_ntimes): Delete.
9039         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
9040         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
9041         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
9042         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
9043         internal-fn.h, stor-layout.h and optabs-query.h.
9044         (vect_set_loop_mask): New function.
9045         (add_preheader_seq): Likewise.
9046         (add_header_seq): Likewise.
9047         (interleave_supported_p): Likewise.
9048         (vect_maybe_permute_loop_masks): Likewise.
9049         (vect_set_loop_masks_directly): Likewise.
9050         (vect_set_loop_condition_masked): Likewise.
9051         (vect_set_loop_condition_unmasked): New function, split out from
9052         slpeel_make_loop_iterate_ntimes.
9053         (slpeel_make_loop_iterate_ntimes): Rename to..
9054         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
9055         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
9056         (vect_do_peeling): Update call accordingly.
9057         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
9058         loops.
9059         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9060         mask_compare_type, can_fully_mask_p and fully_masked_p.
9061         (release_vec_loop_masks): New function.
9062         (_loop_vec_info): Use it to free the loop masks.
9063         (can_produce_all_loop_masks_p): New function.
9064         (vect_get_max_nscalars_per_iter): Likewise.
9065         (vect_verify_full_masking): Likewise.
9066         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
9067         retries, and free the mask rgroups before retrying.  Check loop-wide
9068         reasons for disallowing fully-masked loops.  Make the final decision
9069         about whether use a fully-masked loop or not.
9070         (vect_estimate_min_profitable_iters): Do not assume that peeling
9071         for the number of iterations will be needed for fully-masked loops.
9072         (vectorizable_reduction): Disable fully-masked loops.
9073         (vectorizable_live_operation): Likewise.
9074         (vect_halve_mask_nunits): New function.
9075         (vect_double_mask_nunits): Likewise.
9076         (vect_record_loop_mask): Likewise.
9077         (vect_get_loop_mask): Likewise.
9078         (vect_transform_loop): Handle the case in which the final loop
9079         iteration might handle a partial vector.  Call vect_set_loop_condition
9080         instead of slpeel_make_loop_iterate_ntimes.
9081         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
9082         (check_load_store_masking): New function.
9083         (prepare_load_store_mask): Likewise.
9084         (vectorizable_store): Handle fully-masked loops.
9085         (vectorizable_load): Likewise.
9086         (supportable_widening_operation): Use vect_halve_mask_nunits for
9087         booleans.
9088         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
9089         (vect_gen_while): New function.
9090         * config/aarch64/aarch64.md (umax<mode>3): New expander.
9091         (aarch64_uqdec<mode>): New insn.
9093 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9094             Alan Hayward  <alan.hayward@arm.com>
9095             David Sherwood  <david.sherwood@arm.com>
9097         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
9098         (reduc_xor_scal_optab): New optabs.
9099         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
9100         (reduc_xor_scal_@var{m}): Document.
9101         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
9102         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
9103         internal functions.
9104         * fold-const-call.c (fold_const_call): Handle them.
9105         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
9106         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
9107         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
9108         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
9109         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
9110         (UNSPEC_XORV): New unspecs.
9111         (optab): Add entries for them.
9112         (BITWISEV): New int iterator.
9113         (bit_reduc_op): New int attributes.
9115 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9116             Alan Hayward  <alan.hayward@arm.com>
9117             David Sherwood  <david.sherwood@arm.com>
9119         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
9120         * internal-fn.def (VEC_SHL_INSERT): New internal function.
9121         * optabs.def (vec_shl_insert_optab): New optab.
9122         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
9123         (duplicate_and_interleave): Likewise.
9124         * tree-vect-loop.c: Include internal-fn.h.
9125         (neutral_op_for_slp_reduction): New function, split out from
9126         get_initial_defs_for_reduction.
9127         (get_initial_def_for_reduction): Handle option 2 for variable-length
9128         vectors by loading the neutral value into a vector and then shifting
9129         the initial value into element 0.
9130         (get_initial_defs_for_reduction): Replace the code argument with
9131         the neutral value calculated by neutral_op_for_slp_reduction.
9132         Use gimple_build_vector for constant-length vectors.
9133         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
9134         but the first group_size elements have a neutral value.
9135         Use duplicate_and_interleave otherwise.
9136         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
9137         Update call to get_initial_defs_for_reduction.  Handle SLP
9138         reductions for variable-length vectors by creating one vector
9139         result for each scalar result, with the elements associated
9140         with other scalar results stubbed out with the neutral value.
9141         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
9142         Require IFN_VEC_SHL_INSERT for double reductions on
9143         variable-length vectors, or SLP reductions that have
9144         a neutral value.  Require can_duplicate_and_interleave_p
9145         support for variable-length unchained SLP reductions if there
9146         is no neutral value, such as for MIN/MAX reductions.  Also require
9147         the number of vector elements to be a multiple of the number of
9148         SLP statements when doing variable-length unchained SLP reductions.
9149         Update call to vect_create_epilog_for_reduction.
9150         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
9151         and remove initial values.
9152         (duplicate_and_interleave): Make public.
9153         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
9154         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
9156 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9157             Alan Hayward  <alan.hayward@arm.com>
9158             David Sherwood  <david.sherwood@arm.com>
9160         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
9161         (can_duplicate_and_interleave_p): New function.
9162         (vect_get_and_check_slp_defs): Take the vector of statements
9163         rather than just the current one.  Remove excess parentheses.
9164         Restriction rejectinon of vect_constant_def and vect_external_def
9165         for variable-length vectors to boolean types, or types for which
9166         can_duplicate_and_interleave_p is false.
9167         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
9168         (duplicate_and_interleave): New function.
9169         (vect_get_constant_vectors): Use gimple_build_vector for
9170         constant-length vectors and suitable variable-length constant
9171         vectors.  Use duplicate_and_interleave for other variable-length
9172         vectors.  Don't defer the update when inserting new statements.
9174 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9175             Alan Hayward  <alan.hayward@arm.com>
9176             David Sherwood  <david.sherwood@arm.com>
9178         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
9179         min_profitable_iters doesn't go negative.
9181 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9182             Alan Hayward  <alan.hayward@arm.com>
9183             David Sherwood  <david.sherwood@arm.com>
9185         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
9186         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
9187         * optabs.def (vec_mask_load_lanes_optab): New optab.
9188         (vec_mask_store_lanes_optab): Likewise.
9189         * internal-fn.def (MASK_LOAD_LANES): New internal function.
9190         (MASK_STORE_LANES): Likewise.
9191         * internal-fn.c (mask_load_lanes_direct): New macro.
9192         (mask_store_lanes_direct): Likewise.
9193         (expand_mask_load_optab_fn): Handle masked operations.
9194         (expand_mask_load_lanes_optab_fn): New macro.
9195         (expand_mask_store_optab_fn): Handle masked operations.
9196         (expand_mask_store_lanes_optab_fn): New macro.
9197         (direct_mask_load_lanes_optab_supported_p): Likewise.
9198         (direct_mask_store_lanes_optab_supported_p): Likewise.
9199         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
9200         parameter.
9201         (vect_load_lanes_supported): Likewise.
9202         * tree-vect-data-refs.c (strip_conversion): New function.
9203         (can_group_stmts_p): Likewise.
9204         (vect_analyze_data_ref_accesses): Use it instead of checking
9205         for a pair of assignments.
9206         (vect_store_lanes_supported): Take a masked_p parameter.
9207         (vect_load_lanes_supported): Likewise.
9208         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
9209         vect_store_lanes_supported and vect_load_lanes_supported.
9210         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
9211         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
9212         parameter.  Don't allow gaps for masked accesses.
9213         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
9214         and vect_load_lanes_supported.
9215         (get_load_store_type): Take a masked_p parameter and update
9216         call to get_group_load_store_type.
9217         (vectorizable_store): Update call to get_load_store_type.
9218         Handle IFN_MASK_STORE_LANES.
9219         (vectorizable_load): Update call to get_load_store_type.
9220         Handle IFN_MASK_LOAD_LANES.
9222 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9223             Alan Hayward  <alan.hayward@arm.com>
9224             David Sherwood  <david.sherwood@arm.com>
9226         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
9227         modes for SVE.
9228         * config/aarch64/aarch64-protos.h
9229         (aarch64_sve_struct_memory_operand_p): Declare.
9230         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
9231         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
9232         (VPRED, vpred): Handle SVE structure modes.
9233         * config/aarch64/constraints.md (Utx): New constraint.
9234         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
9235         (aarch64_sve_struct_nonimmediate_operand): New predicates.
9236         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
9237         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
9238         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
9239         structure modes.  Split into pieces after RA.
9240         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
9241         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
9242         New patterns.
9243         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
9244         SVE structure modes.
9245         (aarch64_classify_address): Likewise.
9246         (sizetochar): Move earlier in file.
9247         (aarch64_print_operand): Handle SVE register lists.
9248         (aarch64_array_mode): New function.
9249         (aarch64_sve_struct_memory_operand_p): Likewise.
9250         (TARGET_ARRAY_MODE): Redefine.
9252 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9253             Alan Hayward  <alan.hayward@arm.com>
9254             David Sherwood  <david.sherwood@arm.com>
9256         * target.def (array_mode): New target hook.
9257         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
9258         * doc/tm.texi: Regenerate.
9259         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
9260         * hooks.c (hook_optmode_mode_uhwi_none): New function.
9261         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
9262         targetm.array_mode.
9263         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
9264         type sizes.
9266 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9267             Alan Hayward  <alan.hayward@arm.com>
9268             David Sherwood  <david.sherwood@arm.com>
9270         * fold-const.c (fold_binary_loc): Check the argument types
9271         rather than the result type when testing for a vector operation.
9273 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9275         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
9276         * doc/tm.texi: Regenerate.
9278 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9279             Alan Hayward  <alan.hayward@arm.com>
9280             David Sherwood  <david.sherwood@arm.com>
9282         * doc/invoke.texi (-msve-vector-bits=): Document new option.
9283         (sve): Document new AArch64 extension.
9284         * doc/md.texi (w): Extend the description of the AArch64
9285         constraint to include SVE vectors.
9286         (Upl, Upa): Document new AArch64 predicate constraints.
9287         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
9288         enum.
9289         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
9290         (msve-vector-bits=): New option.
9291         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
9292         SVE when these are disabled.
9293         (sve): New extension.
9294         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
9295         modes.  Adjust their number of units based on aarch64_sve_vg.
9296         (MAX_BITSIZE_MODE_ANY_MODE): Define.
9297         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
9298         aarch64_addr_query_type.
9299         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
9300         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
9301         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
9302         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
9303         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
9304         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
9305         (aarch64_simd_imm_zero_p): Delete.
9306         (aarch64_check_zero_based_sve_index_immediate): Declare.
9307         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
9308         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
9309         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
9310         (aarch64_sve_float_mul_immediate_p): Likewise.
9311         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
9312         rather than an rtx.
9313         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
9314         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
9315         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
9316         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
9317         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
9318         (aarch64_regmode_natural_size): Likewise.
9319         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
9320         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
9321         left one place.
9322         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
9323         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
9324         for VG and the SVE predicate registers.
9325         (V_ALIASES): Add a "z"-prefixed alias.
9326         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
9327         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
9328         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
9329         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
9330         (REG_CLASS_NAMES): Add entries for them.
9331         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
9332         and the predicate registers.
9333         (aarch64_sve_vg): Declare.
9334         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
9335         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
9336         (REGMODE_NATURAL_SIZE): Define.
9337         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
9338         SVE macros.
9339         * config/aarch64/aarch64.c: Include cfgrtl.h.
9340         (simd_immediate_info): Add a constructor for series vectors,
9341         and an associated step field.
9342         (aarch64_sve_vg): New variable.
9343         (aarch64_dbx_register_number): Handle VG and the predicate registers.
9344         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
9345         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
9346         (VEC_ANY_DATA, VEC_STRUCT): New constants.
9347         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
9348         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
9349         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
9350         (aarch64_get_mask_mode): New functions.
9351         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
9352         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
9353         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
9354         predicate modes and predicate registers.  Explicitly restrict
9355         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
9356         to store a vector mode if it is recognized by
9357         aarch64_classify_vector_mode.
9358         (aarch64_regmode_natural_size): New function.
9359         (aarch64_hard_regno_caller_save_mode): Return the original mode
9360         for predicates.
9361         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
9362         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
9363         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
9364         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
9365         functions.
9366         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
9367         does not overlap dest if the function is frame-related.  Handle
9368         SVE constants.
9369         (aarch64_split_add_offset): New function.
9370         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
9371         them aarch64_add_offset.
9372         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
9373         and update call to aarch64_sub_sp.
9374         (aarch64_add_cfa_expression): New function.
9375         (aarch64_expand_prologue): Pass extra temporary registers to the
9376         functions above.  Handle the case in which we need to emit new
9377         DW_CFA_expressions for registers that were originally saved
9378         relative to the stack pointer, but now have to be expressed
9379         relative to the frame pointer.
9380         (aarch64_output_mi_thunk): Pass extra temporary registers to the
9381         functions above.
9382         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
9383         IP0 and IP1 values for SVE frames.
9384         (aarch64_expand_vec_series): New function.
9385         (aarch64_expand_sve_widened_duplicate): Likewise.
9386         (aarch64_expand_sve_const_vector): Likewise.
9387         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
9388         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
9389         into the register, rather than emitting a SET directly.
9390         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
9391         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
9392         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
9393         (offset_9bit_signed_scaled_p): New functions.
9394         (aarch64_replicate_bitmask_imm): New function.
9395         (aarch64_bitmask_imm): Use it.
9396         (aarch64_cannot_force_const_mem): Reject expressions involving
9397         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
9398         (aarch64_classify_index): Handle SVE indices, by requiring
9399         a plain register index with a scale that matches the element size.
9400         (aarch64_classify_address): Handle SVE addresses.  Assert that
9401         the mode of the address is VOIDmode or an integer mode.
9402         Update call to aarch64_classify_symbol.
9403         (aarch64_classify_symbolic_expression): Update call to
9404         aarch64_classify_symbol.
9405         (aarch64_const_vec_all_in_range_p): New function.
9406         (aarch64_print_vector_float_operand): Likewise.
9407         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
9408         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
9409         and the FP immediates 1.0 and 0.5.
9410         (aarch64_print_address_internal): Handle SVE addresses.
9411         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
9412         (aarch64_regno_regclass): Handle predicate registers.
9413         (aarch64_secondary_reload): Handle big-endian reloads of SVE
9414         data modes.
9415         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
9416         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
9417         (aarch64_convert_sve_vector_bits): New function.
9418         (aarch64_override_options): Use it to handle -msve-vector-bits=.
9419         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
9420         rather than an rtx.
9421         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
9422         Handle SVE vector and predicate modes.  Accept VL-based constants
9423         that need only one temporary register, and VL offsets that require
9424         no temporary registers.
9425         (aarch64_conditional_register_usage): Mark the predicate registers
9426         as fixed if SVE isn't available.
9427         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
9428         Return true for SVE vector and predicate modes.
9429         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
9430         rather than an unsigned int.  Handle SVE modes.
9431         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
9432         SVE modes.
9433         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
9434         if SVE is enabled.
9435         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
9436         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
9437         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
9438         (aarch64_sve_float_mul_immediate_p): New functions.
9439         (aarch64_sve_valid_immediate): New function.
9440         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
9441         Explicitly reject structure modes.  Check for INDEX constants.
9442         Handle PTRUE and PFALSE constants.
9443         (aarch64_check_zero_based_sve_index_immediate): New function.
9444         (aarch64_simd_imm_zero_p): Delete.
9445         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
9446         vector modes.  Accept constants in the range of CNT[BHWD].
9447         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
9448         ask for an Advanced SIMD mode.
9449         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
9450         (aarch64_simd_vector_alignment): Handle SVE predicates.
9451         (aarch64_vectorize_preferred_vector_alignment): New function.
9452         (aarch64_simd_vector_alignment_reachable): Use it instead of
9453         the vector size.
9454         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
9455         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
9456         functions.
9457         (MAX_VECT_LEN): Delete.
9458         (expand_vec_perm_d): Add a vec_flags field.
9459         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
9460         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
9461         (aarch64_evpc_ext): Don't apply a big-endian lane correction
9462         for SVE modes.
9463         (aarch64_evpc_rev): Rename to...
9464         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
9465         (aarch64_evpc_rev_global): New function.
9466         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
9467         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
9468         MAX_VECT_LEN.
9469         (aarch64_evpc_sve_tbl): New function.
9470         (aarch64_expand_vec_perm_const_1): Update after rename of
9471         aarch64_evpc_rev.  Handle SVE permutes too, trying
9472         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
9473         than aarch64_evpc_tbl.
9474         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
9475         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
9476         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
9477         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
9478         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
9479         (aarch64_expand_sve_vcond): New functions.
9480         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
9481         of aarch64_vector_mode_p.
9482         (aarch64_dwarf_poly_indeterminate_value): New function.
9483         (aarch64_compute_pressure_classes): Likewise.
9484         (aarch64_can_change_mode_class): Likewise.
9485         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
9486         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
9487         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
9488         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
9489         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
9490         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
9491         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
9492         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
9493         constraints.
9494         (Dn, Dl, Dr): Accept const as well as const_vector.
9495         (Dz): Likewise.  Compare against CONST0_RTX.
9496         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
9497         of "vector" where appropriate.
9498         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
9499         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
9500         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
9501         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
9502         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
9503         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
9504         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
9505         (v_int_equiv): Extend to SVE modes.
9506         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
9507         mode attributes.
9508         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
9509         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
9510         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
9511         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
9512         (SVE_COND_FP_CMP): New int iterators.
9513         (perm_hilo): Handle the new unpack unspecs.
9514         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
9515         attributes.
9516         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
9517         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
9518         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
9519         (aarch64_equality_operator, aarch64_constant_vector_operand)
9520         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
9521         (aarch64_sve_nonimmediate_operand): Likewise.
9522         (aarch64_sve_general_operand): Likewise.
9523         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
9524         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
9525         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
9526         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
9527         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
9528         (aarch64_sve_float_arith_immediate): Likewise.
9529         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
9530         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
9531         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
9532         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
9533         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
9534         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
9535         (aarch64_sve_float_arith_operand): Likewise.
9536         (aarch64_sve_float_arith_with_sub_operand): Likewise.
9537         (aarch64_sve_float_mul_operand): Likewise.
9538         (aarch64_sve_vec_perm_operand): Likewise.
9539         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
9540         (aarch64_mov_operand): Accept const_poly_int and const_vector.
9541         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
9542         as well as const_vector.
9543         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
9544         in file.  Use CONST0_RTX and CONSTM1_RTX.
9545         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
9546         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
9547         Use aarch64_simd_imm_zero.
9548         * config/aarch64/aarch64-sve.md: New file.
9549         * config/aarch64/aarch64.md: Include it.
9550         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
9551         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
9552         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
9553         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
9554         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
9555         (sve): New attribute.
9556         (enabled): Disable instructions with the sve attribute unless
9557         TARGET_SVE.
9558         (movqi, movhi): Pass CONST_POLY_INT operaneds through
9559         aarch64_expand_mov_immediate.
9560         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
9561         CNT[BHSD] immediates.
9562         (movti): Split CONST_POLY_INT moves into two halves.
9563         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
9564         Split additions that need a temporary here if the destination
9565         is the stack pointer.
9566         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
9567         (*add<mode>3_poly_1): New instruction.
9568         (set_clobber_cc): New expander.
9570 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9572         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
9573         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
9574         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
9575         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
9576         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
9577         Change innermode from fixed_mode_size to machine_mode.
9578         (simplify_subreg): Update call accordingly.  Handle a constant-sized
9579         subreg of a variable-length CONST_VECTOR.
9581 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9582             Alan Hayward  <alan.hayward@arm.com>
9583             David Sherwood  <david.sherwood@arm.com>
9585         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
9586         (add_offset_to_base): New function, split out from...
9587         (create_mem_ref): ...here.  When handling a scale other than 1,
9588         check first whether the address is valid without the offset.
9589         Add it into the base if so, leaving the index and scale as-is.
9591 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
9593         PR c++/83778
9594         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
9595         fold_for_warn before checking if arg2 is INTEGER_CST.
9597 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
9599         * config/rs6000/predicates.md (load_multiple_operation): Delete.
9600         (store_multiple_operation): Delete.
9601         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
9602         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
9603         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
9604         guarded by TARGET_STRING.
9605         (rs6000_output_load_multiple): Delete.
9606         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
9607         OPTION_MASK_STRING / TARGET_STRING handling.
9608         (print_operand) <'N', 'O'>: Add comment that these are unused now.
9609         (const rs6000_opt_masks) <"string">: Change mask to 0.
9610         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
9611         (MASK_STRING): Delete.
9612         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
9613         parts.  Simplify.
9614         (load_multiple): Delete.
9615         (*ldmsi8): Delete.
9616         (*ldmsi7): Delete.
9617         (*ldmsi6): Delete.
9618         (*ldmsi5): Delete.
9619         (*ldmsi4): Delete.
9620         (*ldmsi3): Delete.
9621         (store_multiple): Delete.
9622         (*stmsi8): Delete.
9623         (*stmsi7): Delete.
9624         (*stmsi6): Delete.
9625         (*stmsi5): Delete.
9626         (*stmsi4): Delete.
9627         (*stmsi3): Delete.
9628         (movmemsi_8reg): Delete.
9629         (corresponding unnamed define_insn): Delete.
9630         (movmemsi_6reg): Delete.
9631         (corresponding unnamed define_insn): Delete.
9632         (movmemsi_4reg): Delete.
9633         (corresponding unnamed define_insn): Delete.
9634         (movmemsi_2reg): Delete.
9635         (corresponding unnamed define_insn): Delete.
9636         (movmemsi_1reg): Delete.
9637         (corresponding unnamed define_insn): Delete.
9638         * config/rs6000/rs6000.opt (mno-string): New.
9639         (mstring): Replace by deprecation warning stub.
9640         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
9642 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
9644         * regrename.c (regrename_do_replace): If replacing the same
9645         reg multiple times, try to reuse last created gen_raw_REG.
9647         PR debug/81155
9648         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
9649         main to workaround a bug in GDB.
9651 2018-01-12  Tom de Vries  <tom@codesourcery.com>
9653         PR target/83737
9654         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
9656 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
9658         PR rtl-optimization/80481
9659         * ira-color.c (get_cap_member): New function.
9660         (allocnos_conflict_by_live_ranges_p): Use it.
9661         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
9662         (setup_slot_coalesced_allocno_live_ranges): Ditto.
9664 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
9666         PR target/83628
9667         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
9668         (*saddl_se_1): Ditto.
9669         (*ssubsi_1): Ditto.
9670         (*ssubl_se_1): Ditto.
9672 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
9674         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
9675         rather than wi::to_widest for DR_INITs.
9676         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
9677         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
9678         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
9679         INTEGER_CSTs.
9680         (vect_analyze_group_access_1): Note that here.
9682 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
9684         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
9685         polynomial type sizes.
9687 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
9689         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
9690         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
9691         (gimple_add_tmp_var): Likewise.
9693 2018-01-12  Martin Liska  <mliska@suse.cz>
9695         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
9696         (gimple_alloc_sizes): Likewise.
9697         (dump_gimple_statistics): Use PRIu64 in printf format.
9698         * gimple.h: Change uint64_t to int.
9700 2018-01-12  Martin Liska  <mliska@suse.cz>
9702         * tree-core.h: Use uint64_t instead of int.
9703         * tree.c (tree_node_counts): Likewise.
9704         (tree_node_sizes): Likewise.
9705         (dump_tree_statistics): Use PRIu64 in printf format.
9707 2018-01-12  Martin Liska  <mliska@suse.cz>
9709         * Makefile.in: As qsort_chk is implemented in vec.c, add
9710         vec.o to linkage of gencfn-macros.
9711         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
9712         passing the info to record_node_allocation_statistics.
9713         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
9714         and pass the info.
9715         * ggc-common.c (struct ggc_usage): Add operator== and use
9716         it in operator< and compare function.
9717         * mem-stats.h (struct mem_usage): Likewise.
9718         * vec.c (struct vec_usage): Remove operator< and compare
9719         function. Can be simply inherited.
9721 2018-01-12  Martin Jambor  <mjambor@suse.cz>
9723         PR target/81616
9724         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
9725         * tree-ssa-math-opts.c: Include domwalk.h.
9726         (convert_mult_to_fma_1): New function.
9727         (fma_transformation_info): New type.
9728         (fma_deferring_state): Likewise.
9729         (cancel_fma_deferring): New function.
9730         (result_of_phi): Likewise.
9731         (last_fma_candidate_feeds_initial_phi): Likewise.
9732         (convert_mult_to_fma): Added deferring logic, split actual
9733         transformation to convert_mult_to_fma_1.
9734         (math_opts_dom_walker): New type.
9735         (math_opts_dom_walker::after_dom_children): New method, body moved
9736         here from pass_optimize_widening_mul::execute, added deferring logic
9737         bits.
9738         (pass_optimize_widening_mul::execute): Moved most of code to
9739         math_opts_dom_walker::after_dom_children.
9740         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
9741         * config/i386/i386.c (ix86_option_override_internal): Added
9742         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
9744 2018-01-12  Richard Biener  <rguenther@suse.de>
9746         PR debug/83157
9747         * dwarf2out.c (gen_variable_die): Do not reset old_die for
9748         inline instance vars.
9750 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
9752         PR target/81819
9753         * config/rx/rx.c (rx_is_restricted_memory_address):
9754         Handle SUBREG case.
9756 2018-01-12  Richard Biener  <rguenther@suse.de>
9758         PR tree-optimization/80846
9759         * target.def (split_reduction): New target hook.
9760         * targhooks.c (default_split_reduction): New function.
9761         * targhooks.h (default_split_reduction): Declare.
9762         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
9763         target requests first reduce vectors by combining low and high
9764         parts.
9765         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
9766         (get_vectype_for_scalar_type_and_size): Export.
9767         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
9768         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
9769         * doc/tm.texi: Regenerate.
9770         * config/i386/i386.c (ix86_split_reduction): Implement
9771         TARGET_VECTORIZE_SPLIT_REDUCTION.
9773 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
9775         PR target/83368
9776         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
9777         in PIC mode except for TARGET_VXWORKS_RTP.
9778         * config/sparc/sparc.c: Include cfgrtl.h.
9779         (TARGET_INIT_PIC_REG): Define.
9780         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
9781         (sparc_pic_register_p): New predicate.
9782         (sparc_legitimate_address_p): Use it.
9783         (sparc_legitimize_pic_address): Likewise.
9784         (sparc_delegitimize_address): Likewise.
9785         (sparc_mode_dependent_address_p): Likewise.
9786         (gen_load_pcrel_sym): Remove 4th parameter.
9787         (load_got_register): Adjust call to above.  Remove obsolete stuff.
9788         (sparc_expand_prologue): Do not call load_got_register here.
9789         (sparc_flat_expand_prologue): Likewise.
9790         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
9791         (sparc_use_pseudo_pic_reg): New function.
9792         (sparc_init_pic_reg): Likewise.
9793         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
9794         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
9796 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
9798         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
9799         Add item for branch_cost.
9801 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
9803         PR rtl-optimization/83565
9804         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
9805         not extend the result to a larger mode for rotate operations.
9806         (num_sign_bit_copies1): Likewise.
9808 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9810         PR target/40411
9811         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
9812         -symbolic.
9813         Use values-Xc.o for -pedantic.
9814         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
9816 2018-01-12  Martin Liska  <mliska@suse.cz>
9818         PR ipa/83054
9819         * ipa-devirt.c (final_warning_record::grow_type_warnings):
9820         New function.
9821         (possible_polymorphic_call_targets): Use it.
9822         (ipa_devirt): Likewise.
9824 2018-01-12  Martin Liska  <mliska@suse.cz>
9826         * profile-count.h (enum profile_quality): Use 0 as invalid
9827         enum value of profile_quality.
9829 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
9831         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
9832         -mext-string options.
9834 2018-01-12  Richard Biener  <rguenther@suse.de>
9836         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
9837         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
9838         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
9839         Likewise.
9840         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
9842 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
9844         * configure.ac (--with-long-double-format): Add support for the
9845         configuration option to change the default long double format on
9846         PowerPC systems.
9847         * config.gcc (powerpc*-linux*-*): Likewise.
9848         * configure: Regenerate.
9849         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
9850         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
9851         used without modification.
9853 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9855         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
9856         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
9857         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
9858         MISC_BUILTIN_SPEC_BARRIER.
9859         (rs6000_init_builtins): Likewise.
9860         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
9861         enum value.
9862         (speculation_barrier): New define_insn.
9863         * doc/extend.texi: Document __builtin_speculation_barrier.
9865 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
9867         PR target/83203
9868         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
9869         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
9870         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
9871         iterators.
9872         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
9873         integral modes instead of "ss" and "sd".
9874         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
9875         vectors with 32-bit and 64-bit elements.
9876         (vecdupssescalarmodesuffix): New mode attribute.
9877         (vec_dup<mode>): Use it.
9879 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
9881         PR target/83330
9882         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
9883         frame if argument is passed on stack.
9885 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
9887         PR target/82682
9888         * ree.c (combine_reaching_defs): Optimize also
9889         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
9890         reg2=any_extend(exp); reg1=reg2;, formatting fix.
9892 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
9894         PR middle-end/83189
9895         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
9897 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
9899         PR middle-end/83718
9900         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
9901         after they are computed.
9903 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
9905         PR tree-optimization/83695
9906         * gimple-loop-linterchange.cc
9907         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
9908         reset cached scev information after interchange.
9909         (pass_linterchange::execute): Remove call to scev_reset_htab.
9911 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9913         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
9914         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
9915         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
9916         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
9917         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
9918         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
9919         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
9920         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
9921         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
9922         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
9923         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
9924         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
9925         (V_lane_reg): Likewise.
9926         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
9927         New define_expand.
9928         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
9929         (vfmal_lane_low<mode>_intrinsic,
9930         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
9931         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
9932         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
9933         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
9934         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
9935         vfmsl_lane_high<mode>_intrinsic): New define_insns.
9937 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9939         * config/arm/arm-cpus.in (fp16fml): New feature.
9940         (ALL_SIMD): Add fp16fml.
9941         (armv8.2-a): Add fp16fml as an option.
9942         (armv8.3-a): Likewise.
9943         (armv8.4-a): Add fp16fml as part of fp16.
9944         * config/arm/arm.h (TARGET_FP16FML): Define.
9945         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
9946         when appropriate.
9947         * config/arm/arm-modes.def (V2HF): Define.
9948         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
9949         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
9950         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
9951         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
9952         vfmsl_low, vfmsl_high): New set of builtins.
9953         * config/arm/iterators.md (PLUSMINUS): New code iterator.
9954         (vfml_op): New code attribute.
9955         (VFMLHALVES): New int iterator.
9956         (VFML, VFMLSEL): New mode attributes.
9957         (V_reg): Define mapping for V2HF.
9958         (V_hi, V_lo): New mode attributes.
9959         (VF_constraint): Likewise.
9960         (vfml_half, vfml_half_selector): New int attributes.
9961         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
9962         define_expand.
9963         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
9964         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
9965         New define_insn.
9966         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
9967         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
9968         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
9969         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
9970         documentation.
9971         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
9972         Document new effective target and option set.
9974 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9976         * config/arm/arm-cpus.in (armv8_4): New feature.
9977         (ARMv8_4a): New fgroup.
9978         (armv8.4-a): New arch.
9979         * config/arm/arm-tables.opt: Regenerate.
9980         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
9981         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
9982         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
9983         Add matching rules for -march=armv8.4-a and extensions.
9984         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
9986 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
9988         PR target/81821
9989         * config/rx/rx.md (BW): New mode attribute.
9990         (sync_lock_test_and_setsi): Add mode suffix to insn output.
9992 2018-01-11  Richard Biener  <rguenther@suse.de>
9994         PR tree-optimization/83435
9995         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
9996         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
9997         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
9999 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10000             Alan Hayward  <alan.hayward@arm.com>
10001             David Sherwood  <david.sherwood@arm.com>
10003         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
10004         field.
10005         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
10006         (aarch64_print_address_internal): Use it to check for a zero offset.
10008 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10009             Alan Hayward  <alan.hayward@arm.com>
10010             David Sherwood  <david.sherwood@arm.com>
10012         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
10013         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
10014         Return a poly_int64 rather than a HOST_WIDE_INT.
10015         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
10016         rather than a HOST_WIDE_INT.
10017         * config/aarch64/aarch64.h (aarch64_frame): Protect with
10018         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
10019         hard_fp_offset, frame_size, initial_adjust, callee_offset and
10020         final_offset from HOST_WIDE_INT to poly_int64.
10021         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
10022         to_constant when getting the number of units in an Advanced SIMD
10023         mode.
10024         (aarch64_builtin_vectorized_function): Check for a constant number
10025         of units.
10026         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
10027         GET_MODE_SIZE.
10028         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
10029         attribute instead of GET_MODE_NUNITS.
10030         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
10031         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
10032         GET_MODE_SIZE for fixed-size registers.
10033         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
10034         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
10035         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
10036         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
10037         (aarch64_print_operand, aarch64_print_address_internal)
10038         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
10039         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
10040         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
10041         Handle polynomial GET_MODE_SIZE.
10042         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
10043         wider than SImode without modification.
10044         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
10045         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
10046         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
10047         passing and returning SVE modes.
10048         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
10049         rather than GEN_INT.
10050         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
10051         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
10052         (aarch64_allocate_and_probe_stack_space): Likewise.
10053         (aarch64_layout_frame): Cope with polynomial offsets.
10054         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
10055         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
10056         polynomial offsets.
10057         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
10058         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
10059         poly_int64 rather than a HOST_WIDE_INT.
10060         (aarch64_get_separate_components, aarch64_process_components)
10061         (aarch64_expand_prologue, aarch64_expand_epilogue)
10062         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
10063         (aarch64_anchor_offset): New function, split out from...
10064         (aarch64_legitimize_address): ...here.
10065         (aarch64_builtin_vectorization_cost): Handle polynomial
10066         TYPE_VECTOR_SUBPARTS.
10067         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
10068         GET_MODE_NUNITS.
10069         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
10070         number of elements from the PARALLEL rather than the mode.
10071         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
10072         rather than GET_MODE_BITSIZE.
10073         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
10074         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
10075         (aarch64_expand_vec_perm_const_1): Handle polynomial
10076         d->perm.length () and d->perm elements.
10077         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
10078         Apply to_constant to d->perm elements.
10079         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
10080         polynomial CONST_VECTOR_NUNITS.
10081         (aarch64_move_pointer): Take amount as a poly_int64 rather
10082         than an int.
10083         (aarch64_progress_pointer): Avoid temporary variable.
10084         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
10085         the mode attribute instead of GET_MODE.
10087 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10088             Alan Hayward  <alan.hayward@arm.com>
10089             David Sherwood  <david.sherwood@arm.com>
10091         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
10092         x exists before using it.
10093         (aarch64_add_constant_internal): Rename to...
10094         (aarch64_add_offset_1): ...this.  Replace regnum with separate
10095         src and dest rtxes.  Handle the case in which they're different,
10096         including when the offset is zero.  Replace scratchreg with an rtx.
10097         Use 2 additions if there is no spare register into which we can
10098         move a 16-bit constant.
10099         (aarch64_add_constant): Delete.
10100         (aarch64_add_offset): Replace reg with separate src and dest
10101         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
10102         Use aarch64_add_offset_1.
10103         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
10104         an rtx rather than an int.  Take the delta as a poly_int64
10105         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
10106         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
10107         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
10108         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
10109         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
10110         and aarch64_add_sp.
10111         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
10112         aarch64_add_constant.
10114 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10116         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
10117         Use scalar_float_mode.
10119 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10121         * config/aarch64/aarch64-simd.md
10122         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
10123         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
10124         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
10125         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
10126         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
10127         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
10128         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
10129         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
10130         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
10131         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
10133 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10135         PR target/83514
10136         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
10137         targ_options->x_arm_arch_string is non NULL.
10139 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
10141         * config/aarch64/aarch64.h
10142         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
10144 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
10146         PR target/82096
10147         * expmed.c (emit_store_flag_force): Swap if const op0
10148         and change VOIDmode to mode of op0.
10150 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10152         PR rtl-optimization/83761
10153         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
10154         than bytes to mode_for_size.
10156 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10158         PR middle-end/83189
10159         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
10160         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
10161         profile.
10163 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10165         PR middle-end/83575
10166         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
10167         when in layout mode.
10168         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
10169         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
10170         partition fixup.
10172 2018-01-10  Michael Collison  <michael.collison@arm.com>
10174         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
10175         * config/aarch64/aarch64-option-extension.def: Add
10176         AARCH64_OPT_EXTENSION of 'fp16fml'.
10177         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10178         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
10179         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
10180         * config/aarch64/constraints.md (Ui7): New constraint.
10181         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
10182         (VFMLA_SEL_W): Ditto.
10183         (f16quad): Ditto.
10184         (f16mac1): Ditto.
10185         (VFMLA16_LOW): New int iterator.
10186         (VFMLA16_HIGH): Ditto.
10187         (UNSPEC_FMLAL): New unspec.
10188         (UNSPEC_FMLSL): Ditto.
10189         (UNSPEC_FMLAL2): Ditto.
10190         (UNSPEC_FMLSL2): Ditto.
10191         (f16mac): New code attribute.
10192         * config/aarch64/aarch64-simd-builtins.def
10193         (aarch64_fmlal_lowv2sf): Ditto.
10194         (aarch64_fmlsl_lowv2sf): Ditto.
10195         (aarch64_fmlalq_lowv4sf): Ditto.
10196         (aarch64_fmlslq_lowv4sf): Ditto.
10197         (aarch64_fmlal_highv2sf): Ditto.
10198         (aarch64_fmlsl_highv2sf): Ditto.
10199         (aarch64_fmlalq_highv4sf): Ditto.
10200         (aarch64_fmlslq_highv4sf): Ditto.
10201         (aarch64_fmlal_lane_lowv2sf): Ditto.
10202         (aarch64_fmlsl_lane_lowv2sf): Ditto.
10203         (aarch64_fmlal_laneq_lowv2sf): Ditto.
10204         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
10205         (aarch64_fmlalq_lane_lowv4sf): Ditto.
10206         (aarch64_fmlsl_lane_lowv4sf): Ditto.
10207         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
10208         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
10209         (aarch64_fmlal_lane_highv2sf): Ditto.
10210         (aarch64_fmlsl_lane_highv2sf): Ditto.
10211         (aarch64_fmlal_laneq_highv2sf): Ditto.
10212         (aarch64_fmlsl_laneq_highv2sf): Ditto.
10213         (aarch64_fmlalq_lane_highv4sf): Ditto.
10214         (aarch64_fmlsl_lane_highv4sf): Ditto.
10215         (aarch64_fmlalq_laneq_highv4sf): Ditto.
10216         (aarch64_fmlsl_laneq_highv4sf): Ditto.
10217         * config/aarch64/aarch64-simd.md:
10218         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
10219         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
10220         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
10221         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
10222         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
10223         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
10224         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
10225         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
10226         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
10227         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
10228         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
10229         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
10230         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
10231         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
10232         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
10233         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
10234         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
10235         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
10236         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
10237         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
10238         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
10239         (vfmlsl_low_u32): Ditto.
10240         (vfmlalq_low_u32): Ditto.
10241         (vfmlslq_low_u32): Ditto.
10242         (vfmlal_high_u32): Ditto.
10243         (vfmlsl_high_u32): Ditto.
10244         (vfmlalq_high_u32): Ditto.
10245         (vfmlslq_high_u32): Ditto.
10246         (vfmlal_lane_low_u32): Ditto.
10247         (vfmlsl_lane_low_u32): Ditto.
10248         (vfmlal_laneq_low_u32): Ditto.
10249         (vfmlsl_laneq_low_u32): Ditto.
10250         (vfmlalq_lane_low_u32): Ditto.
10251         (vfmlslq_lane_low_u32): Ditto.
10252         (vfmlalq_laneq_low_u32): Ditto.
10253         (vfmlslq_laneq_low_u32): Ditto.
10254         (vfmlal_lane_high_u32): Ditto.
10255         (vfmlsl_lane_high_u32): Ditto.
10256         (vfmlal_laneq_high_u32): Ditto.
10257         (vfmlsl_laneq_high_u32): Ditto.
10258         (vfmlalq_lane_high_u32): Ditto.
10259         (vfmlslq_lane_high_u32): Ditto.
10260         (vfmlalq_laneq_high_u32): Ditto.
10261         (vfmlslq_laneq_high_u32): Ditto.
10262         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
10263         (AARCH64_FL_FOR_ARCH8_4): New.
10264         (AARCH64_ISA_F16FML): New ISA flag.
10265         (TARGET_F16FML): New feature flag for fp16fml.
10266         (doc/invoke.texi): Document new fp16fml option.
10268 2018-01-10  Michael Collison  <michael.collison@arm.com>
10270         * config/aarch64/aarch64-builtins.c:
10271         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
10272         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10273         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
10274         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
10275         (AARCH64_ISA_SHA3): New ISA flag.
10276         (TARGET_SHA3): New feature flag for sha3.
10277         * config/aarch64/iterators.md (sha512_op): New int attribute.
10278         (CRYPTO_SHA512): New int iterator.
10279         (UNSPEC_SHA512H): New unspec.
10280         (UNSPEC_SHA512H2): Ditto.
10281         (UNSPEC_SHA512SU0): Ditto.
10282         (UNSPEC_SHA512SU1): Ditto.
10283         * config/aarch64/aarch64-simd-builtins.def
10284         (aarch64_crypto_sha512hqv2di): New builtin.
10285         (aarch64_crypto_sha512h2qv2di): Ditto.
10286         (aarch64_crypto_sha512su0qv2di): Ditto.
10287         (aarch64_crypto_sha512su1qv2di): Ditto.
10288         (aarch64_eor3qv8hi): Ditto.
10289         (aarch64_rax1qv2di): Ditto.
10290         (aarch64_xarqv2di): Ditto.
10291         (aarch64_bcaxqv8hi): Ditto.
10292         * config/aarch64/aarch64-simd.md:
10293         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
10294         (aarch64_crypto_sha512su0qv2di): Ditto.
10295         (aarch64_crypto_sha512su1qv2di): Ditto.
10296         (aarch64_eor3qv8hi): Ditto.
10297         (aarch64_rax1qv2di): Ditto.
10298         (aarch64_xarqv2di): Ditto.
10299         (aarch64_bcaxqv8hi): Ditto.
10300         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
10301         (vsha512h2q_u64): Ditto.
10302         (vsha512su0q_u64): Ditto.
10303         (vsha512su1q_u64): Ditto.
10304         (veor3q_u16): Ditto.
10305         (vrax1q_u64): Ditto.
10306         (vxarq_u64): Ditto.
10307         (vbcaxq_u16): Ditto.
10308         * config/arm/types.md (crypto_sha512): New type attribute.
10309         (crypto_sha3): Ditto.
10310         (doc/invoke.texi): Document new sha3 option.
10312 2018-01-10  Michael Collison  <michael.collison@arm.com>
10314         * config/aarch64/aarch64-builtins.c:
10315         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
10316         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10317         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
10318         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
10319         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
10320         (AARCH64_ISA_SM4): New ISA flag.
10321         (TARGET_SM4): New feature flag for sm4.
10322         * config/aarch64/aarch64-simd-builtins.def
10323         (aarch64_sm3ss1qv4si): Ditto.
10324         (aarch64_sm3tt1aq4si): Ditto.
10325         (aarch64_sm3tt1bq4si): Ditto.
10326         (aarch64_sm3tt2aq4si): Ditto.
10327         (aarch64_sm3tt2bq4si): Ditto.
10328         (aarch64_sm3partw1qv4si): Ditto.
10329         (aarch64_sm3partw2qv4si): Ditto.
10330         (aarch64_sm4eqv4si): Ditto.
10331         (aarch64_sm4ekeyqv4si): Ditto.
10332         * config/aarch64/aarch64-simd.md:
10333         (aarch64_sm3ss1qv4si): Ditto.
10334         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
10335         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
10336         (aarch64_sm4eqv4si): Ditto.
10337         (aarch64_sm4ekeyqv4si): Ditto.
10338         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
10339         (sm3part_op): Ditto.
10340         (CRYPTO_SM3TT): Ditto.
10341         (CRYPTO_SM3PART): Ditto.
10342         (UNSPEC_SM3SS1): New unspec.
10343         (UNSPEC_SM3TT1A): Ditto.
10344         (UNSPEC_SM3TT1B): Ditto.
10345         (UNSPEC_SM3TT2A): Ditto.
10346         (UNSPEC_SM3TT2B): Ditto.
10347         (UNSPEC_SM3PARTW1): Ditto.
10348         (UNSPEC_SM3PARTW2): Ditto.
10349         (UNSPEC_SM4E): Ditto.
10350         (UNSPEC_SM4EKEY): Ditto.
10351         * config/aarch64/constraints.md (Ui2): New constraint.
10352         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
10353         * config/arm/types.md (crypto_sm3): New type attribute.
10354         (crypto_sm4): Ditto.
10355         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
10356         (vsm3tt1aq_u32): Ditto.
10357         (vsm3tt1bq_u32): Ditto.
10358         (vsm3tt2aq_u32): Ditto.
10359         (vsm3tt2bq_u32): Ditto.
10360         (vsm3partw1q_u32): Ditto.
10361         (vsm3partw2q_u32): Ditto.
10362         (vsm4eq_u32): Ditto.
10363         (vsm4ekeyq_u32): Ditto.
10364         (doc/invoke.texi): Document new sm4 option.
10366 2018-01-10  Michael Collison  <michael.collison@arm.com>
10368         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
10369         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
10370         (AARCH64_FL_FOR_ARCH8_4): New.
10371         (AARCH64_FL_V8_4): New flag.
10372         (doc/invoke.texi): Document new armv8.4-a option.
10374 2018-01-10  Michael Collison  <michael.collison@arm.com>
10376         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10377         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
10378         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
10379         * config/aarch64/aarch64-option-extension.def: Add
10380         AARCH64_OPT_EXTENSION of 'sha2'.
10381         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
10382         (crypto): Disable sha2 and aes if crypto disabled.
10383         (crypto): Enable aes and sha2 if enabled.
10384         (simd): Disable sha2 and aes if simd disabled.
10385         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
10386         New flags.
10387         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
10388         (TARGET_SHA2): New feature flag for sha2.
10389         (TARGET_AES): New feature flag for aes.
10390         * config/aarch64/aarch64-simd.md:
10391         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
10392         conditional on TARGET_AES.
10393         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
10394         (aarch64_crypto_sha1hsi): Make pattern conditional
10395         on TARGET_SHA2.
10396         (aarch64_crypto_sha1hv4si): Ditto.
10397         (aarch64_be_crypto_sha1hv4si): Ditto.
10398         (aarch64_crypto_sha1su1v4si): Ditto.
10399         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
10400         (aarch64_crypto_sha1su0v4si): Ditto.
10401         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
10402         (aarch64_crypto_sha256su0v4si): Ditto.
10403         (aarch64_crypto_sha256su1v4si): Ditto.
10404         (doc/invoke.texi): Document new aes and sha2 options.
10406 2018-01-10  Martin Sebor  <msebor@redhat.com>
10408         PR tree-optimization/83781
10409         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
10410         as string arrays.
10412 2018-01-11  Martin Sebor  <msebor@gmail.com>
10413             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10415         PR tree-optimization/83501
10416         PR tree-optimization/81703
10418         * tree-ssa-strlen.c (get_string_cst): Rename...
10419         (get_string_len): ...to this.  Handle global constants.
10420         (handle_char_store): Adjust.
10422 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
10423             Jim Wilson  <jimw@sifive.com>
10425         * config/riscv/riscv-protos.h (riscv_output_return): New.
10426         * config/riscv/riscv.c (struct machine_function): New naked_p field.
10427         (riscv_attribute_table, riscv_output_return),
10428         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
10429         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
10430         (riscv_compute_frame_info): Only compute frame->mask if not a naked
10431         function.
10432         (riscv_expand_prologue): Add early return for naked function.
10433         (riscv_expand_epilogue): Likewise.
10434         (riscv_function_ok_for_sibcall): Return false for naked function.
10435         (riscv_set_current_function): New.
10436         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
10437         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
10438         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
10439         * doc/extend.texi (RISC-V Function Attributes): New.
10441 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
10443         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
10444         check for 128-bit long double before checking TCmode.
10445         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
10446         128-bit long doubles before checking TFmode or TCmode.
10447         (FLOAT128_IBM_P): Likewise.
10449 2018-01-10  Martin Sebor  <msebor@redhat.com>
10451         PR tree-optimization/83671
10452         * builtins.c (c_strlen): Unconditionally return zero for the empty
10453         string.
10454         Use -Warray-bounds for warnings.
10455         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
10456         for non-constant array indices with COMPONENT_REF, arrays of
10457         arrays, and pointers to arrays.
10458         (gimple_fold_builtin_strlen): Determine and set length range for
10459         non-constant character arrays.
10461 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
10463         PR middle-end/81897
10464         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
10465         empty blocks.
10467 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
10469         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
10471 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
10473         PR target/83399
10474         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
10475         VECTOR_MEM_ALTIVEC_OR_VSX_P.
10476         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
10477         indexed_or_indirect_operand predicate.
10478         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
10479         (*vsx_le_perm_load_v8hi): Likewise.
10480         (*vsx_le_perm_load_v16qi): Likewise.
10481         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
10482         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
10483         (*vsx_le_perm_store_v8hi): Likewise.
10484         (*vsx_le_perm_store_v16qi): Likewise.
10485         (eight unnamed splitters): Likewise.
10487 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
10489         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
10490         * config/rs6000/emmintrin.h: Likewise.
10491         * config/rs6000/mmintrin.h: Likewise.
10492         * config/rs6000/xmmintrin.h: Likewise.
10494 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
10496         PR c++/43486
10497         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
10498         "public_flag".
10499         * tree.c (tree_nop_conversion): Return true for location wrapper
10500         nodes.
10501         (maybe_wrap_with_location): New function.
10502         (selftest::check_strip_nops): New function.
10503         (selftest::test_location_wrappers): New function.
10504         (selftest::tree_c_tests): Call it.
10505         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
10506         (maybe_wrap_with_location): New decl.
10507         (EXPR_LOCATION_WRAPPER_P): New macro.
10508         (location_wrapper_p): New inline function.
10509         (tree_strip_any_location_wrapper): New inline function.
10511 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
10513         PR target/83735
10514         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
10515         stack_realign_offset for the largest alignment of stack slot
10516         actually used.
10517         (ix86_find_max_used_stack_alignment): New function.
10518         (ix86_finalize_stack_frame_flags): Use it.  Set
10519         max_used_stack_alignment if we don't realign stack.
10520         * config/i386/i386.h (machine_function): Add
10521         max_used_stack_alignment.
10523 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
10525         * config/arm/arm.opt (-mbranch-cost): New option.
10526         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
10527         account.
10529 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
10531         PR target/83629
10532         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
10533         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
10535 2018-01-10  Richard Biener  <rguenther@suse.de>
10537         PR debug/83765
10538         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
10539         early out so it also covers the case where we have a non-NULL
10540         origin.
10542 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
10544         PR tree-optimization/83753
10545         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
10546         for non-strided grouped accesses if the number of elements is 1.
10548 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
10550         PR target/81616
10551         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
10552         * i386.h (TARGET_USE_GATHER): Define.
10553         * x86-tune.def (X86_TUNE_USE_GATHER): New.
10555 2018-01-10  Martin Liska  <mliska@suse.cz>
10557         PR bootstrap/82831
10558         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
10559         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
10560         partitioning.
10561         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
10562         CLEANUP_NO_PARTITIONING is not set.
10564 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
10566         * doc/rtl.texi: Remove documentation of (const ...) wrappers
10567         for vectors, as a partial revert of r254296.
10568         * rtl.h (const_vec_p): Delete.
10569         (const_vec_duplicate_p): Don't test for vector CONSTs.
10570         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
10571         * expmed.c (make_tree): Likewise.
10573         Revert:
10574         * common.md (E, F): Use CONSTANT_P instead of checking for
10575         CONST_VECTOR.
10576         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
10577         checking for CONST_VECTOR.
10579 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
10581         PR middle-end/83575
10582         * predict.c (force_edge_cold): Handle in more sane way edges
10583         with no prediction.
10585 2018-01-09  Carl Love  <cel@us.ibm.com>
10587         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
10588         V4SI, V4SF types.
10589         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
10590         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
10591         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
10592         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
10593         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
10594         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
10595         * config/rs6000/rs6000-protos.h: Add extern defition for
10596         rs6000_generate_float2_double_code.
10597         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
10598         function.
10599         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
10600         (float2_v2df): Add define_expand.
10602 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
10604         PR target/83628
10605         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
10606         op_mode in the force_to_mode call.
10608 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10610         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
10611         instead of checking each element individually.
10612         (aarch64_evpc_uzp): Likewise.
10613         (aarch64_evpc_zip): Likewise.
10614         (aarch64_evpc_ext): Likewise.
10615         (aarch64_evpc_rev): Likewise.
10616         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
10617         instead of checking each element individually.  Return true without
10618         generating rtl if
10619         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
10620         whether all selected elements come from the same input, instead of
10621         checking each element individually.  Remove calls to gen_rtx_REG,
10622         start_sequence and end_sequence and instead assert that no rtl is
10623         generated.
10625 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10627         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
10628         order of HIGH and CONST checks.
10630 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
10632         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
10633         if the destination isn't an SSA_NAME.
10635 2018-01-09  Richard Biener  <rguenther@suse.de>
10637         PR tree-optimization/83668
10638         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
10639         move prologue...
10640         (canonicalize_loop_form): ... here, renamed from ...
10641         (canonicalize_loop_closed_ssa_form): ... this and amended to
10642         swap successor edges for loop exit blocks to make us use
10643         the RPO order we need for initial schedule generation.
10645 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
10647         PR tree-optimization/64811
10648         * match.pd: When optimizing comparisons with Inf, avoid
10649         introducing or losing exceptions from comparisons with NaN.
10651 2018-01-09  Martin Liska  <mliska@suse.cz>
10653         PR sanitizer/82517
10654         * asan.c (shadow_mem_size): Add gcc_assert.
10656 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
10658         Don't save registers in main().
10660         PR target/83738
10661         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
10662         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
10663         * config/avr/avr.c (avr_set_current_function): Don't error if
10664         naked, OS_task or OS_main are specified at the same time.
10665         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
10666         OS_main.
10667         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
10668         attribute.
10669         * common/config/avr/avr-common.c (avr_option_optimization_table):
10670         Switch on -mmain-is-OS_task for optimizing compilations.
10672 2018-01-09  Richard Biener  <rguenther@suse.de>
10674         PR tree-optimization/83572
10675         * graphite.c: Include cfganal.h.
10676         (graphite_transform_loops): Connect infinite loops to exit
10677         and remove fake edges at the end.
10679 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
10681         * ipa-inline.c (edge_badness): Revert accidental checkin.
10683 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
10685         PR ipa/80763
10686         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
10687         symbols; not inline clones.
10689 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
10691         PR target/83507
10692         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
10693         hard registers.  Formatting fixes.
10695         PR preprocessor/83722
10696         * gcc.c (try_generate_repro): Pass
10697         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
10698         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
10699         do_report_bug.
10701 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
10702             Kito Cheng  <kito.cheng@gmail.com>
10704         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
10705         (riscv_leaf_function_p): Delete.
10706         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
10708 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10710         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
10711         function.
10712         (do_ifelse): New function.
10713         (do_isel): New function.
10714         (do_sub3): New function.
10715         (do_add3): New function.
10716         (do_load_mask_compare): New function.
10717         (do_overlap_load_compare): New function.
10718         (expand_compare_loop): New function.
10719         (expand_block_compare): Call expand_compare_loop() when appropriate.
10720         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
10721         option description.
10722         (-mblock-compare-inline-loop-limit): New option.
10724 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10726         PR target/83677
10727         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
10728         Reverse order of second and third operands in first alternative.
10729         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
10730         of first and second elements in UNSPEC_VPERMR vector.
10731         (altivec_expand_vec_perm_le): Likewise.
10733 2018-01-08  Jeff Law  <law@redhat.com>
10735         PR rtl-optimizatin/81308
10736         * tree-switch-conversion.c (cfg_altered): New file scoped static.
10737         (process_switch): If group_case_labels makes a change, then set
10738         cfg_altered.
10739         (pass_convert_switch::execute): If a switch is converted, then
10740         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
10742         PR rtl-optimization/81308
10743         * recog.c (split_all_insns): Conditionally cleanup the CFG after
10744         splitting insns.
10746 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
10748         PR target/83663 - Revert r255946
10749         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
10750         generation for cases where splatting a value is not useful.
10751         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
10752         across a vec_duplicate and a paradoxical subreg forming a vector
10753         mode to a vec_concat.
10755 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10757         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
10758         -march=armv8.3-a variants.
10759         * config/arm/t-multilib: Likewise.
10760         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
10762 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
10764         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
10765         to generate rtl.
10766         (cceq_ior_compare_complement): Give it a name so I can use it, and
10767         change boolean_or_operator predicate to boolean_operator so it can
10768         be used to generate a crand.
10769         (eqne): New code iterator.
10770         (bd/bd_neg): New code_attrs.
10771         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
10772         a single define_insn.
10773         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
10774         decrement (bdnzt/bdnzf/bdzt/bdzf).
10775         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
10776         with the new names of the branch decrement patterns, and added the
10777         names of the branch decrement conditional patterns.
10779 2018-01-08  Richard Biener  <rguenther@suse.de>
10781         PR tree-optimization/83563
10782         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
10783         cache.
10785 2018-01-08  Richard Biener  <rguenther@suse.de>
10787         PR middle-end/83713
10788         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
10790 2018-01-08  Richard Biener  <rguenther@suse.de>
10792         PR tree-optimization/83685
10793         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
10794         references to abnormals.
10796 2018-01-08  Richard Biener  <rguenther@suse.de>
10798         PR lto/83719
10799         * dwarf2out.c (output_indirect_strings): Handle empty
10800         skeleton_debug_str_hash.
10801         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
10803 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
10805         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
10806         (emit_store_direct): Likewise.
10807         (arc_trampoline_adjust_address): Likewise.
10808         (arc_asm_trampoline_template): New function.
10809         (arc_initialize_trampoline): Use asm_trampoline_template.
10810         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
10811         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
10812         * config/arc/arc.md (flush_icache): Delete pattern.
10814 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
10816         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
10817         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
10818         munaligned-access.
10820 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10822         PR target/83681
10823         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
10824         by not USED_FOR_TARGET.
10825         (make_pass_resolve_sw_modes): Likewise.
10827 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10829         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
10830         USED_FOR_TARGET.
10832 2018-01-08  Richard Biener  <rguenther@suse.de>
10834         PR middle-end/83580
10835         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
10837 2018-01-08  Richard Biener  <rguenther@suse.de>
10839         PR middle-end/83517
10840         * match.pd ((t * 2) / 2) -> t): Add missing :c.
10842 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
10844         PR middle-end/81897
10845         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
10846         basic blocks with a small number of successors.
10847         (convert_control_dep_chain_into_preds): Improve handling of
10848         forwarder blocks.
10849         (dump_predicates): Split apart into...
10850         (dump_pred_chain): ...here...
10851         (dump_pred_info): ...and here.
10852         (can_one_predicate_be_invalidated_p): Add debugging printfs.
10853         (can_chain_union_be_invalidated_p): Improve check for invalidation
10854         of paths.
10855         (uninit_uses_cannot_happen): Avoid unnecessary if
10856         convert_control_dep_chain_into_preds yielded nothing.
10858 2018-01-06  Martin Sebor  <msebor@redhat.com>
10860         PR tree-optimization/83640
10861         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
10862         subtracting negative offset from size.
10863         (builtin_access::overlap): Adjust offset bounds of the access to fall
10864         within the size of the object if possible.
10866 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
10868         PR rtl-optimization/83699
10869         * expmed.c (extract_bit_field_1): Restrict the vector usage of
10870         extract_bit_field_as_subreg to cases in which the extracted
10871         value is also a vector.
10873         * lra-constraints.c (process_alt_operands): Test for the equivalence
10874         substitutions when detecting a possible reload cycle.
10876 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
10878         PR debug/83480
10879         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
10880         by default if flag_selective_schedling{,2}.  Formatting fixes.
10882         PR rtl-optimization/83682
10883         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
10884         if it has non-VECTOR_MODE element mode.
10885         (vec_duplicate_p): Likewise.
10887         PR middle-end/83694
10888         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
10889         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
10891 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
10893         PR target/83604
10894         * config/i386/i386-builtin.def
10895         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
10896         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
10897         Require also OPTION_MASK_ISA_AVX512F in addition to
10898         OPTION_MASK_ISA_GFNI.
10899         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
10900         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
10901         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
10902         to OPTION_MASK_ISA_GFNI.
10903         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
10904         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
10905         OPTION_MASK_ISA_AVX512BW.
10906         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
10907         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
10908         addition to OPTION_MASK_ISA_GFNI.
10909         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
10910         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
10911         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
10912         to OPTION_MASK_ISA_GFNI.
10913         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
10914         a requirement for all ISAs rather than any of them with a few
10915         exceptions.
10916         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
10917         processing.
10918         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
10919         bitmasks to be enabled with 3 exceptions, instead of requiring any
10920         enabled ISA with lots of exceptions.
10921         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
10922         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
10923         Change avx512bw in isa attribute to avx512f.
10924         * config/i386/sgxintrin.h: Add license boilerplate.
10925         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
10926         to __AVX512F__ and __AVX512VL to __AVX512VL__.
10927         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
10928         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
10929         defined.
10930         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
10931         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
10932         temporarily sse2 rather than sse if not enabled already.
10934         PR target/83604
10935         * config/i386/sse.md (VI248_VLBW): Rename to ...
10936         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
10937         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
10938         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
10939         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
10940         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
10941         mode iterator instead of VI248_VLBW.
10943 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
10945         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
10946         (record_modified): Skip clobbers; add debug output.
10947         (param_change_prob): Use sreal frequencies.
10949 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
10951         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
10952         punt for user-aligned variables.
10954 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
10956         * tree-chrec.c (chrec_contains_symbols): Return true for
10957         POLY_INT_CST.
10959 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
10961         PR target/82439
10962         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
10963         of (x|y) == x for BICS pattern.
10965 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
10967         PR tree-optimization/83605
10968         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
10969         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
10970         can throw.
10972 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10974         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
10975         * config/epiphany/rtems.h: New file.
10977 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
10978             Uros Bizjak  <ubizjak@gmail.com>
10980         PR target/83554
10981         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
10982         QIreg_operand instead of register_operand predicate.
10983         * config/i386/i386.c (ix86_rop_should_change_byte_p,
10984         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
10985         comments instead of -fmitigate[-_]rop.
10987 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10989         PR bootstrap/81926
10990         * cgraphunit.c (symbol_table::compile): Switch to text_section
10991         before calling assembly_start debug hook.
10992         * run-rtl-passes.c (run_rtl_passes): Likewise.
10993         Include output.h.
10995 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
10997         * tree-vrp.c (extract_range_from_binary_expr_1): Check
10998         range_int_cst_p rather than !symbolic_range_p before calling
10999         extract_range_from_multiplicative_op_1.
11001 2018-01-04  Jeff Law  <law@redhat.com>
11003         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
11004         redundant test in assertion.
11006 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11008         * doc/rtl.texi: Document machine_mode wrapper classes.
11010 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11012         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
11013         using tree_to_uhwi.
11015 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11017         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
11018         the VEC_PERM_EXPR fold to fail.
11020 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11022         PR debug/83585
11023         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
11024         to switched_sections.
11026 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11028         PR target/83680
11029         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
11030         test for d.testing.
11032 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
11034         PR target/83387
11035         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
11036         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
11038 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11040         PR debug/83666
11041         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
11042         is BLKmode and bitpos not zero or mode change is needed.
11044 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11046         PR target/83675
11047         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
11048         TARGET_VIS2.
11050 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
11052         PR target/83628
11053         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
11054         instead of MULT rtx.  Update all corresponding splitters.
11055         (*saddl_se): Ditto.
11056         (*ssub<modesuffix>): Ditto.
11057         (*ssubl_se): Ditto.
11058         (*cmp_sadd_di): Update split patterns.
11059         (*cmp_sadd_si): Ditto.
11060         (*cmp_sadd_sidi): Ditto.
11061         (*cmp_ssub_di): Ditto.
11062         (*cmp_ssub_si): Ditto.
11063         (*cmp_ssub_sidi): Ditto.
11064         * config/alpha/predicates.md (const23_operand): New predicate.
11065         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
11066         Look for ASHIFT, not MULT inner operand.
11067         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
11069 2018-01-04  Martin Liska  <mliska@suse.cz>
11071         PR gcov-profile/83669
11072         * gcov.c (output_intermediate_file): Add version to intermediate
11073         gcov file.
11074         * doc/gcov.texi: Document new field 'version' in intermediate
11075         file format. Fix location of '-k' option of gcov command.
11077 2018-01-04  Martin Liska  <mliska@suse.cz>
11079         PR ipa/82352
11080         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
11082 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11084         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
11086 2018-01-03  Martin Sebor  <msebor@redhat.com>
11088         PR tree-optimization/83655
11089         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
11090         checking calls with invalid arguments.
11092 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11094         * tree-vect-stmts.c (vect_get_store_rhs): New function.
11095         (vectorizable_mask_load_store): Delete.
11096         (vectorizable_call): Return false for masked loads and stores.
11097         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
11098         instead of gimple_assign_rhs1.
11099         (vectorizable_load): Handle IFN_MASK_LOAD.
11100         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
11102 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11104         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
11105         split out from..,
11106         (vectorizable_mask_load_store): ...here.
11107         (vectorizable_load): ...and here.
11109 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11111         * tree-vect-stmts.c (vect_build_all_ones_mask)
11112         (vect_build_zero_merge_argument): New functions, split out from...
11113         (vectorizable_load): ...here.
11115 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11117         * tree-vect-stmts.c (vect_check_store_rhs): New function,
11118         split out from...
11119         (vectorizable_mask_load_store): ...here.
11120         (vectorizable_store): ...and here.
11122 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11124         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
11125         split out from...
11126         (vectorizable_mask_load_store): ...here.
11128 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11130         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
11131         (vect_model_store_cost): Take a vec_load_store_type instead of a
11132         vect_def_type.
11133         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
11134         (vect_model_store_cost): Take a vec_load_store_type instead of a
11135         vect_def_type.
11136         (vectorizable_mask_load_store): Update accordingly.
11137         (vectorizable_store): Likewise.
11138         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
11140 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11142         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
11143         IFN_MASK_LOAD calls here rather than...
11144         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
11146 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11147             Alan Hayward  <alan.hayward@arm.com>
11148             David Sherwood  <david.sherwood@arm.com>
11150         * expmed.c (extract_bit_field_1): For vector extracts,
11151         fall back to extract_bit_field_as_subreg if vec_extract
11152         isn't available.
11154 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11155             Alan Hayward  <alan.hayward@arm.com>
11156             David Sherwood  <david.sherwood@arm.com>
11158         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
11159         they are variable or constant sized.
11160         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
11161         slots for constant-sized data.
11163 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11164             Alan Hayward  <alan.hayward@arm.com>
11165             David Sherwood  <david.sherwood@arm.com>
11167         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
11168         handling COND_EXPRs with boolean comparisons, try to find a better
11169         basis for the mask type than the boolean itself.
11171 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11173         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
11174         is calculated and how it can be overridden.
11175         * genmodes.c (max_bitsize_mode_any_mode): New variable.
11176         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
11177         if defined.
11178         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
11179         if nonzero.
11181 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11182             Alan Hayward  <alan.hayward@arm.com>
11183             David Sherwood  <david.sherwood@arm.com>
11185         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
11186         Remove the mode argument.
11187         (aarch64_simd_valid_immediate): Remove the mode and inverse
11188         arguments.
11189         * config/aarch64/iterators.md (bitsize): New iterator.
11190         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
11191         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
11192         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
11193         aarch64_simd_valid_immediate.
11194         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
11195         (aarch64_reg_or_bic_imm): Likewise.
11196         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
11197         with an insn_type enum and msl with a modifier_type enum.
11198         Replace element_width with a scalar_mode.  Change the shift
11199         to unsigned int.  Add constructors for scalar_float_mode and
11200         scalar_int_mode elements.
11201         (aarch64_vect_float_const_representable_p): Delete.
11202         (aarch64_can_const_movi_rtx_p)
11203         (aarch64_simd_scalar_immediate_valid_for_move)
11204         (aarch64_simd_make_constant): Update call to
11205         aarch64_simd_valid_immediate.
11206         (aarch64_advsimd_valid_immediate_hs): New function.
11207         (aarch64_advsimd_valid_immediate): Likewise.
11208         (aarch64_simd_valid_immediate): Remove mode and inverse
11209         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
11210         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
11211         and aarch64_float_const_representable_p on the result.
11212         (aarch64_output_simd_mov_immediate): Remove mode argument.
11213         Update call to aarch64_simd_valid_immediate and use of
11214         simd_immediate_info.
11215         (aarch64_output_scalar_simd_mov_immediate): Update call
11216         accordingly.
11218 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11219             Alan Hayward  <alan.hayward@arm.com>
11220             David Sherwood  <david.sherwood@arm.com>
11222         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
11223         (mode_nunits): Likewise CONST_MODE_NUNITS.
11224         * machmode.def (ADJUST_NUNITS): Document.
11225         * genmodes.c (mode_data::need_nunits_adj): New field.
11226         (blank_mode): Update accordingly.
11227         (adj_nunits): New variable.
11228         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
11229         parameter.
11230         (emit_mode_size_inline): Set need_bytesize_adj for all modes
11231         listed in adj_nunits.
11232         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
11233         listed in adj_nunits.  Don't emit case statements for such modes.
11234         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
11235         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
11236         nothing if adj_nunits is nonnull.
11237         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
11238         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
11239         (emit_mode_fbit): Update use of print_maybe_const_decl.
11240         (emit_move_size): Likewise.  Treat the array as non-const
11241         if adj_nunits.
11242         (emit_mode_adjustments): Handle adj_nunits.
11244 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11246         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
11247         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
11248         (VECTOR_MODES): Use it.
11249         (make_vector_modes): Take the prefix as an argument.
11251 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11252             Alan Hayward  <alan.hayward@arm.com>
11253             David Sherwood  <david.sherwood@arm.com>
11255         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
11256         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
11257         for MODE_VECTOR_BOOL.
11258         * machmode.def (VECTOR_BOOL_MODE): Document.
11259         * genmodes.c (VECTOR_BOOL_MODE): New macro.
11260         (make_vector_bool_mode): New function.
11261         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
11262         MODE_VECTOR_BOOL.
11263         * lto-streamer-in.c (lto_input_mode_table): Likewise.
11264         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
11265         Likewise.
11266         * stor-layout.c (int_mode_for_mode): Likewise.
11267         * tree.c (build_vector_type_for_mode): Likewise.
11268         * varasm.c (output_constant_pool_2): Likewise.
11269         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
11270         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
11271         for MODE_VECTOR_BOOL.
11272         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
11273         of mode class checks.
11274         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
11275         instead of a list of mode class checks.
11276         (expand_vector_scalar_condition): Likewise.
11277         (type_for_widest_vector_mode): Handle BImode as an inner mode.
11279 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11280             Alan Hayward  <alan.hayward@arm.com>
11281             David Sherwood  <david.sherwood@arm.com>
11283         * machmode.h (mode_size): Change from unsigned short to
11284         poly_uint16_pod.
11285         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
11286         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
11287         or if measurement_type is not polynomial.
11288         (fixed_size_mode::includes_p): Check for constant-sized modes.
11289         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
11290         return a poly_uint16 rather than an unsigned short.
11291         (emit_mode_size): Change the type of mode_size from unsigned short
11292         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
11293         (emit_mode_adjustments): Cope with polynomial vector sizes.
11294         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11295         for GET_MODE_SIZE.
11296         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11297         for GET_MODE_SIZE.
11298         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
11299         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
11300         * caller-save.c (setup_save_areas): Likewise.
11301         (replace_reg_with_saved_mem): Likewise.
11302         * calls.c (emit_library_call_value_1): Likewise.
11303         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
11304         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
11305         (gen_lowpart_for_combine): Likewise.
11306         * convert.c (convert_to_integer_1): Likewise.
11307         * cse.c (equiv_constant, cse_insn): Likewise.
11308         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
11309         (cselib_subst_to_values): Likewise.
11310         * dce.c (word_dce_process_block): Likewise.
11311         * df-problems.c (df_word_lr_mark_ref): Likewise.
11312         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
11313         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
11314         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
11315         (rtl_for_decl_location): Likewise.
11316         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
11317         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
11318         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
11319         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
11320         (expand_expr_real_1): Likewise.
11321         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
11322         (pad_below): Likewise.
11323         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
11324         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
11325         * ira.c (get_subreg_tracking_sizes): Likewise.
11326         * ira-build.c (ira_create_allocno_objects): Likewise.
11327         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
11328         (ira_sort_regnos_for_alter_reg): Likewise.
11329         * ira-costs.c (record_operand_costs): Likewise.
11330         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
11331         (resolve_simple_move): Likewise.
11332         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
11333         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
11334         (lra_constraints): Likewise.
11335         (CONST_POOL_OK_P): Reject variable-sized modes.
11336         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
11337         (add_pseudo_to_slot, lra_spill): Likewise.
11338         * omp-low.c (omp_clause_aligned_alignment): Likewise.
11339         * optabs-query.c (get_best_extraction_insn): Likewise.
11340         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
11341         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
11342         (expand_mult_highpart, valid_multiword_target_p): Likewise.
11343         * recog.c (offsettable_address_addr_space_p): Likewise.
11344         * regcprop.c (maybe_mode_change): Likewise.
11345         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
11346         * regrename.c (build_def_use): Likewise.
11347         * regstat.c (dump_reg_info): Likewise.
11348         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
11349         (find_reloads, find_reloads_subreg_address): Likewise.
11350         * reload1.c (eliminate_regs_1): Likewise.
11351         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
11352         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
11353         (simplify_binary_operation_1, simplify_subreg): Likewise.
11354         * targhooks.c (default_function_arg_padding): Likewise.
11355         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
11356         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
11357         (verify_gimple_assign_ternary): Likewise.
11358         * tree-inline.c (estimate_move_cost): Likewise.
11359         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
11360         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
11361         (get_address_cost_ainc): Likewise.
11362         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
11363         (vect_supportable_dr_alignment): Likewise.
11364         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
11365         (vectorizable_reduction): Likewise.
11366         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
11367         (vectorizable_operation, vectorizable_load): Likewise.
11368         * tree.c (build_same_sized_truth_vector_type): Likewise.
11369         * valtrack.c (cleanup_auto_inc_dec): Likewise.
11370         * var-tracking.c (emit_note_insn_var_location): Likewise.
11371         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
11372         (ADDR_VEC_ALIGN): Likewise.
11374 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11375             Alan Hayward  <alan.hayward@arm.com>
11376             David Sherwood  <david.sherwood@arm.com>
11378         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
11379         unsigned short.
11380         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
11381         or if measurement_type is polynomial.
11382         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
11383         * combine.c (make_extraction): Likewise.
11384         * dse.c (find_shift_sequence): Likewise.
11385         * dwarf2out.c (mem_loc_descriptor): Likewise.
11386         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
11387         (extract_bit_field, extract_low_bits): Likewise.
11388         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
11389         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
11390         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
11391         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
11392         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
11393         * reload.c (find_reloads): Likewise.
11394         * reload1.c (alter_reg): Likewise.
11395         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
11396         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
11397         * tree-if-conv.c (predicate_mem_writes): Likewise.
11398         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
11399         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
11400         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
11401         * valtrack.c (dead_debug_insert_temp): Likewise.
11402         * varasm.c (mergeable_constant_section): Likewise.
11403         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
11405 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11406             Alan Hayward  <alan.hayward@arm.com>
11407             David Sherwood  <david.sherwood@arm.com>
11409         * expr.c (expand_assignment): Cope with polynomial mode sizes
11410         when assigning to a CONCAT.
11412 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11413             Alan Hayward  <alan.hayward@arm.com>
11414             David Sherwood  <david.sherwood@arm.com>
11416         * machmode.h (mode_precision): Change from unsigned short to
11417         poly_uint16_pod.
11418         (mode_to_precision): Return a poly_uint16 rather than an unsigned
11419         short.
11420         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
11421         or if measurement_type is not polynomial.
11422         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
11423         in which the mode is already known to be a scalar_int_mode.
11424         * genmodes.c (emit_mode_precision): Change the type of mode_precision
11425         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
11426         initializer.
11427         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11428         for GET_MODE_PRECISION.
11429         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11430         for GET_MODE_PRECISION.
11431         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
11432         as polynomial.
11433         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
11434         (expand_field_assignment, make_extraction): Likewise.
11435         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
11436         (get_last_value): Likewise.
11437         * convert.c (convert_to_integer_1): Likewise.
11438         * cse.c (cse_insn): Likewise.
11439         * expr.c (expand_expr_real_1): Likewise.
11440         * lra-constraints.c (simplify_operand_subreg): Likewise.
11441         * optabs-query.c (can_atomic_load_p): Likewise.
11442         * optabs.c (expand_atomic_load): Likewise.
11443         (expand_atomic_store): Likewise.
11444         * ree.c (combine_reaching_defs): Likewise.
11445         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
11446         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
11447         * tree.h (type_has_mode_precision_p): Likewise.
11448         * ubsan.c (instrument_si_overflow): Likewise.
11450 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11451             Alan Hayward  <alan.hayward@arm.com>
11452             David Sherwood  <david.sherwood@arm.com>
11454         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
11455         polynomial numbers of units.
11456         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
11457         (valid_vector_subparts_p): New function.
11458         (build_vector_type): Remove temporary shim and take the number
11459         of units as a poly_uint64 rather than an int.
11460         (build_opaque_vector_type): Take the number of units as a
11461         poly_uint64 rather than an int.
11462         * tree.c (build_vector_from_ctor): Handle polynomial
11463         TYPE_VECTOR_SUBPARTS.
11464         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
11465         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
11466         (build_vector_from_val): If the number of units is variable,
11467         use build_vec_duplicate_cst for constant operands and
11468         VEC_DUPLICATE_EXPR otherwise.
11469         (make_vector_type): Remove temporary is_constant ().
11470         (build_vector_type, build_opaque_vector_type): Take the number of
11471         units as a poly_uint64 rather than an int.
11472         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
11473         VECTOR_CST_NELTS.
11474         * cfgexpand.c (expand_debug_expr): Likewise.
11475         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
11476         (store_constructor, expand_expr_real_1): Likewise.
11477         (const_scalar_mask_from_tree): Likewise.
11478         * fold-const-call.c (fold_const_reduction): Likewise.
11479         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
11480         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
11481         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
11482         (fold_relational_const): Likewise.
11483         (native_interpret_vector): Likewise.  Change the size from an
11484         int to an unsigned int.
11485         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
11486         TYPE_VECTOR_SUBPARTS.
11487         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
11488         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
11489         duplicating a non-constant operand into a variable-length vector.
11490         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
11491         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
11492         * ipa-icf.c (sem_variable::equals): Likewise.
11493         * match.pd: Likewise.
11494         * omp-simd-clone.c (simd_clone_subparts): Likewise.
11495         * print-tree.c (print_node): Likewise.
11496         * stor-layout.c (layout_type): Likewise.
11497         * targhooks.c (default_builtin_vectorization_cost): Likewise.
11498         * tree-cfg.c (verify_gimple_comparison): Likewise.
11499         (verify_gimple_assign_binary): Likewise.
11500         (verify_gimple_assign_ternary): Likewise.
11501         (verify_gimple_assign_single): Likewise.
11502         * tree-pretty-print.c (dump_generic_node): Likewise.
11503         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
11504         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
11505         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
11506         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
11507         (vect_shift_permute_load_chain): Likewise.
11508         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
11509         (expand_vector_condition, optimize_vector_constructor): Likewise.
11510         (lower_vec_perm, get_compute_type): Likewise.
11511         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
11512         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
11513         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
11514         (vect_recog_mask_conversion_pattern): Likewise.
11515         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
11516         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
11517         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
11518         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
11519         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
11520         (vectorizable_shift, vectorizable_operation, vectorizable_store)
11521         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
11522         (supportable_widening_operation): Likewise.
11523         (supportable_narrowing_operation): Likewise.
11524         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
11525         Likewise.
11526         * varasm.c (output_constant): Likewise.
11528 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11529             Alan Hayward  <alan.hayward@arm.com>
11530             David Sherwood  <david.sherwood@arm.com>
11532         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
11533         so that both the length == 3 and length != 3 cases set up their
11534         own permute vectors.  Add comments explaining why we know the
11535         number of elements is constant.
11536         (vect_permute_load_chain): Likewise.
11538 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11539             Alan Hayward  <alan.hayward@arm.com>
11540             David Sherwood  <david.sherwood@arm.com>
11542         * machmode.h (mode_nunits): Change from unsigned char to
11543         poly_uint16_pod.
11544         (ONLY_FIXED_SIZE_MODES): New macro.
11545         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
11546         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
11547         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
11548         New typedefs.
11549         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
11550         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
11551         or if measurement_type is not polynomial.
11552         * genmodes.c (ZERO_COEFFS): New macro.
11553         (emit_mode_nunits_inline): Make mode_nunits_inline return a
11554         poly_uint16.
11555         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
11556         Use ZERO_COEFFS when emitting initializers.
11557         * data-streamer.h (bp_pack_poly_value): New function.
11558         (bp_unpack_poly_value): Likewise.
11559         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
11560         for GET_MODE_NUNITS.
11561         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
11562         for GET_MODE_NUNITS.
11563         * tree.c (make_vector_type): Remove temporary shim and make
11564         the real function take the number of units as a poly_uint64
11565         rather than an int.
11566         (build_vector_type_for_mode): Handle polynomial nunits.
11567         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
11568         * emit-rtl.c (const_vec_series_p_1): Likewise.
11569         (gen_rtx_CONST_VECTOR): Likewise.
11570         * fold-const.c (test_vec_duplicate_folding): Likewise.
11571         * genrecog.c (validate_pattern): Likewise.
11572         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
11573         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
11574         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
11575         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
11576         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
11577         * rtlanal.c (subreg_get_info): Likewise.
11578         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
11579         (vect_grouped_load_supported): Likewise.
11580         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
11581         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
11582         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11583         (simplify_const_unary_operation, simplify_binary_operation_1)
11584         (simplify_const_binary_operation, simplify_ternary_operation)
11585         (test_vector_ops_duplicate, test_vector_ops): Likewise.
11586         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
11587         instead of CONST_VECTOR_NUNITS.
11588         * varasm.c (output_constant_pool_2): Likewise.
11589         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
11590         explicit-encoded elements in the XVEC for variable-length vectors.
11592 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11594         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
11596 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11597             Alan Hayward  <alan.hayward@arm.com>
11598             David Sherwood  <david.sherwood@arm.com>
11600         * coretypes.h (fixed_size_mode): Declare.
11601         (fixed_size_mode_pod): New typedef.
11602         * builtins.h (target_builtins::x_apply_args_mode)
11603         (target_builtins::x_apply_result_mode): Change type to
11604         fixed_size_mode_pod.
11605         * builtins.c (apply_args_size, apply_result_size, result_vector)
11606         (expand_builtin_apply_args_1, expand_builtin_apply)
11607         (expand_builtin_return): Update accordingly.
11609 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11611         * cse.c (hash_rtx_cb): Hash only the encoded elements.
11612         * cselib.c (cselib_hash_rtx): Likewise.
11613         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
11614         CONST_VECTOR encoding.
11616 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11617             Jeff Law  <law@redhat.com>
11619         PR target/83641
11620         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
11621         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
11622         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
11623         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
11625         PR target/83641
11626         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
11627         explicitly probe *sp in a noreturn function if there were any callee
11628         register saves or frame pointer is needed.
11630 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11632         PR debug/83621
11633         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
11634         BLKmode for ternary, binary or unary expressions.
11636         PR debug/83645
11637         * var-tracking.c (delete_vta_debug_insn): New inline function.
11638         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
11639         insns from get_insns () to NULL instead of each bb separately.
11640         Use delete_vta_debug_insn.  No longer static.
11641         (vt_debug_insns_local, variable_tracking_main_1): Adjust
11642         delete_vta_debug_insns callers.
11643         * rtl.h (delete_vta_debug_insns): Declare.
11644         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
11645         instead of variable_tracking_main.
11647 2018-01-03  Martin Sebor  <msebor@redhat.com>
11649         PR tree-optimization/83603
11650         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
11651         arguments past the endof the argument list in functions declared
11652         without a prototype.
11653         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
11654         Avoid checking when arguments are null.
11656 2018-01-03  Martin Sebor  <msebor@redhat.com>
11658         PR c/83559
11659         * doc/extend.texi (attribute const): Fix a typo.
11660         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
11661         issuing -Wsuggest-attribute for void functions.
11663 2018-01-03  Martin Sebor  <msebor@redhat.com>
11665         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
11666         offset_int::from instead of wide_int::to_shwi.
11667         (maybe_diag_overlap): Remove assertion.
11668         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
11669         * gimple-ssa-sprintf.c (format_directive): Same.
11670         (parse_directive): Same.
11671         (sprintf_dom_walker::compute_format_length): Same.
11672         (try_substitute_return_value): Same.
11674 2018-01-03  Jeff Law  <law@redhat.com>
11676         PR middle-end/83654
11677         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
11678         non-constant residual for zero at runtime and avoid probing in
11679         that case.  Reorganize code for trailing problem to mirror handling
11680         of the residual.
11682 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11684         PR tree-optimization/83501
11685         * tree-ssa-strlen.c (get_string_cst): New.
11686         (handle_char_store): Call get_string_cst.
11688 2018-01-03  Martin Liska  <mliska@suse.cz>
11690         PR tree-optimization/83593
11691         * tree-ssa-strlen.c: Include tree-cfg.h.
11692         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
11693         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
11694         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
11695         to false.
11696         (strlen_dom_walker::before_dom_children): Call
11697         gimple_purge_dead_eh_edges. Dump tranformation with details
11698         dump flags.
11699         (strlen_dom_walker::before_dom_children): Update call by adding
11700         new argument cleanup_eh.
11701         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
11703 2018-01-03  Martin Liska  <mliska@suse.cz>
11705         PR ipa/83549
11706         * cif-code.def (VARIADIC_THUNK): New enum value.
11707         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
11708         thunks.
11710 2018-01-03  Jan Beulich  <jbeulich@suse.com>
11712         * sse.md (mov<mode>_internal): Tighten condition for when to use
11713         vmovdqu<ssescalarsize> for TI and OI modes.
11715 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11717         Update copyright years.
11719 2018-01-03  Martin Liska  <mliska@suse.cz>
11721         PR ipa/83594
11722         * ipa-visibility.c (function_and_variable_visibility): Skip
11723         functions with noipa attribure.
11725 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
11727         * gcc.c (process_command): Update copyright notice dates.
11728         * gcov-dump.c (print_version): Ditto.
11729         * gcov.c (print_version): Ditto.
11730         * gcov-tool.c (print_version): Ditto.
11731         * gengtype.c (create_file): Ditto.
11732         * doc/cpp.texi: Bump @copying's copyright year.
11733         * doc/cppinternals.texi: Ditto.
11734         * doc/gcc.texi: Ditto.
11735         * doc/gccint.texi: Ditto.
11736         * doc/gcov.texi: Ditto.
11737         * doc/install.texi: Ditto.
11738         * doc/invoke.texi: Ditto.
11740 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11742         * vector-builder.h (vector_builder::m_full_nelts): Change from
11743         unsigned int to poly_uint64.
11744         (vector_builder::full_nelts): Update prototype accordingly.
11745         (vector_builder::new_vector): Likewise.
11746         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
11747         (vector_builder::operator ==): Likewise.
11748         (vector_builder::finalize): Likewise.
11749         * int-vector-builder.h (int_vector_builder::int_vector_builder):
11750         Take the number of elements as a poly_uint64 rather than an
11751         unsigned int.
11752         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
11753         from unsigned int to poly_uint64.
11754         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
11755         (vec_perm_indices::new_vector): Likewise.
11756         (vec_perm_indices::length): Likewise.
11757         (vec_perm_indices::nelts_per_input): Likewise.
11758         (vec_perm_indices::input_nelts): Likewise.
11759         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
11760         number of elements per input as a poly_uint64 rather than an
11761         unsigned int.  Use the original encoding for variable-length
11762         vectors, rather than clamping each individual element.
11763         For the second and subsequent elements in each pattern,
11764         clamp the step and base before clamping their sum.
11765         (vec_perm_indices::series_p): Handle polynomial element counts.
11766         (vec_perm_indices::all_in_range_p): Likewise.
11767         (vec_perm_indices_to_tree): Likewise.
11768         (vec_perm_indices_to_rtx): Likewise.
11769         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
11770         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
11771         (tree_vector_builder::new_binary_operation): Handle polynomial
11772         element counts.  Return false if we need to know the number
11773         of elements at compile time.
11774         * fold-const.c (fold_vec_perm): Punt if the number of elements
11775         isn't known at compile time.
11777 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11779         * vec-perm-indices.h (vec_perm_builder): Change element type
11780         from HOST_WIDE_INT to poly_int64.
11781         (vec_perm_indices::element_type): Update accordingly.
11782         (vec_perm_indices::clamp): Handle polynomial element_types.
11783         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
11784         (vec_perm_indices::all_in_range_p): Likewise.
11785         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
11786         than shwi trees.
11787         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
11788         polynomial vec_perm_indices element types.
11789         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
11790         * fold-const.c (fold_vec_perm): Likewise.
11791         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
11792         * tree-vect-generic.c (lower_vec_perm): Likewise.
11793         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
11794         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
11795         element type to HOST_WIDE_INT.
11797 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11798             Alan Hayward  <alan.hayward@arm.com>
11799             David Sherwood  <david.sherwood@arm.com>
11801         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
11802         rather than an int.  Use plus_constant.
11803         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
11804         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
11806 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11807             Alan Hayward  <alan.hayward@arm.com>
11808             David Sherwood  <david.sherwood@arm.com>
11810         * calls.c (emit_call_1, expand_call): Change struct_value_size from
11811         a HOST_WIDE_INT to a poly_int64.
11813 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11814             Alan Hayward  <alan.hayward@arm.com>
11815             David Sherwood  <david.sherwood@arm.com>
11817         * calls.c (load_register_parameters): Cope with polynomial
11818         mode sizes.  Require a constant size for BLKmode parameters
11819         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
11820         forces a parameter to be padded at the lsb end in order to
11821         fill a complete number of words, require the parameter size
11822         to be ordered wrt UNITS_PER_WORD.
11824 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11825             Alan Hayward  <alan.hayward@arm.com>
11826             David Sherwood  <david.sherwood@arm.com>
11828         * reload1.c (spill_stack_slot_width): Change element type
11829         from unsigned int to poly_uint64_pod.
11830         (alter_reg): Treat mode sizes as polynomial.
11832 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11833             Alan Hayward  <alan.hayward@arm.com>
11834             David Sherwood  <david.sherwood@arm.com>
11836         * reload.c (complex_word_subreg_p): New function.
11837         (reload_inner_reg_of_subreg, push_reload): Use it.
11839 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11840             Alan Hayward  <alan.hayward@arm.com>
11841             David Sherwood  <david.sherwood@arm.com>
11843         * lra-constraints.c (process_alt_operands): Reject matched
11844         operands whose sizes aren't ordered.
11845         (match_reload): Refer to this check here.
11847 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11848             Alan Hayward  <alan.hayward@arm.com>
11849             David Sherwood  <david.sherwood@arm.com>
11851         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
11852         that the mode size is in the set {1, 2, 4, 8, 16}.
11854 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11855             Alan Hayward  <alan.hayward@arm.com>
11856             David Sherwood  <david.sherwood@arm.com>
11858         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
11859         Use plus_constant instead of gen_rtx_PLUS.
11861 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11862             Alan Hayward  <alan.hayward@arm.com>
11863             David Sherwood  <david.sherwood@arm.com>
11865         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
11866         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
11867         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
11868         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
11869         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
11870         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
11871         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
11872         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
11873         * config/i386/i386.c (ix86_push_rounding): ...this new function.
11874         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
11875         a poly_int64.
11876         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
11877         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
11878         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
11879         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
11880         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
11881         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
11882         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
11883         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
11884         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
11885         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
11886         function.
11887         * expr.c (emit_move_resolve_push): Treat the input and result
11888         of PUSH_ROUNDING as a poly_int64.
11889         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
11890         (emit_push_insn): Likewise.
11891         * lra-eliminations.c (mark_not_eliminable): Likewise.
11892         * recog.c (push_operand): Likewise.
11893         * reload1.c (elimination_effects): Likewise.
11894         * rtlanal.c (nonzero_bits1): Likewise.
11895         * calls.c (store_one_arg): Likewise.  Require the padding to be
11896         known at compile time.
11898 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11899             Alan Hayward  <alan.hayward@arm.com>
11900             David Sherwood  <david.sherwood@arm.com>
11902         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
11903         Use plus_constant instead of gen_rtx_PLUS.
11905 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11906             Alan Hayward  <alan.hayward@arm.com>
11907             David Sherwood  <david.sherwood@arm.com>
11909         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
11910         rather than an int.
11912 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11913             Alan Hayward  <alan.hayward@arm.com>
11914             David Sherwood  <david.sherwood@arm.com>
11916         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
11917         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
11918         via stack temporaries.  Treat the mode size as polynomial too.
11920 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11921             Alan Hayward  <alan.hayward@arm.com>
11922             David Sherwood  <david.sherwood@arm.com>
11924         * expr.c (expand_expr_real_2): When handling conversions involving
11925         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
11926         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
11927         as a poly_uint64 too.
11929 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11930             Alan Hayward  <alan.hayward@arm.com>
11931             David Sherwood  <david.sherwood@arm.com>
11933         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
11935 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11936             Alan Hayward  <alan.hayward@arm.com>
11937             David Sherwood  <david.sherwood@arm.com>
11939         * combine.c (can_change_dest_mode): Handle polynomial
11940         REGMODE_NATURAL_SIZE.
11941         * expmed.c (store_bit_field_1): Likewise.
11942         * expr.c (store_constructor): Likewise.
11943         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
11944         and polynomial REGMODE_NATURAL_SIZE.
11945         (gen_lowpart_common): Likewise.
11946         * reginfo.c (record_subregs_of_mode): Likewise.
11947         * rtlanal.c (read_modify_subreg_p): Likewise.
11949 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11950             Alan Hayward  <alan.hayward@arm.com>
11951             David Sherwood  <david.sherwood@arm.com>
11953         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
11954         numbers of elements.
11956 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11957             Alan Hayward  <alan.hayward@arm.com>
11958             David Sherwood  <david.sherwood@arm.com>
11960         * match.pd: Cope with polynomial numbers of vector elements.
11962 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11963             Alan Hayward  <alan.hayward@arm.com>
11964             David Sherwood  <david.sherwood@arm.com>
11966         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
11967         in a POINTER_PLUS_EXPR.
11969 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11970             Alan Hayward  <alan.hayward@arm.com>
11971             David Sherwood  <david.sherwood@arm.com>
11973         * omp-simd-clone.c (simd_clone_subparts): New function.
11974         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
11975         (ipa_simd_modify_function_body): Likewise.
11977 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11978             Alan Hayward  <alan.hayward@arm.com>
11979             David Sherwood  <david.sherwood@arm.com>
11981         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
11982         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
11983         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
11984         (expand_vector_condition, vector_element): Likewise.
11985         (subparts_gt): New function.
11986         (get_compute_type): Use subparts_gt.
11987         (count_type_subparts): Delete.
11988         (expand_vector_operations_1): Use subparts_gt instead of
11989         count_type_subparts.
11991 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
11992             Alan Hayward  <alan.hayward@arm.com>
11993             David Sherwood  <david.sherwood@arm.com>
11995         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
11996         (vect_compile_time_alias): ...this new function.  Do the calculation
11997         on poly_ints rather than trees.
11998         (vect_prune_runtime_alias_test_list): Update call accordingly.
12000 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12001             Alan Hayward  <alan.hayward@arm.com>
12002             David Sherwood  <david.sherwood@arm.com>
12004         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
12005         numbers of units.
12006         (vect_schedule_slp_instance): Likewise.
12008 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12009             Alan Hayward  <alan.hayward@arm.com>
12010             David Sherwood  <david.sherwood@arm.com>
12012         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
12013         constant and extern definitions for variable-length vectors.
12014         (vect_get_constant_vectors): Note that the number of units
12015         is known to be constant.
12017 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12018             Alan Hayward  <alan.hayward@arm.com>
12019             David Sherwood  <david.sherwood@arm.com>
12021         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
12022         of units as polynomial.  Choose between WIDE and NARROW based
12023         on multiple_p.
12025 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12026             Alan Hayward  <alan.hayward@arm.com>
12027             David Sherwood  <david.sherwood@arm.com>
12029         * tree-vect-stmts.c (simd_clone_subparts): New function.
12030         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
12032 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12033             Alan Hayward  <alan.hayward@arm.com>
12034             David Sherwood  <david.sherwood@arm.com>
12036         * tree-vect-stmts.c (vectorizable_call): Treat the number of
12037         vectors as polynomial.  Use build_index_vector for
12038         IFN_GOMP_SIMD_LANE.
12040 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12041             Alan Hayward  <alan.hayward@arm.com>
12042             David Sherwood  <david.sherwood@arm.com>
12044         * tree-vect-stmts.c (get_load_store_type): Treat the number of
12045         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
12046         for variable-length vectors.
12047         (vectorizable_mask_load_store): Treat the number of units as
12048         polynomial, asserting that it is constant if the condition has
12049         already been enforced.
12050         (vectorizable_store, vectorizable_load): Likewise.
12052 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12053             Alan Hayward  <alan.hayward@arm.com>
12054             David Sherwood  <david.sherwood@arm.com>
12056         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
12057         of units as polynomial.  Punt if we can't tell at compile time
12058         which vector contains the final result.
12060 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12061             Alan Hayward  <alan.hayward@arm.com>
12062             David Sherwood  <david.sherwood@arm.com>
12064         * tree-vect-loop.c (vectorizable_induction): Treat the number
12065         of units as polynomial.  Punt on SLP inductions.  Use an integer
12066         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
12067         cast of such a series for variable-length floating-point
12068         reductions.
12070 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12071             Alan Hayward  <alan.hayward@arm.com>
12072             David Sherwood  <david.sherwood@arm.com>
12074         * tree.h (build_index_vector): Declare.
12075         * tree.c (build_index_vector): New function.
12076         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
12077         of units as polynomial, forcibly converting it to a constant if
12078         vectorizable_reduction has already enforced the condition.
12079         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
12080         to create a {1,2,3,...} vector.
12081         (vectorizable_reduction): Treat the number of units as polynomial.
12082         Choose vectype_in based on the largest scalar element size rather
12083         than the smallest number of units.  Enforce the restrictions
12084         relied on above.
12086 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12087             Alan Hayward  <alan.hayward@arm.com>
12088             David Sherwood  <david.sherwood@arm.com>
12090         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
12091         number of units as polynomial.
12093 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12094             Alan Hayward  <alan.hayward@arm.com>
12095             David Sherwood  <david.sherwood@arm.com>
12097         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
12098         * target.def (autovectorize_vector_sizes): Return the vector sizes
12099         by pointer, using vector_sizes rather than a bitmask.
12100         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
12101         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
12102         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
12103         Likewise.
12104         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
12105         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
12106         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
12107         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
12108         * omp-general.c (omp_max_vf): Likewise.
12109         * omp-low.c (omp_clause_aligned_alignment): Likewise.
12110         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
12111         * tree-vect-loop.c (vect_analyze_loop): Likewise.
12112         * tree-vect-slp.c (vect_slp_bb): Likewise.
12113         * doc/tm.texi: Regenerate.
12114         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
12115         to a poly_uint64.
12116         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
12117         the vector size as a poly_uint64 rather than an unsigned int.
12118         (current_vector_size): Change from an unsigned int to a poly_uint64.
12119         (get_vectype_for_scalar_type): Update accordingly.
12120         * tree.h (build_truth_vector_type): Take the size and number of
12121         units as a poly_uint64 rather than an unsigned int.
12122         (build_vector_type): Add a temporary overload that takes
12123         the number of units as a poly_uint64 rather than an unsigned int.
12124         * tree.c (make_vector_type): Likewise.
12125         (build_truth_vector_type): Take the number of units as a poly_uint64
12126         rather than an unsigned int.
12128 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12129             Alan Hayward  <alan.hayward@arm.com>
12130             David Sherwood  <david.sherwood@arm.com>
12132         * target.def (get_mask_mode): Take the number of units and length
12133         as poly_uint64s rather than unsigned ints.
12134         * targhooks.h (default_get_mask_mode): Update accordingly.
12135         * targhooks.c (default_get_mask_mode): Likewise.
12136         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
12137         * doc/tm.texi: Regenerate.
12139 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12140             Alan Hayward  <alan.hayward@arm.com>
12141             David Sherwood  <david.sherwood@arm.com>
12143         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
12144         * omp-general.c (omp_max_vf): Likewise.
12145         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
12146         (expand_omp_simd): Handle polynomial safelen.
12147         * omp-low.c (omplow_simd_context): Add a default constructor.
12148         (omplow_simd_context::max_vf): Change from int to poly_uint64.
12149         (lower_rec_simd_input_clauses): Update accordingly.
12150         (lower_rec_input_clauses): Likewise.
12152 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12153             Alan Hayward  <alan.hayward@arm.com>
12154             David Sherwood  <david.sherwood@arm.com>
12156         * tree-vectorizer.h (vect_nunits_for_cost): New function.
12157         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
12158         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
12159         (vect_analyze_slp_cost): Likewise.
12160         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
12161         (vect_model_load_cost): Likewise.
12163 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12164             Alan Hayward  <alan.hayward@arm.com>
12165             David Sherwood  <david.sherwood@arm.com>
12167         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
12168         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
12169         from an unsigned int * to a poly_uint64_pod *.
12170         (calculate_unrolling_factor): New function.
12171         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
12173 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12174             Alan Hayward  <alan.hayward@arm.com>
12175             David Sherwood  <david.sherwood@arm.com>
12177         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
12178         from an unsigned int to a poly_uint64.
12179         (_loop_vec_info::slp_unrolling_factor): Likewise.
12180         (_loop_vec_info::vectorization_factor): Change from an int
12181         to a poly_uint64.
12182         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
12183         (vect_get_num_vectors): New function.
12184         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
12185         (vect_get_num_copies): Use vect_get_num_vectors.
12186         (vect_analyze_data_ref_dependences): Change max_vf from an int *
12187         to an unsigned int *.
12188         (vect_analyze_data_refs): Change min_vf from an int * to a
12189         poly_uint64 *.
12190         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
12191         than an unsigned HOST_WIDE_INT.
12192         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
12193         (vect_analyze_data_ref_dependence): Change max_vf from an int *
12194         to an unsigned int *.
12195         (vect_analyze_data_ref_dependences): Likewise.
12196         (vect_compute_data_ref_alignment): Handle polynomial vf.
12197         (vect_enhance_data_refs_alignment): Likewise.
12198         (vect_prune_runtime_alias_test_list): Likewise.
12199         (vect_shift_permute_load_chain): Likewise.
12200         (vect_supportable_dr_alignment): Likewise.
12201         (dependence_distance_ge_vf): Take the vectorization factor as a
12202         poly_uint64 rather than an unsigned HOST_WIDE_INT.
12203         (vect_analyze_data_refs): Change min_vf from an int * to a
12204         poly_uint64 *.
12205         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
12206         vfm1 as a poly_uint64 rather than an int.  Make the same change
12207         for the returned bound_scalar.
12208         (vect_gen_vector_loop_niters): Handle polynomial vf.
12209         (vect_do_peeling): Likewise.  Update call to
12210         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
12211         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
12212         be constant.
12213         * tree-vect-loop.c (vect_determine_vectorization_factor)
12214         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
12215         (vect_get_known_peeling_cost): Likewise.
12216         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
12217         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
12218         (vect_transform_loop): Likewise.  Use the lowest possible VF when
12219         updating the upper bounds of the loop.
12220         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
12221         rather than an int.
12222         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
12223         polynomial unroll factors.
12224         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
12225         (vect_make_slp_decision): Likewise.
12226         (vect_supported_load_permutation_p): Likewise, and polynomial
12227         vf too.
12228         (vect_analyze_slp_cost): Handle polynomial vf.
12229         (vect_slp_analyze_node_operations): Likewise.
12230         (vect_slp_analyze_bb_1): Likewise.
12231         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
12232         than an unsigned HOST_WIDE_INT.
12233         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
12234         (vectorizable_load): Handle polynomial vf.
12235         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
12236         a poly_uint64.
12237         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
12239 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12240             Alan Hayward  <alan.hayward@arm.com>
12241             David Sherwood  <david.sherwood@arm.com>
12243         * match.pd: Handle bit operations involving three constants
12244         and try to fold one pair.
12246 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12248         * tree-vect-loop-manip.c: Include gimple-fold.h.
12249         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
12250         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
12251         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
12252         Add a path that uses a step of VF instead of 1, but disable it
12253         for now.
12254         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
12255         and niters_no_overflow parameters.  Update calls to
12256         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
12257         Create a new SSA name if the latter choses to use a ste other
12258         than zero, and return it via niters_vector_mult_vf_var.
12259         * tree-vect-loop.c (vect_transform_loop): Update calls to
12260         vect_do_peeling, vect_gen_vector_loop_niters and
12261         slpeel_make_loop_iterate_ntimes.
12262         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
12263         (vect_gen_vector_loop_niters): Update declarations after above changes.
12265 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
12267         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
12268         128-bit round to integer instructions.
12269         (ceil<mode>2): Likewise.
12270         (btrunc<mode>2): Likewise.
12271         (round<mode>2): Likewise.
12273 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12275         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
12276         unaligned VSX load/store on P8/P9.
12277         (expand_block_clear): Allow the use of unaligned VSX
12278         load/store on P8/P9.
12280 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12282         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
12283         New function.
12284         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
12285         swap associated with both a load and a store.
12287 2018-01-02  Andrew Waterman  <andrew@sifive.com>
12289         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
12290         * config/riscv/riscv.md (clear_cache): Use it.
12292 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
12294         * web.c: Remove out-of-date comment.
12296 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12298         * expr.c (fixup_args_size_notes): Check that any existing
12299         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
12300         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
12301         (emit_single_push_insn): ...here.
12303 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12305         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
12306         (const_vector_encoded_nelts): New function.
12307         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
12308         (const_vector_int_elt, const_vector_elt): Declare.
12309         * emit-rtl.c (const_vector_int_elt_1): New function.
12310         (const_vector_elt): Likewise.
12311         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
12312         of CONST_VECTOR_ELT.
12314 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12316         * expr.c: Include rtx-vector-builder.h.
12317         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
12318         directly on the tree encoding.
12319         (const_vector_from_tree): Likewise.
12320         * optabs.c: Include rtx-vector-builder.h.
12321         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
12322         sequence of "u" values.
12323         * vec-perm-indices.c: Include rtx-vector-builder.h.
12324         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
12325         directly on the vec_perm_indices encoding.
12327 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12329         * doc/rtl.texi (const_vector): Describe new encoding scheme.
12330         * Makefile.in (OBJS): Add rtx-vector-builder.o.
12331         * rtx-vector-builder.h: New file.
12332         * rtx-vector-builder.c: Likewise.
12333         * rtl.h (rtx_def::u2): Add a const_vector field.
12334         (CONST_VECTOR_NPATTERNS): New macro.
12335         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
12336         (CONST_VECTOR_DUPLICATE_P): Likewise.
12337         (CONST_VECTOR_STEPPED_P): Likewise.
12338         (CONST_VECTOR_ENCODED_ELT): Likewise.
12339         (const_vec_duplicate_p): Check for a duplicated vector encoding.
12340         (unwrap_const_vec_duplicate): Likewise.
12341         (const_vec_series_p): Check for a non-duplicated vector encoding.
12342         Say that the function only returns true for integer vectors.
12343         * emit-rtl.c: Include rtx-vector-builder.h.
12344         (gen_const_vec_duplicate_1): Delete.
12345         (gen_const_vector): Call gen_const_vec_duplicate instead of
12346         gen_const_vec_duplicate_1.
12347         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
12348         (gen_const_vec_duplicate): Use rtx_vector_builder.
12349         (gen_const_vec_series): Likewise.
12350         (gen_rtx_CONST_VECTOR): Likewise.
12351         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
12352         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
12353         Build a new vector rather than modifying a CONST_VECTOR in-place.
12354         (handle_special_swappables): Update call accordingly.
12355         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
12356         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
12357         Build a new vector rather than modifying a CONST_VECTOR in-place.
12358         (handle_special_swappables): Update call accordingly.
12360 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12362         * simplify-rtx.c (simplify_const_binary_operation): Use
12363         CONST_VECTOR_ELT instead of XVECEXP.
12365 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12367         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
12368         the selector elements to be different from the data elements
12369         if the selector is a VECTOR_CST.
12370         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
12371         ssizetype for the selector.
12373 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12375         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
12376         before testing each element individually.
12377         * tree-vect-generic.c (lower_vec_perm): Likewise.
12379 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12381         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
12382         * selftest-run-tests.c (selftest::run_tests): Call it.
12383         * vector-builder.h (vector_builder::operator ==): New function.
12384         (vector_builder::operator !=): Likewise.
12385         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
12386         (vec_perm_indices::all_from_input_p): New function.
12387         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12388         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
12389         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
12390         instead of reading the VECTOR_CST directly.  Detect whether both
12391         vector inputs are the same before constructing the vec_perm_indices,
12392         and update the number of inputs argument accordingly.  Use the
12393         utility functions added above.  Only construct sel2 if we need to.
12395 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12397         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
12398         the broadcast of the low byte.
12399         (expand_mult_highpart): Use an explicit encoding for the permutes.
12400         * optabs-query.c (can_mult_highpart_p): Likewise.
12401         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
12402         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12403         (vectorizable_bswap): Likewise.
12404         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
12405         explicit encoding for the power-of-2 permutes.
12406         (vect_permute_store_chain): Likewise.
12407         (vect_grouped_load_supported): Likewise.
12408         (vect_permute_load_chain): Likewise.
12410 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12412         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
12413         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
12414         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
12415         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12416         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
12417         (vect_gen_perm_mask_any): Likewise.
12419 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12421         * int-vector-builder.h: New file.
12422         * vec-perm-indices.h: Include int-vector-builder.h.
12423         (vec_perm_indices): Redefine as an int_vector_builder.
12424         (auto_vec_perm_indices): Delete.
12425         (vec_perm_builder): Redefine as a stand-alone class.
12426         (vec_perm_indices::vec_perm_indices): New function.
12427         (vec_perm_indices::clamp): Likewise.
12428         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
12429         (vec_perm_indices::new_vector): New function.
12430         (vec_perm_indices::new_expanded_vector): Update for new
12431         vec_perm_indices class.
12432         (vec_perm_indices::rotate_inputs): New function.
12433         (vec_perm_indices::all_in_range_p): Operate directly on the
12434         encoded form, without computing elided elements.
12435         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
12436         encoding.  Update for new vec_perm_indices class.
12437         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
12438         the given vec_perm_builder.
12439         (expand_vec_perm_var): Update vec_perm_builder constructor.
12440         (expand_mult_highpart): Use vec_perm_builder instead of
12441         auto_vec_perm_indices.
12442         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
12443         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
12444         or double series encoding as appropriate.
12445         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
12446         vec_perm_indices instead of auto_vec_perm_indices.
12447         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12448         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12449         (vect_permute_store_chain): Likewise.
12450         (vect_grouped_load_supported): Likewise.
12451         (vect_permute_load_chain): Likewise.
12452         (vect_shift_permute_load_chain): Likewise.
12453         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
12454         (vect_transform_slp_perm_load): Likewise.
12455         (vect_schedule_slp_instance): Likewise.
12456         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12457         (vectorizable_mask_load_store): Likewise.
12458         (vectorizable_bswap): Likewise.
12459         (vectorizable_store): Likewise.
12460         (vectorizable_load): Likewise.
12461         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
12462         vec_perm_indices instead of auto_vec_perm_indices.  Use
12463         tree_to_vec_perm_builder to read the vector from a tree.
12464         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
12465         vec_perm_builder instead of a vec_perm_indices.
12466         (have_whole_vector_shift): Use vec_perm_builder and
12467         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
12468         truncation to calc_vec_perm_mask_for_shift.
12469         (vect_create_epilog_for_reduction): Likewise.
12470         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
12471         from auto_vec_perm_indices to vec_perm_indices.
12472         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
12473         instead of changing individual elements.
12474         (aarch64_vectorize_vec_perm_const): Use new_vector to install
12475         the vector in d.perm.
12476         * config/arm/arm.c (expand_vec_perm_d::perm): Change
12477         from auto_vec_perm_indices to vec_perm_indices.
12478         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
12479         instead of changing individual elements.
12480         (arm_vectorize_vec_perm_const): Use new_vector to install
12481         the vector in d.perm.
12482         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
12483         Update vec_perm_builder constructor.
12484         (rs6000_expand_interleave): Likewise.
12485         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
12486         (rs6000_expand_interleave): Likewise.
12488 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12490         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
12491         to qimode could truncate the indices.
12492         * optabs.c (expand_vec_perm_var): Likewise.
12494 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12496         * Makefile.in (OBJS): Add vec-perm-indices.o.
12497         * vec-perm-indices.h: New file.
12498         * vec-perm-indices.c: Likewise.
12499         * target.h (vec_perm_indices): Replace with a forward class
12500         declaration.
12501         (auto_vec_perm_indices): Move to vec-perm-indices.h.
12502         * optabs.h: Include vec-perm-indices.h.
12503         (expand_vec_perm): Delete.
12504         (selector_fits_mode_p, expand_vec_perm_var): Declare.
12505         (expand_vec_perm_const): Declare.
12506         * target.def (vec_perm_const_ok): Replace with...
12507         (vec_perm_const): ...this new hook.
12508         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
12509         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
12510         * doc/tm.texi: Regenerate.
12511         * optabs.def (vec_perm_const): Delete.
12512         * doc/md.texi (vec_perm_const): Likewise.
12513         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
12514         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
12515         expand_vec_perm for constant permutation vectors.  Assert that
12516         the mode of variable permutation vectors is the integer equivalent
12517         of the mode that is being permuted.
12518         * optabs-query.h (selector_fits_mode_p): Declare.
12519         * optabs-query.c: Include vec-perm-indices.h.
12520         (selector_fits_mode_p): New function.
12521         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
12522         is defined, instead of checking whether the vec_perm_const_optab
12523         exists.  Use targetm.vectorize.vec_perm_const instead of
12524         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
12525         fit in the vector mode before using a variable permute.
12526         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
12527         vec_perm_indices instead of an rtx.
12528         (expand_vec_perm): Replace with...
12529         (expand_vec_perm_const): ...this new function.  Take the selector
12530         as a vec_perm_indices rather than an rtx.  Also take the mode of
12531         the selector.  Update call to shift_amt_for_vec_perm_mask.
12532         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
12533         Use vec_perm_indices::new_expanded_vector to expand the original
12534         selector into bytes.  Check whether the indices fit in the vector
12535         mode before using a variable permute.
12536         (expand_vec_perm_var): Make global.
12537         (expand_mult_highpart): Use expand_vec_perm_const.
12538         * fold-const.c: Includes vec-perm-indices.h.
12539         * tree-ssa-forwprop.c: Likewise.
12540         * tree-vect-data-refs.c: Likewise.
12541         * tree-vect-generic.c: Likewise.
12542         * tree-vect-loop.c: Likewise.
12543         * tree-vect-slp.c: Likewise.
12544         * tree-vect-stmts.c: Likewise.
12545         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
12546         Delete.
12547         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
12548         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
12549         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
12550         (aarch64_vectorize_vec_perm_const): ...this new function.
12551         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12552         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12553         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
12554         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
12555         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12556         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12557         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
12558         into...
12559         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
12560         check for NEON modes.
12561         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
12562         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
12563         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
12564         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
12565         into...
12566         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
12567         the old VEC_PERM_CONST conditions.
12568         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
12569         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
12570         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
12571         (ia64_vectorize_vec_perm_const_ok): Merge into...
12572         (ia64_vectorize_vec_perm_const): ...this new function.
12573         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
12574         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
12575         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
12576         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
12577         * config/mips/mips.c (mips_expand_vec_perm_const)
12578         (mips_vectorize_vec_perm_const_ok): Merge into...
12579         (mips_vectorize_vec_perm_const): ...this new function.
12580         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
12581         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
12582         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
12583         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
12584         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
12585         (rs6000_expand_vec_perm_const): Delete.
12586         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
12587         Delete.
12588         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12589         (altivec_expand_vec_perm_const_le): Take each operand individually.
12590         Operate on constant selectors rather than rtxes.
12591         (altivec_expand_vec_perm_const): Likewise.  Update call to
12592         altivec_expand_vec_perm_const_le.
12593         (rs6000_expand_vec_perm_const): Delete.
12594         (rs6000_vectorize_vec_perm_const_ok): Delete.
12595         (rs6000_vectorize_vec_perm_const): New function.
12596         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
12597         an element count and rtx array.
12598         (rs6000_expand_extract_even): Update call accordingly.
12599         (rs6000_expand_interleave): Likewise.
12600         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
12601         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
12602         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
12603         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
12604         (rs6000_expand_vec_perm_const): Delete.
12605         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
12606         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12607         (altivec_expand_vec_perm_const_le): Take each operand individually.
12608         Operate on constant selectors rather than rtxes.
12609         (altivec_expand_vec_perm_const): Likewise.  Update call to
12610         altivec_expand_vec_perm_const_le.
12611         (rs6000_expand_vec_perm_const): Delete.
12612         (rs6000_vectorize_vec_perm_const_ok): Delete.
12613         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
12614         reference to the SPE evmerge intructions.
12615         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
12616         an element count and rtx array.
12617         (rs6000_expand_extract_even): Update call accordingly.
12618         (rs6000_expand_interleave): Likewise.
12619         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
12620         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
12621         new function.
12622         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
12624 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12626         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
12627         vector mode and that that mode matches the mode of the data
12628         being permuted.
12629         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
12630         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
12631         directly using expand_vec_perm_1 when forcing selectors into
12632         registers.
12633         (expand_vec_perm_var): New function, split out from expand_vec_perm.
12635 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12637         * optabs-query.h (can_vec_perm_p): Delete.
12638         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
12639         * optabs-query.c (can_vec_perm_p): Split into...
12640         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
12641         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
12642         particular selector is valid.
12643         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12644         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12645         (vect_grouped_load_supported): Likewise.
12646         (vect_shift_permute_load_chain): Likewise.
12647         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
12648         (vect_transform_slp_perm_load): Likewise.
12649         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12650         (vectorizable_bswap): Likewise.
12651         (vect_gen_perm_mask_checked): Likewise.
12652         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
12653         implementations of variable permutation vectors into account
12654         when deciding which selector to use.
12655         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
12656         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
12657         with a false third argument.
12658         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
12659         to test whether the constant selector is valid and can_vec_perm_var_p
12660         to test whether a variable selector is valid.
12662 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12664         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
12665         * optabs-query.c (can_vec_perm_p): Likewise.
12666         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
12667         instead of vec_perm_indices.
12668         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
12669         (vect_gen_perm_mask_checked): Likewise,
12670         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
12671         (vect_gen_perm_mask_checked): Likewise,
12673 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
12675         * optabs-query.h (qimode_for_vec_perm): Declare.
12676         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
12677         (qimode_for_vec_perm): ...this new function.
12678         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
12680 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12682         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
12683         does not have a conditional at the top.
12685 2018-01-02  Richard Biener  <rguenther@suse.de>
12687         * ipa-inline.c (big_speedup_p): Fix expression.
12689 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
12691         PR target/81616
12692         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
12693         for generic 4->6.
12695 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
12697         PR target/81616
12698         Generic tuning.
12699         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
12700         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
12701         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
12702         cond_taken_branch_cost 3->4.
12704 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
12706         PR tree-optimization/83581
12707         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
12708         TODO_cleanup_cfg if any changes have been made.
12710         PR middle-end/83608
12711         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
12712         convert_modes if target mode has the right side, but different mode
12713         class.
12715         PR middle-end/83609
12716         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
12717         last argument when extracting from CONCAT.  If either from_real or
12718         from_imag is NULL, use expansion through memory.  If result is not
12719         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
12720         the parts directly to inner mode, if even that fails, use expansion
12721         through memory.
12723         PR middle-end/83623
12724         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
12725         check for bswap in mode rather than HImode and use that in expand_unop
12726         too.
12728 Copyright (C) 2018 Free Software Foundation, Inc.
12730 Copying and distribution of this file, with or without modification,
12731 are permitted in any medium without royalty provided the copyright
12732 notice and this notice are preserved.