2018-05-22 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / ChangeLog
blobfd57840aa4b01c7e6efa8b0b590f9a01c82a378e
1 2018-05-22  Richard Biener  <rguenther@suse.de>
3         PR tree-optimization/85834
4         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
5         non-constant and non-zero memset arguments.
7 2018-05-22  Martin Liska  <mliska@suse.cz>
9         PR ipa/85607
10         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
12 2018-05-22  Richard Biener  <rguenther@suse.de>
14         PR tree-optimization/85863
15         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
16         comparisons when vectype is specified.
17         (vectorizable_condition): Do not specify vectype for
18         vect_is_simple_cond when SLP vectorizing.
20 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
22         PR target/85657
23         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
24         define __ibm128 as long double.
25         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
26         as a distinct type when IEEE 128-bit support is enabled.
27         (init_float128_ieee): Fix up conversions between IFmode and IEEE
28         128-bit types to use the correct functions.
29         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
30         convert between 128-bit floating point types that have different
31         modes but the same representation, instead of using gen_lowpart to
32         makean alias.
33         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
34         KFmode.
35         (IFKF_reg): New attributes to give the register constraints for
36         IFmode and KFmode.
37         (extend<mode>tf2_internal): New insns to mark an explicit
38         conversion between 128-bit floating point types that have a
39         different mode but share the same representation.
41 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
43         PR tree-optimization/85814
44         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
45         a null return from get_strinfo when unsharing the next
46         strinfo in the chain.
48 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
50         PR gcc/84923
51         * varasm.c (weak_finish): Clean up weak_decls.
53 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
55         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
56         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
57         UNSPEC_UADALP values.
58         * config/aarch64/iterators.md (ABAL): New int iterator.
59         (ABDL2): Likewise.
60         (ADALP): Likewise.
61         (sur): Add mappings for the above.
62         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
63         New define_insn.
64         (aarch64_<sur>abal<mode>_4): Likewise.
65         (aarch64_<sur>adalp<mode>_3): Likewise.
66         (<sur>sadv16qi): New define_expand.
68 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
70         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
71         (*movdf_internal): Ditto.
72         (*rcpsf2_sse): Ditto.
73         (*rsqrtsf2_sse): Ditto.
74         (*sqrt<mode>2_sse): Ditto.
76 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
78         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
79         eor3q<mode>4.
80         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
81         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
82         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
83         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
84         vbcaxq_s64): New.
85         * config/aarch64/arm_neon.h: Likewise.
86         * config/aarch64/iterators.md (VQ_I): New.
88 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
90         * config.gcc: Add arc/t-multilib-linux to tmake_file for
91         arc*-*-linux*.
92         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
93         MULTILIB_DIRNAMES
95 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
97         * config/nds32/constraints.md (S): New constraint.
98         * config/nds32/nds32.md (call_internal): Use constraint S.
99         (call_value_internal): Likewise.
100         (sibcall_internal): Likewise.
101         (sibcall_value_internal): Likewise.
103 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
104             Chung-Ju Wu  <jasonwucj@gmail.com>
106         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
107         into consideration.
109 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
110             Chung-Ju Wu  <jasonwucj@gmail.com>
112         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
113         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
114         (nds32_rtx_costs_impl): Simplify.
115         (nds32_address_cost_impl): Simplify.
116         (nds32_init_rtx_costs): New function.
117         (nds32_rtx_costs_speed_prefer): Likewise.
118         (nds32_rtx_costs_size_prefer): Likewise.
119         (nds32_address_cost_speed_prefer): Likewise.
120         (nds32_address_cost_speed_fwprop): Likewise.
121         (nds32_address_cost_size_prefer): Likewise.
122         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
123         * config/nds32/nds32.c (nds32_option_override): Use
124         nds32_init_rtx_costs function.
126 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
128         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
129         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
130         (TARGET_PIPELINE_N8): Likewise.
131         (TARGET_PIPELINE_N10): Likewise.
132         (TARGET_PIPELINE_N13): Likewise.
133         (TARGET_PIPELINE_GRAYWOLF): Likewise.
135 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
137         * config/nds32/nds32-fpu.md: Update copyright year.
139 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
141         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
143 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
145         * config/nds32/nds32.c
146         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
147         * config/nds32/nds32.opt (minline-asm-r15): New option.
149 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
151         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
152         MASK_HW_ABS.
153         * config/nds32/nds32.md (abssi2): New pattern.
155 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
157         * config/i386/i386.md (rex64namesuffix): New mode attribute.
158         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
159         Merge insn pattern from sse_cvtsi2ss<round_name> and
160         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
161         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
162         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
163         using SWI48 mode iterator.
164         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
165         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
166         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
167         pattern from sse_cvttss2si<round_saeonly_name>
168         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
169         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
170         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
171         using SWI48 mode iterator.
172         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
173         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
174         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
175         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
176         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
177         using SWI48 mode iterator.
178         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
179         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
180         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
181         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
182         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
183         SWI48 mode iterator.
184         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
185         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
186         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
187         pattern from sse_cvttsd2si<round_saeonly_name>
188         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
190 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
192         * config/nds32/nds32-md-auxiliary.c
193         (nds32_valid_smw_lwm_base_p): Refine.
194         (nds32_output_smw_single_word): Refine.
195         (nds32_output_smw_double_word): New.
196         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
198 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
200         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
201         (nds32_output_stack_pop): Refine.
202         (nds32_expand_unaligned_load): Refine.
203         (nds32_expand_unaligned_store): Refine.
205 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
206             Chung-Ju Wu  <jasonwucj@gmail.com>
208         * config/nds32/constants.md: Add TP_REGNUM constant.
209         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
210         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
211         UNSPEC_ADD32.
212         * config/nds32/nds32-doubleword.md: Consider flag_pic.
213         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
214         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
215         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
216         and PIC code generation.
217         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
218         code generation.
219         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
220         optimization.
221         * config/nds32/nds32.md: Support TLS and PIC.
222         * config/nds32/nds32.c: Support TLS and PIC.
223         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
224         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
225         predicate.
227 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
229         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
230         mode with E_ prefix.
232 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
233             Chung-Ju Wu  <jasonwucj@gmail.com>
235         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
236         * config/nds32/nds32-md-auxiliary.c
237         (symbolic_reference_mentioned_p): New.
238         (nds32_legitimize_ict_address): New.
239         (nds32_expand_ict_move): New.
240         (nds32_indirect_call_referenced_p): New.
241         (nds32_symbol_binds_local_p): Delete.
242         (nds32_long_call_p): Modify.
243         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
244         * config/nds32/nds32-protos.h
245         (symbolic_reference_mentioned_p): Declare.
246         (nds32_legitimize_ict_address): Declare.
247         (nds32_expand_ict_move): Declare.
248         (nds32_indirect_call_referenced_p): Declare.
249         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
250         (nds32_relax_group): Use nds32_ict_const_p as condition.
251         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
252         (nds32_asm_file_start): Output ict_model directive in asm code.
253         (nds32_legitimate_address_p): Consider indirect call.
254         (nds32_print_operand): Consider indirect call.
255         (nds32_print_operand_address): Consider indirect call.
256         (nds32_insert_attributes): Handle "indirect_call" attribute.
257         (TARGET_LEGITIMATE_ADDRESS_P): Define.
258         (TARGET_LEGITIMATE_CONSTANT_P): Define.
259         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
260         (TARGET_DELEGITIMIZE_ADDRESS): Define.
261         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
262         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
263         (TARGET_ICT_MODEL_SMALL): Define.
264         (TARGET_ICT_MODEL_LARGE): Define.
265         * config/nds32/nds32.md (movsi): Consider ict model.
266         (call, call_value): Consider ict model.
267         (sibcall, sibcall_value): Consider ict model.
268         * config/nds32/nds32.opt (mict-model): New option.
269         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
270         model.
272 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
273             Monk Chiang  <sh.chiang04@gmail.com>
274             Jim Wilson <jimw@sifive.com>
276         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
277         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
278         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
279         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
280         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
281         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
282         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
283         compute save_libcall_adjustment properly.
284         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
285         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
286         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
287         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
288         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
289         (ABI_SPEC): Handle mabi=ilp32e.
290         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
291         (RVE): Add RVE mask.
292         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
293         <-march>: Add rv32e as an example.
295 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
297         PR c++/82899
298         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
299         (intra_create_variable_infos): Handle C++ constructors.
301 2018-05-18  Martin Liska  <mliska@suse.cz>
303         * passes.def: Remove a redundant pass.
305 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
307         PR bootstrap/85838
308         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
310 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
312         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
313         (ARMv4): Update.
314         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
315         (ARMv6m): Update.
316         (armv2, armv2a, armv3, armv3m): Delete architectures.
317         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
318         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
319         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
320         Delete cpus.
321         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
322         (*mulsidi3adddi): Likewise.
323         (mulsidi3): Likewise.
324         (*mulsidi3_nov6): Likewise.
325         (umulsidi3): Likewise.
326         (umulsidi3_nov6): Likewise.
327         (umaddsidi4): Likewise.
328         (*umulsidi3adddi): Likewise.
329         (smulsi3_highpart): Likewise.
330         (*smulsi3_highpart_nov6): Likewise.
331         (umulsi3_highpart): Likewise.
332         (*umulsi3_highpart_nov6): Likewise.
333         * config/arm/arm.h (arm_arch3m): Delete.
334         * config/arm/arm.c (arm_arch3m): Delete.
335         (arm_option_override_internal): Update armv3-related comment.
336         (arm_configure_build_target): Delete use of isa_bit_mode32.
337         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
338         (arm_rtx_costs_internal): Delete check of arm_arch3m.
339         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
340         (mulsa3): Likewise.
341         (mulusa3): Likewise.
342         * config/arm/arm-protos.h (arm_arch3m): Delete.
343         * config/arm/arm-tables.opt: Regenerate.
344         * config/arm/arm-tune.md: Likewise.
345         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
346         deleted architectures.
348 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
350         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
351         (armv5t, armv5te): New features.
352         (ARMv5, ARMv5e): Delete fgroups.
353         (ARMv5t, ARMv5te): Adjust for above changes.
354         (ARMv6m): Likewise.
355         (armv5, armv5e): Delete arches.
356         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
357         arm_arch5.
358         (*call_reg_arm): Likewise.
359         (*call_value_reg_armv5): Likewise.
360         (*call_value_reg_arm): Likewise.
361         (*call_symbol): Likewise.
362         (*call_value_symbol): Likewise.
363         (*sibcall_insn): Likewise.
364         (*sibcall_value_insn): Likewise.
365         (clzsi2): Likewise.
366         (prefetch): Likewise.
367         (define_split and define_peephole2 dependent on arm_arch5):
368         Likewise.
369         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
370         arm_arch5e.
371         (TARGET_ARM_QBIT): Likewise.
372         (TARGET_DSP_MULTIPLY): Likewise.
373         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
374         (arm_arch5, arm_arch5e): Delete.
375         (arm_arch5t, arm_arch5te): Declare.
376         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
377         (arm_arch5t): Declare.
378         (arm_option_reconfigure_globals): Update for the above.
379         (arm_options_perform_arch_sanity_checks): Update comment, replace
380         use of arm_arch5 with arm_arch5t.
381         (use_return_insn): Likewise.
382         (arm_emit_call_insn): Likewise.
383         (output_return_instruction): Likewise.
384         (arm_final_prescan_insn): Likewise.
385         (arm_coproc_builtin_available): Likewise.
386         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
387         arm_arch5e with arm_arch5t and arm_arch5te.
388         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
389         (arm_arch5t, arm_arch5te): Declare.
390         * config/arm/arm-tables.opt: Regenerate.
391         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
392         * config/arm/t-multilib: Likewise.
393         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
394         instead of arm_arch5.
395         (*call_reg_thumb1): Likewise.
396         (*call_value_reg_thumb1_v5): Likewise.
397         (*call_value_reg_thumb1): Likewise.
398         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
399         unreachable path.
400         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
402 2018-05-18  Martin Liska  <mliska@suse.cz>
404         PR gcov-profile/84846
405         * doc/gcov.texi: Document -t option of gcov tool.
407 2018-05-18  Martin Liska  <mliska@suse.cz>
409         PR gcov-profile/84846
410         * gcov.c (print_usage): Add new -t option.
411         (process_args): Handle the option.
412         (generate_results): Use stdout as output when requested by
413         the option.
415 2018-05-18  Martin Liska  <mliska@suse.cz>
417         PR gcov-profile/84846
418         * coverage.c (coverage_init): Write PWD to .gcno file.
419         * doc/gcov.texi: Document how working directory is printed.
420         * gcov-dump.c (dump_gcov_file): Print PWD.
421         * gcov.c (output_intermediate_file): Likewise.
422         (read_graph_file): Read PWD string.
423         (output_lines): Print PWD.
425 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
427         PR middle-end/85817
428         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
429         for retval and return false if all args to phi are zero.        
431 2018-05-18  Richard Biener  <rguenther@suse.de>
433         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
434         method.
435         (evrp_dom_walker::before_dom_children): Call it.
437 2018-05-18  Richard Biener  <rguenther@suse.de>
439         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
440         results when processing array refs with variable index.
442 2018-05-18  Toon Moene  <toon@moene.org>
444         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
445         directly after that of -floop-interchange. Indicate that both
446         options are enabled by default when specifying -O3. 
448 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
450         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
451         iterator.  Delete separate integer-mode vec_set<mode> expander.
452         (aarch64_simd_vec_setv2di): Delete.
453         (vec_setv2di): Delete.
454         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
455         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
456         the "w, r" alternative.
458 2018-05-18  Martin Liska  <mliska@suse.cz>
460         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
461         * tree-pass.h (make_pass_lower_switch_O0): New function.
462         * tree-switch-conversion.c (node_has_low_bound): Remove.
463         (node_has_high_bound): Likewise.
464         (node_is_bounded): Likewise.
465         (class pass_lower_switch): Make it a template type and create
466         two instances.
467         (pass_lower_switch::execute): Add template argument.
468         (make_pass_lower_switch): New function.
469         (make_pass_lower_switch_O0): New function.
470         (do_jump_if_equal): Remove.
471         (emit_case_nodes): Simplify to just handle all 3 cases and leave
472         all the hard work to tree optimization passes.
474 2018-05-18  Martin Liska  <mliska@suse.cz>
476         * dbgcnt.c (limit_low): Renamed from limit.
477         (limit_high): New variable.
478         (dbg_cnt_is_enabled): Check for upper limit.
479         (dbg_cnt): Adjust dumping.
480         (dbg_cnt_set_limit_by_index): Add new argument for high
481         value.
482         (dbg_cnt_set_limit_by_name): Likewise.
483         (dbg_cnt_process_single_pair): Parse new format.
484         (dbg_cnt_process_opt): Use strtok.
485         (dbg_cnt_list_all_counters): Remove 'value' and add
486         'limit_high'.
487         * doc/invoke.texi: Document changes.
489 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
491         * doc/sourcebuild.texi (scalar_all_fma): Document.
492         * tree.def (FMA_EXPR): Delete.
493         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
494         * internal-fn.c (ternary_direct): New macro.
495         (expand_ternary_optab_fn): Likewise.
496         (direct_ternary_optab_supported_p): Likewise.
497         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
498         * builtins.c (fold_builtin_fma): Delete.
499         (fold_builtin_3): Don't call it.
500         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
501         * expr.c (expand_expr_real_2): Likewise.
502         * fold-const.c (operand_equal_p): Likewise.
503         (fold_ternary_loc): Likewise.
504         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
505         * gimple.c (DEFTREECODE): Likewise.
506         * gimplify.c (gimplify_expr): Likewise.
507         * optabs-tree.c (optab_for_tree_code): Likewise.
508         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
509         * tree-eh.c (operation_could_trap_p): Likewise.
510         (stmt_could_throw_1_p): Likewise.
511         * tree-inline.c (estimate_operator_cost): Likewise.
512         * tree-pretty-print.c (dump_generic_node): Likewise.
513         (op_code_prio): Likewise.
514         * tree-ssa-loop-im.c (stmt_cost): Likewise.
515         * tree-ssa-operands.c (get_expr_operands): Likewise.
516         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
517         * fold-const-call.h (fold_fma): Delete.
518         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
519         CFN_FNMA and CFN_FNMS.
520         (fold_fma): Delete.
521         * genmatch.c (combined_fn): New enum.
522         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
523         (commutative_op): New function.
524         (commutate): Use it.  Handle more than 2 operands.
525         (dt_operand::gen_gimple_expr): Use commutative_op.
526         (parser::parse_expr): Allow :c to be used with non-binary
527         operators if the commutative operand is known.
528         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
529         CFN_FMS, CFN_FNMA and CFN_FNMS.
530         (backprop::process_assign_use): Remove FMA_EXPR handling.
531         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
532         (gen_hsa_fma): New function.
533         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
534         IFN_FNMA and IFN_FNMS.
535         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
536         * gimple-fold.h (follow_all_ssa_edges): Declare.
537         * gimple-fold.c (follow_all_ssa_edges): New function.
538         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
539         gimple_build interface and use follow_all_ssa_edges to fold the result.
540         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
541         instead of checking for optabs directly.
542         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
543         rather than FMA_EXPRs.
544         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
545         call to IFN_FMA instead of an FMA_EXPR.
547 2018-05-17  Jim Wilson  <jimw@sifive.com>
549         * expr.c (do_tablejump): When converting index to Pmode, if we have a
550         sign extended promoted subreg, and the range does not have the sign bit
551         set, then do a sign extend.
553         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
554         test, check for sign extended subreg and/or constant operands, and
555         do a sign extend in that case.
557 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
559         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
560         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
561         Add untyped.
562         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
563         Change logics_shift_reg to logics_shift_imm.
564         (thunderx2t99_fp_loadpair_basic): Delete.
565         (thunderx2t99_fp_storepair_basic): Delete.
566         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
567         (thunderx2t99_asimd_polynomial): Delete.
568         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
569         and neon_fp_mul_d_scalar_q.
570         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
571         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
572         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
573         (thunderx2t99_asimd_lut): Add missing tbl types.
574         (thunderx2t99_asimd_ext): Delete.
575         (thunderx2t99_asimd_load1_1_mult): Delete.
576         (thunderx2t99_asimd_load1_2_mult): Delete.
577         (thunderx2t99_asimd_load1_ldp): New.
578         (thunderx2t99_asimd_load1): New.
579         (thunderx2t99_asimd_load2): Add missing *load2* types.
580         (thunderx2t99_asimd_load3): New.
581         (thunderx2t99_asimd_load4): New.
582         (thunderx2t99_asimd_store1_1_mult): Delete.
583         (thunderx2t99_asimd_store1_2_mult): Delete.
584         (thunderx2t99_asimd_store2_mult): Delete.
585         (thunderx2t99_asimd_store2_onelane): Delete.
586         (thunderx2t99_asimd_store_stp): New.
587         (thunderx2t99_asimd_store1): New.
588         (thunderx2t99_asimd_store2): New.
589         (thunderx2t99_asimd_store3): New.
590         (thunderx2t99_asimd_store4): New.
592 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
594         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
595         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
597 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
598             Segher Boessenkool  <segher@kernel.crashing.org>
600         PR target/85698
601         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
602         operand.
604 2018-05-17  Richard Biener  <rguenther@suse.de>
606         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
607         for pruning loop and prune defs feeding only already visited PHIs.
609 2018-05-17  Richard Biener  <rguenther@suse.de>
611         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
613 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
614             Richard Biener  <rguenther@suse.de>
616         PR tree-optimization/85793
617         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
618         for VMAT_ELEMENTWISE.
620 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
622         * internal-fn.h (lookup_internal_fn): Declare
623         * internal-fn.c (lookup_internal_fn): New function.
624         * gimple.c (gimple_build_call_from_tree): Handle calls to
625         internal functions.
626         * gimple-pretty-print.c (dump_gimple_call): Print "." before
627         internal function names.
628         * tree-pretty-print.c (dump_generic_node): Likewise.
629         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
631 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
633         * gimple-fold.h (gimple_build): Make the function forms take
634         combined_fn rather than built_in_function.
635         (gimple_simplify): Likewise.
636         * gimple-match-head.c (gimple_simplify): Likewise.
637         * gimple-fold.c (gimple_build): Likewise.
638         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
639         rather than gimple_build_call_internal.
640         (get_initial_defs_for_reduction): Likewise.
641         (vect_create_epilog_for_reduction): Likewise.
642         (vectorizable_live_operation): Likewise.
644 2018-05-17  Martin Liska  <mliska@suse.cz>
646         * gimple-ssa-sprintf.c (format_directive): Do not use
647         space in between 'G_' and '('.
649 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
651         PR target/85323
652         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
653         even if the mask is not all ones.
655         PR target/85323
656         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
657         vector.
658         (ix86_gimple_fold_builtin): Likewise.
660         PR target/85323
661         * config/i386/i386.c: Include tree-vector-builder.h.
662         (ix86_vector_shift_count): New function.
663         (ix86_fold_builtin): Fold shift builtins by scalar count.
664         (ix86_gimple_fold_builtin): Likewise.
666         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
667         _mm512_setzero): New intrinsics.
669 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
670             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
672         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
673         code generation for cases where splatting a value is not useful.
674         * simplify-rtx.c (simplify_ternary_operation): Simplify
675         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
676         mode to a vec_concat.
678 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
680         * config.gcc: Support "goldmont-plus".
681         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
682         "goldmont-plus".
683         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
684         PROCESSOR_GOLDMONT_PLUS.
685         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
686         (processor_target_table): Add "goldmont-plus".
687         (PTA_GOLDMONT_PLUS): Define.
688         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
689         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
690         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
691         (fold_builtin_cpu): Add "goldmont-plus".
692         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
693         (ix86_option_override_internal): Add "goldmont-plus".
694         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
695         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
696         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
697         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
699 2018-05-17  Richard Biener  <rguenther@suse.de>
701         PR tree-optimization/85757
702         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
703         remove defs that only feed that PHI from further processing.
705 2018-05-16  Jim Wilson  <jimw@sifive.com>
707         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
708         asterisk to name.
709         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
711 2018-05-16  Mark Wielaard  <mark@klomp.org>
713         * dwarf2out.c (count_index_strings): New function.
714         (output_indirect_strings): Call count_index_strings and generate
715         header for dwarf_version >= 5.
717 2018-05-16  Mark Wielaard  <mark@klomp.org>
719         * dwarf2out.c (dwarf_FORM): New function.
720         (set_indirect_string): Use dwarf_FORM.
721         (reset_indirect_string): Likewise.
722         (size_of_die): Likewise.
723         (value_format): Likewise.
724         (output_die): Likewise.
725         (add_skeleton_AT_string): Likewise.
726         (output_macinfo_op): Likewise.
727         (index_string): Likewise.
728         (output_index_string_offset): Likewise.
729         (output_index_string): Likewise.
730         (count_index_strings): Likewise.
732 2018-05-16  Carl Love  <cel@us.ibm.com>
734         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
735         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
737 2018-05-16  Martin Jambor  <mjambor@suse.cz>
739         * ipa-prop.c (ipa_free_all_edge_args): Remove.
740         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
742 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
744         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
745         (fnma<mode>4): Likewise.
746         (fms<mode>4): Likewise.
747         (fnms<mode>4): Likewise.
748         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
749         (aarch64_fnma<mode>4): Likewise.
750         (aarch64_fms<mode>4): Likewise.
751         (aarch64_fnms<mode>4): Likewise.
752         (aarch64_fnmadd<mode>4): Likewise.
754 2018-05-16  Jason Merrill  <jason@redhat.com>
756         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
758 2018-05-16  Richard Biener  <rguenther@suse.de>
760         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
761         (dump_stmt_cost): Declare.
762         (add_stmt_cost): Dump cost we add.
763         (add_stmt_costs): New function.
764         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
765         No longer exported.
766         (vect_analyze_stmt): Adjust prototype.
767         (vectorizable_condition): Likewise.
768         (vectorizable_live_operation): Likewise.
769         (vectorizable_reduction): Likewise.
770         (vectorizable_induction): Likewise.
771         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
772         cost vector to pass to vectorizable_ and record afterwards.
773         (vect_model_reduction_cost): Take cost vector argument and adjust.
774         (vect_model_induction_cost): Likewise.
775         (vectorizable_reduction): Likewise.
776         (vectorizable_induction): Likewise.
777         (vectorizable_live_operation): Likewise.
778         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
779         SLP_TREE_NUMBER_OF_VEC_STMTS.
780         (vect_analyze_slp_cost_1): Remove.
781         (vect_analyze_slp_cost): Likewise.
782         (vect_slp_analyze_node_operations): Take visited args and
783         a target cost vector.  Avoid processing already visited stmt sets.
784         (vect_slp_analyze_operations): Use a local cost vector to gather
785         costs and register those of non-discarded instances.
786         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
787         (vect_schedule_slp_instance): Remove copying of
788         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
789         zero.
790         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
791         adding cost.  Record cost entry location.
792         (vect_prologue_cost_for_slp_op): Function to compute cost of
793         a constant or invariant generated for SLP vect in the prologue,
794         split out from vect_analyze_slp_cost_1.
795         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
796         (vect_model_promotion_demotion_cost): Likewise.
797         (vect_model_store_cost): Likewise, make static.
798         (vect_model_load_cost): Likewise.
799         (vectorizable_bswap): Add cost vector arg and adjust.
800         (vectorizable_call): Likewise.
801         (vectorizable_simd_clone_call): Likewise.
802         (vectorizable_conversion): Likewise.
803         (vectorizable_assignment): Likewise.
804         (vectorizable_shift): Likewise.
805         (vectorizable_operation): Likewise.
806         (vectorizable_store): Likewise.
807         (vectorizable_load): Likewise.
808         (vectorizable_condition): Likewise.
809         (vectorizable_comparison): Likewise.
810         (can_vectorize_live_stmts): Likewise.
811         (vect_analyze_stmt): Likewise.
812         (vect_transform_stmt): Adjust calls to vectorizable_*.
813         * tree-vectorizer.c: Include gimple-pretty-print.h.
814         (dump_stmt_cost): New function.
816 2018-05-16  Richard Biener  <rguenther@suse.de>
818         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
819         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
820         * tree-ssa-dse.c: Include tree-ssa-loop.h.
821         (check_name): New callback.
822         (dse_classify_store): Track cycles via a visited bitmap of PHI
823         defs and simplify handling of in-loop and across loop dead stores
824         and properly fail for loop-variant refs.  Handle byte-tracking with
825         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
826         limiting the walk.
828 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
830         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
831         (vect_get_mask_type_for_stmt): Likewise.
832         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
833         split out from...
834         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
835         to determine the statement's vector type and the vector type that
836         should be used for calculating nunits.  Deal with cases in which
837         the type has to be deferred.
838         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
839         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
840         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
841         (vect_determine_vf_for_stmt): New functions, split out from...
842         (vect_determine_vectorization_factor): ...here.
843         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
844         (vect_get_mask_type_for_stmt): New functions, split out from
845         vect_determine_vectorization_factor.
847 2018-05-16  Richard Biener  <rguenther@suse.de>
849         * tree-cfg.c (verify_gimple_assign_ternary): Properly
850         verify the [VEC_]COND_EXPR embedded comparison.
852 2018-05-15  Martin Sebor  <msebor@redhat.com>
854         PR tree-optimization/85753
855         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
856         RECORD_TYPE in addition to ARRAY_TYPE.
858 2018-05-15  Martin Sebor  <msebor@redhat.com>
860         PR middle-end/85643
861         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
863 2018-05-15  Richard Biener  <rguenther@suse.de>
865         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
866         add by_clobber_p one.  Change algorithm to collect all defs
867         representing uses we need to walk and try reducing them to
868         a single one before failing.
869         (dse_dom_walker::dse_optimize_stmt): Adjust.
871 2018-05-13  Mark Wielaard  <mark@klomp.org>
873         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
874         (size_of_loc_descr): Likewise.
875         (output_loc_operands): Likewise.
876         (output_loc_operands_raw): Likewise.
877         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
878         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
879         (hash_loc_operands): Likewise.
880         (compare_loc_operands): Likewise.
882 2018-05-14  Mark Wielaard  <mark@klomp.org>
884         * dwarf2out.c (count_index_addrs): New function.
885         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
887 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
889         PR tree-optimization/83648
890         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
891         return value as malloc candidate.
893 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
895         PR ipa/85734
896         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
897         as true in call to suggest_attribute.
899 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
901         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
902         -mreadonly-in-sdata.
904 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
906         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
907         New pattern.
908         (aarch64_crypto_aesd_fused): Likewise.
910 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
912         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
913         (movsi_aarch64): Likewise.
914         (load_pairsi): Likewise.
915         (load_pairdi): Likewise.
916         (store_pairsi): Likewise.
917         (store_pairdi): Likewise.
918         (load_pairsf): Likewise.
919         (load_pairdf): Likewise.
920         (store_pairsf): Likewise.
921         (store_pairdf): Likewise.
922         (zero_extend): Likewise.
923         (trunc): Swap alternatives.
924         (fcvt_target): Add '?' to prefer w over r.
926 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
928         PR target/85756
929         * config/i386/i386.md: Disallow non-commutative arithmetics in
930         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
931         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
932         in the peephole2 before it.
934 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
936         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
937         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
938         (ix86_handle_option): Handle -mcldemote.
939         * config.gcc: New header.
940         * config/i386/cldemoteintrin.h: New file.
941         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
942         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
943         -mcldemote.
944         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
945         OPTION_MASK_ISA_CLDEMOTE.
946         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
947         (ix86_valid_target_attribute_inner_p): Ditto.
948         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
949         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
950         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
951         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
952         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
953         (cldemote): New.
954         * config/i386/i386.opt: Add -mcldemote.
955         * config/i386/x86intrin.h: New header.
956         * doc/invoke.texi: Add -mcldemote.
958 2018-05-14  Richard Biener  <rguenther@suse.de>
960         * doc/match-and-simplify.texi: Adjust :s documentation.
962 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
964         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
965         intended memcpy size.
966         (REORDER_45): Likewise.
968 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
970         * sort.cc: New file.
971         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
972         * vec.c (qsort_chk): Use gcc_qsort.
973         * Makefile.in (OBJS-libcommon): Add sort.o.
974         (build/sort.o): New target.  Use it...
975         (BUILD_RTL): ... here, and...
976         (build/gencfn-macros): ... here, and...
977         (build/genmatch): ... here.
979 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
980             Chung-Ju Wu  <jasonwucj@gmail.com>
982         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
983         * config/nds32/nds32-graywolf.md: New file.
984         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
985         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
986         pipeline.
987         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
988         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
989         * config/nds32/nds32.md (pipeline_model): Add graywolf.
990         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
991         * config/nds32/pipelines.md: Include n15 settings.
993 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
994             Chung-Ju Wu  <jasonwucj@gmail.com>
996         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
997         * config/nds32/nds32-n13.md: New file.
998         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
999         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1000         pipeline.
1001         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1002         * config/nds32/nds32.md (pipeline_model): Add n13.
1003         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1004         * config/nds32/pipelines.md: Include n13 settings.
1006 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
1007             Chung-Ju Wu  <jasonwucj@gmail.com>
1009         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1010         * config/nds32/nds32-n10.md: New file.
1011         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1012         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1013         pipeline.
1014         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1015         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1016         * config/nds32/nds32.md (pipeline_model): Add n10.
1017         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1018         * config/nds32/pipelines.md: Include n10 settings.
1020 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
1021             Kito Cheng  <kito.cheng@gmail.com>
1022             Chung-Ju Wu  <jasonwucj@gmail.com>
1024         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1025         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1026         Add enum values for DSP extension instructions.
1027         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1028         New constraints.
1029         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1030         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1031         New code iterators.
1032         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1033         * config/nds32/nds32-dspext.md: New file for DSP implementation.
1034         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1035         * config/nds32/nds32-intrinsic.md: Likewise.
1036         * config/nds32/nds32_intrinsic.h: Likewise.
1037         * config/nds32/nds32-md-auxiliary.c: Likewise.
1038         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1039         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1040         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1041         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1042         * config/nds32/nds32-protos.h: New declarations for DSP extension.
1043         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1044         TYPE_DMAC in switch statement.
1045         * config/nds32/nds32.c: New checking and implementation for DSP
1046         extension instructions.
1047         * config/nds32/nds32.h: Likewise.
1048         * config/nds32/nds32.md: Likewise.
1049         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1050         * config/nds32/predicates.md: Implement new predicates for DSP
1051         extension.
1053 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
1055         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1056         Reformat alternatives and attributes so it is easier to identify
1057         which constraints/attributes go with which instruction.
1058         (mov<mode>_hardfloat32, FMOVE64): Likewise.
1059         (mov<mode>_softfloat32, FMOVE64): Likewise.
1060         (mov<mode>_hardfloat64, FMOVE64): Likewise.
1061         (mov<mode>_softfloat64, FMOVE64): Likewise.
1063 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1065         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1066         subsection.
1067         (Basic PowerPC Built-in Functions): The new name of the
1068         subsection previously known as "PowerPC Built-in Functions".
1069         (Basic PowerPC Built-in Functions Available on all Configurations):
1070         New subsubsection.
1071         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1072         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1073         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1074         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1076 2018-05-11  Martin Jambor  <mjambor@suse.cz>
1078         PR ipa/85655
1079         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1080         single const.
1082 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
1084         PR target/85733
1085         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1087 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
1089         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1090         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1091         (ix86_handle_option): Handle -mwaitpkg.
1092         * config.gcc: New header.
1093         * config/i386/cpuid.h (bit_WAITPKG): New bit.
1094         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1095         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1096         function type.
1097         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1098         OPTION_MASK_ISA_WAITPKG.
1099         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1100         (ix86_option_override_internal): Add PTA_WAITPKG.
1101         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1102         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1103         IX86_BUILTIN_TPAUSE.
1104         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1105         __builtin_ia32_umwait and __builtin_ia32_tpause.
1106         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1107         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1108         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1109         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1110         UNSPECV_TPAUSE): New.
1111         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1112         * config/i386/i386.opt: Add -mwaitpkg.
1113         * config/i386/waitpkgintrin.h: New file.
1114         * config/i386/x86intrin.h: New header.
1115         * doc/invoke.texi: Add -mwaitpkg.
1117 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
1119         PR target/85606
1120         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1121         equivalent.
1122         (cortex-m0): Use armv6s-m isa.
1123         (cortex-m0plus): Likewise.
1124         (cortex-m1): Likewise.
1125         (cortex-m0.small-multiply): Likewise.
1126         (cortex-m0plus.small-multiply): Likewise.
1127         (cortex-m1.small-multiply): Likewise.
1129 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
1130             Jakub Jelinek  <jakub@redhat.com>
1132         PR tree-optimization/85692
1133         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1134         source permute as well.
1136 2018-05-11  Martin Liska  <mliska@suse.cz>
1138         PR sanitizer/85556
1139         * doc/extend.texi: Document LLVM style format for no_sanitize
1140         attribute.
1142 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
1144         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1145         mode_supports_vsx_dform_quad to mode_supports_dq_form.
1146         (mode_supports_vsx_dform_quad): Likewise.
1147         (mode_supports_vmx_dform): Move these functions to be next to the
1148         other mode_supports functions.
1149         (mode_supports_dq_form): Likewise.
1150         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1151         mode_supports_dq_form.
1152         (reg_offset_addressing_ok_p): Likewise.
1153         (offsettable_ok_by_alignment): Likewise.
1154         (rs6000_legitimate_offset_address_p): Likewise.
1155         (legitimate_lo_sum_address_p): Likewise.
1156         (rs6000_legitimize_address): Likewise.
1157         (rs6000_legitimize_reload_address): Likewise.
1158         (rs6000_secondary_reload_inner): Likewise.
1159         (rs6000_preferred_reload_class): Likewise.
1160         (rs6000_output_move_128bit): Likewise.
1162 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
1164         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1165         Generate SImode target register for null target.
1166         <case IX86_BUILTIN_XGETBV>: Ditto.
1167         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1168         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1170 2018-05-10  Carl Love  <cel@us.ibm.com>
1172         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1173         dcbtt and dcbtstt if operands[2] is 0.
1175 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
1177         PR target/85693
1178         * config/i386/sse.md (usadv64qi): New expander.
1180 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
1182         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1183         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1184         -maltivec=be support.
1185         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1186         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1187         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1188         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1189         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1190         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1191         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1192         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1193         altivec_vsumsws): Adjust.
1194         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1195         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1196         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1197         support.
1198         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1199         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1200         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1201         (altivec_lve<VI_char>x): Delete expand.
1202         (*altivec_lve<VI_char>x_internal): Rename to...
1203         (altivec_lve<VI_char>x): ... this.
1204         (altivec_lvxl_<mode>): Delete expand.
1205         (*altivec_lvxl_<mode>_internal): Rename to ...
1206         (altivec_lvxl_<mode>): ... this.
1207         (altivec_stvxl_<mode>): Delete expand.
1208         (*altivec_stvxl_<mode>_internal): Rename to ...
1209         (altivec_stvxl_<mode>): ... this.
1210         (altivec_stve<VI_char>x): Delete expand.
1211         (*altivec_stve<VI_char>x_internal): Rename to ...
1212         (altivec_stve<VI_char>x): ... this.
1213         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1214         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1215         reduc_plus_scal_<mode>): Adjust.
1216         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1217         comment.
1218         (rs6000_cpu_cpp_builtins): Adjust.
1219         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1220         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1221         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1222         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1223         -maltivec=be support.
1224         (rs6000_split_vec_extract_var): Adjust.
1225         (rs6000_split_v4si_init): Adjust.
1226         (swap_selector_for_mode): Delete.
1227         (altivec_expand_lvx_be, altivec_expand_stvx_be,
1228         altivec_expand_stvex_be): Delete.
1229         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1230         -maltivec=be support.
1231         (rs6000_gimple_fold_builtin): Ditto.
1232         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1233         Adjust.
1234         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1235         (TARGET_DIRECT_MOVE_64BIT): Adjust.
1236         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1237         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1238         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1239         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1240         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1241         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1242         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1243         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1244         anonymous split): Adjust.
1245         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1246         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1248 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
1250         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1251         when --with-gxx-include-dir is also specified.
1252         * configure: Regenerate.
1254 2018-05-09  Jim Wilson  <jimw@sifive.com>
1256         PR target/84797
1257         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1258         * config/riscv/t-withmultilib: New.
1259         * config/riscv/withmultilib.h: New.
1260         * doc/install.texi: Document RISC-V --with-multilib-list support.
1262 2018-05-09  Richard Biener  <rguenther@suse.de>
1264         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1265         vector.
1266         (vect_bb_vectorization_profitable_p): Adjust.  Compute
1267         actual scalar cost using the cost vector and the add_stmt_cost
1268         machinery.
1270 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1272         PR rtl-optimization/85645
1273         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1274         in the REG_CFA_REGISTER note for LR, don't leave it empty.
1276 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1278         PR rtl-optimization/85645
1279         * shrink-wrap.c (spread_components): Return a boolean saying if
1280         anything was changed.
1281         (try_shrink_wrapping_separate): Iterate spread_components until
1282         nothing changes anymore.
1284 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1286         PR rtl-optimization/85645
1287         * regrename.c (build_def_use): Also kill the chains that include the
1288         destination of a REG_CFA_REGISTER note.
1290 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1292         PR rtl-optimization/85645
1293         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1294         insn that has a REG_CFA_REGISTER note.
1296 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
1298         * cfgexpand.c (expand_clobber): New function.
1299         (expand_gimple_stmt_1): Use it.
1300         * tree-vect-stmts.c (vect_clobber_variable): New function,
1301         split out from...
1302         (vectorizable_simd_clone_call): ...here.
1303         (vectorizable_store): Emit a clobber either side of an
1304         IFN_STORE_LANES sequence.
1305         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1307 2018-05-09  Tom de Vries  <tom@codesourcery.com>
1309         PR target/85626
1310         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1311         (define_insn "trap_if_false"): Add exit after trap.
1313 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
1315         PR rtl-optimization/85638
1316         * bb-reorder.c: Include common/common-target.h.
1317         (create_forwarder_block): New function extracted from...
1318         (fix_up_crossing_landing_pad): ...here.  Rename into...
1319         (dw2_fix_up_crossing_landing_pad): ...this.
1320         (sjlj_fix_up_crossing_landing_pad): New function.
1321         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1322         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1323         from both partitions and exit the loop after one iteration.
1325 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1327         Revert:
1328         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1329         subsection.
1330         (Basic PowerPC Built-in Functions): The new name of the
1331         subsection previously known as "PowerPC Built-in Functions".
1332         (Basic PowerPC Built-in Functions Available on all Configurations):
1333         New subsubsection.
1334         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1335         subsubsection.
1336         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1337         subsubsection.
1338         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1339         subsubsection.
1340         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1341         subsubsection.
1343 2018-05-08  Jim Wilson  <jimw@sifive.com>
1345         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1346         (LD_EMUL_SUFFIX): New.
1347         (LINK_SPEC): Use it.
1349 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1351         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1352         subsection.
1353         (Basic PowerPC Built-in Functions): The new name of the
1354         subsection previously known as "PowerPC Built-in Functions".
1355         (Basic PowerPC Built-in Functions Available on all Configurations):
1356         New subsubsection.
1357         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1358         subsubsection.
1359         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1360         subsubsection.
1361         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1362         subsubsection.
1363         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1364         subsubsection.
1366 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
1368         PR target/85683
1369         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1370         after cmpelim optimization.
1372 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
1374         * config.gcc: Support "goldmont".
1375         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1376         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1377         PROCESSOR_GOLDMONT.
1378         * config/i386/i386.c (m_GOLDMONT): Define.
1379         (processor_target_table): Add "goldmont".
1380         (PTA_GOLDMONT): Define.
1381         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1382         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1383         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1384         (fold_builtin_cpu): Add "goldmont".
1385         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1386         (ix86_option_override_internal): Add "goldmont".
1387         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1388         (processor_type): Add PROCESSOR_GOLDMONT.
1389         * config/i386/i386.md: Add CPU "glm".
1390         * config/i386/glm.md: New file.
1391         * config/i386/x86-tune.def: Add m_GOLDMONT.
1392         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1394 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
1396         PR target/85572
1397         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1398         E_V4DImode.
1399         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1400         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
1401         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
1403         PR target/85317
1404         * config/i386/i386.c (ix86_fold_builtin): Handle
1405         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1407         PR target/85480
1408         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1409         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1411 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
1413         PR target/85658
1414         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1415         (check_arch): Likewise.
1416         (check_fpu): Return the result rather than printing it.
1417         (end arch): Fix operator precedence.
1418         (end cpu): Likewise.
1419         (END): Print the result from check_fpu.
1421 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
1422             Alan Hayward  <alan.hayward@arm.com>
1423             David Sherwood  <david.sherwood@arm.com>
1425         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1426         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1427         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1428         (*fcmuo<mode>_and): New patterns.
1430 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
1432         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1433         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1434         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1435         (cmp_op, sve_imm_con): New code attributes.
1436         (SVE_COND_INT_CMP, imm_con): Delete.
1437         (cmp_op): Remove above unspecs from int attribute.
1438         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1439         to...
1440         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
1441         comparison-specific unspecs.
1442         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1443         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1444         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1445         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1446         (*vec_fcm<cmp_op><mode>): Rename to...
1447         (*fcm<cmp_op><mode>): ...this and adjust likewise.
1448         (*vec_fcmuo<mode>): Rename to...
1449         (*fcmuo<mode>): ...this and adjust likewise.
1450         (*pred_fcm<cmp_op><mode>): New pattern.
1451         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1452         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1453         functions.
1454         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1455         and UNORDERED.
1456         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1457         (aarch64_emit_sve_predicated_cond): New function.
1458         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1459         (aarch64_emit_unspec_cond_or): Replace with...
1460         (aarch64_emit_sve_or_conds): ...this new function.  Use
1461         aarch64_emit_sve_ptrue_op for the individual comparisons and
1462         aarch64_emit_binop to OR them together.
1463         (aarch64_emit_inverted_unspec_cond): Replace with...
1464         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
1465         aarch64_emit_sve_ptrue_op for the comparison and
1466         aarch64_emit_unop to invert the result.
1467         (aarch64_expand_sve_vec_cmp_float): Update after the above
1468         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
1470 2018-05-07  Nathan Sidwell  <nathan@acm.org>
1472         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1473         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1474         (Backwards Compatibility): Likewise.
1476 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1478         PR bootstrap/85681
1479         Revert:
1480         2018-05-07  Luis Machado  <luis.machado@linaro.org>
1482         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1483         <prefetch_dynamic_strides>: New const bool field.
1484         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1485         prefetch_dynamic_strides.
1486         (exynosm1_prefetch_tune): Likewise.
1487         (thunderxt88_prefetch_tune): Likewise.
1488         (thunderx_prefetch_tune): Likewise.
1489         (thunderx2t99_prefetch_tune): Likewise.
1490         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1491         (aarch64_override_options_internal): Update to set
1492         PARAM_PREFETCH_DYNAMIC_STRIDES.
1493         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1494         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1495         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1496         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1497         prefetch-dynamic-strides setting.
1499         2018-05-07  Luis Machado  <luis.machado@linaro.org>
1501         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1502         <minimum_stride>: New const int field.
1503         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1504         minimum_stride field.
1505         (exynosm1_prefetch_tune): Likewise.
1506         (thunderxt88_prefetch_tune): Likewise.
1507         (thunderx_prefetch_tune): Likewise.
1508         (thunderx2t99_prefetch_tune): Likewise.
1509         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1510         (aarch64_override_options_internal): Update to set
1511         PARAM_PREFETCH_MINIMUM_STRIDE.
1512         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1513         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1514         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1515         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1516         stride is constant and is below the minimum stride threshold.
1518 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1520         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1521         to 512.
1523 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1525         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1526         <prefetch_dynamic_strides>: New const bool field.
1527         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1528         prefetch_dynamic_strides.
1529         (exynosm1_prefetch_tune): Likewise.
1530         (thunderxt88_prefetch_tune): Likewise.
1531         (thunderx_prefetch_tune): Likewise.
1532         (thunderx2t99_prefetch_tune): Likewise.
1533         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1534         (aarch64_override_options_internal): Update to set
1535         PARAM_PREFETCH_DYNAMIC_STRIDES.
1536         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1537         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1538         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1539         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1540         prefetch-dynamic-strides setting.
1542 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1544         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1545         <minimum_stride>: New const int field.
1546         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1547         minimum_stride field.
1548         (exynosm1_prefetch_tune): Likewise.
1549         (thunderxt88_prefetch_tune): Likewise.
1550         (thunderx_prefetch_tune): Likewise.
1551         (thunderx2t99_prefetch_tune): Likewise.
1552         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1553         (aarch64_override_options_internal): Update to set
1554         PARAM_PREFETCH_MINIMUM_STRIDE.
1555         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1556         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1557         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1558         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1559         stride is constant and is below the minimum stride threshold.
1561 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
1563         PR c++/85659
1564         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1565         the type is addressable.  Don't force op into register if it has
1566         BLKmode.
1568 2018-05-05  Roland McGrath  <mcgrathr@google.com>
1570         PR other/77609
1571         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1572         any section for which we don't know a specific type it should have,
1573         regardless of name.  Previously this was done only for the exact
1574         names ".init_array", ".fini_array", and ".preinit_array".
1575         (default_elf_asm_named_section): Add comment about
1576         relationship with default_section_type_flags and SECTION_NOTYPE.
1577         (get_section): Don't consider it a type conflict if one side has
1578         SECTION_NOTYPE and the other doesn't, as long as neither has the
1579         SECTION_BSS et al used in the default_section_type_flags logic.
1581 2018-05-05  Tom de Vries  <tom@codesourcery.com>
1583         PR target/85653
1584         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1585         (workaround_barsyncs): New function.
1586         (nvptx_reorg): Use workaround_barsyncs.
1587         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1588         (define_expand "nvptx_membar_cta"): New define_expand.
1589         (define_insn "*nvptx_membar_cta"): New insn.
1591 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
1593         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1594         To improve optimization opportunities.
1595         * builtin-types.def: The new needed builtin types for the above.
1597 2018-05-04  Richard Biener  <rguenther@suse.de>
1599         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1600         * gimple-ssa-store-merging.c
1601         (imm_store_chain_info::output_merged_store): Remove redundant create,
1602         release split_store vector contents on failure.
1603         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1604         scalar stmt vector on cache hit.
1606 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
1608         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1609         Xilinx FP support.
1610         * config.gcc (powerpc-xilinx-eabi*): Remove.
1611         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1612         support.
1613         (fusion_addis_mem_combo_load): Ditto.
1614         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1615         FP support.
1616         (rs6000_cpu_cpp_builtins): Ditto.
1617         * config/rs6000/rs6000-linux.c
1618         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1619         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1620         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1621         support.
1622         (rs6000_setup_reg_addr_masks): Ditto.
1623         (rs6000_init_hard_regno_mode_ok): Ditto.
1624         (rs6000_option_override_internal): Ditto.
1625         (legitimate_lo_sum_address_p): Ditto.
1626         (rs6000_legitimize_address): Ditto.
1627         (rs6000_legitimize_reload_address): Ditto.
1628         (rs6000_legitimate_address_p): Ditto.
1629         (abi_v4_pass_in_fpr): Ditto.
1630         (setup_incoming_varargs): Ditto.
1631         (rs6000_gimplify_va_arg): Ditto.
1632         (rs6000_split_multireg_move): Ditto.
1633         (rs6000_savres_strategy): Ditto.
1634         (rs6000_emit_prologue_components): Ditto.
1635         (rs6000_emit_epilogue_components): Ditto.
1636         (rs6000_emit_prologue): Ditto.
1637         (rs6000_emit_epilogue): Ditto.
1638         (rs6000_elf_file_end): Ditto.
1639         (rs6000_function_value): Ditto.
1640         (rs6000_libcall_value): Ditto.
1641         * config/rs6000/rs6000.h: Ditto.
1642         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1643         (TARGET_MINMAX): ... this.  New.
1644         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1645         * config/rs6000/rs6000.md: Remove Xilinx FP support.
1646         (*movsi_internal1_single): Delete.
1647         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1648         mfpu=, mxilinx-fpu): Delete.
1649         * config/rs6000/singlefp.h: Delete.
1650         * config/rs6000/sysv4.h: Remove Xilinx FP support.
1651         * config/rs6000/t-rs6000: Ditto.
1652         * config/rs6000/t-xilinx: Delete.
1653         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1654         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1655         (VStype_simple): Delete.
1656         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1657         * config/rs6000/xfpu.h: Delete.
1658         * config/rs6000/xfpu.md: Delete.
1659         * config/rs6000/xilinx.h: Delete.
1660         * config/rs6000/xilinx.opt: Delete.
1661         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1662         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1664 2018-05-04  Tom de Vries  <tom@codesourcery.com>
1666         PR libgomp/85639
1667         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1668         if ignore == 0.
1670 2018-05-04  Richard Biener  <rguenther@suse.de>
1672         PR middle-end/85627
1673         * tree-complex.c (update_complex_assignment): We are always in SSA form.
1674         (expand_complex_div_wide): Likewise.
1675         (expand_complex_operations_1): Likewise.
1676         (expand_complex_libcall): Preserve EH info of the original stmt.
1677         (tree_lower_complex): Handle removed blocks.
1678         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1679         on complex multiplication and division libcall builtins.
1681 2018-05-04  Richard Biener  <rguenther@suse.de>
1683         PR middle-end/85574
1684         * fold-const.c (negate_expr_p): Restrict negation of operand
1685         zero of a division to when we know that can happen without
1686         overflow.
1687         (fold_negate_expr_1): Likewise.
1689 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
1691         PR libstdc++/85466
1692         * real.h (real_nextafter): Declare.
1693         * real.c (real_nextafter): New function.
1694         * fold-const-call.c (fold_const_nextafter): New function.
1695         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1696         CASE_CFN_NEXTTOWARD.
1697         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1698         even when arg1_mode is different from arg0_mode.
1700 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1702         * doc/extend.texi (Deprecated Features): Remove
1703         -ffriend-injection.
1704         (Backwards Compatibility): Likewise.
1705         * doc/invoke.texi (C++ Language Options): Likewise.
1706         (C++ Dialect Options): Likewise.
1708 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
1710         PR target/85530
1711         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1712         _mm512_mask_mullox_epi64): New intrinsics.
1714 2018-05-03  Tom de Vries  <tom@codesourcery.com>
1716         PR testsuite/85106
1717         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1718         dump files): Add offload-tree.
1720 2018-05-03  Richard Biener  <rguenther@suse.de>
1722         PR tree-optimization/85615
1723         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1724         to loops not nested in BBs loop father to avoid creating multi-entry
1725         loops.
1727 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1729         PR tree-optimization/70291
1730         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1731         arguments.  Change return type to tree.  Emit libcall as a new
1732         statement rather than replacing existing one when inplace_p is true.
1733         (expand_complex_multiplication_components): New function.
1734         (expand_complex_multiplication): Expand floating-point complex
1735         multiplication using the above.
1736         (expand_complex_division): Rename inner_type parameter to type.
1737         Update expand_complex_libcall call-site.
1738         (expand_complex_operations_1): Update expand_complex_multiplication
1739         and expand_complex_division call-sites.
1741 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
1743         PR target/85582
1744         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1745         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1746         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1747         the highest significant bit of the shift count mask is clear.  In
1748         check whether and[sq]i3 is needed verify that all significant bits
1749         of the shift count other than the highest are set.
1751 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1753         PR libgomp/82428
1754         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1755         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1756         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1757         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1758         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1759         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1760         __builtin_goacc_parlevel_size.
1762 2018-05-02  Richard Biener  <rguenther@suse.de>
1764         PR tree-optimization/85597
1765         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1766         do not use split vect_get_vec_defs call but call vect_get_slp_defs
1767         directly.
1769 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1771         PR testsuite/85106
1772         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1773         dump files): Add ltrans-tree.
1775 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1777         PR testsuite/85106
1778         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1779         dump files): Add wpa-ipa.
1781 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
1783         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
1784         powerpc*-*-linux*paired* target.
1785         * config/rs6000/750cl.h: Delete.
1786         * config/rs6000/paired.h: Delete.
1787         * config/rs6000/paired.md: Delete.
1788         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1789         float support.
1790         * config/rs6000/rs6000-builtin.def: Remove paired float support.
1791         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1792         comment.  Remove paired float support.
1793         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1794         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1795         VECTOR_PAIRED.
1796         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1797         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1798         declarations.
1799         * config/rs6000/rs6000.c: Remove paired float support.
1800         (paired_expand_vector_init, paired_expand_vector_move,
1801         paired_emit_vector_compare, paired_emit_vector_cond_expr,
1802         (paired_expand_lv_builtin, paired_expand_stv_builtin,
1803         paired_expand_builtin, paired_expand_predicate_builtin,
1804         paired_init_builtins): Delete.
1805         * config/rs6000/rs6000.h: Remove paired float support.
1806         * config/rs6000/rs6000.md: Remove paired float support.
1807         (move_from_CR_ov_bit): Delete.
1808         * config/rs6000/rs6000.opt (mpaired): Delete.
1809         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1810         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1812 2018-05-02  Richard Biener  <rguenther@suse.de>
1814         PR middle-end/85567
1815         * gimplify.c (gimplify_save_expr): When in SSA form allow
1816         SAVE_EXPRs to compute to SSA vars.
1818 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
1820         PR target/85582
1821         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1822         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1823         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1824         clobber operands[2], instead use a new pseudo.  Formatting fixes.
1826 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
1828         PR tree-optimization/85586
1829         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1830         exit early for statements in the same group if the accesses are
1831         not strided.
1833 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1835         PR lto/85451
1836         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
1837         error message.
1839 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
1841         PR tree-optimization/85143
1842         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
1844 2018-05-01  Tom de Vries  <tom@codesourcery.com>
1846         PR lto/85451
1847         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
1848         not found" error message.
1850 2018-05-01  Tom de Vries  <tom@codesourcery.com>
1852         PR other/83786
1853         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
1854         * vec.c (test_ordered_remove_if): New function.
1855         (vec_c_tests): Call test_ordered_remove_if.
1856         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
1857         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
1858         * tree-vect-patterns.c (vect_pattern_recog_1): Use
1859         VEC_ORDERED_REMOVE_IF.
1861 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1863         PR tree-optimization/82665
1864         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
1865         pointer subtraction where arguments come from a memchr call.
1867 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
1869         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
1870         --push-state --as-needed and --pop-state instead of --as-needed and
1871         --no-as-needed if ld supports it.
1872         * configure: Regenerated.
1874         PR web/85578
1875         * doc/install.texi2html: Replace _002d with - and _002a with * in
1876         generated html files using sed.
1878 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1880         PR c++/85523
1881         * gcc-rich-location.c (blank_line_before_p): New function.
1882         (use_new_line): New function.
1883         (gcc_rich_location::add_fixit_insert_formatted): New function.
1884         * gcc-rich-location.h
1885         (gcc_rich_location::add_fixit_insert_formatted): New function.
1887 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1889         * selftest.c (assert_streq): Rename "expected" and "actual" to
1890         "val1" and "val2".  Extend NULL-handling to cover both inputs
1891         symmetrically, while still requiring both to be non-NULL for a pass.
1892         * selftest.h (assert_streq): Rename "expected" and "actual" to
1893         "val1" and "val2".
1894         (ASSERT_EQ): Likewise.
1895         (ASSERT_EQ_AT): Likewise.
1896         (ASSERT_KNOWN_EQ): Likewise.
1897         (ASSERT_KNOWN_EQ_AT): Likewise.
1898         (ASSERT_NE): Likewise.
1899         (ASSERT_MAYBE_NE): Likewise.
1900         (ASSERT_MAYBE_NE_AT): Likewise.
1901         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
1902         the assertion to pass.
1903         (ASSERT_STREQ_AT): Likewise.
1905 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
1907         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
1908         interaction with -pie.
1910 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1912         * selftest.h: Fix alphabetization of per-source-file selftest
1913         declarations.
1915 2018-04-30  Jason Merrill  <jason@redhat.com>
1917         PR c++/61982 - dead stores to destroyed objects.
1918         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
1919         of clobber.
1921 2018-04-30  Jason Merrill  <jason@redhat.com>
1923         * tree.c (build_clobber): New.
1924         * tree.h: Declare it.
1925         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
1927 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1929         * diagnostic-show-locus.c (layout::layout): Update for
1930         location_get_source_line returning a char_span.
1931         (struct char_span): Move to input.h.
1932         (struct correction): Update for fields in char_span becoming
1933         private.
1934         (struct source_line): Update for location_get_source_line
1935         returning a char_span.
1936         (layout::print_line): Likewise.
1937         * edit-context.c (edited_file::print_content): Likewise.
1938         (edited_file::print_diff_hunk): Likewise.
1939         (edited_file::print_run_of_changed_lines): Likewise.
1940         (edited_file::get_num_lines): Likewise.
1941         (edited_line::edited_line): Likewise.
1942         * final.c (asm_show_source): Likewise.
1943         * input.c (location_get_source_line): Convert return type
1944         from const char * to char_span, losing the final "line_len"
1945         param.
1946         (dump_location_info): Update for the above.
1947         (get_substring_ranges_for_loc): Likewise.  Use a char_span
1948         when handling the literal within the line.
1949         (test_reading_source_line): Update for location_get_source_line
1950         returning a char_span.
1951         * input.h (class char_span): Move here from
1952         diagnostic-show-locus.c, converting from a struct to a class.
1953         Make data members private.
1954         (char_span::operator bool): New.
1955         (char_span::length): New.
1956         (char_span::get_buffer): New.
1957         (char_span::operator[]): New.
1958         (char_span::subspan): Make const.
1959         (char_span::xstrdup): New.
1960         (location_get_source_line): Convert return type from const char *
1961         to char_span, losing the final "line_size" param.
1963 2018-04-30  Jan Hubicka  <jh@suse.cz>
1965         * lto-wrapper.c (ltrans_priorities): New static var.
1966         (cmp_priority): New.
1967         (run_gcc): Read priorities and if doing parallel build order
1968         the Makefile by them.
1970 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
1972         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
1974 2018-04-30  Richard Biener  <rguenther@suse.de>
1976         * tree-cfg.c (verify_address): Remove base argument, add
1977         flag whether to check TREE_ADDRESSABLE and do that.
1978         (verify_expr): Remove.
1979         (verify_types_in_gimple_reference): Add pieces from verify_expr.
1980         (verify_gimple_assign_single): Likewise.
1981         (verify_gimple_switch): Likewise.
1982         (verify_expr_location_1): Dereference tp once.  Add (disabled)
1983         piece from verify_expr.
1984         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
1986 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1988         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
1990 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
1992         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
1993         (small_data_pattern): Likewise.
1994         (arc_rewrite_small_data): Likewise.
1995         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
1996         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
1997         (get_symbol_alignment): New function.
1998         (legitimate_small_data_address_p): Likewise.
1999         (legitimate_scaled_address): Update, call
2000         legitimate_small_data_address_p.
2001         (output_sdata): New static variable.
2002         (arc_print_operand): Update how we handle small data operands.
2003         (arc_print_operand_address): Likewise.
2004         (arc_legitimate_address_p): Update, use
2005         legitimate_small_data_address_p.
2006         (arc_rewrite_small_data_p): Remove.
2007         (arc_rewrite_small_data_1): Likewise.
2008         (arc_rewrite_small_data): Likewise.
2009         (small_data_pattern): Likewise.
2010         (compact_sda_memory_operand): Update to use
2011         legitimate_small_data_address_p and get_symbol_alignment.
2012         (prepare_move_operands): Don't rewite sdata pattern.
2013         (prepare_extend_operands): Remove.
2014         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2015         pattern.
2016         (zero_extendqisi2): Likewise.
2017         (zero_extendhisi2): Likewise.
2018         (extendqihi2): Likewise.
2019         (extendqisi2): Likewise.
2020         (extendhisi2): Likewise.
2021         (addsi3): Likewise.
2022         (subsi3): Likewise.
2023         (andsi3): Likewise.
2024         * config/arc/constraints.md (Usd): Change it to memory constraint.
2026 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
2028         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2029         as source of std instructions.
2030         * config/arc/arc.md (movsi_insn): Update pattern predicate to
2031         allow 6-bit constants as source for store instructions.
2032         (movdi_insn): Update instruction pattern to allow 6-bit constants
2033         as source for store instructions.
2035 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
2037         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2039 2018-04-30  Nathan Sidwell  <nathan@acm.org>
2040             Sandra Loosemore <sandra@codesourcery.com>
2042         * dumpfile.c (dump_open): Allow '-' for stdout.
2043         * doc/invoke.texi (Developer Options): Document dump filename
2044         determination early.  Document stdin/stdout selection.
2046 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
2048         Microblaze Target: PIC data text relative
2050         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2051         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2052         Add declaration.
2053         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2054         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2055         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2056         New addressing mode for data-text relative position indepenedent code.
2057         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2058         'ADDRESS_SYMBOLIC_TXT_REL'.
2059         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2060         (microblaze_legitimate_pic_operand): Exclude function calls from
2061         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2062         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2063         addresses cases.
2064         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2065         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2066         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2067         for 'address + offset'.
2068         (microblaze_expand_prologue): Add new function prologue call for
2069         'r20' assignation.
2070         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2071         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2072         table in case of TARGET_PIC_DATA_TEXT_REL.
2073         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2074         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2075         Add new macros 'UNSPEC_TEXT',
2076         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2077         + exclude function calls from 'UNSPEC_PLT' in case of data text
2078         relative mode.
2079         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2080         new target hook for generating address diff vector tables in case of
2081         flag_pic.
2082         * doc/tm.texi : Regenerate.
2083         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2084         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2085         of addr diff vector generation.
2086         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2087         target hook definition.
2088         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2089         Add default function for generate_pic_addr_diff_vec -> flag_pic.
2090         * doc/invoke.texi (Add new pic option): Add new microblaze pic
2091         option for data text relative.
2093 2018-04-30  Richard Biener  <rguenther@suse.de>
2095         * tree-chrec.h (evolution_function_is_constant_p): Remove
2096         redundant check.
2097         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2099 2018-04-30  Richard Biener  <rguenther@suse.de>
2101         PR bootstrap/85571
2102         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2104 2018-04-30  Richard Biener  <rguenther@suse.de>
2106         PR tree-optimization/28364
2107         PR tree-optimization/85275
2108         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2109         copying first exit test.
2111 2018-04-28  Mark Wielaard  <mark@klomp.org>
2113         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2114         dwarf_version >= 5.
2115         (dwarf_AT): Handle DW_AT_addr_base.
2116         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2118 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
2120         PR target/84431
2121         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2122         (*ashl<dwi>3_doubleword_mask_1): Ditto.
2123         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2124         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2126 2018-04-28  Richard Biener  <rguenther@suse.de>
2128         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2129         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2130         to reflect use.  Only add interesting stmts.
2132 2018-04-27  Martin Jambor  <mjambor@suse.cz>
2134         PR ipa/85549
2135         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2136         the jump function allows for passing through aggregate values.
2138 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
2140         * input.h (in_system_header_at): Convert from macro to inline
2141         function.
2142         (from_macro_expansion_at): Likewise.
2143         (from_macro_definition_at): Likewise.
2145 2018-04-27  Jeff Law  <law@redhat.com>
2147         * config.gcc: Mark tile* targets as deprecated/obsolete.
2149 2018-04-27  Richard Biener  <rguenther@suse.de>
2151         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2152         fix for ILP32.
2154 2018-04-27  Richard Biener  <rguenther@suse.de>
2156         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2158 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
2160         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2161         with Yd constraint. Set "preferred_for_speed" attribute from
2162         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2163         with Yd constraint.
2164         (*movdi_internal): Ditto.
2165         (movti_interunit splitters): Remove
2166         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2167         (movdi_interunit splitters): Ditto.
2168         * config/i386/constraints.md (Ye): Remove.
2169         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2171 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2173         PR target/85512
2174         * config/aarch64/constraints.md (Usg): Limit to 31.
2175         (Usj): Limit to 63.
2177 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
2179         PR tree-optimization/85529
2180         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2181         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2182         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2183         zero extension or masking of the MSB bit.
2184         (optimize_range_tests): Add FIRST_BB argument, pass it through
2185         to optimize_range_tests_var_bound.
2186         (maybe_optimize_range_tests, reassociate_bb): Adjust
2187         optimize_range_tests callers.
2189 2018-04-26  Richard Biener  <rguenther@suse.de>
2190             Jakub Jelinek  <jakub@redhat.com>
2192         * cgraph.h (symbol_table): Just declare debug method here.
2193         * symtab.c (symbol_table::debug): Define.
2195 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
2197         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2199 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
2201         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2202         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2203         (*movdi_internal): Substitute Yi and Yj constraint with x
2204         and Ym and Yn constraint with y constraint.  Update "isa"
2205         attribute and set "preferred_for_speed" attribute from
2206         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2207         (*movsi_internal): Ditto.
2208         (*movdf_internal): Ditto.
2209         (*movsf_internal): Ditto.
2210         (*zero_extendsidi2): Ditto.
2211         * config/i386/sse.md (vec_set<mode>_0): Ditto.
2212         (sse2_loadld): Ditto.
2213         (*vec_extract<ssevecmodelower>_0): Ditto.
2214         (*vec_extractv4si_0_zext_sse4): Ditto.
2215         (vec_concatv2di): Ditto.
2216         (*vec_dup<mode>): Ditto.
2217         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2218         * config/i386/constraints.md (Yi): Remove.
2219         (Yj): Remove.
2220         (Ym): Remove.
2221         (Yn): Remove.
2223 2018-04-26  Nathan Sidwell  <nathan@acm.org>
2225         * dumpfile.c (dump_open): New.
2226         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2227         (dump_finish): Detect stdio/stderr by value not name.
2229 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
2231         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2233 2018-04-26  Tom de Vries  <tom@codesourcery.com>
2235         PR target/84952
2236         * config/nvptx/nvptx.c (verify_neutering_jumps)
2237         (verify_neutering_labels): New function
2238         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2240 2018-04-26  Tom de Vries  <tom@codesourcery.com>
2242         PR target/84025
2243         * config/nvptx/nvptx.c (needs_neutering_p): New function.
2244         (nvptx_single): Use needs_neutering_p to skip over insns that do not
2245         need neutering.
2247 2018-04-26  Richard Biener <rguenther@suse.de>
2248             Tom de Vries  <tom@codesourcery.com>
2250         PR lto/85422
2251         * lto-streamer-out.c (output_function): Fixup loops if required to match
2252         discovery done in the reader.
2254 2018-04-26  Richard Biener  <rguenther@suse.de>
2256         PR tree-optimization/85116
2257         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2258         have a loop exit from the single latch predecessor.  Remove
2259         case of header with just condition.
2260         (ch_base::copy_headers): Exclude infinite loops from any
2261         processing.
2262         (pass_ch::execute): Record exits.
2264 2018-04-26  Richard Biener  <rguenther@suse.de>
2266         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2267         prologue cost vector and pass it to vect_get_load_cost.
2268         (vect_get_peeling_costs_all_drs): Likewise.
2269         (vect_peeling_hash_get_lowest_cost): Likewise.
2270         (vect_enhance_data_refs_alignment): Likewise.
2272 2018-04-26  Richard Biener  <rguenther@suse.de>
2274         PR middle-end/85450
2275         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2276         checking of integer<->pointer conversions.
2277         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2278         sign-/zero-extending pointer types.
2279         (expand_omp_for_static_chunk): Likewise.
2281 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
2282             Jean Lee  <xiaoyur347@gmail.com>
2284         * config/mips/mips.c (mips_asan_shadow_offset): New function.
2285         (TARGET_ASAN_SHADOW_OFFSET): Define.
2286         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2287         true for -fsanitize=address.
2289 2018-04-25  Mark Wielaard  <mark@klomp.org>
2291         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2292         shorter ones.
2294 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
2296         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2297         than "alu", remove explicit "memory" and "imm_disp" attributes.
2298         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2300         PR middle-end/85414
2301         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2302         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2303         gen_lowpart_no_emit.
2305 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
2307         PR target/85473
2308         * config/i386/i386.c (ix86_expand_builtin): Change memory
2309         operand to XI, extend p0 to Pmode.
2310         * config/i386/i386.md: Change unspec volatile and operand
2311         1 mode to XI, change operand 0 mode to P.
2313 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2315         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2316         GET_MODE_MASK before any checking.
2317         (nds32_can_use_bset_p): Likewise.
2318         (nds32_can_use_btgl_p): Likewise.
2320 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2322         * config/nds32/nds32-doubleword.md: New define_split pattern for
2323         illegal register number.
2325 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2327         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2329 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2331         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2333 2018-04-25  Richard Biener  <rguenther@suse.de>
2335         * lto-streamer.h (LTO_major_version): Bump to 8.
2337 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
2339         * BASE-VER: Set to 9.0.0.
2341 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
2343         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2344         in __abskf2 and __powikf2.
2346 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2348         PR target/85512
2349         * config/aarch64/constraints.md (Usg, Usj): New constraints.
2350         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2351         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2352         Use the above on operand 2.  Reindent.
2353         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2355 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2357         PR target/85485
2358         * common/config/i386/i386-common.c (ix86_handle_option): Don't
2359         handle OPT_mcet.
2360         * config/i386/i386.opt (mcet): Removed.
2361         * doc/install.texi: Remove -mcet documentation.
2362         * doc/invoke.texi: Likewise.
2364 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2366         PR target/85485
2367         * doc/install.texi: Remove -mcet from bootstrap-cet.
2369 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2371         PR target/85511
2372         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2373         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2374         if TARGET_64BIT.
2376         PR target/85503
2377         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2378         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2379         containing a CONST_VECTOR.
2381 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
2383         * doc/install.texi: Update newlib dependency for nvptx.
2385 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2387         PR target/85508
2388         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2389         instead of INTVAL when shifting x left.
2391 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
2393         PR tree-optimization/85478
2394         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2395         vect_grouped_store_supported for single element vectors.
2397 2018-04-24  Richard Biener  <rguenther@suse.de>
2399         PR target/85491
2400         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2401         load cost increase to the case of non-constant step.
2403 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2405         PR target/84828
2406         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2407         destination if any_malformed_asm.
2409 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
2411         PR middle-end/85496
2412         * expr.c (store_field): In the bitfield case, if the value comes from
2413         a function call and is returned in registers by means of a PARALLEL,
2414         do not change the mode of the temporary unless BLKmode and VOIDmode.
2416 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
2418         PR rtl-optimization/85423
2419         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2420         dependencies to debug insns when the previous insn is non-debug.
2422 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
2424         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2425         enums into a single definition.
2426         (fls): Fix predicates and printing.
2427         (seti): Likewise.
2429 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
2431         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2432         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2433         and short u6 immediate.
2434         (check_if_valid_sleep_operand): Remove.
2435         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2437 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2439         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2440         flag_always_save_lp condition.
2441         * config/nds32/nds32.opt (malways-save-lp): New option.
2443 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2445         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2446         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2447         * config/nds32/nds32.h
2448         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2449         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2451 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2453         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2454         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2456 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2457             Chung-Ju Wu  <jasonwucj@gmail.com>
2459         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2460         Declare.
2461         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2462         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2464 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2466         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2468 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2470         * config/nds32/nds32-protos.h (nds32_data_alignment,
2471         nds32_local_alignment): Declare.
2472         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2473         nds32_local_alignment): New functions.
2474         (TARGET_CONSTANT_ALIGNMENT): Define.
2475         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2477 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2479         * config/nds32/nds32.c
2480         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2481         (TARGET_MODES_TIEABLE_P): Likewise.
2483 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2485         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2486         level Ofast and Og.
2488 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
2489             Chung-Ju Wu  <jasonwucj@gmail.com>
2491         * config/nds32/constants.md (unspec_volatile_element): Add enum values
2492         for unaligned access.
2493         * config/nds32/nds32-intrinsic.c: Implementation of expanding
2494         unaligned access.
2495         * config/nds32/nds32-intrinsic.md: Likewise.
2496         * config/nds32/nds32_intrinsic.h: Likewise.
2497         * config/nds32/nds32.h (nds32_builtins): Likewise.
2498         * config/nds32/nds32.opt (munaligned-access): New option.
2499         * config/nds32/nds32.c (nds32_asm_file_start): Display
2500         flag_unaligned_access status.
2502 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
2504         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2505         -mno-relax is present.
2506         * config/riscv/linux.h (LINK_SPEC): Ditto.
2508 2018-04-20  Martin Sebor  <msebor@redhat.com>
2510         PR c/85365
2511         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2512         for null pointers.
2513         (gimple_fold_builtin_stxcpy_chk): Same.
2514         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2516 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
2518         PR target/85456
2519         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2520         __powikf2 when long double is IEEE 128-bit.
2522 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
2524         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2525         step to make sure stack always aligned.
2527 2018-04-20  Carl Love  <cel@us.ibm.com>
2529         PR target/83402
2530         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2531         size check for arg0.
2533 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
2534             Tom de Vries  <tom@codesourcery.com>
2536         PR target/85445
2537         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2538         Emit insns for calls too.
2539         (nvptx_find_par): Always look for worker-level predecessor insn.
2540         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
2541         calls.
2542         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2543         (nvptx_process_pars): Propagate frames for calls.
2545 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
2547         PR target/85469
2548         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2549         Removed.
2550         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2551         (ix86_handle_option): Don't handle OPT_mibt.
2552         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2553         __SHSTK__.
2554         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2555         has_ibt and ibt.
2556         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2557         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2558         (ix86_target_macros): Define __CET__ with flag_cf_protection
2559         for -fcf-protection.
2560         * config/i386/i386.c (isa2_opts): Remove -mibt.
2561         * config/i386/i386.h (TARGET_IBT): Removed.
2562         (TARGET_IBT_P): Likewise.
2563         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2564         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2565         * config/i386/i386.opt (mcet): Update help message.
2566         (mshstk): Likewise.
2567         (mibt): Removed.
2568         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
2569         -mcet as an alias for -mshstk.
2571 2018-04-20  Richard Biener <rguenther@suse.de>
2573         PR middle-end/85475
2574         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2575         complexity by forcing a single use of the multiply operand.
2577 2018-04-20  Martin Jambor  <mjambor@suse.cz>
2579         ipa/85449
2580         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2581         recursion dependency to only apply to non-clones.
2583 2018-04-20  Martin Jambor  <mjambor@suse.cz>
2585         ipa/85447
2586         * ipa-cp.c (create_specialized_node): Check that clones of
2587         self-recursive edges exist during IPA-CP.
2589 2018-04-19  Toon Moene  <toon@moene.org>
2591         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2592         by -O3. 
2594 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2596         PR tree-optimization/85467
2597         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2598         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
2599         VECTOR_CST element to type.
2601 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2603         PR target/85397
2604         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2605         * config/i386/i386.md (builtin_setjmp_setup): Removed.
2606         (builtin_longjmp): Likewise.
2607         (save_stack_nonlocal): New pattern.
2608         (restore_stack_nonlocal): Likewise.
2610 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2612         PR target/85404
2613         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2614         Replace ASM_OUTPUT_LABEL with fprintf.
2616 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2618         PR target/85417
2619         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2620         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2621         * config/i386/i386-c.c (ix86_target_macros_internal): Also
2622         define __IBT__ and __SHSTK__ for -fcf-protection.
2623         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2624         TARGET_IBT.
2625         (ix86_trampoline_init): Likewise.
2626         (x86_output_mi_thunk): Likewise.
2627         (ix86_notrack_prefixed_insn_p): Likewise.
2628         (ix86_option_override_internal): Don't disallow -fcf-protection.
2629         * config/i386/i386.md (rdssp<mode>): Also enable for
2630         -fcf-protection.
2631         (incssp<mode>): Likewise.
2632         (nop_endbr): Likewise.
2633         * config/i386/i386.opt (mcet): Change help message to built-in
2634         functions only.
2635         (mibt): Likewise.
2636         (mshstk): Likewise.
2637         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2638         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
2639         enable CET built-in functions.
2641 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
2643         * common/config/i386/i386-common.c 
2644         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2645         OPTION_MASK_ISA_MOVDIRI_UNSET,
2646         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2647         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2648         * config.gcc (movdirintrin.h): New header.
2649         * config/i386/cpuid.h (bit_MOVDIRI,
2650         bit_MOVDIR64B): New bits.
2651         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2652         and -mmvodir64b.
2653         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2654         (VOID, PVOID, PCVOID)): New function types.
2655         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2656         __builtin_ia32_directstoreu_u64,
2657          __builtin_ia32_movdir64b): New builtins.
2658         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2659         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2660         and -mmovdiri.
2661         (ix86_valid_target_attribute_inner_p): Ditto.
2662         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2663         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2664         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2665         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2666         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2667         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2668         (movdiri<mode>, movdir64b_<mode>): New.
2669         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2670         * config/i386/immintrin.h: Include movdirintrin.h.
2671         * config/i386/movdirintrin.h: New file.
2672         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2674 2018-04-19  Richard Biener  <rguenther@suse.de>
2676         PR middle-end/85455
2677         * cfg.c (clear_bb_flags): When loop state says we have
2678         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2680 2018-04-19  Richard Biener  <rguenther@suse.de>
2682         PR tree-optimization/84737
2683         * tree-vect-data-refs.c (vect_copy_ref_info): New function
2684         copying restrict info.
2685         (vect_setup_realignment): Use it.
2686         * tree-vectorizer.h (vect_copy_ref_info): Declare.
2687         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2688         the first DR to all generated stores.
2689         (vectorizable_load): Likewise for loads.
2691 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2693         PR tree-optimization/85446
2694         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2695         the integral and pointer types to have the same precision.
2697         * doc/install.texi: Document --disable-cet being the default and
2698         --enable-cet=auto.
2700 2018-04-18  Martin Liska  <mliska@suse.cz>
2702         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2703         style.
2705 2018-04-18  Martin Liska  <mliska@suse.cz>
2707         Revert
2708         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2710         PR ipa/83983
2711         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2712         arguments if they are comparable.
2714 2018-04-18  Martin Liska  <mliska@suse.cz>
2716         Revert
2717         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
2719         PR lto/84805
2720         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2721         incomplete types.
2723 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
2725         PR target/85388
2726         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2727         ENDBR after calling __morestack.
2729 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
2731         PR jit/85384
2732         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2733         by using gcc_base_ver to generate a gcc_driver_version, and use
2734         it when generating GCC_DRIVER_NAME.
2735         * configure: Regenerate.
2737 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
2739         PR target/81084
2740         * config.gcc: Obsolete powerpc*-*-*spe*.
2742 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2744         PR debug/84637
2745         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2746         (stabstr_D): Change type of unum from unsigned int to
2747         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
2748         type.
2750 2018-04-17  Jim Wilson  <jimw@sifive.com>
2752         PR 84856
2753         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2754         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2755         Set arg_pointer_offset after using pretend_args_size.
2757 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2759         PR rtl-optimization/85431
2760         * dse.c (record_store): Ignore zero width stores.
2762         PR sanitizer/85230
2763         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
2764         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2765         __builtin_stack_restore rather than after it.
2766         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2767         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2768         argument instead of virtual_dynamic_stack_rtx.
2770 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2772         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2773         New prototype.
2774         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2775         Add note to error message to explain internal mapping of overloaded
2776         built-in function name to non-overloaded built-in function name.
2777         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2778         function.
2780 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
2782         PR target/85424
2783         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2784         where the inputs overlap with the output.
2786 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2788         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2789         (=v, v) alternative and explicit "memory" attribute.
2790         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
2791         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2792         attributes.
2793         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2794         "sselog1" type instead of "sselog".
2795         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2796         "sselog".  Remove explicit "memory" attribute.
2797         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2798         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2799         attributes.
2800         (vec_extract_hi_v32hi): Merge all alternatives into one, use
2801         "sselog1" type instead of "sselog".  Remove explicit "memory"
2802         attribute.
2803         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2804         use "sselog1" type instead of "sselog".  Remove explicit "memory"
2805         attribute.
2806         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2807         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2808         attributes.
2809         (vec_extract_hi_v64qi): Merge all alternatives into one, use
2810         "sselog1" type instead of "sselog".  Remove explicit "memory"
2811         attribute.
2812         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2813         use "sselog1" type instead of "sselog".  Remove explicit "memory"
2814         attribute.
2816         PR target/85430
2817         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2819         PR middle-end/85414
2820         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2821         on a SUBREG.
2823 2018-04-17  Martin Jambor  <mjambor@suse.cz>
2825         PR ipa/85421
2826         * ipa-cp.c (create_specialized_node): Call
2827         expand_all_artificial_thunks if necessary.
2829 2018-04-17  Martin Liska  <mliska@suse.cz>
2831         PR lto/85405
2832         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2833         in message, remote space in between '_G' and '('.
2835 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2837         PR target/85281
2838         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
2839         avx512f_vmcmp<mode>3<round_saeonly_name>,
2840         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
2841         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
2842         avx512f_rndscale<mode><round_saeonly_name>,
2843         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
2844         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
2845         Use %<iptr>2 instead of %2 for -masm=intel.
2846         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
2847         avx512f_vcvttss2usi<round_saeonly_name>,
2848         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
2849         -masm=intel.
2850         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
2851         avx512f_vcvttsd2usi<round_saeonly_name>,
2852         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
2853         Use %q1 instead of %1 for -masm=intel.
2854         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
2855         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
2856         of %3 for -masm=intel.
2857         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
2858         -masm=intel.
2859         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
2860         -masm=intel.
2861         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
2862         -masm=intel.
2863         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
2864         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
2865         %g1.
2866         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
2867         -masm=intel.
2868         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
2869         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
2870         %g1 and one with %0 and %1.
2871         (avx512er_vmrcp28<mode><round_saeonly_name>,
2872         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
2873         %1 for -masm=intel.
2874         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
2875         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
2876         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
2877         of %0 and %{%4%} for -masm=intel.
2878         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
2879         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
2880         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
2881         order of %0 and %{%5%}%{z%} for -masm=intel.
2883 2018-04-17  Jan Hubicka  <jh@suse.cz>
2885         PR lto/85405
2886         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
2888 2018-04-17  Martin Liska  <mliska@suse.cz>
2890         PR ipa/85329
2891         * multiple_target.c (create_dispatcher_calls): Set apostrophes
2892         for target_clone error message.  Make default implementation
2893         clone to be a local declaration.
2894         (separate_attrs): Add new argument and check for an empty
2895         string.
2896         (expand_target_clones): Handle it.
2897         (ipa_target_clone): Make redirection just for target_clones
2898         functions.
2900 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
2901             Tom de Vries  <tom@codesourcery.com>
2903         PR middle-end/84955
2904         * omp-expand.c (expand_oacc_for): Add dummy false branch for
2905         tiled basic blocks without omp continue statements.
2907 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
2909         PR target/83660
2910         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
2911         vec_extract expression as having side effects to make sure it gets
2912         a cleanup point.
2914 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
2916         PR target/85403
2917         * config/i386/i386.c (get_builtin_code_for_version): Check
2918         error_mark_node.
2920 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
2922         PR target/84331
2923         * gcc/config.gcc: Support "skylake".
2924         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
2925         PROCESSOR_SKYLAKE.
2926         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
2927         (processor_target_table): Add "skylake".
2928         (ix86_option_override_internal): Add "skylake".
2929         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
2930         PROCESSOR_CANNONLAKE.
2931         (get_builtin_code_for_version): Fix priority for
2932         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
2933         PROCESSOR_SKYLAKE-AVX512.
2934         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
2935         (processor_type): Add PROCESSOR_SKYLAKE.
2937 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
2938             Jason Merrill  <jason@redhat.com>
2940         PR c++/85112
2941         * convert.c (convert_to_integer_1): Use direct recursion for
2942         enumeral types and types with a precision less than the number
2943         of bits in their mode.
2945 2018-04-16  Julia Koval  <julia.koval@intel.com>
2947         PR target/84413
2948         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
2949         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
2951 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
2953         PR target/85293
2954         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
2955         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
2956         and -mno-direct-move.
2958 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
2960         PR target/83402
2961         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
2962         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
2963         Ensure negative shifts result in {0}.
2965 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
2967         PR rtl-optimization/79916
2968         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
2969         regs (if any) to define how to gnerate SD moves when LRA is in
2970         progress.
2972 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
2974         PR rtl-optimization/85393
2975         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
2976         * except.c (expand_dw2_landing_pad_for_region): Make static.
2977         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
2978         a label and unconditional jump to old_bb, rather than
2979         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
2980         basic block.
2982         PR rtl-optimization/85376
2983         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
2984         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
2985         instead of a specific value.
2987 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
2988             Bin Cheng  <bin.cheng@arm.com>
2990         PR tree-optimization/82965
2991         PR tree-optimization/83991
2992         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
2993         by_profile_only parameter.
2994         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
2995         information if the loop was predicted to iterate too many times.
2996         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
2998 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
3000         PR lto/71991
3001         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3002         always inline.
3004 2018-04-13  Martin Liska  <mliska@suse.cz>
3005             Jakub Jelinek  <jakub@redhat.com>
3007         PR middle-end/81657
3008         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3009         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3010         * builtins.c (expand_builtin_memory_copy_args): Use
3011         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3012         handle dest_addr == pc_rtx.
3014 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
3016         PR target/85291
3017         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3018         asked to not generate direct moves.
3019         (fix_trunc<mode>si2_stfiwx): Similar.
3020         (fix_trunc<mode>si2_internal): Similar.
3022 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3024         PR debug/83157
3025         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3026         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3027         lookup if dest in some wider mode is known to be const0_rtx and
3028         if so, record permanent equivalence for it to be ZERO_EXTEND of
3029         the narrower mode destination.
3031 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
3033         * lto-streamer-out.c (output_function): Revert 259346.
3034         * omp-expand.c (expand_oacc_for): Likewise.
3036 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
3038         PR rtl-optimization/85354
3039         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3040         * sel-sched.c (sel_global_init): ... here.
3042 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
3044         PR target/85238
3045         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3046         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3047         mode for PE-COFF targets.
3048         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3049         (i386_pe_asm_lto_end): Likewise.
3050         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3051         (TARGET_ASM_LTO_END): Likewise.
3052         * config/i386/winnt.c (saved_debug_info_level): New static variable.
3053         (i386_pe_asm_lto_start): New function.
3054         (i386_pe_asm_lto_end): Likewise.
3056 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
3057             Richard Biener  <rguenther@suse.de>
3059         PR middle-end/84955
3060         * lto-streamer-out.c (output_function): Fix CFG loop state before
3061         streaming out.
3062         * omp-expand.c (expand_oacc_for): Handle calls to internal
3063         functions like regular functions.
3065 2018-04-12  Richard Biener  <rguenther@suse.de>
3067         PR lto/85371
3068         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3069         for the early LTO debug to properly generate references to it
3070         during DIE emission.  Do not re-use that for the skeleton for
3071         split-dwarf.
3072         (dwarf2out_early_finish): Likewise.
3074 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3076         PR target/85328
3077         * config/i386/sse.md
3078         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3079         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3080         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3081         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3082         and output is a reg, avoid creating invalid lowpart subreg, but
3083         instead split into a 512-bit move.  Don't split if not AVX512VL,
3084         input is xmm16+ reg and output is a mem.
3085         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3086         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3087         xmm16+ reg and output is a mem.
3089 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3091         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3092         also for flag_dwarf2_cfi_asm.
3094 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3096         PR rtl-optimization/85342
3097         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3098         a bool scalar var inside of the loop instead.  Don't try to update
3099         recog_data.operand after failed apply_change_group.
3101 2018-04-12  Tom de Vries  <tom@codesourcery.com>
3103         PR target/85296
3104         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3105         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
3106         array with flexible array member as array without given dimension.
3107         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3108         argument for undefined param to true.
3110 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
3112         PR target/85321
3113         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3114         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3115         from PowerPC section.
3116         * config/rs6000/sysv4.opt (mcall-): Improve help text.
3117         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3118         help text that is too long.
3119         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3120         help text that is too long.
3121         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3122         help text that is too long.
3124 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
3126         * config/alpha/alpha.md (stack_probe_internal): Rename
3127         from "probe_stack".  Update all callers.
3129 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3131         PR rtl-optimization/84566
3132         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3133         sched_macro_fuse_insns.
3135 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3137         PR target/84301
3138         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3139         (compute_block_dependences): ... from here.
3141 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3143         PR tree-optimization/85331
3144         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3145         from int to HOST_WIDE_INT.
3147 2018-04-11  Martin Jambor  <mjambor@suse.cz>
3149         PR ipa/84149
3150         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3151         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3152         not the same as the source val.
3153         (cgraph_edge_brings_value_p): New parameter.
3154         (gather_edges_for_value): Pass destination value to
3155         cgraph_edge_brings_value_p.
3156         (perhaps_add_new_callers): Likewise.
3157         (get_info_about_necessary_edges): Likewise and exclude values brought
3158         only by self-recursive edges.
3159         (create_specialized_node): Redirect only clones of self-calling edges.
3160         (+self_recursive_pass_through_p): New function.
3161         (find_more_scalar_values_for_callers_subset): Use it.
3162         (find_aggregate_values_for_callers_subset): Likewise.
3163         (known_aggs_to_agg_replacement_list): Removed.
3164         (decide_whether_version_node): Re-calculate known constants for all
3165         remaining context clones.
3167 2018-04-11  Richard Biener  <rguenther@suse.de>
3169         PR lto/85339
3170         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3171         from early DWARF output.
3172         (dwarf2out_early_finish): Output line info unconditionally into
3173         early DWARF and add reference to it.
3175 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3177         PR target/85281
3178         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3179         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3180         other than V2DFmode using iptr mode attribute.
3181         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3183 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3185         PR rtl-optimization/84659
3186         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3188 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3190         PR debug/85302
3191         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3192         SIZEP is NULL.
3193         (output_loc_list): Pass address of a dummy size variable even in the
3194         locview handling loop.
3195         (index_location_lists): Add comment on why skip_loc_list_entry can't
3196         call size_of_locs.
3198 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3200         PR target/85261
3201         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3202         into register.
3204 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
3206         PR target/85321
3207         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3208         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3209         and -mstring-compare-inline-limit.
3211 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3213         PR target/85287
3214         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3215         for stack clash protection in a register whenever we need it to be in
3216         a register.
3218 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3220         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3221         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3223 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3225         PR target/85321
3226         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3227         the help text.
3228         (mlong-double-): Ditto.
3229         * config/rs6000/sysv4.opt (msdata=): Ditto.
3230         (mtls-size=): Ditto.
3232 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3234         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3235         erroneous entries for
3236         "vector int vec_ldl (int, long int *)", and
3237         "vector unsigned int vec_ldl (int, unsigned long int *)".
3238         Add comments and entries for
3239         "vector bool char vec_ldl (int, bool char *)",
3240         "vector bool short vec_ldl (int, bool short *)",
3241         "vector bool int vec_ldl (int, bool int *)",
3242         "vector bool long long vec_ldl (int, bool long long *)",
3243         "vector pixel vec_ldl (int, pixel *)",
3244         "vector long long vec_ldl (int, long long *)",
3245         "vector unsigned long long vec_ldl (int, unsigned long long *)".
3246         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3247         type tree bool_long_long_type_node and correct definition of
3248         bool_V2DI_type_node to make reference to this new type tree.
3249         (rs6000_mangle_type): Replace erroneous reference to
3250         bool_long_type_node with bool_long_long_type_node.
3251         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3252         comments to emphasize sign distinctions for char and int types and
3253         replace RS6000_BTI_bool_long constant with
3254         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
3255         use of RS6000_BTI_pixel.
3256         (bool_long_type_node): Remove this macro definition.
3257         (bool_long_long_type_node): New macro definition
3259 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
3261         PR rtl-optimization/85300
3262         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3263         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3264         simplify_unary_operation fails.
3266 2018-04-10  Martin Liska  <mliska@suse.cz>
3268         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3269         cgraph_edge and ipa_ref.
3271 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
3273         PR target/85177
3274         PR target/85255
3275         * config/i386/sse.md
3276         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3277         computation of the VEC_MERGE selector from mask.
3278         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3279         Fix decoding of the VEC_MERGE selector into mask.
3281 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
3283         PR tree-optimization/85286
3284         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3286 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
3288         * final.c (final_1): Set insn_last_address as well as
3289         insn_current_address.
3291 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3293         PR target/85173
3294         * explow.c (emit_stack_probe): Call validize_mem on memory location
3295         before passing it to gen_probe_stack.  Create address operand and
3296         legitimize it for the probe_stack_address case.
3298 2018-04-09  Jan Hubicka  <jh@suse.cz>
3300         PR lto/85078
3301         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3302         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3303         * tree.c (free_lang_data_in_type): Fix handling of binfos;
3304         walk basetypes.
3305         (free_lang_data): Rebuild type inheritance graph.
3307 2018-04-09  Martin Sebor  <msebor@redhat.com>
3309         * invoke.texi (-finline-small-functions): Mention other optimization
3310         options.
3311         (-findirect-inlining, -fpartial-inlining): Same.
3312         (-finline-functions-called-once): Same.
3313         (-freorder-blocks-and-partition): Same.
3315 2018-04-09  Jan Hubicka  <jh@suse.cz>
3317         PR rtl/84058
3318         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3319         jumps; choose last target that matches the criteria (i.e.
3320         no partition changes for non-crossing jumps).
3321         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3322         support for redirecting crossing jumps to non-crossing.
3324 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
3326         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3327         also for naked functions.
3329 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
3331         * config/arc/arc.md (add_shift): New pattern.
3332         (add_shift2): Likewise.
3333         (sub_shift): Likewise.
3334         (sub_shift_cmp0_noout): Likewise.
3335         (compare_si_ashiftsi): Likewise.
3336         (xbfu_cmp0_noout): New combine pattern.
3337         (xbfu_cmp0"): Likewise.
3338         (movsi_set_cc_insn): Place the predicable variant first.
3339         (commutative_binary_cmp0_noout): Remove clobber.
3340         (commutative_binary_cmp0): New pattern.
3341         (noncommutative_binary_cmp0): Likewise.
3342         (noncommutative_binary_cmp0_noout): Likewise.
3343         (noncommutative_binary_comparison_result_used): Removed.
3344         (rsub_cmp0): New pattern.
3345         (rsub_cmp0_noout): Likewise.
3346         (extzvsi): Changed, keep only meaningful variants.
3347         (SQH, SEZ): New iterators.
3348         (SQH_postfix): New mode attribute.
3349         (SEZ_prefix): New code attribute.
3350         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3351         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3352         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3353         of numerical value.
3354         (noncommutative_operator): Check the availability of barrel
3355         shifter option.
3357 2018-04-09  Richard Biener  <rguenther@suse.de>
3359         PR tree-optimization/85284
3360         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3361         Only use the niter constraining form of simple_iv when the exit
3362         is always executed.
3364 2018-04-09  Tom de Vries  <tom@codesourcery.com>
3366         PR target/84041
3367         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3368         (define_expand "*memory_barrier"): New define_expand.
3369         (define_insn "memory_barrier"): New insn.
3371 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3373         PR rtl-optimization/80463
3374         PR rtl-optimization/83972
3375         PR rtl-optimization/83480
3377         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3378         correct producer for the insn.
3379         (tidy_control_flow): Fixup seqnos in case of debug insns.
3381 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3383         PR rtl-optimization/83913
3385         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3386         different sched-times when merging exprs.
3388 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3390         PR rtl-optimization/83962
3392         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3393         tidy_fallthru_edge and tidy_control_flow.
3395 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3397         PR rtl-optimization/83530
3399         * sel-sched.c (force_next_insn): New global variable.
3400         (remove_insn_for_debug): When force_next_insn is true, also leave only
3401         next insn in the ready list.
3402         (sel_sched_region): When the region wasn't scheduled, make another pass
3403         over it with force_next_insn set to 1.
3405 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
3407         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3408         into tm_file.
3409         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3410         for interrupt control.
3411         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3412         functions for interrupt control.
3413         * config/nds32/nds32-intrinsic.md: Likewise.
3414         * config/nds32/nds32_intrinsic.h: Likewise.
3415         * config/nds32/nds32.h (nds32_builtins): Likewise.
3417 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
3419         * config/nds32/nds32.c (nds32_init_machine_status,
3420         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3421         strict_aligned_p field.
3422         (nds32_expand_to_rtl_hook): New function.
3423         (TARGET_EXPAND_TO_RTL_HOOK): Define.
3424         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3426 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3427             Chung-Ju Wu  <jasonwucj@gmail.com>
3429         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3430         * config/nds32/nds32-n7.md: New file.
3431         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3432         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3433         pipeline.
3434         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3435         * config/nds32/nds32.md (pipeline_model): Add n7.
3436         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3437         * config/nds32/pipelines.md: Include n7 settings.
3439 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3440             Chung-Ju Wu  <jasonwucj@gmail.com>
3442         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3443         * config/nds32/nds32-e8.md: New file.
3444         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3445         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3446         pipeline.
3447         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3448         * config/nds32/nds32.md (pipeline_model): Add e8.
3449         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3450         * config/nds32/pipelines.md: Include e8 settings.
3452 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3453             Chung-Ju Wu  <jasonwucj@gmail.com>
3455         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3456         * config/nds32/nds32-n8.md: New file.
3457         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3458         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3459         pipeline.
3460         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3461         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3462         * config/nds32/nds32.md (pipeline_model): Add n8.
3463         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3464         * config/nds32/pipelines.md: Include n8 settings.
3466 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3467             Chung-Ju Wu  <jasonwucj@gmail.com>
3469         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3470         * config/nds32/nds32-n9-2r1w.md: New file.
3471         * config/nds32/nds32-n9-3r2w.md: New file.
3472         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3473         nds32_register_ports): New or modify for cpu n9.
3474         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3475         pipeline.
3476         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3477         * config/nds32/nds32-utils.c: New file.
3478         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3479         TARGET_MUL_SLOW): Define.
3480         * config/nds32/nds32.md (pipeline_model): New attribute.
3481         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3482         New options that support cpu n9.
3483         * config/nds32/pipelines.md: Include n9 settings.
3484         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3486 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
3488         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3489         information if necessary.
3490         (output_cond_branch_compare_zero): Likewise.
3491         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3492         (nds32_target_alignment): Refine for alignment.
3493         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3494         (FUNCTION_BOUNDARY): Modify.
3495         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3496         align case.
3497         * config/nds32/nds32.opt (malways-align, malign-functions): New.
3499 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
3501         * config/nds32/constants.md (unspec_volatile_element): Add values for
3502         TLB operation and data prefetch.
3503         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3504         functions for TLB operation and data prefetch.
3505         * config/nds32/nds32-intrinsic.md: Likewise.
3506         * config/nds32/nds32_intrinsic.h: Likewise.
3507         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3508         (nds32_print_operand): Likewise.
3509         * config/nds32/nds32.h (nds32_builtins): Likewise.
3511 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
3512         Andrew Pinski <pinsika@gcc.gnu.org>
3514         PR middle-end/82976
3515         * match.pd: Use constant_boolean_node of correct type instead of
3516         boolean_true_node or boolean_false_node for simplifying
3517         pointer comparisons to zero.
3519 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
3521         PR tree-optimization/80021
3522         * tree.c (verify_type_variant): Make error call in verify_variant_match
3523         translatable and remove final full stop.
3525 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3527         * config/nds32/constants.md (unspec_volatile_element): Add
3528         UNSPEC_VOLATILE_EH_RETURN.
3529         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3530         nds32_output_stack_pop): Support dwarf exception handling process.
3531         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3532         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3533         exception handling process.
3534         (nds32_compute_stack_frame): Likewise.
3535         (nds32_return_addr_rtx): Likewise.
3536         (nds32_initial_elimination_offset): Likewise.
3537         (nds32_expand_prologue): Likewise.
3538         (nds32_expand_epilogue): Likewise.
3539         (nds32_dynamic_chain_address): New function.
3540         * config/nds32/nds32.h (machine_function): Add fields for dwarf
3541         exception handling.
3542         (DYNAMIC_CHAIN_ADDRESS): Define.
3543         (EH_RETURN_DATA_REGNO): Define.
3544         (EH_RETURN_STACKADJ_RTX): Define.
3545         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3546         patterns for dwarf exception handling.
3548 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3550         * config/nds32/nds32.h: Clean up obsolete macros.
3552 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3554         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3555         Add enum values for particular instructions.
3556         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3557         particular intrinsic functions.
3558         * config/nds32/nds32-intrinsic.md: Likewise.
3559         * config/nds32/nds32_intrinsic.h: Likewise.
3560         * config/nds32/nds32.h (nds32_builtins): Likewise.
3561         * config/nds32/nds32.md (type): Add pbsad and pbsada.
3562         (btst, ave): New patterns for particular instructions.
3564 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3566         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3567         Add enum values for atomic load/store and memory sync.
3568         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3569         and memory sync.
3570         * config/nds32/nds32-intrinsic.md: Likewise.
3571         * config/nds32/nds32_intrinsic.h: Likewise.
3572         * config/nds32/nds32.h (nds32_builtins): Likewise.
3574 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
3576         PR tree-optimization/85257
3577         * fold-const.c (native_encode_vector): If not all elts could fit
3578         and off is -1, return 0 rather than offset.
3579         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3580         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3581         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
3582         adjust buffer in native_interpret_expr call.
3584 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3586         * config/nds32/constants.md (unspec_volatile_element): Add cache
3587         control enum values.
3588         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3589         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3590         * config/nds32/nds32.c (nds32_cctl_names): New.
3591         (nds32_print_operand): Handle cache control register names.
3592         * config/nds32/nds32.h (nds32_builtins): New enum values.
3593         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3594         macros.
3595         * config/nds32/nds32.md (type): Add mmu.
3596         * config/nds32/pipelines.md (simple_insn): Add mmu.
3598 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3600         * config/nds32/nds32.md (type): Remove call.
3601         * config/nds32/pipelines.md (simple_insn): Likewise.
3603 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3605         * config/nds32/constants.md (unspec_volatile_element): Add
3606         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3607         UNSPEC_VOLATILE_FMFCFG.
3608         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3609         description for fmfcfg and fmfcsr.
3610         (bdesc_1arg): Add fmtcsr.
3611         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3612         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3613         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3614         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3615         unspec_fmfcfg): New patterns.
3616         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3617         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3618         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3619         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3620         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3621         __nds32__fmfcfg): Define.
3623 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3625         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3626         intrinsic register names.
3627         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3628         intrinsic register enum values and macros.
3630 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3632         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3633         for load/store addressing form.
3634         (nds32_print_operand_address): Likewise.
3636 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
3638         PR target/85196
3639         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3640         based on LABEL_REF.  Remove useless assertion.
3641         (pic_address_needs_scratch): Fix formatting.
3642         (sparc_legitimize_pic_address): Minor tweaks.
3643         (sparc_delegitimize_address): Adjust assertion accordingly.
3644         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3645         into symbolic_operand.
3646         (movsi_high_pic_label_ref): Likewise.
3647         (movsi_lo_sum_pic_label_ref): Likewise.
3648         (movdi_pic_label_ref): Likewise.
3649         (movdi_high_pic_label_ref): Likewise.
3650         (movdi_lo_sum_pic_label_ref): Likewise.
3652 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
3654         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3655         custom LIB_SPEC setup.
3657 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
3658             Kito Cheng  <kito.cheng@gmail.com>
3660         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3661         * config/riscv/freebsd.h: New.
3663 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3665         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3666         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3667         file.
3669 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3670             Kito Cheng  <kito.cheng@gmail.com>
3672         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3673         nds32_output_call, nds32_symbol_binds_local_p): New functions.
3674         * config/nds32/nds32-protos.h (nds32_output_call,
3675         nds32_output_return): Declare.
3676         * config/nds32/nds32.md: Refine all the call and return patterns.
3678 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3680         PR debug/85252
3681         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3682         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3684         PR rtl-optimization/84872
3685         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3686         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3687         EDGE_CROSSING edge.
3689 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
3691         * expr.c (copy_blkmode_to_reg): Revert 254862.
3692         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3694 2018-04-06  Richard Biener  <rguenther@suse.de>
3696         PR middle-end/85244
3697         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3698         after seeing a component reference with an adjacent field.  Treat
3699         refs to arrays at struct end of external decls similar to
3700         refs to unconstrained commons.
3702 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3704         PR sanitizer/85213
3705         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3706         look through SAVE_EXPRs with non-side-effects argument.  Adjust
3707         recursive calls.
3708         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3709         save_p here.
3711 2018-04-06  Richard Biener  <rguenther@suse.de>
3713         PR middle-end/85180
3714         * alias.c (find_base_term): New wrapper around find_base_term
3715         unwinding CSELIB_VAL_PTR changes.
3716         (find_base_term): Do not restore CSELIB_VAL_PTR during the
3717         recursion.
3719 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3721         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3722         instructions.
3723         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3724         constant definitions.
3725         ("nop"): lr 0,0 -> nopr r0
3726         ("nop_lr0", "nop_lr1"): New insn definitions.
3728 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3730         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3731         NDS32_V3PUSH_AVAILABLE_P macro.
3733 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
3734             Chung-Ju Wu  <jasonwucj@gmail.com>
3736         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3737         (nds32*-*-*): Add float and fpu_config into supported_defaults.
3738         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3739         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3740         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3741         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3742         * config/nds32/constraints.md: New constraints and checking for hard
3743         float configuration.
3744         * config/nds32/iterators.md: New mode iterator and attribute for hard
3745         float configuration.
3746         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3747         patterns.
3748         * config/nds32/nds32-fpu.md: New file.
3749         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3750         deal with hard float code generation.
3751         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3752         ARCH_V3S.
3753         (abi_type, float_reg_number): New enum type.
3754         * config/nds32/nds32-predicates.c: New predicates for hard float.
3755         * config/nds32/nds32-protos.h: Declare functions for hard float.
3756         * config/nds32/nds32.c: Implementation for hard float configuration.
3757         * config/nds32/nds32.h: Definitions for hard float configuration.
3758         * config/nds32/nds32.md: Include hard float machine description and
3759         modify patterns for hard float configuration.
3760         * config/nds32/nds32.opt: New options for hard float configuration.
3761         * config/nds32/predicates.md: New predicates for hard float
3762         configuration.
3764 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
3766         * common/config/nds32/nds32-common.c
3767         (nds32_option_optimization_table): Enable -mreleax-hint by default.
3769 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
3771         PR middle-end/85195
3772         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3773         CONSTRUCTOR_ELT (ctor, ...)->value.
3775 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
3777         PR target/85193
3778         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3780 2018-04-05  Tom de Vries  <tom@codesourcery.com>
3782         PR target/85204
3783         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3784         cond jump.
3786 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3787             Kito Cheng  <kito.cheng@gmail.com>
3789         * config/nds32/constraints.md (U33): Fine-tune checking condition.
3790         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3791         * config/nds32/nds32.h (nds32_16bit_address_type): Add
3792         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3794 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3795             Kito Cheng  <kito.cheng@gmail.com>
3797         * config/nds32/constraints.md (Ufe): New memory constraint.
3798         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3799         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3800         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3801         operands.
3802         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3803         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3805 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3807         * config/nds32/nds32.md: Use optimize_size in the condition for
3808         alu-shift instructions.
3810 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3812         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3814 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3816         * config/nds32/nds32.md (negsi2): Refine pattern.
3818 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
3819             Chung-Ju Wu  <jasonwucj@gmail.com>
3821         * config/nds32/iterators.md (shift_rotate): New code iterator.
3822         (shift): New code attribute.
3823         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3824         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3825         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3826         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3827         bit-wise operations.
3828         (andsi3, *andsi3): Ditto.
3829         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3830         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3831         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3832         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3833         nds32_ior_operand, nds32_xor_operand): New predicates.
3835 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3837         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
3838         (addsi3, subsi3): ... this.
3840 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3842         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
3844 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3846         * config/nds32/nds32.md: Adjust indention.
3848 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
3850         * config/nds32/nds32.md (feature): New attribute.
3852 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
3854         * config/nds32/nds32.md (subtype): New attribute.
3856 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3858         PR target/85203
3859         * config/arm/arm-builtins.c (arm_expand_builtin): Change
3860         expansion to perform a bitwise AND of the argument followed by a
3861         boolean negation of the result.
3863 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
3865         PR rtl-optimization/84878
3866         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
3867         the basic block.  Assert the use reference is not artificial and that
3868         it has an associated insn.
3870 2018-04-04  Michael Matz  <matz@suse.de>
3872         * builtins.c (compute_objsize): Pass correct operand
3873         to array_at_struct_end_p.
3875 2018-04-04  Richard Biener  <rguenther@suse.de>
3877         PR lto/85176
3878         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
3879         from contexts for DINFO_LEVEL_TERSE and below.
3881 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3883         * config/nds32/nds32-doubleword.md (move_<mode>): Require
3884         resiter_operand condition.
3885         * config/nds32/nds32.md (*move<mode>): Ditto.
3887 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3888             Monk Chiang  <sh.chiang04@gmail.com>
3890         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
3892 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3894         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
3896 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3897             Kito Cheng  <kito.cheng@gmail.com>
3899         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
3900         nds32_cond_code_str, output_cond_branch,
3901         output_cond_branch_compare_zero, nds32_expand_cbranch,
3902         nds32_expand_cstore, nds32_expand_movcc,
3903         nds32_output_cbranchsi4_equality_zero,
3904         nds32_output_cbranchsi4_equality_reg,
3905         nds32_output_cbranchsi4_equality_reg_or_const_int,
3906         nds32_output_cbranchsi4_greater_less_zero: New functions.
3907         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
3908         nds32_expand_cstore, nds32_expand_movcc,
3909         nds32_output_cbranchsi4_equality_zero,
3910         nds32_output_cbranchsi4_equality_reg,
3911         nds32_output_cbranchsi4_equality_reg_or_const_int,
3912         nds32_output_cbranchsi4_greater_less_zero): Declare.
3913         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
3914         nds32_rimm11s_operand): New predicates.
3915         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
3916         * config/nds32/nds32.md: Rewrite all the branch and conditional move
3917         patterns.
3919 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
3921         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
3922         * config/nds32/nds32.md: Ditto.
3923         * config/nds32/pipelines.md: Ditto.
3925 2018-04-04  Richard Biener  <rguenther@suse.de>
3927         PR tree-optimization/85168
3928         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
3929         propagating abnormals.
3931 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3933         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
3935 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
3936             Kito Cheng  <kito.cheng@gmail.com>
3938         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
3939         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
3940         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
3941         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3942         * config/nds32/nds32.md (sibcall_internal): New.
3943         (sibcall_register): Remove.
3944         (sibcall_immediate): Remove.
3945         (sibcall_value_internal): New.
3946         (sibcall_value_register): Remove.
3947         (sibcall_value_immediate): Remove.
3948         * config/nds32/predicates.md (nds32_general_register_operand): New.
3949         (nds32_call_address_operand): New.
3951 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3953         PR rtl-optimization/85167
3954         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
3955         bb_defs if *split_p, instead preinitialize it to NULL.
3957         PR tree-optimization/85156
3958         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
3959         evaluating the argument multiple times.
3961 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
3963         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
3964         than vector.
3965         (_mm_cvtpd_ps): Likewise.
3966         (_mm_cvttpd_epi32): Likewise.
3967         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
3968         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
3969         vector, pixel, and bool following altivec.h include.
3971 2018-04-03  Martin Sebor  <msebor@redhat.com>
3973         * doc/extend.texi (Common Function Attributes): Clarify.
3974         (const attribute): Likewise.
3975         (pure attribute): Likewise.
3977 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3979         PR target/85169
3980         * config/i386/i386.c (ix86_expand_vector_set): Use
3981         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
3983 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
3985         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
3986         instructions when changing rounding bits to preserve precision bits
3987         in the x87 control word.
3989 2018-04-03  Martin Liska  <mliska@suse.cz>
3991         PR tree-optimization/82491
3992         * rtl.h (strip_offset_and_add): Replace += suboffset with
3993         poly_uint64 () + suboffset.
3995 2018-03-29  Martin Liska  <mliska@suse.cz>
3996             Martin Jambor  <mjambor@suse.cz>
3998         PR ipa/84947
3999         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4000         param_type is not an integral or pointer type.
4002 2018-04-03  Richard Biener  <rguenther@suse.de>
4004         * sese.h (recompute_all_dominators): Remove.
4006 2018-04-02  Martin Sebor  <msebor@redhat.com>
4008         * doc/invoke.texi (-Wrestrict): Fix typos.
4010 2018-04-02  Jim Wilson  <jimw@sifive.com>
4012         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4013         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4014         (<optab>di3, <optab>si3_extend): Likewise.
4015         (<optab>si3_mask, <optab>si3_mask_1): New.
4016         (<optab>di3_mask, <optab>di3_mask_1): New.
4017         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4018         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4019         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4021 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
4023         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4024         example.
4026 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4028         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4029         (nds32_canonicalize_comparison): New function.
4031 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4032             Kito Cheng  <kito.cheng@gmail.com>
4033             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
4035         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4036         * config/nds32/constants.md (unspec_volatile_element): Add
4037         UNSPEC_VOLATILE_RELAX_GROUP.
4038         * config/nds32/nds32-relax-opt.c: New file.
4039         * config/nds32/nds32-predicates.c
4040         (nds32_symbol_load_store_p): New function.
4041         * config/nds32/nds32-protos.h
4042         (nds32_symbol_load_store_p): Declare function.
4043         (make_pass_nds32_relax_opt): Declare new rtl pass function.
4044         * config/nds32/nds32.c
4045         (nds32_register_pass): New function to register pass.
4046         (nds32_register_passes): New function to register passes.
4047         * config/nds32/nds32.md (relax_group): New pattern.
4048         * config/nds32/nds32.opt (mrelax-hint): New option.
4049         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4051 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
4053         * config/nds32/t-nds32: Modify files dependency.
4055 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4057         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4058         (PROFILE_HOOK): Define its implementation.
4060 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4062         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4063         type and 32-bit size.
4065 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
4067         PR middle-end/85090
4068         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4069         (V_128_256): New mode iterator.
4070         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4071         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4072         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4073         of V.
4074         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4075         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4077 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
4079         PR target/83315
4080         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4081         NaN inputs correctly.
4083 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
4085         PR target/80546
4086         * config/rs6000/vsx.md (??r): New mode attribute.
4087         (*vsx_mov<mode>_64bit): Use it.
4088         (*vsx_mov<mode>_32bit): Likewise.
4090 2018-03-30  Martin Sebor  <msebor@redhat.com>
4092         PR tree-optimization/84818
4093         * builtins.c (check_access): Use warning_n.
4095 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
4097         PR target/83822
4098         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4099         condition.
4100         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4101         condition.
4103 2018-03-30  Julia Koval  <julia.koval@intel.com>
4105         PR target/84413
4106         * x86-tune.def (movx, partial_reg_dependency): Enable for
4107         m_SKYLAKE_AVX512.
4109 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
4111         PR inline-asm/84985
4112         * lra-constraints.c (process_alt_operands): Move setting
4113         this_alternative_matches below.
4115 2018-03-29  Martin Liska  <mliska@suse.cz>
4117         PR lto/84995.
4118         * doc/invoke.texi: Document how LTO works with debug info.
4119         Describe auto-load support of binutils.  Mention 'x86-64'
4120         as valid option value of -march option.
4122 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
4124         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4126         PR c/85094
4127         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4128         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4129         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4130         checking.
4132 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
4134         PR target/84912
4135         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4136         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4137         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4138         for RS6000_BTM_POWERPC64.
4139         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4140         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4141         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4142         definition.
4143         (DIVDE): Use it.
4144         (DIVDEU): Likewise.
4146 2018-03-28 Carl Love  <cel@us.ibm.com>
4148         Revert
4149         2017-09-27  Carl Love  <cel@us.ibm.com>
4151         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4152         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4153         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4154         fctiw instruction.
4156 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4158         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4159         instead of __vector bool.
4160         (_mm_max_pu8): Likewise.
4161         (_mm_min_pi16): Likewise.
4163 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
4165         PR target/84912
4166         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4167         (DIVWEUO): Likewise.
4168         (DIVDEO): Likewise.
4169         (DIVDEUO): Likewise.
4170         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4171         DIVWEUO and DIVDEUO.
4172         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4173         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4174         (div_extend): Likewise.
4175         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4176         builtin function.
4177         (__builtin_divweuo): Likewise.
4178         (__builtin_divdeo): Likewise.
4179         (__builtin_divdeuo): Likewise.
4181 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
4183         PR target/85095
4184         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4185         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4187         PR tree-optimization/82004
4188         * gimple-match-head.c (optimize_pow_to_exp): New function.
4189         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4190         Don't fold to exp if optimize_pow_to_exp is false.
4192 2018-03-28  Martin Liska  <mliska@suse.cz>
4194         PR other/84819
4195         * calls.c (initialize_argument_information): Fix trailing space.
4196         * common.opt: Fix typo and provide better explanation for
4197         -fsanitize-coverage option.
4198         * config/i386/i386.opt: Fix typo.
4200 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
4201             Martin Liska  <mliska@suse.cz>
4203         PR sanitizer/85081
4204         * gimplify.c (asan_poison_variable): Don't do the check for
4205         gimplify_omp_ctxp here.
4206         (gimplify_decl_expr): Do it here.
4207         (gimplify_target_expr): Likewise.
4209 2018-03-28  Martin Liska  <mliska@suse.cz>
4211         PR target/84988
4212         * config/i386/i386.c (ix86_function_arg_advance): Do not call
4213         chkp_type_bounds_count if MPX is not enabled.
4215 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4217         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4219 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
4221         PR target/84914
4222         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4223         function to create the function decl for complex long double
4224         multiply and divide for -mabi=ieeelongdouble.
4225         (init_float128_ieee): Call it.
4227 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
4229         PR target/85044
4230         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4231         -fcf-protection=branch -mibt.
4232         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4234 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4236         PR target/81863
4237         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4239 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
4241         PR target/85056
4242         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4243         extern array declarations.
4245 2018-03-27  Richard Biener  <rguenther@suse.de>
4247         PR middle-end/84067
4248         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4249         explicit single_use checks.
4251 2018-03-27  Richard Biener  <rguenther@suse.de>
4253         PR tree-optimization/85082
4254         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4255         Valueize the VUSE.
4257 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4259         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4260         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4261         Turn on fasynchronous-unwind-tables and funwind-tables.
4263 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
4265         PR target/85073
4266         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4267         (*bmi_blsr_<mode>_ccz): Ditto.
4269 2018-03-26  Tom de Vries  <tom@codesourcery.com>
4271         PR tree-optimization/85063
4272         * omp-general.c (offloading_function_p): New function.  Factor out
4273         of ...
4274         * omp-offload.c (pass_omp_target_link::gate): ... here.
4275         * omp-general.h (offloading_function_p): Declare.
4276         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4277         with attribute omp declare target for offloading functions.
4279 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
4281         PR tree-optimization/84005
4282         * tree-data-ref.h (get_base_for_alignment): Declare.
4283         * tree-data-ref.c (get_base_for_alignment_1): New function.
4284         (get_base_for_alignment): Likewise.
4285         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4286         get_base_for_alignment to find a suitable base object, instead
4287         of always using drb->base_address.
4289 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
4291         PR inline-asm/85022
4292         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4293         known size by default.
4295 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
4297         PR inline-asm/85030
4298         * lra-constraints.c (process_alt_operands): Don't match BLKmode
4299         and non BLKmode operands.
4301 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4303         PR target/85026
4304         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4305         Clean up attributes.
4307 2018-03-23  Richard Biener  <rguenther@suse.de>
4309         PR debug/85020
4310         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4311         we are going to emit early debug for LTO.
4313 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
4315         PR inline-asm/85034
4316         * function.c (match_asm_constraints_1): Don't optimize if input
4317         doesn't satisfy general_operand predicate for output's mode.
4319         PR inline-asm/85022
4320         * alias.c (write_dependence_p): Don't require for x_canonicalized
4321         non-VOIDmode if x has VOIDmode.
4323         PR sanitizer/85029
4324         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4325         just don't try to optimize it rather than assert it never happens.
4327 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4329         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4330         macro expansions for definition of ST_INTERNAL_<mode> and
4331         LD_INTERNAL_<mode> builtins.
4332         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4333         Remove prototype.
4334         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4335         function.
4336         (altivec_expand_st_builtin): Likewise.
4337         (altivec_expand_builtin): Remove calls to deleted functions.
4338         (rs6000_address_for_altivec): Delete this function.
4339         * config/rs6000/vector.md: Remove expands for
4340         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4342 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
4344         PR target/84826
4345         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4346         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4347         re-computing once computed.
4348         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4349         (arm_init_machine_status): Initialize
4350         machine->static_chain_stack_bytes.
4352 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4354         PR target/84760
4355         * doc/extend.texi: Add four new prototypes for vec_ld.
4356         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4357         definitions for more logical presentation.
4358         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4359         entries for V1TI variants of __builtin_altivec_ld builtin.
4360         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4361         handling of V1TI variant of LVX icode pattern.
4362         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4363         (rs6000_gimple_fold_builtin): Likewise.
4364         (altivec_init_builtins): Add code to define
4365         __builtin_altivec_lvx_v1ti function.
4367 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
4369         PR inline-asm/84941
4370         * function.c (match_asm_constraints_1): Don't do the optimization
4371         if input isn't a REG, SUBREG, MEM or constant.
4373 2018-03-22  Tom de Vries  <tom@codesourcery.com>
4375         PR tree-optimization/84956
4376         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4377         bb_has_abnormal_pred.
4379 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
4381         PR sanitizer/85018
4382         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4383         DECL_INITIAL (decl) to decl at the end.
4384         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4385         adjust the comment.
4387 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
4389         * doc/extend.texi (__builtin_tgmath): Document when complex
4390         integer types are treated as _Complex _Float64.
4392 2018-03-21  Tom de Vries  <tom@codesourcery.com>
4394         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4396 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4398         PR tree-optimization/84960
4399         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4400         if it is ENTRY block, move them into single succ of ENTRY in that case.
4402 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
4404         PR tree-optimization/84811
4405         * poly-int.h (poly_span_traits): Remove the T3 parameter and
4406         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4407         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4408         (known_subrange_p): Update accordingly.  Cast each value involved
4409         in the size comparison, rather than casting the result of the
4410         subtraction.
4412 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4414         PR tree-optimization/84982
4415         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4416         by flipping the least significant bit rather than all bits from
4417         bitpos to bitpos + bitsize - 1.
4419 2018-03-21  Nathan Sidwell  <nathan@acm.org>
4421         * doc/extend.texi (Deprecated Features): Remove mention of
4422         long-deleted deprecations.
4424 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4426         PR jit/84288
4427         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4428         * configure: Regenerate.
4430 2018-03-21  Tom de Vries  <tom@codesourcery.com>
4432         PR tree-optimization/83126
4433         * tree-parloops.c (num_phis): New function.
4434         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4436 2018-03-21  Nathan Sidwell  <nathan@acm.org>
4438         * doc/extend.texi (Deprecated Features): Update deprecated flags,
4439         mention anon-struct/union members and trailing attributes.
4441 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
4443         PR tree-optimization/84969
4444         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4445         builtin memset partitions if they set different rhs values.
4447 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4449         PR rtl-optimization/84989
4450         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4451         VEC_DUPLICATE with scalar result mode.
4453 2018-03-21  Martin Liska  <mliska@suse.cz>
4455         PR ipa/84963
4456         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4457         not intended return statement.
4459 2018-03-21  Martin Liska  <mliska@suse.cz>
4461         PR target/84988
4462         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4463         (chkp_find_bound_slots_1): Limit number of iterations.
4465 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
4467         PR target/84838
4468         * Minor grammar fixes for x86 options.
4470 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4472         PR debug/84875
4473         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4474         holding REG_CFA_RESTORE notes, instead turn them into a USE.
4476 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
4478         PR target/83789
4479         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4480         (altivec_lvx_<mode>_1op): Likewise.
4481         (altivec_stvx_<mode>_2op): Likewise.
4482         (altivec_stvx_<mode>_1op): Likewise.
4483         (altivec_lvx_<VM2:mode>): New define_expand.
4484         (altivec_stvx_<VM2:mode>): Likewise.
4485         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4486         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4487         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4488         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4489         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4490         (rs6000_gen_lvx): Likewise.
4491         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4492         (altivec_expand_stv_builtin): Likewise.
4493         (altivec_expand_builtin): Likewise.
4494         * config/rs6000/vector.md: Likewise.
4496 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4498         PR target/82518
4499         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4500         BYTES_BIG_ENDIAN.
4502 2018-03-20  Richard Biener  <rguenther@suse.de>
4504         PR target/84986
4505         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4506         sign-conversions as zero, fall back to standard scalar_stmt
4507         cost for the rest.
4509 2018-03-20  Martin Liska  <mliska@suse.cz>
4511         PR ipa/84825
4512         * predict.c (rebuild_frequencies): Handle case when we have
4513         PROFILE_ABSENT, but flag_guess_branch_prob is false.
4515 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4517         PR target/84990
4518         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4519         flag_section_anchors.
4520         * varasm.c (use_blocks_for_decl_p): Remove hack for
4521         dw2_force_const_mem.
4523         PR target/84845
4524         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4525         to ...
4526         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
4527         be created, use lowpart_subreg of operands[0] rather than operands[0]
4528         itself.
4529         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4530         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4531         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4532         and n constraint instead of aarch64_shift_imm_di and Usd.
4533         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4534         (*aarch64_<optab>_reg_minus<mode>3): ... this.
4536 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
4538         PR target/82989
4539         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4540         to favor GPR over NEON registers.
4541         (<shift>di3_neon): Likewise.
4543 2018-03-20  Tom de Vries  <tom@codesourcery.com>
4545         PR target/84952
4546         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4547         (nvptx_process_pars): Emit bar.sync asap and alap.
4549 2018-03-20  Tom de Vries  <tom@codesourcery.com>
4551         PR target/84954
4552         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4553         seen_label if seen_label is already set.
4555 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4557         PR target/84945
4558         * config/i386/i386.c (fold_builtin_cpu): For features above 31
4559         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4560         Use 1U instead of 1.  Formatting fixes.
4562         PR c/84953
4563         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4564         instead of TREE_TYPE (s1) for the return value.
4566 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
4568         PR tree-optimization/84946
4569         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4570         bitsize + bitsize in poly_uint64 rather than poly_int64.
4572         PR sanitizer/78651
4573         * dwarf2asm.c: Include fold-const.c.
4574         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4575         of decl rather than decl itself.
4577         PR rtl-optimization/84643
4578         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4580 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
4582         PR sanitizer/78651
4583         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4584         calling assemble_variable.
4586 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
4588         PR target/81647
4589         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4590         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4592 2018-03-19  Jim Wilson  <jimw@sifive.com>
4594         PR bootstrap/84856
4595         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4596         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4597         (riscv_first_stack_step): Likewise.
4598         (riscv_option_override): Use STACK_BOUNDARY instead of
4599         MIN_STACK_BOUNDARY.
4600         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4601         MIN_STACK_BOUNDARY.
4602         (BIGGEST_ALIGNMENT): Set to 128.
4603         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4604         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4605         STACK_BOUNDARY.
4607 2018-03-19  Richard Biener  <rguenther@suse.de>
4609         PR tree-optimization/84933
4610         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4611         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4613 2018-03-19  Richard Biener  <rguenther@suse.de>
4615         PR tree-optimization/84859
4616         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4617         (cond_if_else_store_replacement): Perform sinking operation on
4618         single-store BBs regardless of MAX_STORES_TO_SINK setting.
4619         Generalize what a BB with a single eligible store is.
4621 2018-03-19  Richard Biener  <rguenther@suse.de>
4623         PR tree-optimization/84929
4624         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4625         chrec_is_positive against non-chrec arg.
4627 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
4629         PR target/84711
4630         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4632 2018-03-18  Martin Liska  <mliska@suse.cz>
4634         PR rtl-optimization/84635
4635         * regrename.c (build_def_use): Use matches_mode only when
4636         matches >= 0.
4638 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
4640         PR tree-optimization/84913
4641         * tree-vect-loop.c (vectorizable_reduction): Don't try to
4642         vectorize chains of COND_EXPRs.
4644 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4646         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4648 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4650         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4652 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4654         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4656 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
4657             Kito Cheng  <kito.cheng@gmail.com>
4659         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4660         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4661         (nds32_adjust_reg_alloc_order): New function.
4662         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4664 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
4666         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4667         nds32_print_operand, nds32_print_operand_address): Use
4668         HOST_WIDE_INT_PRINT_DEC instead.
4670 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
4672         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4674 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
4676         PR target/84902
4677         * config/i386/i386.c (initial_ix86_tune_features,
4678         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4679         unsigned long long.
4680         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4681         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4682         rather than 1u << ix86_tune.  Formatting fix.
4683         (ix86_option_override_internal): Change ix86_arch_mask from
4684         unsigned int to unsigned HOST_WIDE_INT, initialize to
4685         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4686         (ix86_function_specific_restore): Likewise.
4688 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4690         PR target/84899
4691         * postreload.c (reload_combine_recognize_pattern): Perform
4692         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4693         truncate_int_for_mode the result for the destination's mode.
4695         PR c/84909
4696         * hsa-gen.c (mem_type_for_type): Fix comment typo.
4697         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4698         Likewise.
4699         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4700         Likewise.
4702 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
4704         PR target/84876
4705         * lra-assigns.c (lra_split_hard_reg_for): Don't use
4706         regno_allocno_class_array and sorted_pseudos.
4707         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4708         insns where regno is used.
4710 2018-03-16  Martin Liska  <mliska@suse.cz>
4712         PR ipa/84833
4713         * multiple_target.c (create_dispatcher_calls): Redirect
4714         reference in the symbol table.
4716 2018-03-16  Martin Liska  <mliska@suse.cz>
4718         PR ipa/84722
4719         * multiple_target.c (create_dispatcher_calls): Redirect also
4720         an alias.
4722 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4724         PR c++/79937
4725         PR c++/82410
4726         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4727         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4728         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4730 2018-03-16  Julia Koval  <julia.koval@intel.com>
4732         * doc/invoke.texi (Skylake Server): Add CLWB.
4733         Cannonlake): Remove CLWB.
4735 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4737         PR tree-optimization/84841
4738         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4739         1 << 3.
4740         (FLOAT_ONE_CONST_TYPE): Define.
4741         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4742         (sort_by_operand_rank): Put entries with higher constant_type last
4743         rather than first to match comments.
4745 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
4747         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
4748         split predicate.
4750 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
4752         PR c++/79085
4753         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4754         check and use address of target always.
4756 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
4758         PR target/84574
4759         * config/i386/i386.c (indirect_thunk_needed): Update comments.
4760         (indirect_thunk_bnd_needed): Likewise.
4761         (indirect_thunks_used): Likewise.
4762         (indirect_thunks_bnd_used): Likewise.
4763         (indirect_return_needed): New.
4764         (indirect_return_bnd_needed): Likewise.
4765         (output_indirect_thunk_function): Add a bool argument for
4766         function return.
4767         (output_indirect_thunk_function): Don't generate alias for
4768         function return thunk.
4769         (ix86_code_end): Call output_indirect_thunk_function to generate
4770         function return thunks.
4771         (ix86_output_function_return): Set indirect_return_bnd_needed
4772         and indirect_return_needed instead of indirect_thunk_bnd_needed
4773         and indirect_thunk_needed.
4775 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
4777         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4778         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4779         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4781 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
4782             Paul Hua <paul.hua.gm@gmail.com>
4784         PR c/84852
4785         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4787 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
4789         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4790         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4791         resp. SFmode cases.
4793 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
4795         PR target/84711
4796         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4797         instead of GET_MODE_SIZE when comparing Units.
4799 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
4801         PR target/68256
4802         * varasm.c (hash_section): Return an unchangeble hash value
4803         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4804         Return !aarch64_can_use_per_function_literal_pools_p ().
4806 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
4808         PR target/84860
4809         * optabs.c (emit_conditional_move): Pass address of cmode's copy
4810         rather than address of cmode as last argument to prepare_cmp_insn.
4812 2018-03-15  Julia Koval  <julia.koval@intel.com>
4814         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4815         F_AVX512VNNI, F_AVX512BITALG): New.
4817 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
4819         PR target/83451
4820         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
4821         insn for floating-point loads and stores.
4823 2018-03-14  Carl Love  <cel@us.ibm.com>
4825         * config/rs6000/rs6000-c.c: Add macro definitions for
4826         ALTIVEC_BUILTIN_VEC_PERMXOR.
4827         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4828         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4829         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4830         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4831         UNSPEC_VPERMXOR.
4832         * config/doc/extend.texi: Add prototypes for vec_permxor.
4834 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
4836         PR c/84852
4837         * diagnostic-show-locus.c (class layout_point): Convert m_line
4838         from int to linenum_type.
4839         (line_span::comparator): Use linenum "compare" function when
4840         comparing line numbers.
4841         (test_line_span): New function.
4842         (layout_range::contains_point): Convert param "row" from int to
4843         linenum_type.
4844         (layout_range::intersects_line_p): Likewise.
4845         (layout::will_show_line_p): Likewise.
4846         (layout::print_source_line): Likewise.
4847         (layout::should_print_annotation_line_p): Likewise.
4848         (layout::print_annotation_line): Likewise.
4849         (layout::print_leading_fixits): Likewise.
4850         (layout::annotation_line_showed_range_p): Likewise.
4851         (struct line_corrections): Likewise for field m_row.
4852         (line_corrections::line_corrections): Likewise for param "row".
4853         (layout::print_trailing_fixits): Likewise.
4854         (layout::get_state_at_point): Likewise.
4855         (layout::get_x_bound_for_row): Likewise.
4856         (layout::print_line): Likewise.
4857         (diagnostic_show_locus): Likewise for locals "last_line" and
4858         "row".
4859         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
4860         * input.c (selftest::test_linenum_comparisons): New function.
4861         (selftest::input_c_tests): Call it.
4862         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
4863         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
4864         * selftest.h (ASSERT_GT): New macro.
4865         (ASSERT_GT_AT): New macro.
4866         (ASSERT_LT): New macro.
4867         (ASSERT_LT_AT): New macro.
4869 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
4871         PR rtl-optimization/84780
4872         * combine.c (distribute_links): Don't make a link based on pc_rtx.
4874 2018-03-14  Martin Liska  <mliska@suse.cz>
4876         * tree.c (record_node_allocation_statistics): Use
4877         get_stats_node_kind.
4878         (get_stats_node_kind): New function extracted from
4879         record_node_allocation_statistics.
4880         (free_node): Use get_stats_node_kind.
4882 2018-03-14  Richard Biener  <rguenther@suse.de>
4884         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
4885         that the value-set of ANTIC_IN doesn't grow.
4887         Revert
4888         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
4889         member.
4890         (BB_VISITED_WITH_VISITED_SUCCS): New define.
4891         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
4893 2018-03-14  Julia Koval  <julia.koval@intel.com>
4895         * config.gcc (icelake-client, icelake-server): New.
4896         (icelake): Remove.
4897         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
4898         (initial_ix86_arch_features): Ditto.
4899         (PTA_SKYLAKE): Add SGX.
4900         (PTA_ICELAKE): Remove.
4901         (PTA_ICELAKE_CLIENT): New.
4902         (PTA_ICELAKE_SERVER): New.
4903         (ix86_option_override_internal): Split up icelake on icelake client and
4904         icelake server.
4905         (get_builtin_code_for_version): Ditto.
4906         (fold_builtin_cpu): Ditto.
4907         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
4908         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
4909         * config/i386/i386.h (processor_type): Ditto.
4910         * doc/invoke.texi: Ditto.
4912 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
4914         PR sanitizer/83392
4915         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
4916         INTEGER_CST offset, add it together with bitpos / 8 and
4917         sign extend based on POINTER_SIZE.
4919         PR target/84844
4920         Revert
4921         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
4923         PR target/78090
4924         * config/i386/constraints.md (Yc): New register constraint.
4925         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
4926         Use Yc constraint for alternative 2 of operand 0.  Remove
4927         preferred_for_speed attribute.
4929 2018-03-14  Richard Biener  <rguenther@suse.de>
4931         PR tree-optimization/84830
4932         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
4933         with the old one to avoid oscillations.
4935 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
4937         PR target/83712
4938         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
4939         pseudos.
4940         (assign_by_spills): Return a flag of reload assignment failure.
4941         Do not process the reload assignment failures.  Do not spill other
4942         reload pseudos if they has the same reg class.  Update n if
4943         necessary.
4944         (lra_assign): Add a return arg.  Set up from the result of
4945         assign_by_spills call.
4946         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
4947         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
4948         usage_insns if it is not NULL.
4949         (spill_hard_reg_in_range): New function.
4950         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
4951         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
4952         function prototypes.
4953         (lra_assign): Change prototype.
4954         * lra.c (lra): Add code to deal with fails by splitting hard reg
4955         live ranges.
4957 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
4959         * config/riscv/riscv.opt (mrelax): New option.
4960         * config/riscv/riscv.c (riscv_file_start): Emit ".option
4961         "norelax" when riscv_mrelax is disabled.
4962         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
4964 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
4966         PR target/84743
4967         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
4968         reassociation for int modes.
4970 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4972         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
4973         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
4974         for big-endian.
4975         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
4976         * config/aarch64/aarch64-sve.md
4977         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
4978         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
4979         (*extend<mode><Vwide>2): Rename to...
4980         (aarch64_sve_extend<mode><Vwide>2): ...this.
4981         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
4982         renaming the old pattern to...
4983         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
4984         unsigned packs.
4985         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
4986         define_expand, renaming the old pattern to...
4987         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
4988         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
4989         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
4990         account when deciding which SVE instruction the optab should use.
4991         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
4993 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
4995         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
4996         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
4997         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
4998         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
4999         (tlsdesc_small_<mode>): Turn a define_expand and use
5000         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
5001         (tlsdesc_small_advsimd_<mode>): ...this.
5002         (tlsdesc_small_sve_<mode>): New pattern.
5004 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
5006         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5007         (UNSPEC_UMUL_HIGHPART): New constants.
5008         (MUL_HIGHPART): New int iteraor.
5009         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5010         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5011         define_expand.
5012         (*<su>mul<mode>3_highpart): New define_insn.
5014 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
5016         PR lto/84805
5017         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5018         incomplete types.
5020 2018-03-13  Martin Liska  <mliska@suse.cz>
5022         PR ipa/84658.
5023         * (sem_item_optimizer::sem_item_optimizer): Initialize new
5024         vector.
5025         (sem_item_optimizer::~sem_item_optimizer): Release it.
5026         (sem_item_optimizer::merge_classes): Register variable aliases.
5027         (sem_item_optimizer::fixup_pt_set): New function.
5028         (sem_item_optimizer::fixup_points_to_sets): Likewise.
5029         * ipa-icf.h: Declare new variables and functions.
5031 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
5033         PR middle-end/84834
5034         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5035         integer_pow2p@2 and test integer_pow2p in condition.
5036         (A < 0 ? C : 0): Similarly for @1.
5038         PR middle-end/84831
5039         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5040         characters starting at p contain '\0' character, don't look beyond
5041         that.
5043         PR target/84827
5044         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5045         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5047         PR target/84828
5048         * reg-stack.c (change_stack): Change update_end var from int to
5049         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5050         also call set_block_for_insn on the newly added insns and rescan.
5052         PR target/84786
5053         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5054         on the last operand.
5056         PR c++/84704
5057         * tree.c (stabilize_reference_1): Return save_expr (e) for
5058         STATEMENT_LIST even if it doesn't have side-effects.
5060 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
5062         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5064 2018-03-12  Renlin Li  <renlin.li@arm.com>
5066         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5067         aarch64_output_scalar_simd_mov_immediate.
5069 2018-03-12  Martin Sebor  <msebor@redhat.com>
5071         PR tree-optimization/83456
5072         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5073         for perfectly overlapping calls to memcpy.
5074         (gimple_fold_builtin_memory_chk): Same.
5075         (gimple_fold_builtin_strcpy): Handle no-warning.
5076         (gimple_fold_builtin_stxcpy_chk): Same.
5077         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5079 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
5081         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5082         parameter.  Use it for SFmode.
5083         (rs6000_function_arg_advance_1): Adjust.
5084         (rs6000_function_arg): Adjust.
5085         (rs6000_gimplify_va_arg): Pass false for that new parameter.
5087 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
5089         PR rtl-optimization/84169
5090         PR rtl-optimization/84780
5091         * combine.c (can_combine_p): Check for a 2-insn combination whether
5092         the destination register is used between the two insns, too.
5094 2018-03-12  Richard Biener  <rguenther@suse.de>
5096         PR tree-optimization/84803
5097         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5098         for refs DR analysis didn't process.
5100 2018-03-12  Richard Biener  <rguenther@suse.de>
5102         PR tree-optimization/84777
5103         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5104         force-vectorize loops ignore whether we are optimizing for size.
5106 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
5108         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5109         (TARGET_MD_ASM_ADJUST): Define.
5111 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
5112             Kito Cheng  <kito.cheng@gmail.com>
5113             Chung-Ju Wu  <jasonwucj@gmail.com>
5115         * config/nds32/nds32.c (nds32_compute_stack_frame,
5116         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5117         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5118         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5119         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5120         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5121         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5122         * config/nds32/nds32.md (prologue, epilogue): Use macro
5123         NDS32_V3PUSH_AVAILABLE_P to do checking.
5125 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
5127         PR debug/58150
5128         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5129         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5130         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
5131         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
5132         addition of most attributes on !orig_type_die or the attribute not
5133         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5135 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5136             Chung-Ju Wu  <jasonwucj@gmail.com>
5138         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5139         __NDS32_VH__ macro.
5140         * config/nds32/nds32.opt (mvh): New option.
5142 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5143             Chung-Ju Wu  <jasonwucj@gmail.com>
5145         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5146         function.
5147         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5148         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5149         definition.
5151 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5152             Chung-Ju Wu  <jasonwucj@gmail.com>
5154         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5155         function.
5156         * config/nds32/nds32-multiple.md (strlensi): New pattern.
5157         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5159 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
5160             Kito Cheng  <kito.cheng@gmail.com>
5161             Chung-Ju Wu  <jasonwucj@gmail.com>
5163         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5164         UNSPEC_FFMISM and UNSPEC_FLMISM.
5165         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5166         for ffb, ffmism and flmism.
5167         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5168         (unspec_ffmism): Ditto.
5169         (unspec_flmism): Ditto.
5170         (nds32_expand_builtin_impl): Check if string extension is available.
5171         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5172         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5174 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
5176         Reverting patch:
5177         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
5179         PR target/83712
5180         * lra-assigns.c (assign_by_spills): Return a flag of reload
5181         assignment failure.  Do not process the reload assignment
5182         failures.  Do not spill other reload pseudos if they has the same
5183         reg class.
5184         (lra_assign): Add a return arg.  Set up from the result of
5185         assign_by_spills call.
5186         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5187         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5188         usage_insns if it is not NULL.
5189         (spill_hard_reg_in_range): New function.
5190         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5191         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5192         function prototypes.
5193         (lra_assign): Change prototype.
5194         * lra.c (lra): Add code to deal with fails by splitting hard reg
5195         live ranges.
5197 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
5199         PR target/84807
5200         * config/i386/i386.opt: Replace Enforcment with Enforcement.
5202 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
5204         PR debug/84620
5205         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5206         (dw_val_node): Add val_symbolic_view.
5207         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5208         (symview_upper_bound): New.
5209         (new_line_info_table): Initialize symviews_since_reset.
5210         (dwarf2out_source_line): Count symviews_since_reset and set
5211         symview_upper_bound.
5212         (dw_val_equal_p): Handle symview.
5213         (add_AT_symview): New.
5214         (print_dw_val): Handle symview.
5215         (attr_checksum, attr_checksum_ordered): Likewise.
5216         (same_dw_val_p, size_of_die): Likewise.
5217         (value_format, output_die): Likewise.
5218         (add_high_low_attributes): Use add_AT_symview for entry_view.
5219         (dwarf2out_finish): Reset symview_upper_bound, clear
5220         zero_view_p.
5222 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
5224         PR target/83969
5225         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5226         Add strict argument and use it.
5227         (rs6000_split_multireg_move): Update for new strict argument.
5228         (mem_operand_gpr): Disallow all non-offsettable addresses.
5229         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5231 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
5233         PR target/84772
5234         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5235         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5236         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5238         PR c++/84767
5239         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5240         decl, use remap_type if we want to use the type.
5242 2018-03-09  Martin Sebor  <msebor@redhat.com>
5244         PR tree-optimization/84526
5245         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5246         Remove dead code.
5247         (builtin_access::generic_overlap): Be prepared to handle non-array
5248         base objects.
5250 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
5252         PR rtl-optimization/84682
5253         * lra-constraints.c (process_address_1): Check is_address flag
5254         for address constraints.
5255         (process_alt_operands): Likewise.
5256         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5257         preprocess_constraints.
5258         * recog.h (preprocess_constraints): Add oploc parameter.
5259         Adjust callers.
5260         * recog.c (preprocess_constraints): Test address_operand for
5261         CT_ADDRESS constraints.
5263 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
5265         PR target/83712
5266         * lra-assigns.c (assign_by_spills): Return a flag of reload
5267         assignment failure.  Do not process the reload assignment
5268         failures.  Do not spill other reload pseudos if they has the same
5269         reg class.
5270         (lra_assign): Add a return arg.  Set up from the result of
5271         assign_by_spills call.
5272         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5273         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5274         usage_insns if it is not NULL.
5275         (spill_hard_reg_in_range): New function.
5276         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5277         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5278         function prototypes.
5279         (lra_assign): Change prototype.
5280         * lra.c (lra): Add code to deal with fails by splitting hard reg
5281         live ranges.
5283 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5285         PR target/83193
5286         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5287         Accept complain bool parameter.  Only emit errors if it is true.
5288         (arm_parse_cpu_option_name): Likewise.
5289         (arm_target_thumb_only): Adjust callers of the above.
5290         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5291         prototype to take a default true bool parameter.
5292         (arm_parse_arch_option_name): Likewise.
5294 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
5295             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5297         PR jit/64089
5298         PR jit/84288
5299         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5300         * configure: Regenerate.
5301         * configure.ac ("linker --version-script option"): New.
5302         ("linker soname option"): New.
5304 2018-03-09  Richard Biener  <rguenther@suse.de>
5306         PR tree-optimization/84775
5307         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5308         immediate uses of predicate stmts and mark them modified.
5310         Revert
5311         PR tree-optimization/84178
5312         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5313         to caller.
5314         (version_loop_for_if_conversion): Delay update_ssa call.
5315         (tree_if_conversion): Delay update_ssa until after predicate
5316         insertion.
5318 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
5320         PR target/84763
5321         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5322         when the function accesses prior frames.
5324 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
5326         PR debug/84456
5327         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5328         gen_llsym, otherwise call maybe_gen_llsym.
5330         PR inline-asm/84742
5331         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5332         has ',' character inside of it.
5334 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5336         PR target/84748
5337         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5338         as clobbering CC_REGNUM.
5340 2018-03-08  Richard Biener  <rguenther@suse.de>
5342         PR middle-end/84552
5343         * tree-scalar-evolution.c: Include tree-into-ssa.h.
5344         (follow_copies_to_constant): Do not follow SSA names registered
5345         for update.
5347 2018-03-08  Richard Biener  <rguenther@suse.de>
5349         PR tree-optimization/84178
5350         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5351         to caller.
5352         (version_loop_for_if_conversion): Delay update_ssa call.
5353         (tree_if_conversion): Delay update_ssa until after predicate
5354         insertion.
5356 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
5358         PR tree-optimization/84178
5359         * tree-if-conv.c (release_bb_predicate): Remove the
5360         the assertion that the stmts have NULL use_ops.
5361         Discard the statements, asserting that they haven't
5362         yet been added to a BB.
5364 2018-03-08  Richard Biener  <rguenther@suse.de>
5366         PR tree-optimization/84746
5367         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5368         (phi_translate): Pass in destination ANTIC_OUT set.
5369         (phi_translate_1): Likewise.  For a simplified result lookup
5370         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5371         (phi_translate_set): Adjust.
5372         (do_pre_regular_insertion): Likewise.
5373         (do_pre_partial_partial_insertion): Likewise.
5375 2018-03-08  Martin Liska  <mliska@suse.cz>
5377         PR gcov-profile/84735
5378         * doc/gcov.texi: Document usage of profile files.
5379         * gcov-io.h: Document changes in the format.
5381 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
5383         PR debug/84404
5384         PR debug/84408
5385         * dwarf2out.c (struct dw_line_info_table): Update comments for
5386         view == -1.
5387         (FORCE_RESET_NEXT_VIEW): New.
5388         (FORCE_RESETTING_VIEW_P): New.
5389         (RESETTING_VIEW_P): Check for -1 too.
5390         (ZERO_VIEW_P): Likewise.
5391         (new_line_info_table): Force-reset next view.
5392         (dwarf2out_begin_function): Likewise.
5393         (dwarf2out_source_line): Simplify zero_view_p initialization.
5394         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5395         view directly.  Omit view when omitting .loc at line 0.
5397 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
5399         PR tree-optimization/84740
5400         * tree-switch-conversion.c (process_switch): Call build_constructors
5401         only if info.phi_count is non-zero.
5403         PR tree-optimization/84739
5404         * tree-tailcall.c (find_tail_calls): Check call arguments against
5405         DECL_ARGUMENTS (current_function_decl) rather than
5406         DECL_ARGUMENTS (func) when checking for tail recursion.
5408 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
5410         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5411         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5412         Volker Reichelt's entry and add entries for people that perform
5413         GCC fuzzy testing and report numerous bugs.
5415 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
5417         PR target/82411
5418         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5419         readonly data in sdata, if that is disabled.
5420         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5421         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5422         -mreadonly-in-sdata option.
5424 2018-03-07  Martin Sebor  <msebor@redhat.com>
5426         PR tree-optimization/84468
5427         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5428         basic block when looking for nul assignment.
5430 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
5432         PR target/84277
5433         * except.h (output_function_exception_table): Adjust prototype.
5434         * except.c (output_function_exception_table): Remove FNNAME parameter
5435         and add SECTION parameter.  Ouput one part of the table at a time.
5436         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5437         the first part of the exception table and emit unwind directives.
5438         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5439         (i386_pe_seh_cold_init): Likewise.
5440         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5441         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5442         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5443         (ix86_output_call_insn): Emit a nop in one more case for SEH.
5444         * config/i386/winnt.c: Include except.h.
5445         (struct seh_frame_state): Add reg_offset, after_prologue and
5446         in_cold_section fields.
5447         (i386_pe_seh_end_prologue): Set seh->after_prologue.
5448         (i386_pe_seh_cold_init): New function.
5449         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5450         to seh->in_cold_section.
5451         (seh_emit_push): Record the offset of the push.
5452         (seh_emit_save): Record the offet of the save.
5453         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5454         Test seh->after_prologue to disregard the epilogue.
5455         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5456         (i386_pe_end_cold_function): New function.
5458 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
5460         PR fortran/84565
5461         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5462         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5464         PR c++/84704
5465         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5466         on tmp_var.
5467         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5468         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5470         PR middle-end/84723
5471         * multiple_target.c: Include tree-inline.h and intl.h.
5472         (expand_target_clones): Diagnose and fail if node->definition and
5473         !tree_versionable_function_p (node->decl).
5475 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
5477         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5478         sprint_ul.
5479         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5480         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5481         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5483 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
5485         PR target/84710
5486         * combine.c (try_combine): Use reg_or_subregno instead of handling
5487         just paradoxical SUBREGs and REGs.
5489 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
5491          * config/arc/arc.c (arc_finalize_pic): Remove function.
5492          (arc_must_save_register): We use single base PIC register, remove
5493          checks to save/restore the PIC register.
5494          (arc_expand_prologue): Likewise.
5495          * config/arc/arc-protos.h (arc_set_default_type_attributes):
5496          Remove.
5497          (arc_verify_short): Likewise.
5498          (arc_attr_type): Likewise.
5499          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5500          (walk_stores): Likewise.
5501          (arc_address_cost): Make it static.
5502          (arc_verify_short): Likewise.
5503          (branch_dest): Likewise.
5504          (arc_attr_type): Likewise.
5505          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5506          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5507          (arc_final_prescan_insn): Remove inserting the nops due to
5508          hardware hazards.  It is done in reorg step.
5509          (insn_length_variant_t): Remove.
5510          (insn_length_parameters_t): Likewise.
5511          (arc_insn_length_parameters): Likewise.
5512          (arc_get_insn_variants): Likewise.
5513          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5515 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
5517         PR inline-asm/84683
5518         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5519         assertion failure.
5521         PR tree-optimization/84687
5522         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5523         on new_node->decl.
5524         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5526 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5528         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5529         Rename to ppc_speculation_barrier.
5530         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5531         __builtin_ppc_speculation_barrier.
5533 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
5535         PR target/84700
5536         * combine.c (combine_simplify_rtx): Don't try to simplify if
5537         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5538         are equal to x.
5540 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
5542         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5543         to 32 bytes when compiling for POWER9.
5545 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
5547         PR target/84564
5548         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5549         regparm >= 3 with no arg reg available also for calls with
5550         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
5552         PR target/84524
5553         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5554         orig,vex.
5555         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
5557 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
5559         PR target/84264
5560         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5562 2018-03-05  Richard Biener  <rguenther@suse.de>
5564         PR tree-optimization/84486
5565         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5566         When inserting a __builtin_assume_aligned call set the LHS
5567         SSA name alignment info accordingly.
5569 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
5571         PR tree-optimization/84114
5572         * config/aarch64/aarch64.c (aarch64_reassociation_width)
5573         Avoid reassociation of FLOAT_MODE addition.
5575 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
5577         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5578         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5579         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5580         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5581         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5582         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5583         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5584         and -mwbnoinvd.
5585         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5586         __builtin_ia32_wbinvd): New builtins.
5587         (SPECIAL_ARGS2): New.
5588         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5589         (SPECIAL_ARGS2): New.
5590         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5591         (ix86_valid_target_attribute_inner_p): Ditto.
5592         (ix86_init_mmx_sse_builtins): Add special_args2.
5593         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5594         TARGET_WBNOINVD_P): New.
5595         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5596         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5597         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5598         * config/i386/immintrin.h (_wbinvd): New intrinsic.
5599         * config/i386/pconfigintrin.h: New file.
5600         * config/i386/wbnoinvdintrin.h: Ditto.
5601         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5602         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5604 2018-03-05  Richard Biener  <rguenther@suse.de>
5606         PR tree-optimization/84670
5607         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5608         member.
5609         (BB_VISITED_WITH_VISITED_SUCCS): New define.
5610         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5611         (compute_antic_aux): Only assert the number of values in ANTIC_IN
5612         doesn't grow if all successors (recursively) were visited at least
5613         once.
5615 2018-03-05  Richard Biener  <rguenther@suse.de>
5617         PR tree-optimization/84650
5618         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5619         if executed in the loop pipeline.
5621 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
5623         * doc/configfiles.texi (Configuration Files): Move info about
5624         conditionalizing $target-protos.h to...
5625         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
5626         differs from $target-protos.h.
5628 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
5629             Chung-Ju Wu  <jasonwucj@gmail.com>
5631         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5632         * config/nds32/nds32-multiple.md (setmemsi): Define.
5633         * config/nds32/nds32-memory-manipulation.c
5634         (nds32_gen_dup_4_byte_to_word_value): New.
5635         (emit_setmem_word_loop): New.
5636         (emit_setmem_byte_loop): New.
5637         (nds32_expand_setmem_loop): New.
5638         (nds32_expand_setmem_loop_v3m): New.
5639         (nds32_expand_setmem_unroll): New.
5640         (nds32_expand_setmem): New.
5642 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5643             Chung-Ju Wu  <jasonwucj@gmail.com>
5645         * config/nds32/nds32-memory-manipulation.c
5646         (nds32_emit_load_store): New.
5647         (nds32_emit_post_inc_load_store): New.
5648         (nds32_emit_mem_move): New.
5649         (nds32_emit_mem_move_block): New.
5650         (nds32_expand_movmemsi_loop_unknown_size): New.
5651         (nds32_expand_movmemsi_loop_known_size): New.
5652         (nds32_expand_movmemsi_loop): New.
5653         (nds32_expand_movmemsi_unroll): New.
5654         (nds32_expand_movmemqi): Rename ...
5655         (nds32_expand_movmemsi): ... to this.
5656         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5657         (movmemsi): ... to this.
5658         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5659         (nds32_expand_movmemsi): ... to this.
5661 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5662             Monk Chiang  <sh.chiang04@gmail.com>
5663             Chung-Ju Wu  <jasonwucj@gmail.com>
5665         * config/nds32/nds32-protos.h
5666         (nds32_expand_load_multiple): New arguments.
5667         (nds32_expand_store_multiple): Ditto.
5668         (nds32_valid_multiple_load_store): Rename ...
5669         (nds32_valid_multiple_load_store_p): ... to this.
5670         * config/nds32/nds32-memory-manipulation.c
5671         (nds32_expand_load_multiple): Refine implementation.
5672         (nds32_expand_store_multiple): Ditto.
5673         * config/nds32/nds32-multiple.md
5674         (load_multiple): Update nds32_expand_load_multiple interface.
5675         (store_multiple): Update nds32_expand_store_multiple interface.
5676         * config/nds32/nds32-predicates.c
5677         (nds32_valid_multiple_load_store): Rename ...
5678         (nds32_valid_multiple_load_store_p): ... to this and refine
5679         implementation.
5680         * config/nds32/predicates.md
5681         (nds32_load_multiple_and_update_address_operation): New predicate.
5682         (nds32_store_multiple_and_update_address_operation): New predicate.
5684 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5685             Chung-Ju Wu  <jasonwucj@gmail.com>
5687         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5688         (combo): New attribute.
5689         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5691 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
5693         * config/nds32/nds32.opt: Change -mcmodel= default value.
5695 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
5696             Monk Chiang  <sh.chiang04@gmail.com>
5697             Chung-Ju Wu  <jasonwucj@gmail.com>
5699         * config/nds32/constants.md (unspec_element): New enum.
5700         * config/nds32/constraints.md (Umw): New constraint.
5701         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5702         * config/nds32/nds32-intrinsic.md: Likewise.
5703         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5704         (nds32_valid_smw_lwm_base_p): New.
5705         (nds32_output_smw_single_word): New.
5706         (nds32_output_lmw_single_word): New.
5707         (nds32_expand_unaligned_load): New.
5708         (nds32_expand_unaligned_store): New.
5709         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5710         (nds32_output_smw_single_word): Declare.
5711         (nds32_output_lmw_single_word): Declare.
5712         (nds32_expand_unaligned_load): Declare.
5713         (nds32_expand_unaligned_store): Declare.
5714         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5715         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5716         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5717         NDS32_BUILTIN_UASTORE_DW.
5718         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5719         predicate.
5721 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
5722             Kito Cheng  <kito.cheng@gmail.com>
5723             Chung-Ju Wu  <jasonwucj@gmail.com>
5725         * config/nds32/nds32-intrinsic.c
5726         (nds32_expand_builtin_null_ftype_reg): Delete.
5727         (nds32_expand_builtin_reg_ftype_imm): Ditto.
5728         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5729         (nds32_read_argument): New.
5730         (nds32_legitimize_target): Ditto.
5731         (nds32_legitimize_argument): Ditto.
5732         (nds32_check_constant_argument): Ditto.
5733         (nds32_expand_unop_builtin): Ditto.
5734         (nds32_expand_unopimm_builtin): Ditto.
5735         (nds32_expand_binop_builtin): Ditto.
5736         (nds32_builtin_decl_impl): Ditto.
5737         (builtin_description): Ditto.
5738         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5739         (nds32_init_builtins_impl): Ditto.
5740         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5741         (nds32_builtin_decl): New.
5742         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5743         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5745 2018-03-02  Jeff Law  <law@redhat.com>
5747         * reorg.c (stop_search_p): Handle DEBUG_INSN.
5748         (redundant_insn, fill_simple_delay_slots): Likewise.
5749         (fill_slots_from_thread): Likewise.
5750         * resource.c (mark_referenced_resources): Likewise.
5751         (mark_set_resources, find_dead_or_set_registers): Likewise.
5753 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5755         * substring-locations.h (format_warning_va): Formatting fix for
5756         ATTRIBUTE_GCC_DIAG.
5757         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5758         argument.
5759         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5760         * substring-locations.c: Include intl.h.
5761         (format_warning_va): Turned into small wrapper around
5762         format_warning_n_va, renamed to ...
5763         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5764         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5765         use ngettext.
5766         (format_warning_at_substring_n): New function.
5767         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5768         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
5769         format_warning_at_substring with just a shorter name instead of
5770         const function pointer.
5771         (fmtwarn_n): New function.
5772         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5773         appropriate, get rid of all the fmtstr temporaries, move conditionals
5774         with G_() wrapped string literals directly into fmtwarn arguments,
5775         cast dir.len to (int), formatting fixes.
5777 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
5779         * doc/invoke.texi: Remove "Cilk Plus" references.
5781 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5782             Richard Biener  <rguenther@suse.de>
5784         PR ipa/84628
5785         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5786         for error or warning attributes if CALL_FROM_THUNK_P is set.
5787         Formatting fixes.
5789 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5791         PR target/56540
5792         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5793         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5795         PR target/56540
5796         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5797         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5799         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5800         instead of -1U in last predictors element's probability member.
5802 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
5804         PR ipa/83983
5805         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5806         arguments if they are comparable.
5808 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
5810         PR tree-optimization/84634
5811         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5812         masks and masked_loop_p with a single loop_masks, making sure it's
5813         null for bb vectorization.
5815 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
5817         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5818         (vect_analyze_data_ref_access): Use loop->safe_len rather than
5819         loop->force_vectorize to check whether there is no alias.
5821 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5823         PR target/84614
5824         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5825         prototypes.
5826         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5827         comments.
5828         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5829         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5830         instead of a loop around prev_real_insn.
5831         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5832         prev_real_insn.
5834         PR inline-asm/84625
5835         * config/i386/i386.c (ix86_print_operand): Use conditional
5836         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
5837         zero vector.
5839 2018-03-02  Richard Biener  <rguenther@suse.de>
5841         PR tree-optimization/84427
5842         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
5843         (bitmap_set_subtract_values): Rewrite to handle multiple
5844         exprs per value.
5845         (clean): Likewise.
5846         (prune_clobbered_mems): Likewise.
5847         (phi_translate): Take edge instead of pred/phiblock.
5848         (phi_translate_1): Likewise.
5849         (phi_translate_set): Likewise.  Insert all translated
5850         exprs for a value into the set, keeping possibly multiple
5851         expressions per value.
5852         (compute_antic_aux): Adjust for phi_translate changes.
5853         When intersecting union the expressions and prune those
5854         not in the final value set, keeping possibly multiple
5855         expressions per value.  Do not use value-insertion
5856         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
5857         all expressions.  Add verification that the value-sets
5858         only shrink during iteration.
5859         (compute_partial_antic_aux): Adjust for the phi_translate changes.
5860         (do_pre_regular_insertion): Likewise.
5861         (do_pre_partial_partial_insertion): Likewise.
5863 2018-03-02  Richard Biener  <rguenther@suse.de>
5865         PR target/82005
5866         * config/darwin.c (saved_debug_info_level): New static global.
5867         (darwin_asm_lto_start): Disable debug info generation for LTO out.
5868         (darwin_asm_lto_end): Restore debug info generation settings.
5870 2018-03-01  Martin Liska  <mliska@suse.cz>
5872         PR sanitizer/82484
5873         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
5874         volatile arguments.
5876 2018-03-01  Richard Biener  <rguenther@suse.de>
5878         PR debug/84645
5879         * dwarf2out.c (gen_variable_die): Properly handle late VLA
5880         type annotation with LTO when debug was disabled at compile-time.
5882 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
5884         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
5885         XINT with INTVAL.
5886         (mips_final_postscan_insn): Likewise.
5888 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
5890         PR rtl-optimization/84528
5891         * alias.c (init_alias_target): Add commentary.
5892         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
5893         a unique base value if the frame pointer is not eliminated
5894         to the stack pointer.
5896 2018-03-01  Tom de Vries  <tom@codesourcery.com>
5898         PR rtl-optimization/83327
5899         * lra-int.h (hard_regs_spilled_into): Declare.
5900         * lra.c (hard_regs_spilled_into): Define.
5901         (init_reg_info): Init hard_regs_spilled_into.
5902         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
5903         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
5904         (process_bb_lives): Handle hard_regs_spilled_into.
5905         (lra_create_live_ranges_1): Before doing liveness propagation, clear
5906         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
5908 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
5910         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
5911         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
5912         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
5913         * config/rs6000/aix72.h: New file.
5915 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
5917         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
5918         instead of warning_at with conditional singular and plural messages
5919         where possible.
5921         PR target/52991
5922         * stor-layout.c (update_alignment_for_field): For
5923         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
5924         && !DECL_PACKED (field), do the alignment update, just use
5925         only desired_align instead of MAX (type_align, desired_align)
5926         as the alignment.
5927         (place_field): Don't do known_align < desired_align handling
5928         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
5929         is non-NULL, instead do it after rli->prev_field handling and
5930         only if not within a bitfield word.  For DECL_PACKED (field)
5931         use type_align of BITS_PER_UNIT.
5933 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
5935         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
5936         superfluous parentheses and trailing spaces.
5938 2018-02-28  Richard Biener  <rguenther@suse.de>
5940         PR tree-optimization/84584
5941         * graphite-scop-detection.c (scop_detection::add_scop): Discard
5942         SCoPs with fake exit edge.
5944 2018-02-28  Martin Liska  <mliska@suse.cz>
5946         PR testsuite/84597
5947         * timevar.c (timer::print): Fix format to properly print 100%
5948         values.
5950 2018-02-28  Richard Biener  <rguenther@suse.de>
5952         PR middle-end/84607
5953         * genmatch.c (capture_info::walk_match): Do not mark
5954         captured expressions without operands as expr_p given
5955         they act more like predicates and should be subject to
5956         "lost tail" side-effect preserving.
5958 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
5960         PR rtl-optimization/81611
5961         * auto-inc-dec.c (attempt_change): Move dead note from
5962         mem_insn if it's the next use of regno
5963         (find_address): Take address use of reg holding
5964         non-incremented value.  Add parm to limit search to the named
5965         reg only.
5966         (merge_in_block): Attempt to use a mem insn that is the next
5967         use of the original regno.
5969 2018-02-27  Martin Sebor  <msebor@redhat.com>
5971         PR c++/83871
5972         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
5973         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
5975 2018-02-27  Martin Sebor  <msebor@redhat.com>
5977         PR translation/84207
5978         * diagnostic-core.h (warning_n, error_n, inform_n): Change
5979         n argument to unsigned HOST_WIDE_INT.
5980         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
5981         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
5982         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
5983         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
5985 2018-02-27  Richard Biener  <rguenther@suse.de>
5987         PR tree-optimization/84512
5988         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
5989         Do not use the estimate returned from record_stmt_cost for
5990         the scalar iteration cost but sum properly using add_stmt_cost.
5992 2018-02-27  Richard Biener  <rguenther@suse.de>
5994         PR tree-optimization/84466
5995         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
5996         Adjust last change to less strictly validate use operands.
5998 2018-02-27  Martin Liska  <mliska@suse.cz>
6000         PR gcov-profile/84548
6001         * gcov.c (process_file): Allow partial overlap and consider it
6002         also as group functions.
6003         (output_lines): Properly calculate range of lines for a group.
6005 2018-02-27  Martin Liska  <mliska@suse.cz>
6007         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6008         'ggc' suffixes.  Change first column width.
6009         (timer::print): Fix formatting of the column.
6011 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
6013         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6014         preserve inline entry blocks for the sake of debug inline
6015         entry point markers alone.
6016         (remove_unused_locals): Suggest in comments a better place to
6017         force the preservation of inline entry blocks that are
6018         otherwise unused, but do not preserve them.
6020 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6022         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6024 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6026         PR target/84039
6027         * config/i386/constraints.md (Bs): Replace
6028         ix86_indirect_branch_register with
6029         TARGET_INDIRECT_BRANCH_REGISTER.
6030         (Bw): Likewise.
6031         * config/i386/i386.md (indirect_jump): Likewise.
6032         (tablejump): Likewise.
6033         (*sibcall_memory): Likewise.
6034         (*sibcall_value_memory): Likewise.
6035         Peepholes of indirect call and jump via memory: Likewise.
6036         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6037         (*sibcall_value_GOT_32): Likewise.
6038         * config/i386/predicates.md (indirect_branch_operand): Likewise.
6039         (GOT_memory_operand): Likewise.
6040         (call_insn_operand): Likewise.
6041         (sibcall_insn_operand): Likewise.
6042         (GOT32_symbol_operand): Likewise.
6043         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6045 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
6047         PR rtl-optimization/83496
6048         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6049         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
6050         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6051         redundant insn, if any.
6052         (relax_delay_slots): Likewise.
6053         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6055 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
6057         PR tree-optimization/83965
6058         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6059         that grouped statements are part of a reduction chain.  Return
6060         true if the statement is not marked as a reduction itself but
6061         is part of a group.
6062         (vect_recog_dot_prod_pattern): Don't check whether the statement
6063         is part of a group here.
6064         (vect_recog_sad_pattern): Likewise.
6065         (vect_recog_widen_sum_pattern): Likewise.
6067 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
6069         PR debug/84545
6070         * final.c (rest_of_clean_state): Also look for calls inside sequences.
6072 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6074         PR target/84530
6075         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6076         the bool argument.
6077         (ix86_output_indirect_function_return): New prototype.
6078         (ix86_split_simple_return_pop_internal): Likewise.
6079         * config/i386/i386.c (indirect_return_via_cx): New.
6080         (indirect_return_via_cx_bnd): Likewise.
6081         (indirect_thunk_name): Handle return va CX_REG.
6082         (output_indirect_thunk_function): Create alias for
6083         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6084         (ix86_output_indirect_jmp): Remove the bool argument.
6085         (ix86_output_indirect_function_return): New function.
6086         (ix86_split_simple_return_pop_internal): Likewise.
6087         * config/i386/i386.md (*indirect_jump): Don't pass false
6088         to ix86_output_indirect_jmp.
6089         (*tablejump_1): Likewise.
6090         (simple_return_pop_internal): Change it to define_insn_and_split.
6091         Call ix86_split_simple_return_pop_internal to split it for
6092         -mfunction-return=.
6093         (simple_return_indirect_internal): Call
6094         ix86_output_indirect_function_return instead of
6095         ix86_output_indirect_jmp.
6097 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
6099         PR bootstrap/84405
6100         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6101         memset and value initialization afterwards.
6103 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
6105         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6107 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6109         PR target/84521
6110         * common/config/aarch64/aarch64-common.c
6111         (aarch_option_optimization_table[]): Switch
6112         off fomit-frame-pointer
6114 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
6115             Chung-Ju Wu  <jasonwucj@gmail.com>
6117         * config/nds32/nds32-multiple.md (load_multiple): Disallow
6118         volatile memory.
6119         (store_multiple): Ditto.
6121 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
6123         * config.gcc: Add --with-cpu support for nds32 target.
6124         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6125         * config/nds32/nds32.opt: Add -mcpu= option.
6127 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
6129         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6130         isel=yes): Warn for these deprecated options.
6132 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
6134         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6135         ISA_2_5_MASKS_EMBEDDED.
6137 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
6139         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6140         p->max as pointers rather than using iterative_hash_expr.
6142 2018-02-23  Carl Love  <cel@us.ibm.com>
6144         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6145         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6146         BU_P8V_OVERLOAD_2.
6147         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6148         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6149         P8V_BUILTIN_VEC_VUNSIGNED2.
6151 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
6153         PR target/81572
6154         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6155         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6156         LRA_UNKNOWN_ALT.
6157         * lra-constraints.c (curr_insn_transform): Set up
6158         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
6159         LRA_UNKNOWN_ALT.
6160         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6161         * lra-eliminations.c (spill_pseudos): Ditto.
6162         (process_insn_for_elimination): Ditto.
6163         * lra-lives.c (reg_early_clobber_p): Use the new macros.
6164         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6165         LRA_NON_CLOBBERED_ALT.
6167 2018-02-22  Martin Sebor  <msebor@redhat.com>
6169         PR tree-optimization/84480
6170         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6171         to maybe_diag_stxncpy_trunc.  Call it.
6172         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6173         from gimple_fold_builtin_strcpy.  Print inlining stack.
6174         (handle_builtin_stxncpy): Print inlining stack.
6175         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6177 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
6179         PR target/84176
6180         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6181         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6182         and -fcheck-pointer-bounds are used together.
6183         (indirect_thunk_prefix): New enum.
6184         (indirect_thunk_need_prefix): New function.
6185         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
6186         "_nt" instead of "_bnd" for NOTRACK prefix.
6187         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6188         (output_indirect_thunk_function): Likewise.
6189         (): Likewise.
6190         (ix86_code_end): Update output_indirect_thunk_function calls.
6191         (ix86_output_indirect_branch_via_reg): Replace
6192         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6193         (ix86_output_indirect_branch_via_push): Likewise.
6194         (ix86_output_function_return): Likewise.
6195         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6196         incompatible with -fcf-protection=branch and
6197         -fcheck-pointer-bounds.
6199 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
6201         PR target/83335
6202         * config/aarch64/aarch64.c (aarch64_print_address_internal):
6203         Change gcc_assert call to output_operand_lossage.
6205 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
6207         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6209 2018-02-22  DJ Delorie  <dj@redhat.com>
6210             Sebastian Perta  <sebastian.perta@renesas.com>
6211             Oleg Endo  <olegendo@gcc.gnu.org>
6213         * config/rx/rx.c (rx_rtx_costs): New function.
6214         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6216 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6218         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6220 2018-02-22  Martin Liska  <mliska@suse.cz>
6222         PR driver/83193
6223         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6224         Add "native" as a possible value.
6226 2018-02-22  Martin Liska  <mliska@suse.cz>
6228         PR driver/83193
6229         * config/i386/i386.c (ix86_option_override_internal):
6230         Add "native" as a possible value for -march and -mtune.
6232 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
6234         PR target/84502
6235         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6236         to all type variants.
6238         PR tree-optimization/84503
6239         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6240         width as info->bitpos + info->bitsize - start.
6241         (merged_store_group::merge_overlapping): Simplify width computation.
6242         (check_no_overlap): New function.
6243         (imm_store_chain_info::try_coalesce_bswap): Compute expected
6244         start + width and last_order of the group, fail if check_no_overlap
6245         fails.
6246         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6247         to group if check_no_overlap fails.
6249 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
6251         * config/rs6000/altivec.md: Delete contraint arguments to
6252         define_expand, define_split, and define_peephole2, and in
6253         define_insn_and_split if always unused.
6254         * config/rs6000/darwin.md: Ditto.
6255         * config/rs6000/dfp.md: Ditto.
6256         * config/rs6000/rs6000.md: Ditto.
6257         * config/rs6000/sync.md: Ditto.
6258         * config/rs6000/vector.md: Ditto.
6259         * config/rs6000/vsx.md: Ditto.
6261 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
6263         * config/rs6000/altivec.md: Write output control strings as braced
6264         blocks instead of double-quoted strings.
6265         * config/rs6000/darwin.md: Ditto.
6266         * config/rs6000/rs6000.md: Ditto.
6267         * config/rs6000/vector.md: Ditto.
6268         * config/rs6000/vsx.md: Ditto.
6270 2018-02-21  Jason Merrill  <jason@redhat.com>
6272         PR c++/84314 - ICE with templates and fastcall attribute.
6273         * attribs.c (build_type_attribute_qual_variant): Remove assert.
6275 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
6277         * ipa-cp.c (determine_versionability): Fix comment typos.
6279 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
6281         PR c/84229
6282         * ipa-cp.c (determine_versionability): Do not version functions caling
6283         va_arg_pack.
6285 2018-02-21  Martin Liska  <mliska@suse.cz>
6287         PR driver/83193
6288         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6289         Add "native" as a possible value.
6290         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
6291         the macro when native cpu detection is available.
6293 2018-02-21  Martin Liska  <mliska@suse.cz>
6295         PR driver/83193
6296         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6297         Add "native" as a possible value.
6298         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6299         when native cpu detection is available.
6301 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
6302             Martin Sebor  <msebor@redhat.com>
6304         PR tree-optimization/84478
6305         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6306         false.
6307         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6308         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6309         support which is conservatively correct, for 2 only stay conservative
6310         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
6311         argument to the 2 argument get_range_strlen, adjust 6 arg
6312         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6313         false.
6314         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6315         (gimple_fold_builtin_strlen): Pass true as last argument to
6316         get_range_strlen.
6318 2018-02-20  Martin Sebor  <msebor@redhat.com>
6320         PR middle-end/84095
6321         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6322         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
6323         (builtin_memref::builtin_memref): Factor out parts into
6324         set_base_and_offset and call it.
6326 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
6328         PR middle-end/84406
6329         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6330         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6331         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
6332         search at the associated MODE_INT.
6334 2018-02-20  Jeff Law  <law@redhat.com>
6336         PR middle-end/82123
6337         PR tree-optimization/81592
6338         PR middle-end/79257
6339         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6340         for range data rather than using global data.
6341         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6342         range data rather than using global data.
6343         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6344         pass it to children as needed.
6345         (struct directive::fmtresult): Similarly.
6346         (struct directive::set_width): Similarly.
6347         (struct directive::set_precision): Similarly.
6348         (format_integer, format_directive, parse_directive): Similarly.
6349         (format_none): Accept unnamed vr_values parameter.
6350         (format_percent, format_floating, format_character): Similarly.
6351         (format_string, format_plain): Similarly.
6352         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6353         the EVRP range analyzer for range data rather than using global data.
6354         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
6355         gimple-ssa-evrp-analyze.h
6356         (class sprintf_dom_walker): Add after_dom_children member function.
6357         Add evrp_range_analyzer member.
6358         (sprintf_dom_walker::before_dom_children): Call into the EVRP
6359         range analyzer as needed.
6360         (sprintf_dom_walker::after_dom_children): New member function.
6361         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6362         if not optimizing.
6363         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6364         (evrp_range_analyzer::pop_to_marker): Likewise.
6366 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
6368         PR tree-optimization/84419
6369         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6370         with the required type if its current type is compatible but
6371         different.
6373 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
6375         PR middle-end/82004
6376         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6377         after vectorization.
6379 2018-02-20  Martin Liska  <mliska@suse.cz>
6381         PR driver/83193
6382         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6383         possible values if we don't have a hint.
6385 2018-02-20  Martin Liska  <mliska@suse.cz>
6387         PR c/84310
6388         PR target/79747
6389         * final.c (shorten_branches): Build align_tab array with one
6390         more element.
6391         * opts.c (finish_options): Add alignment option limit check.
6392         (MAX_CODE_ALIGN): Likewise.
6393         (MAX_CODE_ALIGN_VALUE): Likewise.
6394         * doc/invoke.texi: Document maximum allowed option value for
6395         all -falign-* options.
6397 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
6399         PR target/84146
6400         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6401         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6402         * var-tracking.c (emit_note_insn_var_location): Remove all references
6403         to NOTE_INSN_CALL_ARG_LOCATION.
6404         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6405         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6406         Use copy_rtx_if_shared.
6407         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6408         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6409         (dwarf2out_var_location): Remove handling of
6410         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6411         on call_insn.
6412         * final.c (final_scan_insn): Remove all references to
6413         NOTE_INSN_CALL_ARG_LOCATION.
6414         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
6415         before dumping final insns.
6416         * except.c (emit_note_eh_region_end): Remove all references to
6417         NOTE_INSN_CALL_ARG_LOCATION.
6418         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6419         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6420         * config/arc/arc.c (hwloop_optimize): Likewise.
6421         * config/arm/arm.c (create_fix_barrier): Likewise.
6422         * config/s390/s390.c (s390_chunkify_start): Likewise.
6423         * config/sh/sh.c (find_barrier): Likewise.
6424         * config/i386/i386.c (rest_of_insert_endbranch,
6425         ix86_seh_fixup_eh_fallthru): Likewise.
6426         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6427         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6428         * config/frv/frv.c (frv_function_prologue): Likewise.
6429         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
6430         reg note.
6431         (note_outside_basic_block_p): Remove all references to
6432         NOTE_INSN_CALL_ARG_LOCATION.
6433         * gengtype.c (adjust_field_rtx_def): Likewise.
6434         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6435         Likewise.
6436         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6437         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6439         PR c++/84444
6440         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6441         is ADDR_EXPR.
6443         PR tree-optimization/84452
6444         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6445         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6446         is NULL.
6448 2018-02-19  Martin Liska  <mliska@suse.cz>
6450         PR sanitizer/82183
6451         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6453 2018-02-19  Martin Liska  <mliska@suse.cz>
6454             Richard Sandiford  <richard.sandiford@linaro.org>
6456         PR tree-optimization/82491
6457         * gimple-fold.c (get_base_constructor): Make earlier bail out
6458         to prevent ubsan.
6460 2018-02-19  Carl Love  <cel@us.ibm.com>
6462         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6463         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6464         BU_P8V_OVERLOAD_1.
6465         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6466         P8V_BUILTIN_VEC_NEG.
6468 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
6470         * config/rl78/rl78.md (movdf): New define expand.
6472 2018-02-19  Martin Liska  <mliska@suse.cz>
6474         PR other/80589
6475         * doc/invoke.texi: Fix typo.
6476         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6478 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
6480         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6481         handle rs6000_single_float and rs6000_double_float specially for
6482         e500 family CPUs.
6484 2018-02-16  Jeff Law  <law@redhat.com>
6486         * config/rx/rx.c (add_pop_cfi_notes): New function.;
6487         (pop_regs): Use it.
6489 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
6491         PR ipa/84425
6492         * ipa-inline.c (inline_small_functions): Fix a typo.
6494 2018-02-16  Nathan Sidwell  <nathan@acm.org>
6496         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6498 2018-02-16  Carl Love  <cel@us.ibm.com>
6500         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6501         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6502         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6503         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6504         expansion to P8V_BUILTIN_VEC_FLOAT2.
6506 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
6508         PR rtl-optimization/70023
6509         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6510         src_regno into account.
6512 2018-02-16  Carl Love  <cel@us.ibm.com>
6514         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6515         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6516         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6517         * config/rs6000/rs6000.c: Remove case statements for
6518         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6519         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6520         and P9V_BUILTIN_VEC_VINSERT4B.
6521         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6522         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6523         * config/rs6000/vsx.md:
6524         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6525         vec_insert4b.
6527 2018-02-16  Carl Love  <cel@us.ibm.com>
6529         * config/rs6000/altivec.h: Add builtin names vec_extract4b
6530         vec_insert4b.
6531         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6532         definitions.
6533         * config/rs6000/rs6000-c.c: Add the definitions for
6534         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6535         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6536         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6537         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
6538         definition for insert4b and define insn *insert3b_internal.
6539         * doc/extend.texi: Add documentation for vec_extract4b.
6541 2018-02-16  Nathan Sidwell  <nathan@acm.org>
6543         * doc/extend.texi (Backwards Compatibility): Mention friend
6544         injection.  Note for-scope is deprecated.
6545         * doc/invoke.texi (-ffriend-injection): Deprecate.
6547 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
6549         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6550         that moved to I2, also allow destinations that are a paradoxical
6551         subreg (instead of a normal reg).
6553 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
6555         PR target/83831
6556         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6557         to QImode.
6559 2018-02-16  Richard Biener  <rguenther@suse.de>
6561         PR tree-optimization/84037
6562         PR tree-optimization/84016
6563         PR target/82862
6564         * config/i386/i386.c (ix86_builtin_vectorization_cost):
6565         Adjust vec_construct for the fact we need additional higher latency
6566         128bit inserts for AVX256 and AVX512 vector builds.
6567         (ix86_add_stmt_cost): Scale vector construction cost for
6568         elementwise loads.
6570 2018-02-16  Richard Biener  <rguenther@suse.de>
6572         PR tree-optimization/84417
6573         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6574         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6575         (non_rewritable_lvalue_p): Likewise, use poly-ints.
6577 2018-02-16  Martin Liska  <mliska@suse.cz>
6579         PR sanitizer/84307
6580         * internal-fn.def (ASAN_CHECK): Set proper flags.
6581         (ASAN_MARK): Likewise.
6583 2018-02-16  Julia Koval  <julia.koval@intel.com>
6585         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6586         from PTA_CANNONLAKE.
6588 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
6590         PR target/84272
6591         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6592         Use ++iter rather than iter++ for std::list iterators.
6593         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
6594         defer deleting them until all nodes in the forest are processed.  Do
6595         free even leaf nodes.  Change to_process into auto_vec.
6597         PR bootstrap/84405
6598         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6599         * vec.h (vec_default_construct): Use memset instead of placement new
6600         if BROKEN_VALUE_INITIALIZATION is defined.
6601         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6602         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6603         is defined.
6605         PR rtl-optimization/83723
6606         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6607         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
6608         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
6609         recursive calls.
6610         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6611         callers.
6612         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6614 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
6616         PR rtl-optimization/81443
6617         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6618         from inner REGs to paradoxical SUBREGs.
6620 2018-02-16  Richard Biener  <rguenther@suse.de>
6622         PR tree-optimization/84399
6623         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6624         For operands we can analyze at their definition make sure we can
6625         analyze them at each use as well.
6627 2018-02-16  Richard Biener  <rguenther@suse.de>
6629         PR tree-optimization/84190
6630         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6631         volatile accesses if the decl isn't volatile.
6633 2018-02-15  Jason Merrill  <jason@redhat.com>
6635         PR c++/84314 - ICE with templates and fastcall attribute.
6636         * attribs.c (build_type_attribute_qual_variant): Don't clobber
6637         TYPE_CANONICAL on an existing type.
6639 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
6641         PR tree-optimization/84383
6642         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6643         dstoff nor call operand_equal_p if dstbase is NULL.
6645         PR tree-optimization/84334
6646         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6647         also a CONSTANT_CLASS_P, punt.
6649 2018-02-14  Jim Wilson  <jimw@sifive.com>
6651         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6652         first SMALL_OPERAND check.  New local min_second_step.  Move assert
6653         to where locals are set.  Add TARGET_RVC support.
6654         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6656 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
6658         * doc/invoke.texi: Correct -Wformat-overflow code sample.
6660 2018-02-14  Martin Sebor  <msebor@redhat.com>
6662         PR tree-optimization/83698
6663         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6664         arrays constrain the offset range to their bounds.
6665         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6666         (builtin_access::overlap): Avoid setting the size of overlap if it's
6667         already been set.
6668         (maybe_diag_overlap): Also consider arrays when deciding what values
6669         of offsets to include in diagnostics.
6671 2018-02-14  Martin Sebor  <msebor@redhat.com>
6673         PR c/84108
6674         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6675         that correspond to the kind of a declaration.
6677 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
6679         PR target/83984
6680         * config/pa/pa.md: Load address of PIC label using the linkage table
6681         if the label is nonlocal.
6683 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6685         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6686         warning message if user requests -maltivec=be.
6687         * doc/invoke.texi: Document deprecation of -maltivec=be.
6689 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
6691         PR target/84220
6692         * config/rs6000/rs6000-c.c: Update definitions for
6693         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6694         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6696 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6698         PR target/84239
6699         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6700         add _get_ssp intrinsics. Remove argument from
6701         __builtin_ia32_rdssp[d|q].
6702         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6703         * config/i386/i386-builtin.def: Remove argument from
6704         __builtin_ia32_rdssp[d|q].
6705         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6706         ix86_expand_special_args_builtin for _rdssp[d|q].
6707         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6708         Clear register before usage.
6709         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6710         Add documentation for new _get_ssp and _inc_ssp intrinsics.
6712 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
6714         PR tree-optimization/84357
6715         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6716         operand 1 of an ARRAY_REF too.
6718 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
6720         PR target/83831
6721         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6722         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6723         declarations.
6724         (set_of_reg): New struct.
6725         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6726         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6727         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6728         functions.
6729         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6730         Split into bitclr, bitset, bitinvert patterns if appropriate.
6731         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6732         use rx_fuse_in_memory_bitop.
6733         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6734         to named insn, correct maximum insn length.
6736 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
6738         PR target/79242
6739         * machmode.def: Define a complex mode for PARTIAL_INT.
6740         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6741         MODE_PARTIAL_INT.
6742         * doc/rtl.texi: Document CSPImode.
6743         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6744         handling.
6745         (msp430_hard_regno_nregs_with_padding): Likewise.
6747 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
6749         PR target/84279
6750         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6752 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
6754         PR rtl-optimization/84169
6755         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
6756         we generated a parallel as new i3 and we split that to new i2 and i3
6757         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
6758         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
6759         those to i2, not i1.  Partially rewrite this scan code.
6761 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
6763         PR c/82210
6764         * stor-layout.c (place_field): For variable length fields, adjust
6765         offset_align afterwards not just based on the field's alignment,
6766         but also on the size.
6768         PR middle-end/84309
6769         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6770         of exps and logs in the use_exp2 case.
6772 2018-02-13  Jeff Law  <law@redhat.com>
6774         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6775         entry for "vector".
6777         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6778         ARGS as unused.
6780 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
6782         PR debug/84342
6783         PR debug/84319
6784         * common.opt (gas-loc-support, gas-locview-support): New.
6785         (ginline-points, ginternal-reset-location-views): New.
6786         * doc/invoke.texi: Document them.  Use @itemx where intended.
6787         (gvariable-location-views): Adjust.
6788         * target.def (reset_location_view): New.
6789         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6790         (TARGET_RESET_LOCATION_VIEW): New.
6791         * doc/tm.texi: Rebuilt.
6792         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6793         (dwarf2out_default_as_locview_support): New.
6794         (output_asm_line_debug_info): Use option variables.
6795         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6796         (output_loc_list): Likewise.
6797         (add_high_low_attributes): Check option variables.
6798         Don't output entry view attribute in strict mode.
6799         (gen_inlined_subroutine_die): Check option variables.
6800         (dwarf2out_inline_entry): Likewise.
6801         (init_sections_and_labels): Likewise.
6802         (dwarf2out_early_finish): Likewise.
6803         (maybe_reset_location_view): New, from...
6804         (dwarf2out_var_location): ... here.  Call it.
6805         * debug.h (dwarf2out_default_as_loc_support): Declare.
6806         (dwarf2out_default_as_locview_support): Declare.
6807         * hooks.c (hook_int_rtx_insn_0): New.
6808         * hooks.h (hook_int_rtx_insn_0): Declare.
6809         * toplev.c (process_options): Take -gas-loc-support and
6810         -gas-locview-support from dwarf2out.  Enable
6811         -gvariable-location-views by default only with locview
6812         assembler support.  Enable -ginternal-reset-location-views by
6813         default only if the target defines the corresponding hook.
6814         Enable -ginline-points by default if location views are
6815         enabled; force it disabled if statement frontiers are
6816         disabled.
6817         * tree-inline.c (expand_call_inline): Check option variables.
6818         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6820 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
6822         PR tree-optimization/84321
6823         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6824         handling.  Also check whether the anti-range contains any values
6825         that satisfy the mask; switch to a VR_RANGE if not.
6827 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
6829         PR sanitizer/84340
6830         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6832 2018-02-13  Martin Jambor  <mjambor@suse.cz>
6834         PR c++/83990
6835         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
6836         of call statements, also set location of a load to a temporary.
6838 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
6840         * config/rl78/rl78.c (add_vector_labels): New function.
6841         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
6842         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
6843         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
6844         which checks that no arguments are passed.
6845         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
6846         * doc/extend.texi: Documentation for the new attribute.
6848 2018-02-13  Andreas Schwab  <schwab@suse.de>
6850         * config/riscv/linux.h (CPP_SPEC): Define.
6852 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
6854         PR target/84335
6855         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
6856         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
6857         OPTION_MASK_ISA_AES as first argument to def_builtin_const
6858         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
6859         instead of OPTION_MASK_ISA_PCLMUL as first argument to
6860         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
6861         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
6862         temporarily for AES and PCLMUL builtins.
6864         PR tree-optimization/84339
6865         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
6866         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
6867         Formatting fixes.
6869         PR middle-end/84309
6870         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
6871         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
6872         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
6873         inline function.
6874         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
6875         inline function.
6876         * omp-simd-clone.h: New file.
6877         * omp-simd-clone.c: Include omp-simd-clone.h.
6878         (expand_simd_clones): No longer static.
6879         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
6880         cgraph.h and omp-simd-clone.h.
6881         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
6882         (vect_recog_widen_shift_pattern): Formatting fix.
6883         (vect_pattern_recog_1): Don't check optab for calls.
6885         PR target/84336
6886         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
6887         operands[2] into a REG before using gen_lowpart on it.
6889 2018-02-12  Jeff Law  <law@redhat.com>
6891         PR target/83760
6892         * config/sh/sh.c (find_barrier): Consider a sibling call
6893         a barrier as well.
6895         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
6896         successfully back substituting a reg.
6898 2018-02-12  Richard Biener  <rguenther@suse.de>
6900         PR tree-optimization/84037
6901         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
6902         parameter, move visited init to caller.
6903         (vect_slp_analyze_operations): Separate cost from validity
6904         check, initialize visited once for all instances.
6905         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
6906         for all instances.
6907         * tree-vect-stmts.c (vect_model_simple_cost): Make early
6908         out an assert.
6909         (vect_model_promotion_demotion_cost): Likewise.
6910         (vectorizable_bswap): Guard cost modeling with !slp_node
6911         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
6912         SLP stmts.
6913         (vectorizable_call): Likewise.
6914         (vectorizable_conversion): Likewise.
6915         (vectorizable_assignment): Likewise.
6916         (vectorizable_shift): Likewise.
6917         (vectorizable_operation): Likewise.
6918         (vectorizable_store): Likewise.
6919         (vectorizable_load): Likewise.
6920         (vectorizable_condition): Likewise.
6921         (vectorizable_comparison): Likewise.
6923 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
6925         PR sanitizer/84307
6926         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
6927         (ASAN_MARK): Fix fnspec to account for return value, change pointer
6928         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
6930 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
6932         PR middle-end/83665
6933         * params.def (inline-min-speedup): Increase from 8 to 15.
6934         (max-inline-insns-auto): Decrease from 40 to 30.
6935         * ipa-split.c (consider_split): Add some buffer for function to
6936         be considered inlining candidate.
6937         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
6938         default values.
6940 2018-02-12  Richard Biener  <rguenther@suse.de>
6942         PR tree-optimization/84037
6943         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
6944         matched stmts if we cannot swap the non-matched ones.
6946 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
6948         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
6949         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
6950         _mm_maskz_scalef_round_ss): New intrinsics.
6951         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
6952         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
6953         __builtin_ia32_scalefss_round): Remove.
6954         (__builtin_ia32_scalefsd_mask_round,
6955         __builtin_ia32_scalefss_mask_round): New intrinsics.
6956         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
6957         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
6958         ((match_operand:VF_128 2 "<round_nimm_predicate>"
6959         "<round_constraint>")): Changed to ...
6960         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
6961         "<round_scalar_constraint>")): ... this.
6962         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
6963         %0, %1, %2<round_op3>}"): Changed to ...
6964         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
6965         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
6966         %2<round_scalar_mask_op3>}"): ... this.
6967         * config/i386/subst.md (round_scalar_nimm_predicate): New.
6969 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
6971         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
6972         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
6973         (_mm_maskz_sqrt_round_ss): New intrinsics.
6974         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
6975         (__builtin_ia32_sqrtsd_mask_round)
6976         (__builtin_ia32_sqrtss_mask_round): New builtins.
6977         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
6978         (__builtin_ia32_sqrtss_round): Remove.
6979         (__builtin_ia32_sqrtsd_mask_round)
6980         (__builtin_ia32_sqrtss_mask_round): New builtins.
6981         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
6982         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
6983         ((match_operand:VF_128 1 "vector_operand"
6984         "xBm,<round_constraint>")): Changed to ...
6985         ((match_operand:VF_128 1 "vector_operand"
6986         "xBm,<round_scalar_constraint>")): ... this.
6987         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
6988         %0, %2, %<iptr>1<round_op3>}): Changed to ...
6989         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
6990         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
6991         %<iptr>1<round_scalar_mask_op3>}): ... this.
6992         ((set_attr "prefix" "<round_prefix>")): Changed to ...
6993         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
6995 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
6997         PR target/84266
6998         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
6999         Cast vec_cmpeq result to correct type.
7000         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7001         Cast vec_cmpgt result to correct type.
7003 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
7005         * final.c (final_scan_insn_1): Renamed from...
7006         (final_scan_insn): ... this.  New wrapper, to recover
7007         seen from the outermost call in recursive ones.
7008         * config/sparc/sparc.c (output_return): Drop seen from call.
7009         (output_sibcall): Likewise.
7010         * config/visium/visium.c (output_branch): Likewise.
7012 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
7014         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7015         function label.
7017 2018-02-10  Alan Modra  <amodra@gmail.com>
7019         PR target/84300
7020         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7021         Specify LR as an input.
7023 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
7025         PR sanitizer/83987
7026         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7027         remove_member_access_dummy_vars): New functions.
7028         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7029         lower_omp_1, execute_lower_omp): Use them.
7031         PR rtl-optimization/84308
7032         * shrink-wrap.c (spread_components): Release todo vector.
7034 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
7036         PR rtl-optimization/57193
7037         * ira-color.c (struct allocno_color_data): Add member
7038         conflict_allocno_hard_prefs.
7039         (update_conflict_allocno_hard_prefs): New.
7040         (bucket_allocno_compare_func): Add a preference based on
7041         conflict_allocno_hard_prefs.
7042         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7043         (color_allocnos): Remove a dead code.  Initiate
7044         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
7046 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
7048         PR target/84226
7049         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7050         constraint from =wa to wa.  Avoid a subreg on the output operand,
7051         instead use a pseudo and subreg it in a move.
7052         (p9_xxbrd_<mode>): Changed to ...
7053         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7054         (p9_xxbrd_v2df): New expander.
7055         (p9_xxbrw_<mode>): Changed to ...
7056         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7057         (p9_xxbrw_v4sf): New expander.
7059 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
7061         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7063 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
7065         PR target/83926
7066         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7067         multiply in 32-bit mode.
7068         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7069         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7070         mode.
7072 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
7074         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7075         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7076         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7077         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7079 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
7081         PR lto/84213
7082         * dwarf2out.c (is_trivial_indirect_ref): New function.
7083         (dwarf2out_late_global_decl): Do not generate a location
7084         attribute for variables that have a non-trivial DECL_VALUE_EXPR
7085         and that are not defined in the current unit.
7087 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
7089         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7090         instead of a libcall for UNORDERED.
7092 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
7094         PR target/82641
7095         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7096         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7098 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7100         PR target/PR84295
7101         * config/s390/s390.c (s390_set_current_function): Invoke
7102         s390_indirect_branch_settings also if fndecl didn't change.
7104 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
7106         * config/rs6000/rs6000.md (blockage): Set length to zero.
7108 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
7110         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7112 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
7114         PR sanitizer/84285
7115         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7116         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7117         -static-lib*san.
7119         PR debug/84252
7120         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7121         PARALLEL incoming that failed vt_get_decl_and_offset check.
7123         PR middle-end/84237
7124         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7125         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7126         TREE_READONLY bit.
7127         (get_variable_section): For decls in named .bss* sections pass true as
7128         second argument to bss_initializer_p.
7130 2018-02-09  Marek Polacek  <polacek@redhat.com>
7131             Jakub Jelinek  <jakub@redhat.com>
7133         PR c++/83659
7134         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7135         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
7136         Sync some changes from cxx_fold_indirect_ref.
7138 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
7140         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7141         markers.
7142         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7143         (BLOCK_INLINE_ENTRY_LABEL): New.
7144         (dwarf2out_var_location): Disregard inline entry markers.
7145         (inline_entry_data): New struct.
7146         (inline_entry_data_hasher): New hashtable type.
7147         (inline_entry_data_hasher::hash): New.
7148         (inline_entry_data_hasher::equal): New.
7149         (inline_entry_data_table): New variable.
7150         (add_high_low_attributes): Add DW_AT_entry_pc and
7151         DW_AT_GNU_entry_view attributes if a pending entry is found
7152         in inline_entry_data_table.  Add old entry_pc attribute only
7153         if debug nonbinding markers are disabled.
7154         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7155         markers are enabled.
7156         (block_within_block_p, dwarf2out_inline_entry): New.
7157         (dwarf2out_finish): Check that no entries remained in
7158         inline_entry_data_table.
7159         * final.c (reemit_insn_block_notes): Handle inline entry notes.
7160         (final_scan_insn, notice_source_line): Likewise.
7161         (rest_of_clean_state): Skip inline entry markers.
7162         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7163         markers.
7164         * gimple.c (gimple_build_debug_inline_entry): New.
7165         * gimple.h (enum gimple_debug_subcode): Add
7166         GIMPLE_DEBUG_INLINE_ENTRY.
7167         (gimple_build_debug_inline_entry): Declare.
7168         (gimple_debug_inline_entry_p): New.
7169         (gimple_debug_nonbind_marker_p): Adjust.
7170         * insn-notes.def (INLINE_ENTRY): New.
7171         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7172         inline entry marker notes.
7173         (print_insn): Likewise.
7174         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7175         (INSN_DEBUG_MARKER_KIND): Likewise.
7176         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7177         * tree-inline.c (expand_call_inline): Build and insert
7178         debug_inline_entry stmt.
7179         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7180         inline entry blocks early, if nonbind markers are enabled.
7181         (dump_scope_block): Dump fragment info.
7182         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7183         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7184         (gimple_build_debug_inline_entry): New.
7185         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7186         Enable/disable inline entry points too.
7187         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7188         (DEBUG_INSN): Describe inline entry markers.
7190         * common.opt (gvariable-location-views): New.
7191         (gvariable-location-views=incompat5): New.
7192         * config.in: Rebuilt.
7193         * configure: Rebuilt.
7194         * configure.ac: Test assembler for view support.
7195         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7196         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7197         * dwarf2out.c (var_loc_view): New typedef.
7198         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7199         (dwarf2out_locviews_in_attribute): New.
7200         (dwarf2out_locviews_in_loclist): New.
7201         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7202         (enum dw_line_info_opcode): Add LI_adv_address.
7203         (struct dw_line_info_table): Add view.
7204         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7205         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7206         (zero_view_p): New variable.
7207         (ZERO_VIEW_P): New macro.
7208         (output_asm_line_debug_info): New.
7209         (struct var_loc_node): Add view.
7210         (add_AT_view_list, AT_loc_list): New.
7211         (add_var_loc_to_decl): Add view param.  Test it against last.
7212         (new_loc_list): Add view params.  Record them.
7213         (AT_loc_list_ptr): Handle loc and view lists.
7214         (view_list_to_loc_list_val_node): New.
7215         (print_dw_val): Handle dw_val_class_view_list.
7216         (size_of_die): Likewise.
7217         (value_format): Likewise.
7218         (loc_list_has_views): New.
7219         (gen_llsym): Set vl_symbol too.
7220         (maybe_gen_llsym, skip_loc_list_entry): New.
7221         (dwarf2out_maybe_output_loclist_view_pair): New.
7222         (output_loc_list): Output view list or entries too.
7223         (output_view_list_offset): New.
7224         (output_die): Handle dw_val_class_view_list.
7225         (output_dwarf_version): New.
7226         (output_compilation_unit_header): Use it.
7227         (output_skeleton_debug_sections): Likewise.
7228         (output_rnglists, output_line_info): Likewise.
7229         (output_pubnames, output_aranges): Update version comments.
7230         (output_one_line_info_table): Output view numbers in asm comments.
7231         (dw_loc_list): Determine current endview, pass it to new_loc_list.
7232         Call maybe_gen_llsym.
7233         (loc_list_from_tree_1): Adjust.
7234         (add_AT_location_description): Create view list attribute if
7235         needed, check it's absent otherwise.
7236         (convert_cfa_to_fb_loc_list): Adjust.
7237         (maybe_emit_file): Call output_asm_line_debug_info for test.
7238         (dwarf2out_var_location): Reset views as needed.  Precompute
7239         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
7240         attribute.  Set view.
7241         (new_line_info_table): Reset next view.
7242         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7243         (dwarf2out_source_line): Likewise.  Output view resets and labels to
7244         the assembler, or select appropriate line info opcodes.
7245         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7246         (optimize_string_length): Catch it.  Adjust.
7247         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
7248         dw_val_class_view_list, and remove it if no longer needed.
7249         (hash_loc_list): Hash view numbers.
7250         (loc_list_hasher::equal): Compare them.
7251         (optimize_location_lists): Check whether a view list symbol is
7252         needed, and whether the locview attribute is present, and
7253         whether they match.  Remove the locview attribute if no longer
7254         needed.
7255         (index_location_lists): Call skip_loc_list_entry for test.
7256         (dwarf2out_finish): Call output_asm_line_debug_info for test.
7257         Use output_dwarf_version.
7258         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7259         (struct dw_val_node): Add val_view_list.
7260         * final.c (SEEN_NEXT_VIEW): New.
7261         (set_next_view_needed): New.
7262         (clear_next_view_needed): New.
7263         (maybe_output_next_view): New.
7264         (final_start_function): Rename to...
7265         (final_start_function_1): ... this.  Take pointer to FIRST,
7266         add SEEN parameter.  Emit param bindings in the initial view.
7267         (final_start_function): Reintroduce SEEN-less interface.
7268         (final): Rename to...
7269         (final_1): ... this.  Take SEEN parameter.  Output final pending
7270         next view at the end.
7271         (final): Reintroduce seen-less interface.
7272         (final_scan_insn): Output pending next view before switching
7273         sections or ending a block.  Mark the next view as needed when
7274         outputting variable locations.  Notify debug backend of section
7275         changes, and of location view changes.
7276         (rest_of_handle_final): Adjust.
7277         * toplev.c (process_options): Autodetect value for debug variable
7278         location views option.  Warn on incompat5 without -gdwarf-5.
7279         * doc/invoke.texi (gvariable-location-views): New.
7280         (gvariable-location-views=incompat5): New.
7281         (gno-variable-location-views): New.
7283 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
7285         PR tree-optimization/84136
7286         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7287         that the result of find_edge is non-NULL.
7289 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
7291         PR target/83008
7292         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7293         storing integer register in SImode.  Fix cost of 256 and 512
7294         byte aligned SSE register store.
7296 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
7298         * config/i386/i386.c (ix86_multiplication_cost): Fix
7299         multiplication cost for TARGET_AVX512DQ.
7301 2018-02-08  Marek Polacek  <polacek@redhat.com>
7303         PR tree-optimization/84238
7304         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7305         get_range_strlen.
7307 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7309         PR tree-optimization/84265
7310         * tree-vect-stmts.c (vectorizable_store): Don't treat
7311         VMAT_CONTIGUOUS accesses as grouped.
7312         (vectorizable_load): Likewise.
7314 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7316         PR tree-optimization/81635
7317         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7318         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7319         (test_round_for_mask): New functions.
7320         (wide_int_cc_tests): Call test_round_for_mask.
7321         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7322         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7323         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7324         range returned by get_range_info.
7326 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
7328         PR ipa/81360
7329         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7330         * symtab.c: Include builtins.h
7331         (symtab_node::output_to_lto_symbol_table_p): Move here
7332         from lto-streamer-out.c:output_symbol_p.
7333         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7334         (output_symbol_p): Move all logic to symtab.c
7335         (produce_symtab): Update.
7337 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7339         * config/s390/s390-opts.h (enum indirect_branch): Define.
7340         * config/s390/s390-protos.h (s390_return_addr_from_memory)
7341         (s390_indirect_branch_via_thunk)
7342         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7343         (enum s390_indirect_branch_type): Define.
7344         * config/s390/s390.c (struct s390_frame_layout, struct
7345         machine_function): Remove.
7346         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7347         (indirect_branch_table_label_no, indirect_branch_table_name):
7348         Define variables.
7349         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7350         (enum s390_indirect_branch_option): Define.
7351         (s390_return_addr_from_memory): New function.
7352         (s390_handle_string_attribute): New function.
7353         (s390_attribute_table): Add new attribute handler.
7354         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7355         (s390_indirect_branch_via_thunk): New function.
7356         (s390_indirect_branch_via_inline_thunk): New function.
7357         (s390_function_ok_for_sibcall): When jumping via thunk disallow
7358         sibling call optimization for non z10 compiles.
7359         (s390_emit_call): Force indirect branch target to be a single
7360         register.  Add r1 clobber for non-z10 compiles.
7361         (s390_emit_epilogue): Emit return jump via return_use expander.
7362         (s390_reorg): Handle JUMP_INSNs as execute targets.
7363         (s390_option_override_internal): Perform validity checks for the
7364         new command line options.
7365         (s390_indirect_branch_attrvalue): New function.
7366         (s390_indirect_branch_settings): New function.
7367         (s390_set_current_function): Invoke s390_indirect_branch_settings.
7368         (s390_output_indirect_thunk_function):  New function.
7369         (s390_code_end): Implement target hook.
7370         (s390_case_values_threshold): Implement target hook.
7371         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7372         macros.
7373         * config/s390/s390.h (struct s390_frame_layout)
7374         (struct machine_function): Move here from s390.c.
7375         (TARGET_INDIRECT_BRANCH_NOBP_RET)
7376         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7377         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7378         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7379         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7380         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7381         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7382         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7383         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7384         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7385         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7386         (mnemonic attribute): Add values which aren't recognized
7387         automatically.
7388         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7389         pattern for branch conversion.  Fix mnemonic attribute.
7390         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7391         indirect branch via thunk if requested.
7392         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7393         ("*indirect_jump"): Disable for branch conversion using out of
7394         line thunks.
7395         ("indirect_jump_via_thunk<mode>_z10")
7396         ("indirect_jump_via_thunk<mode>")
7397         ("indirect_jump_via_inlinethunk<mode>_z10")
7398         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7399         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7400         ("casesi_jump_via_inlinethunk<mode>_z10")
7401         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7402         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7403         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7404         ("*indirect2_jump"): Disable for branch conversion.
7405         ("casesi_jump"): Turn into expander and expand patterns for branch
7406         conversion.
7407         ("return_use"): New expander.
7408         ("*return"): Emit return via thunk and rename it to ...
7409         ("*return<mode>"): ... this one.
7410         * config/s390/s390.opt: Add new options and and enum for the
7411         option values.
7413 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7415         * lra-constraints.c (match_reload): Unconditionally use
7416         gen_lowpart_SUBREG, rather than selecting between that
7417         and equivalent gen_rtx_SUBREG code.
7419 2018-02-08  Richard Biener  <rguenther@suse.de>
7421         PR tree-optimization/84233
7422         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7423         changed flag instead of boguously re-using phi_inserted.
7425 2018-02-08  Martin Jambor  <mjambor@suse.cz>
7427         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7428         static local variables.
7430 2018-02-08  Richard Biener  <rguenther@suse.de>
7432         PR tree-optimization/84278
7433         * tree-vect-stmts.c (vectorizable_store): When looking for
7434         smaller vector types to perform grouped strided loads/stores
7435         make sure the mode is supported by the target.
7436         (vectorizable_load): Likewise.
7438 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
7440         * config/aarch64/aarch64.c (aarch64_components_for_bb):
7441         Increase LDP/STP opportunities by adding adjacent callee-saves.
7443 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
7445         PR rtl-optimization/84068
7446         PR rtl-optimization/83459
7447         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7449 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
7451         PR tree-optimization/84224
7452         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7453         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7454         non-zero arguments.
7456 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
7458         PR target/84113
7459         * config/rs6000/altivec.md (*restore_world): Remove LR use.
7460         * config/rs6000/predicates.md (restore_world_operation): Adjust op
7461         count, remove one USE.
7463 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
7465         * doc/install.texi (Configuration): Document the
7466         --with-long-double-format={ibm,ieee} PowerPC configuration
7467         options.
7469         PR target/84154
7470         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7471         Convert from define_expand to be define_insn_and_split.  Rework
7472         float/double/_Float128 conversions to QI/HI/SImode to work with
7473         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
7474         conversions to QI/HImode types did a store and then a load to
7475         truncate the value.  For conversions to VSX registers, don't split
7476         the insn, instead emit the code directly.  Use the code iterator
7477         any_fix to combine signed and unsigned conversions.
7478         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7479         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7480         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7481         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7482         (fix_<mode>di2_hw): Likewise.
7483         (fixuns_<mode>di2_hw): Likewise.
7484         (fix_<mode>si2_hw): Likewise.
7485         (fixuns_<mode>si2_hw): Likewise.
7486         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7487         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7488         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7489         fix<uns>_trunc<SFDF:mode>si2_p8.
7490         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7491         used.
7492         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7493         (fix<uns>_<mode>_mem): Likewise.
7494         (fctiw<u>z_<mode>_mem): Likewise.
7495         (fix<uns>_<mode>_mem): Likewise.
7496         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7497         the register allocator from doing a direct move to the GPRs to do
7498         a store, and instead use the ISA 3.0 store byte/half-word from
7499         vector register instruction.  For IEEE 128-bit floating point,
7500         also optimize stores of 32-bit ints.
7501         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7503 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
7505         * genextract.c (push_pathstr_operand): New function to support
7506         [a-zA-Z].
7507         (walk_rtx): Call push_pathstr_operand.
7508         (print_path): Support [a-zA-Z].
7510 2018-02-07  Richard Biener  <rguenther@suse.de>
7512         PR tree-optimization/84037
7513         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7514         (cse_and_gimplify_to_preheader): Declare.
7515         (vect_get_place_in_interleaving_chain): Likewise.
7516         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7517         ivexpr_map.
7518         (_loop_vec_info::~_loop_vec_info): Delete it.
7519         (cse_and_gimplify_to_preheader): New function.
7520         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7521         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7522         (vectorizable_load): Likewise.  For grouped stores always base
7523         the IV on the first element.
7524         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7525         condition before gimplifying.
7527 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
7529         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7530         *DIV_EXPR and *MOD_EXPR.
7532 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
7534         PR target/84248
7535         * config/i386/i386.c (ix86_option_override_internal): Mask out
7536         the CF_SET bit when checking -fcf-protection.
7538 2018-02-07  Tom de Vries  <tom@codesourcery.com>
7540         PR libgomp/84217
7541         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7542         enough.
7544 2018-02-07  Richard Biener  <rguenther@suse.de>
7546         PR tree-optimization/84204
7547         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7548         this place.
7550         PR tree-optimization/84205
7551         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7552         special-case isl_ast_op_zdiv_r.
7554         PR tree-optimization/84223
7555         * graphite-scop-detection.c (gather_bbs::before_dom_children):
7556         Only add conditions from within the region.
7557         (gather_bbs::after_dom_children): Adjust.
7559 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
7561         PR target/84209
7562         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7563         * config/avr/avr.md: Only post-reload split REG-REG moves if
7564         either register is GENERAL_REG_P.
7566 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
7568         PR tree-optimization/84235
7569         * tree-ssa-scopedtables.c
7570         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7571         if the subtraction is performed in floating point type where NaNs are
7572         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7573         build 1.  Formatting fix.
7575 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
7577         PR target/84146
7578         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7579         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7580         and skip it regardless of bb boundaries.  Use CALL_P macro,
7581         don't test INSN_P (insn) together with CALL_P or JUMP_P check
7582         unnecessarily, formatting fix.
7584 2018-02-06  Michael Collison  <michael.collison@arm.com>
7586         * config/arm/thumb2.md:
7587         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7588         (*thumb_mov_notscc): Ditto.
7590 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
7592         PR target/84154
7593         * config/rs6000/rs6000.md (su code attribute): Use "u" for
7594         unsigned_fix, not "s".
7596 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7598         * configure.ac (gcc_fn_eh_frame_ro): New function.
7599         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7600         correct .eh_frame permissions.
7601         * configure: Regenerate.
7603 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
7605         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7606         irrelevant options.
7608 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7610         * config/rs6000/rs6000.c (rs6000_option_override_internal):
7611         Display warning message for -mno-speculate-indirect-jumps.
7613 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
7615         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7616         Undocumented.
7617         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7619 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
7621         PR tree-optimization/84225
7622         * tree-eh.c (find_trapping_overflow): Only call
7623         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7625 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7627         PR target/84145
7628         * config/i386/i386.c: Reimplement the check of possible options
7629         -mibt/-mshstk conbination. Change error messages.
7630         * doc/invoke.texi: Fix a typo: remove extra '='.
7632 2018-02-06  Marek Polacek  <polacek@redhat.com>
7634         PR tree-optimization/84228
7635         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7637 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
7639         PR target/82641
7640         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7641         emitted arch directives.
7642         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7643         __ARM_FEATURE_COPROC before changing architectures.
7645 2018-02-06  Richard Biener  <rguenther@suse.de>
7647         * config/i386/i386.c (print_reg): Fix typo.
7648         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7650 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
7652         * configure: Regenerate.
7654 2018-02-05  Martin Sebor  <msebor@redhat.com>
7656         PR tree-optimization/83369
7657         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7658         inlining context.
7660 2018-02-05  Martin Liska  <mliska@suse.cz>
7662         * doc/invoke.texi: Cherry-pick upstream r323995.
7664 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
7666         * ira.c (ira_init_register_move_cost): Adjust comment.
7668 2018-02-05  Martin Liska  <mliska@suse.cz>
7670         PR gcov-profile/84137
7671         * doc/gcov.texi: Fix typo in documentation.
7673 2018-02-05  Martin Liska  <mliska@suse.cz>
7675         PR gcov-profile/83879
7676         * doc/gcov.texi: Document necessity of --dynamic-list-data when
7677         using dlopen functionality.
7679 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
7681         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7682         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7683         _mm_maskz_range_ss, _mm_mask_range_round_ss,
7684         _mm_maskz_range_round_ss): New intrinsics.
7685         (__builtin_ia32_rangesd128_round)
7686         (__builtin_ia32_rangess128_round): Remove.
7687         (__builtin_ia32_rangesd128_mask_round,
7688         __builtin_ia32_rangess128_mask_round): New builtins.
7689         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7690         __builtin_ia32_rangess128_round): Remove.
7691         (__builtin_ia32_rangesd128_mask_round,
7692         __builtin_ia32_rangess128_mask_round): New builtins.
7693         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7694         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7695         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7696         "<round_saeonly_constraint>")): Changed to ...
7697         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7698         "<round_saeonly_scalar_constraint>")): ... this.
7699         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7700         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7701         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7702         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7703         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7705 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
7707         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7708         options.
7709         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7710         Remove all values except native, 8540 and 8548.
7712 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
7714         * config/i386/i386.c (ix86_output_function_return): Pass
7715         INVALID_REGNUM, instead of -1, as invalid register number to
7716         indirect_thunk_name and output_indirect_thunk.
7718 2018-02-02  Julia Koval  <julia.koval@intel.com>
7720         * config.gcc: Add -march=icelake.
7721         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7722         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7723         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7724         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7725         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7726         (processor_target_table): Add icelake.
7727         (ix86_option_override_internal): Handle new PTAs.
7728         (get_builtin_code_for_version): Handle icelake.
7729         (M_INTEL_COREI7_ICELAKE): New.
7730         (fold_builtin_cpu): Handle icelake.
7731         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7732         * doc/invoke.texi: Add -march=icelake.
7734 2018-02-02  Julia Koval  <julia.koval@intel.com>
7736         * config/i386/i386.c (ix86_option_override_internal): Change flags type
7737         to wide_int_bitmask.
7738         * wide-int-bitmask.h: New.
7740 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7742         PR target/84066
7743         * config/i386/i386.md: Replace Pmode with word_mode in
7744         builtin_setjmp_setup and builtin_longjmp to support x32.
7746 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
7748         PR target/56010
7749         PR target/83743
7750         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7751         #include "opts.h".
7752         (rs6000_supported_cpu_names): New static variable.
7753         (linux_cpu_translation_table): Likewise.
7754         (elf_platform) <cpu>: Define new static variable and use it.
7755         Translate kernel AT_PLATFORM name to canonical name if needed.
7756         Error if platform name is unknown.
7758 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
7760         PR target/84089
7761         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7763 2018-02-01  Jeff Law  <law@redhat.com>
7765         PR target/84128
7766         * config/i386/i386.c (release_scratch_register_on_entry): Add new
7767         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
7768         the scratch if RELEASE_VIA_POP is false.
7769         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7770         If we have to save a temporary register, decrement SIZE appropriately.
7771         Pass new arguments to release_scratch_register_on_entry.
7772         (ix86_adjust_stack_and_probe): Likewise.
7773         (ix86_emit_probe_stack_range): Pass new arguments to
7774         release_scratch_register_on_entry.
7776 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
7778         PR rtl-optimization/84157
7779         * combine.c (change_zero_ext): Use REG_P predicate in
7780         front of HARD_REGISTER_P predicate.
7782 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
7784         * config/avr/avr.c (avr_option_override): Move disabling of
7785         -fdelete-null-pointer-checks to...
7786         * common/config/avr/avr-common.c (avr_option_optimization_table):
7787         ...here.
7789 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7791         PR tree-optimization/81635
7792         * tree-data-ref.c (split_constant_offset_1): For types that
7793         wrap on overflow, try to use range info to prove that wrapping
7794         cannot occur.
7796 2018-02-01  Renlin Li  <renlin.li@arm.com>
7798         PR target/83370
7799         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7800         TAILCALL_ADDR_REGS.
7801         (aarch64_register_move_cost): Likewise.
7802         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7803         TAILCALL_ADDR_REGS.
7804         (REG_CLASS_NAMES): Likewise.
7805         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7806         TAILCALL_ADDR_REGS. Remove IP registers.
7807         * config/aarch64/aarch64.md (Ucs): Update register constraint.
7809 2018-02-01  Richard Biener  <rguenther@suse.de>
7811         * domwalk.h (dom_walker::dom_walker): Add additional constructor
7812         for specifying RPO order and allow NULL for that.
7813         * domwalk.c (dom_walker::dom_walker): Likewise.
7814         (dom_walker::walk): Handle NULL RPO order.
7815         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7816         in RPO order.
7817         (rewrite_update_dom_walker): Likewise.
7818         (mark_def_dom_walker): Likewise.
7820 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7822         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7823         (aarch64_maybe_expand_sve_subreg_move): Declare.
7824         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7825         * config/aarch64/predicates.md (aarch64_any_register_operand): New
7826         predicate.
7827         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7828         that are semantically a reverse operation.
7829         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7830         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7831         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7832         functions.
7833         (aarch64_can_change_mode_class): For big-endian, forbid changes
7834         between two SVE modes if they have different element sizes.
7836 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7838         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
7839         the TImode handling for big-endian targets.
7841 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7843         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
7844         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
7845         not just bytes.
7846         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
7847         Remove BSWAP handing for big-endian targets and use the form of
7848         LD1RQ appropariate for the mode.
7850 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7852         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
7853         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
7854         duplicated element.
7856 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7858         PR tearget/83845
7859         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
7860         check for operands that need to go through aarch64_sve_reload_be.
7862 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
7864         PR tree-optimization/81661
7865         PR tree-optimization/84117
7866         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
7867         * tree-eh.c: Include gimplify.h.
7868         (find_trapping_overflow, replace_trapping_overflow,
7869         rewrite_to_non_trapping_overflow): New functions.
7870         * tree-vect-loop.c: Include tree-eh.h.
7871         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
7872         * tree-data-ref.c: Include tree-eh.h.
7873         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
7875 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
7877         PR rtl-optimization/84123
7878         * combine.c (change_zero_ext): Check if hard register satisfies
7879         can_change_dest_mode before calling gen_lowpart_SUBREG.
7881 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
7883         PR target/82444
7884         * ira.c (ira_init_register_move_cost): Remove assert.
7886 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7888         PR rtl-optimization/84071
7889         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
7890         * doc/tm.texi: Regenerate.
7892 2018-01-31  Richard Biener  <rguenther@suse.de>
7894         PR tree-optimization/84132
7895         * tree-data-ref.c (analyze_miv_subscript): Properly
7896         check whether evolution_function_is_affine_multivariate_p
7897         before calling gcd_of_steps_may_divide_p.
7899 2018-01-31  Julia Koval  <julia.koval@intel.com>
7901         PR target/83618
7902         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
7903         * config/i386/i386.md (rdpid_rex64) New.
7904         (rdpid): Make 32bit only.
7906 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
7908         PR lto/84105
7909         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
7910         an IDENTIFIER_NODE for FUNCTION_TYPE's.
7912 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7914         Revert
7915         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
7917         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
7919 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
7921         PR rtl-optimization/84071
7922         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
7923         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
7925 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
7927         * config/arc/arc.c (arc_handle_aux_attribute): New function.
7928         (arc_attribute_table): Add 'aux' attribute.
7929         (arc_in_small_data_p): Consider aux like variables.
7930         (arc_is_aux_reg_p): New function.
7931         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
7932         (arc_get_aux_arg): New function.
7933         (prepare_move_operands): Handle aux-register access.
7934         (arc_handle_aux_attribute): New function.
7935         * doc/extend.texi (ARC Variable attributes): Add subsection.
7937 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
7939         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
7940         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
7941         (arc_attribute_table): Add 'uncached' attribute.
7942         (arc_print_operand): Print '.di' flag for uncached memory
7943         accesses.
7944         (arc_in_small_data_p): Do not consider for small data the uncached
7945         types.
7946         (arc_is_uncached_mem_p): New function.
7947         * config/arc/predicates.md (compact_store_memory_operand): Check
7948         for uncached memory accesses.
7949         (nonvol_nonimm_operand): Likewise.
7950         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
7952 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
7954         PR c/84100
7955         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
7956         falign-loops=): Add Optimization flag.
7958 2018-01-30  Jeff Law  <law@redhat.com>
7960         PR target/84064
7961         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
7962         INT_REGISTERS_SAVED.  Check it prior to calling
7963         get_scratch_register_on_entry.
7964         (ix86_adjust_stack_and_probe): Similarly.
7965         (ix86_emit_probe_stack_range): Similarly.
7966         (ix86_expand_prologue): Corresponding changes.
7968 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7970         PR target/40411
7971         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
7972         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
7974 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
7976         PR target/84112
7977         * lra-constraints.c (curr_insn_transform): Process AND in the
7978         address.
7980 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
7982         PR rtl-optimization/83986
7983         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
7984         dependence against last_pending_memory_flush in addition to
7985         pending_jump_insns.
7987 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
7989         PR tree-optimization/81611
7990         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
7991         copies.
7993 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
7995         PR target/83758
7996         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
7997         a reg rtx.
7999 2018-01-30  Richard Biener  <rguenther@suse.de>
8000             Jakub Jelinek  <jakub@redhat.com>
8002         PR tree-optimization/84111
8003         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8004         inner loops added during recursion, as they don't have up-to-date
8005         SSA form.
8007 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
8009         PR ipa/81360
8010         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8011         (can_inline_edge_by_limits_p): ... here.
8012         (can_early_inline_edge_p, check_callers,
8013         update_caller_keys, update_callee_keys, recursive_inlining,
8014         add_new_edges_to_heap, speculation_useful_p,
8015         inline_small_functions,
8016         inline_small_functions, flatten_function,
8017         inline_to_all_callers_1): Update.
8019 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
8021         * profile-count.c (profile_count::combine_with_ipa_count): Handle
8022         zeros correctly.
8024 2018-01-30  Richard Biener  <rguenther@suse.de>
8026         PR tree-optimization/83008
8027         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8028         invariant and constant vector uses in stmts when they need
8029         more than one stmt.
8031 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8033         PR bootstrap/84017
8034         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8035         * configure: Regenerate.
8037 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8039         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8040         pattern.
8041         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8042         Use gen_rtx_REG rather than gen_lowpart.
8044 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8046         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8047         rather than 0 when creating partial subregs.
8049 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8051         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8052         of usage.
8054 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
8056         PR target/81550
8057         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8058         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8059         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8060         flags.  This restores the settings used before the 2017-07-24.
8061         Turning off pre increment/decrement/modify allows IVOPTS to
8062         optimize DF/SF loops where the index is an int.
8064 2018-01-29  Richard Biener  <rguenther@suse.de>
8065             Kelvin Nilsen  <kelvin@gcc.gnu.org>
8067         PR bootstrap/80867
8068         * tree-vect-stmts.c (vectorizable_call): Don't call
8069         targetm.vectorize_builtin_md_vectorized_function if callee is
8070         NULL.
8072 2018-01-22  Carl Love  <cel@us.ibm.com>
8074         * doc/extend.tex: Fix typo in second arg in
8075         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8077 2018-01-29  Richard Biener  <rguenther@suse.de>
8079         PR tree-optimization/84086
8080         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8081         (flush_ssaname_freelist): When SSA names were released reset
8082         the SCEV hash table.
8084 2018-01-29  Richard Biener  <rguenther@suse.de>
8086         PR tree-optimization/84057
8087         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8088         removed paths when removing edges.
8090 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
8092         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8093         -mfunction-return=@var{choice}.
8095 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
8097         PR diagnostic/84034
8098         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8099         Handle CR like TAB.
8100         (layout::print_source_line): Likewise.
8101         (test_get_line_width_without_trailing_whitespace): Add test cases.
8103 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
8105         PR middle-end/84040
8106         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8107         debug insns.
8109 2018-01-26  Jim Wilson  <jimw@sifive.com>
8111         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8113         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8114         specified.
8116 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8118         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8119         and CMP + SUB-immediate -> SUBS.
8121 2018-01-26  Martin Sebor  <msebor@redhat.com>
8123         PR tree-optimization/83896
8124         * tree-ssa-strlen.c (get_string_len): Rename...
8125         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
8126         Avoid assuming length is constant.
8127         (handle_char_store): Use HOST_WIDE_INT for string length.
8129 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
8131         PR target/81763
8132         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8133         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8135 2018-01-26  Richard Biener  <rguenther@suse.de>
8137         PR rtl-optimization/84003
8138         * dse.c (record_store): Only record redundant stores when
8139         the earlier store aliases at least all accesses the later one does.
8141 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
8143         PR rtl-optimization/83985
8144         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8145         REG_CFA_RESTORE insns.
8146         (delete_unmarked_insns): Don't ignore separate shrink wrapping
8147         REG_CFA_RESTORE insns here.
8149         PR c/83989
8150         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8151         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8153 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8155         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8156         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8157         (arc_init): Likewise.
8158         (arc_override_options): Likewise.
8159         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8160         value.
8161         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8162         support.
8163         * config/arc/arc.h (TARGET_DBNZ): Define.
8164         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8165         properly set the tune attribute.
8166         (dbnz): Use TARGET_DBNZ guard.
8167         * config/arc/arc.opt (mtune): Add core3 option.
8169 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8171         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8172         recognize new pic like addresses.
8173         (arc_delegitimize_address): Clean up.
8175 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8177         * config/arc/arc-arches.def: Option mrf16 valid for all
8178         architectures.
8179         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8180         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8181         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8182         * config/arc/arc-tables.opt: Regenerate.
8183         * config/arc/arc.c (arc_conditional_register_usage): Handle
8184         reduced register file case.
8185         (arc_file_start): Set must have build attributes.
8186         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8187         mrf16 option value.
8188         * config/arc/arc.opt (mrf16): Add new option.
8189         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8190         * config/arc/genmultilib.awk: Handle new mrf16 option.
8191         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8192         * config/arc/t-multilib: Regenerate.
8193         * doc/invoke.texi (ARC Options): Document mrf16 option.
8195 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8197         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8198         * config/arc/arc.c (arc_handle_secure_attribute): New function.
8199         (arc_attribute_table): Add 'secure_call' attribute.
8200         (arc_print_operand): Print secure call operand.
8201         (arc_function_ok_for_sibcall): Don't optimize tail calls when
8202         secure.
8203         (arc_is_secure_call_p): New function.  * config/arc/arc.md
8204         (call_i): Add support for sjli instruction.
8205         (call_value_i): Likewise.
8206         * config/arc/constraints.md (Csc): New constraint.
8208 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8209             John Eric Martin  <John.Martin@emmicro-us.com>
8211         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8212         * config/arc/arc.c (_arc_jli_section): New struct.
8213         (arc_jli_section): New type.
8214         (rc_jli_sections): New static variable.
8215         (arc_handle_jli_attribute): New function.
8216         (arc_attribute_table): Add jli_always and jli_fixed attribute.
8217         (arc_file_end): New function.
8218         (TARGET_ASM_FILE_END): Define.
8219         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8220         (arc_add_jli_section): New function.
8221         (jli_call_scan): Likewise.
8222         (arc_reorg): Call jli_call_scan.
8223         (arc_output_addsi): Remove 'S' from printing asm operand.
8224         (arc_is_jli_call_p): New function.
8225         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8226         operand.
8227         (movhi_insn): Likewise.
8228         (movsi_insn): Likewise.
8229         (movsi_set_cc_insn): Likewise.
8230         (loadqi_update): Likewise.
8231         (load_zeroextendqisi_update): Likewise.
8232         (load_signextendqisi_update): Likewise.
8233         (loadhi_update): Likewise.
8234         (load_zeroextendhisi_update): Likewise.
8235         (load_signextendhisi_update): Likewise.
8236         (loadsi_update): Likewise.
8237         (loadsf_update): Likewise.
8238         (movsicc_insn): Likewise.
8239         (bset_insn): Likewise.
8240         (bxor_insn): Likewise.
8241         (bclr_insn): Likewise.
8242         (bmsk_insn): Likewise.
8243         (bicsi3_insn): Likewise.
8244         (cmpsi_cc_c_insn): Likewise.
8245         (movsi_ne): Likewise.
8246         (movsi_cond_exec): Likewise.
8247         (clrsbsi2): Likewise.
8248         (norm_f): Likewise.
8249         (normw): Likewise.
8250         (swap): Likewise.
8251         (divaw): Likewise.
8252         (flag): Likewise.
8253         (sr): Likewise.
8254         (kflag): Likewise.
8255         (ffs): Likewise.
8256         (ffs_f): Likewise.
8257         (fls): Likewise.
8258         (call_i): Remove 'S' asm letter, add jli instruction.
8259         (call_value_i): Likewise.
8260         * config/arc/arc.op (mjli-always): New option.
8261         * config/arc/constraints.md (Cji): New constraint.
8262         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8263         operand.
8264         (subsf3_fpx): Likewise.
8265         (mulsf3_fpx): Likewise.
8266         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8267         asm operand.
8268         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8269         function attrbutes.
8270         * doc/invoke.texi (ARC): Document mjli-always option.
8272 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
8274         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
8275         avoid addition with 0 and use incw and decw where possible.
8277 2018-01-26  Richard Biener  <rguenther@suse.de>
8279         PR tree-optimization/81082
8280         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8281         association if it requires casting to unsigned.
8282         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8283         from fold_plusminus_mult_expr to catch important cases late when
8284         range info is available.
8286 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8288         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8289         * configure.ac (hidden_linkonce): New test.
8290         * configure: Regenerate.
8291         * config.in: Regenerate.
8293 2018-01-26  Julia Koval  <julia.koval@intel.com>
8295         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8296         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8297         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8298         _mm_mask_bitshuffle_epi64_mask): Fix type.
8299         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8300         USI_FTYPE_V4DI_V4DI_USI): Remove.
8301         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8302         __builtin_ia32_vpshufbitqmb256_mask,
8303         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8304         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8305         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8307 2018-01-26  Alan Modra  <amodra@gmail.com>
8309         PR target/84033
8310         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8311         UNSPEC_VBPERMQ.  Sort other unspecs.
8313 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
8315         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8317 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
8319         PR middle-end/83055
8320         * predict.c (drop_profile): Do not push/pop cfun; update also
8321         node->count.
8322         (handle_missing_profiles): Fix logic looking for zero profiles.
8324 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
8326         PR middle-end/83977
8327         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8328         on functions with #pragma omp declare simd or functions with simd
8329         attribute.
8330         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8331         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8332         Remove trailing \n from warning_at calls.
8334 2018-01-25  Tom de Vries  <tom@codesourcery.com>
8336         PR target/84028
8337         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8338         for neutered workers.
8340 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
8342         PR target/68467
8343         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8344         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8346 2018-01-24  Jeff Law  <law@redhat.com>
8348         PR target/83994
8349         * i386.c (get_probe_interval): Move to earlier point.
8350         (ix86_compute_frame_layout): If -fstack-clash-protection and
8351         the frame is larger than the probe interval, then use pushes
8352         to save registers rather than reg->mem moves.
8353         (ix86_expand_prologue): Remove conditional for int_registers_saved
8354         assertion.
8356 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
8358         PR target/84014
8359         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8360         min/max for never referenced object.
8362 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
8364         PR middle-end/83977
8365         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8366         here.
8367         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8368         attributes from DECL_ATTRIBUTES (decl) without affecting
8369         DECL_ATTRIBUTES (current_function_decl).
8370         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8371         functions with non-NULL DECL_ABSTRACT_ORIGIN.
8373 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
8375         PR tree-optimization/83979
8376         * fold-const.c (fold_comparison): Use constant_boolean_node
8377         instead of boolean_{true,false}_node.
8379 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
8381         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8382         with zero counts.
8384 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8386         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8387         Simplify the clause that sets the length attribute.
8388         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8389         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8390         clause that sets the length attribute.
8391         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8393 2018-01-24  Tom de Vries  <tom@codesourcery.com>
8395         PR target/83589
8396         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8397         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8398         Add strict parameter.
8399         (prevent_branch_around_nothing): Insert dummy insn between branch to
8400         label and label with no ptx insn inbetween.
8401         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8403 2018-01-24  Tom de Vries  <tom@codesourcery.com>
8405         PR target/81352
8406         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8407         for neutered threads in warp.
8408         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8410 2018-01-24  Richard Biener  <rguenther@suse.de>
8412         PR tree-optimization/83176
8413         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8414         operands.
8416 2018-01-24  Richard Biener  <rguenther@suse.de>
8418         PR tree-optimization/82819
8419         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8420         code generating pluses that are no-ops in the target precision.
8422 2018-01-24  Richard Biener  <rguenther@suse.de>
8424         PR middle-end/84000
8425         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8427 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8429         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8430         to merge probabilities.
8431         * predict.c (probably_never_executed): Also mark as cold functions
8432         with global 0 profile and guessed local profile.
8433         * profile-count.c (profile_probability::combine_with_count): New
8434         member function.
8435         * profile-count.h (profile_probability::operator*,
8436         profile_probability::operator*=, profile_probability::operator/,
8437         profile_probability::operator/=): Reduce precision to adjusted
8438         and set value to guessed on contradictory divisions.
8439         (profile_probability::combine_with_freq): Remove.
8440         (profile_probability::combine_wiht_count): Declare.
8441         (profile_count::force_nonzero):: Set to adjusted.
8442         (profile_count::probability_in):: Set quality to adjusted.
8443         * tree-ssa-tail-merge.c (replace_block_by): Use
8444         combine_with_count.
8446 2018-01-23  Andrew Waterman  <andrew@sifive.com>
8447             Jim Wilson  <jimw@sifive.com>
8449         * config/riscv/riscv.c (riscv_stack_boundary): New.
8450         (riscv_option_override): Set riscv_stack_boundary.  Handle
8451         riscv_preferred_stack_boundary_arg.
8452         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8453         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8454         (STACK_BOUNDARY): Set to riscv_stack_boundary.
8455         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8456         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8457         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8459 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
8461         PR target/83905
8462         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8463         of struct ix86_frame.
8464         (ix86_expand_epilogue): Likewise.  Add a local variable for
8465         the reg_save_offset field in struct ix86_frame.
8467 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
8469         PR tree-optimization/82604
8470         * tree-loop-distribution.c (enum partition_kind): New enum item
8471         PKIND_PARTIAL_MEMSET.
8472         (partition_builtin_p): Support above new enum item.
8473         (generate_code_for_partition): Ditto.
8474         (compute_access_range): Differentiate cases that equality can be
8475         proven at all loops, the innermost loops or no loops.
8476         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8477         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
8478         (finalize_partitions, distribute_loop): Don't fuse partition of
8479         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8480         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8481         parloop is enabled.
8483 2018-01-23  Martin Liska  <mliska@suse.cz>
8485         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8486         order to ignore the predictor.
8487         (PRED_POLYMORPHIC_CALL): Likewise.
8488         (PRED_RECURSIVE_CALL): Likewise.
8490 2018-01-23  Martin Liska  <mliska@suse.cz>
8492         * tree-profile.c (tree_profiling): Print function header to
8493         aware reader which function we are working on.
8494         * value-prof.c (gimple_find_values_to_profile): Do not print
8495         not interesting value histograms.
8497 2018-01-23  Martin Liska  <mliska@suse.cz>
8499         * profile-count.h (enum profile_quality): Add
8500         profile_uninitialized as the first value. Do not number values
8501         as they are zero based.
8502         (profile_count::verify): Update sanity check.
8503         (profile_probability::verify): Likewise.
8505 2018-01-23  Nathan Sidwell  <nathan@acm.org>
8507         * doc/invoke.texi (ffor-scope): Deprecate.
8509 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8511         PR tree-optimization/83510
8512         * domwalk.c (set_all_edges_as_executable): New function.
8513         (dom_walker::dom_walker): Convert bool param
8514         "skip_unreachable_blocks" to enum reachability.  Move setup of
8515         edge flags to set_all_edges_as_executable and only do it when
8516         reachability is REACHABLE_BLOCKS.
8517         * domwalk.h (enum dom_walker::reachability): New enum.
8518         (dom_walker::dom_walker): Convert bool param
8519         "skip_unreachable_blocks" to enum reachability.
8520         (set_all_edges_as_executable): New decl.
8521         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
8522         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8523         "reachability".
8524         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8525         but converting true to REACHABLE_BLOCKS.
8526         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8527         * tree-vrp.c
8528         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8529         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8530         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8531         REACHABLE_BLOCKS.
8532         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8533         if check_all_array_refs will be called.
8535 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8537         * tree.c (selftest::test_location_wrappers): Add more test
8538         coverage.
8540 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8542         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8543         (selftest::test_bit_in_range): Likewise.
8545 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
8547         PR testsuite/83888
8548         * doc/sourcebuild.texi (vect_float): Say that the selector
8549         only describes the situation when -funsafe-math-optimizations is on.
8550         (vect_float_strict): Document.
8552 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
8554         PR tree-optimization/83965
8555         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8556         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8557         instead of checking only for a reduction.
8558         (vect_recog_widen_sum_pattern): Likewise.
8560 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8562         * predict.c (probably_never_executed): Only use precise profile info.
8563         (compute_function_frequency): Skip after inlining hack since we now
8564         have quality checking.
8566 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8568         * profile-count.h (profile_probability::very_unlikely,
8569         profile_probability::unlikely, profile_probability::even): Set
8570         precision to guessed.
8572 2018-01-23  Richard Biener  <rguenther@suse.de>
8574         PR tree-optimization/83963
8575         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8576         Properly terminate dominator walk when crossing the exit edge not
8577         when visiting its source block.
8579 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
8581         PR c++/83918
8582         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8583         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8585 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
8587         PR tree-optimization/83957
8588         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
8589         semicolon after for body surrounded by braces.
8591         PR tree-optimization/83081
8592         * profile-count.h (profile_probability::split): New method.
8593         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8594         Use profile_probability::split.
8595         (do_compare_rtx_and_jump): Fix adjustment of probabilities
8596         when splitting a single conditional jump into 2.
8598 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
8600         PR tree-optimization/69452
8601         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8602         decl.
8604 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8606         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8607         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8608         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8610 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8612         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8613         * config/rl78/rl78.md (movdi): New define_expand.
8614         * config/rl78/rl78.c (rl78_split_movdi): New function.
8616 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
8618         PR target/83862
8619         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8620         no longer used.
8621         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8622         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8623         128-bit to produce an UNSPEC move to get the double word with the
8624         signbit and then a shift directly to do signbit.
8625         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8626         implementation with a new version that just does either a direct
8627         move or a regular move.  Move memory interface to separate insns.
8628         Move insns so they are next to the expander.
8629         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8630         with signbit move.  Split big and little endian case.
8631         (signbit<mode>2_dm_mem_le): Likewise.
8632         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8633         (signbit<mode>2_dm2): Likewise.
8635 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8637         * config/rl78/rl78.md (anddi3): New define_expand.
8639 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8641         * config/rl78/rl78.md (umindi3): New define_expand.
8643 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8645         * config/rl78/rl78.md (smindi3): New define_expand.
8647 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8649         * config/rl78/rl78.md (smaxdi3): New define_expand.
8651 2018-01-22  Carl Love  <cel@us.ibm.com>
8653         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8654         LVX_V1TI): Add macro expansion.
8655         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8656         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8657         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8658         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8659         Change check to determine if the instruction is a byte reversing
8660         entry.  Fix typo in comment.
8661         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8662         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8663         Add def_builtin calls for new builtins.
8664         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8665         Add define_insn expansion.
8667 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8669         * config/rl78/rl78.md (umaxdi3): New define_expand.
8671 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8673         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8674         for non-QImode registers.
8676 2018-01-22  Richard Biener  <rguenther@suse.de>
8678         PR tree-optimization/83963
8679         * graphite-scop-detection.c (scop_detection::get_sese): Delay
8680         including the loop exit block.
8681         (scop_detection::merge_sese): Likewise.
8682         (scop_detection::add_scop): Do it here instead.
8684 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8686         * doc/sourcebuild.texi (arm_softfloat): Document.
8688 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
8690         PR gcc/77734
8691         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8692         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8693         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8695 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8696             David Edelsohn  <dje.gcc@gmail.com>
8698         PR target/83946
8699         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8700         Change "crset eq" to "crset 2".
8701         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8702         (*call_indirect_aix<mode>_nospec): Likewise.
8703         (*call_value_indirect_aix<mode>_nospec): Likewise.
8704         (*call_indirect_elfv2<mode>_nospec): Likewise.
8705         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8706         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8707         change assembly output from . to $.
8708         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8709         (indirect_jump<mode>_nospec): Change assembly output from . to $.
8710         (*tablejump<mode>_internal1_nospec): Likewise.
8712 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
8714         PR target/80870
8715         * config/sh/sh_optimize_sett_clrt.cc:
8716         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8718 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
8720         PR tree-optimization/83940
8721         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8722         offset_dt to vect_constant_def rather than vect_unknown_def_type.
8723         (vect_check_load_store_mask): Add a mask_dt_out parameter and
8724         use it to pass back the definition type.
8725         (vect_check_store_rhs): Likewise rhs_dt_out.
8726         (vect_build_gather_load_calls): Add a mask_dt argument and use
8727         it instead of a call to vect_is_simple_use.
8728         (vectorizable_store): Update calls to vect_check_load_store_mask
8729         and vect_check_store_rhs.  Use the dt returned by the latter instead
8730         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
8731         instead of calls to vect_is_simple_use.  Pass the scalar rather
8732         than the vector operand to vect_is_simple_use when handling
8733         second and subsequent copies of an rhs value.
8734         (vectorizable_load): Update calls to vect_check_load_store_mask
8735         and vect_build_gather_load_calls.  Use the cached mask_dt and
8736         gs_info.offset_dt instead of calls to vect_is_simple_use.
8738 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
8740         PR middle-end/83945
8741         * tree-emutls.c: Include gimplify.h.
8742         (lower_emutls_2): New function.
8743         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8744         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8745         it before further processing.
8747         PR target/83930
8748         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8749         UINTVAL (trueop1) instead of INTVAL (op1).
8751 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
8753         PR debug/81570
8754         PR debug/83728
8755         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8756         INCOMING_FRAME_SP_OFFSET if not defined.
8757         (scan_trace): Add ENTRY argument.  If true and
8758         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8759         emit a note to adjust the CFA offset.
8760         (create_cfi_notes): Adjust scan_trace callers.
8761         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8762         INCOMING_FRAME_SP_OFFSET in the CIE.
8763         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8764         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8765         Likewise.
8766         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8767         * doc/tm.texi: Regenerated.
8769 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8771         PR rtl-optimization/83147
8772         * lra-constraints.c (remove_inheritance_pseudos): Use
8773         lra_substitute_pseudo_within_insn.
8775 2018-01-19  Tom de Vries  <tom@codesourcery.com>
8776             Cesar Philippidis  <cesar@codesourcery.com>
8778         PR target/83920
8779         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8781 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
8783         PR target/83790
8784         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8785         spaces for function labels.
8787 2018-01-19  Martin Liska  <mliska@suse.cz>
8789         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8790         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8791         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8792         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8793         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8794         (PRED_CONST_RETURN): Change from 69 to 65.
8795         (PRED_NULL_RETURN): Change from 91 to 71.
8796         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8797         (PRED_LOOP_GUARD): Change from 66 to 73.
8799 2018-01-19  Martin Liska  <mliska@suse.cz>
8801         * predict.c (predict_insn_def): Add new assert.
8802         (struct branch_predictor): Change type to signed integer.
8803         (test_prediction_value_range): Amend test to cover
8804         PROB_UNINITIALIZED.
8805         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8806         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8807         (PRED_LOOP_ITERATIONS_MAX): Likewise.
8808         (PRED_LOOP_IV_COMPARE): Likewise.
8809         * predict.h (PROB_UNINITIALIZED): Define new constant.
8811 2018-01-19  Martin Liska  <mliska@suse.cz>
8813         * predict.c (dump_prediction): Add new format for
8814         analyze_brprob.py script which is enabled with -details
8815         suboption.
8816         * profile-count.h (precise_p): New function.
8818 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
8820         PR tree-optimization/83922
8821         * tree-vect-loop.c (vect_verify_full_masking): Return false if
8822         there are no statements that need masking.
8823         (vect_active_double_reduction_p): New function.
8824         (vect_analyze_loop_operations): Use it when handling phis that
8825         are not in the loop header.
8827 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
8829         PR tree-optimization/83914
8830         * tree-vect-loop.c (vectorizable_induction): Don't convert
8831         init_expr or apply the peeling adjustment for inductions
8832         that are nested within the vectorized loop.
8834 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8836         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
8837         instead of NEG.
8839 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
8841         PR sanitizer/81715
8842         PR testsuite/83882
8843         * function.h (gimplify_parameters): Add gimple_seq * argument.
8844         * function.c: Include gimple.h and options.h.
8845         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
8846         for the added local temporaries if needed.
8847         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
8848         if there are any parameter cleanups, wrap whole body into a
8849         try/finally with the cleanups.
8851 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
8853         PR target/82964
8854         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8855         Use GET_MODE_CLASS for scalar floating point.
8857 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
8859         PR ipa/82256
8860         patch by PaX Team
8861         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
8862         Fix call of call_cgraph_insertion_hooks.
8864 2018-01-18  Martin Sebor  <msebor@redhat.com>
8866         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
8868 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
8870         PR ipa/83619
8871         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
8872         frequencies.
8874 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
8876         PR other/70268
8877         * common.opt: (-ffile-prefix-map): New option.
8878         * opts.c (common_handle_option): Defer it.
8879         * opts-global.c (handle_common_deferred_options): Handle it.
8880         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
8881         * file-prefix-map.h: New file.
8882         (remap_debug_filename, add_debug_prefix_map): ...here.
8883         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
8884         * final.c (debug_prefix_map, add_debug_prefix_map
8885         remap_debug_filename): Move to...
8886         * file-prefix-map.c: New file.
8887         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
8888         generalize, get rid of alloca(), use strrchr() instead of strchr().
8889         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
8890         Implement in terms of add_prefix_map().
8891         (remap_macro_filename, remap_debug_filename): Implement in term of
8892         remap_filename().
8893         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
8894         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
8895         * dbxout.c: Include file-prefix-map.h.
8896         * varasm.c: Likewise.
8897         * vmsdbgout.c: Likewise.
8898         * xcoffout.c: Likewise.
8899         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
8900         * doc/cppopts.texi (-fmacro-prefix-map): Document.
8901         * doc/invoke.texi (-ffile-prefix-map): Document.
8902         (-fdebug-prefix-map): Update description.
8904 2018-01-18  Martin Liska  <mliska@suse.cz>
8906         * config/i386/i386.c (indirect_thunk_name): Document that also
8907         lfence is emitted.
8908         (output_indirect_thunk): Document why both instructions
8909         (pause and lfence) are generated.
8911 2018-01-18  Richard Biener  <rguenther@suse.de>
8913         PR tree-optimization/83887
8914         * graphite-scop-detection.c
8915         (scop_detection::get_nearest_dom_with_single_entry): Remove.
8916         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
8917         (scop_detection::merge_sese): Re-implement with a flood-fill
8918         algorithm that properly finds a SESE region if it exists.
8920 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
8922         PR c/61240
8923         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
8924         pointer_diff optimizations use view_convert instead of convert.
8926 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8928         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8929         Generate different code for -mno-speculate-indirect-jumps.
8930         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8931         (*call_indirect_aix<mode>): Disable for
8932         -mno-speculate-indirect-jumps.
8933         (*call_indirect_aix<mode>_nospec): New define_insn.
8934         (*call_value_indirect_aix<mode>): Disable for
8935         -mno-speculate-indirect-jumps.
8936         (*call_value_indirect_aix<mode>_nospec): New define_insn.
8937         (*sibcall_nonlocal_sysv<mode>): Generate different code for
8938         -mno-speculate-indirect-jumps.
8939         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8941 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
8943         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
8944         long double type, set the flags for noting the default long double
8945         type, even if we don't pass or return a long double type.
8947 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
8949         PR ipa/83051
8950         * ipa-inline.c (flatten_function): Do not overwrite final inlining
8951         failure.
8953 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
8955         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
8956         support for merge[hl].
8957         (fold_mergehl_helper): New helper function.
8958         (tree-vector-builder.h): New #include for tree_vector_builder usage.
8959         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
8960         (altivec_vmrglw_direct): Add xxmrglw insn.
8962 2018-01-17  Andrew Waterman  <andrew@sifive.com>
8964         * config/riscv/riscv.c (riscv_conditional_register_usage): If
8965         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
8967 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
8969         PR lto/83121
8970         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
8971         call the lto_location_cache before reading the
8972         DECL_SOURCE_LOCATION of the types.
8974 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
8975             Richard Sandiford  <richard.sandiford@linaro.org>
8977         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
8978         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
8979         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
8980         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
8981         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
8982         Add declaration.
8983         * config/aarch64/constraints.md (aarch64_movti_operand):
8984         Limit immediates.
8985         * config/aarch64/predicates.md (Uti): Add new constraint.
8987 2018-01-17 Carl Love  <cel@us.ibm.com>
8989         * config/rs6000/vsx.md (define_expand xl_len_r,
8990         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
8991         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
8992         lxvll.
8993         (define_expand, define_insn): Move the shift left from  the
8994         define_insn to the define_expand for lxvl and stxvl instructions.
8995         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
8996         and XL_LEN_R definitions to PURE.
8998 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
9000         * config/i386/i386.c (indirect_thunk_name): Declare regno
9001         as unsigned int.  Compare regno with INVALID_REGNUM.
9002         (output_indirect_thunk): Ditto.
9003         (output_indirect_thunk_function): Ditto.
9004         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
9005         in the call to output_indirect_thunk_function.
9007 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
9009         PR middle-end/83884
9010         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9011         rather than the size of inner_type to determine the stack slot size
9012         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9014 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
9016         PR target/83546
9017         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9018         to PTA_SILVERMONT.
9020 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
9022         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9023         endian Linux systems to optionally enable multilibs for selecting
9024         the long double type if the user configured an explicit type.
9025         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9026         have no long double multilibs if not defined.
9027         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9028         warn if the user used -mabi={ieee,ibm}longdouble and we built
9029         multilibs for long double.
9030         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9031         appropriate multilib option.
9032         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9033         multilib options.
9034         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9035         for building long double multilibs.
9036         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9038 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
9040         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9041         copies.
9043         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9044         64 bits.
9045         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9046         128 bits.
9048         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9049         variables.
9051         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9052         return value.
9054 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
9056         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9057         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9059 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9061         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9062         different rtl trees depending on TARGET_64BIT.
9063         (rs6000_gen_lvx): Likewise.
9065 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
9067         * config/visium/visium.md (nop): Tweak comment.
9068         (hazard_nop): Likewise.
9070 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9072         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9073         -mspeculate-indirect-jumps.
9074         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9075         for -mno-speculate-indirect-jumps.
9076         (*call_indirect_elfv2<mode>_nospec): New define_insn.
9077         (*call_value_indirect_elfv2<mode>): Disable for
9078         -mno-speculate-indirect-jumps.
9079         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9080         (indirect_jump): Emit different RTL for
9081         -mno-speculate-indirect-jumps.
9082         (*indirect_jump<mode>): Disable for
9083         -mno-speculate-indirect-jumps.
9084         (*indirect_jump<mode>_nospec): New define_insn.
9085         (tablejump): Emit different RTL for
9086         -mno-speculate-indirect-jumps.
9087         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9088         (tablejumpsi_nospec): New define_expand.
9089         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9090         (tablejumpdi_nospec): New define_expand.
9091         (*tablejump<mode>_internal1): Disable for
9092         -mno-speculate-indirect-jumps.
9093         (*tablejump<mode>_internal1_nospec): New define_insn.
9094         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9095         option.
9097 2018-01-16  Artyom Skrobov tyomitch@gmail.com
9099         * caller-save.c (insert_save): Drop unnecessary parameter.  All
9100         callers updated.
9102 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9103             Richard Biener  <rguenth@suse.de>
9105         PR libgomp/83590
9106         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9107         return early, inline manually is_gimple_sizepos.  Make sure if we
9108         call gimplify_expr we don't end up with a gimple constant.
9109         * tree.c (variably_modified_type_p): Don't return true for
9110         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
9111         * gimplify.h (is_gimple_sizepos): Remove.
9113 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9115         PR tree-optimization/83857
9116         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9117         vectorizable_live_operation for pure SLP statements.
9118         (vectorizable_live_operation): Handle PHIs.
9120 2018-01-16  Richard Biener  <rguenther@suse.de>
9122         PR tree-optimization/83867
9123         * tree-vect-stmts.c (vect_transform_stmt): Precompute
9124         nested_in_vect_loop_p since the scalar stmt may get invalidated.
9126 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9128         PR c/83844
9129         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9130         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9131         If off is not INTEGER_CST, issue a may not be aligned warning
9132         rather than isn't aligned.  Use isn%'t rather than isn't.
9133         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9134         into MULT_EXPR.
9135         <case MULT_EXPR>: Improve the case when bottom and one of the
9136         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9137         operand, in that case check if the other operand is multiple of
9138         bottom divided by the INTEGER_CST operand.
9140 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9142         PR target/83858
9143         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9144         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9145         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9146         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9147         * config/pa/pa.c (pa_function_arg_advance): Likewise.
9148         (pa_function_arg, pa_arg_partial_bytes): Likewise.
9149         (pa_function_arg_size): New function.
9151 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9153         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9154         in a separate statement.
9156 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9158         PR tree-optimization/83847
9159         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9160         group gathers and scatters.
9162 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9164         PR rtl-optimization/86620
9165         * params.def (max-sched-ready-insns): Bump minimum value to 1.
9167         PR rtl-optimization/83213
9168         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9169         to last if both are JUMP_INSNs.
9171         PR tree-optimization/83843
9172         * gimple-ssa-store-merging.c
9173         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9174         store_immediate_info for bswap/nop orig_stores.
9176 2018-01-15  Andrew Waterman  <andrew@sifive.com>
9178         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9179         !TARGET_MUL.
9180         <UDIV>: Increase cost if !TARGET_DIV.
9182 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
9184         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9185         (define_attr "cr_logical_3op"): New.
9186         (cceq_ior_compare): Adjust.
9187         (cceq_ior_compare_complement): Adjust.
9188         (*cceq_rev_compare): Adjust.
9189         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9190         (is_cracked_insn): Adjust.
9191         (insn_must_be_first_in_group): Adjust.
9192         * config/rs6000/40x.md: Adjust.
9193         * config/rs6000/440.md: Adjust.
9194         * config/rs6000/476.md: Adjust.
9195         * config/rs6000/601.md: Adjust.
9196         * config/rs6000/603.md: Adjust.
9197         * config/rs6000/6xx.md: Adjust.
9198         * config/rs6000/7450.md: Adjust.
9199         * config/rs6000/7xx.md: Adjust.
9200         * config/rs6000/8540.md: Adjust.
9201         * config/rs6000/cell.md: Adjust.
9202         * config/rs6000/e300c2c3.md: Adjust.
9203         * config/rs6000/e500mc.md: Adjust.
9204         * config/rs6000/e500mc64.md: Adjust.
9205         * config/rs6000/e5500.md: Adjust.
9206         * config/rs6000/e6500.md: Adjust.
9207         * config/rs6000/mpc.md: Adjust.
9208         * config/rs6000/power4.md: Adjust.
9209         * config/rs6000/power5.md: Adjust.
9210         * config/rs6000/power6.md: Adjust.
9211         * config/rs6000/power7.md: Adjust.
9212         * config/rs6000/power8.md: Adjust.
9213         * config/rs6000/power9.md: Adjust.
9214         * config/rs6000/rs64.md: Adjust.
9215         * config/rs6000/titan.md: Adjust.
9217 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9219         * config/i386/predicates.md (indirect_branch_operand): Rewrite
9220         ix86_indirect_branch_register logic.
9222 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9224         * config/i386/constraints.md (Bs): Update
9225         ix86_indirect_branch_register check.  Don't check
9226         ix86_indirect_branch_register with GOT_memory_operand.
9227         (Bw): Likewise.
9228         * config/i386/predicates.md (GOT_memory_operand): Don't check
9229         ix86_indirect_branch_register here.
9230         (GOT32_symbol_operand): Likewise.
9232 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9234         * config/i386/predicates.md (constant_call_address_operand):
9235         Rewrite ix86_indirect_branch_register logic.
9236         (sibcall_insn_operand): Likewise.
9238 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9240         * config/i386/constraints.md (Bs): Replace
9241         ix86_indirect_branch_thunk_register with
9242         ix86_indirect_branch_register.
9243         (Bw): Likewise.
9244         * config/i386/i386.md (indirect_jump): Likewise.
9245         (tablejump): Likewise.
9246         (*sibcall_memory): Likewise.
9247         (*sibcall_value_memory): Likewise.
9248         Peepholes of indirect call and jump via memory: Likewise.
9249         * config/i386/i386.opt: Likewise.
9250         * config/i386/predicates.md (indirect_branch_operand): Likewise.
9251         (GOT_memory_operand): Likewise.
9252         (call_insn_operand): Likewise.
9253         (sibcall_insn_operand): Likewise.
9254         (GOT32_symbol_operand): Likewise.
9256 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
9258         PR middle-end/83837
9259         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9260         type rather than type addr's type points to.
9261         (expand_omp_atomic_mutex): Likewise.
9262         (expand_omp_atomic): Likewise.
9264 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9266         PR target/83839
9267         * config/i386/i386.c (output_indirect_thunk_function): Use
9268         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9269         for  __x86_return_thunk.
9271 2018-01-15  Richard Biener  <rguenther@suse.de>
9273         PR middle-end/83850
9274         * expmed.c (extract_bit_field_1): Fix typo.
9276 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9278         PR target/83687
9279         * config/arm/iterators.md (VF): New mode iterator.
9280         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9281         Remove integer-related logic from pattern.
9282         (neon_vabd<mode>_3): Likewise.
9284 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
9286         PR middle-end/82694
9287         * common.opt (fstrict-overflow): No longer an alias.
9288         (fwrapv-pointer): New option.
9289         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9290         also for pointer types based on flag_wrapv_pointer.
9291         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9292         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9293         opts->x_flag_wrapv got set.
9294         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9295         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9296         POINTER_TYPE_OVERFLOW_UNDEFINED.
9297         * match.pd: Likewise in address comparison pattern.
9298         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9300 2018-01-15  Richard Biener  <rguenther@suse.de>
9302         PR lto/83804
9303         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9304         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
9305         Reset type names to their identifier if their TYPE_DECL doesn't
9306         have linkage (and thus is used for ODR and devirt).
9307         (save_debug_info_for_decl): Remove.
9308         (save_debug_info_for_type): Likewise.
9309         (add_tree_to_fld_list): Adjust.
9310         * tree-pretty-print.c (dump_generic_node): Make dumping of
9311         type names more robust.
9313 2018-01-15  Richard Biener  <rguenther@suse.de>
9315         * BASE-VER: Bump to 8.0.1.
9317 2018-01-14  Martin Sebor  <msebor@redhat.com>
9319         PR other/83508
9320         * builtins.c (check_access): Avoid warning when the no-warning bit
9321         is set.
9323 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
9325         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9326         * ira-color (allocno_hard_regs_compare): Likewise.
9328 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
9330         PR target/83013
9331         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9332         Use .pushsection/.popsection.
9334 2018-01-14  Martin Sebor  <msebor@redhat.com>
9336         PR c++/81327
9337         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9339 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
9341         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9342         entry from extra_headers.
9343         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9344         extra_headers, make the list bitwise identical to the i?86-*-* one.
9346 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9348         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9349         -mcmodel=large with -mindirect-branch=thunk,
9350         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9351         -mfunction-return=thunk-extern.
9352         * doc/invoke.texi: Document -mcmodel=large is incompatible with
9353         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9354         -mfunction-return=thunk and -mfunction-return=thunk-extern.
9356 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9358         * config/i386/i386.c (print_reg): Print the name of the full
9359         integer register without '%'.
9360         (ix86_print_operand): Handle 'V'.
9361          * doc/extend.texi: Document 'V' modifier.
9363 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9365         * config/i386/constraints.md (Bs): Disallow memory operand for
9366         -mindirect-branch-register.
9367         (Bw): Likewise.
9368         * config/i386/predicates.md (indirect_branch_operand): Likewise.
9369         (GOT_memory_operand): Likewise.
9370         (call_insn_operand): Likewise.
9371         (sibcall_insn_operand): Likewise.
9372         (GOT32_symbol_operand): Likewise.
9373         * config/i386/i386.md (indirect_jump): Call convert_memory_address
9374         for -mindirect-branch-register.
9375         (tablejump): Likewise.
9376         (*sibcall_memory): Likewise.
9377         (*sibcall_value_memory): Likewise.
9378         Disallow peepholes of indirect call and jump via memory for
9379         -mindirect-branch-register.
9380         (*call_pop): Replace m with Bw.
9381         (*call_value_pop): Likewise.
9382         (*sibcall_pop_memory): Replace m with Bs.
9383         * config/i386/i386.opt (mindirect-branch-register): New option.
9384         * doc/invoke.texi: Document -mindirect-branch-register option.
9386 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9388         * config/i386/i386-protos.h (ix86_output_function_return): New.
9389         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9390         set function_return_type.
9391         (indirect_thunk_name): Add ret_p to indicate thunk for function
9392         return.
9393         (output_indirect_thunk_function): Pass false to
9394         indirect_thunk_name.
9395         (ix86_output_indirect_branch_via_reg): Likewise.
9396         (ix86_output_indirect_branch_via_push): Likewise.
9397         (output_indirect_thunk_function): Create alias for function
9398         return thunk if regno < 0.
9399         (ix86_output_function_return): New function.
9400         (ix86_handle_fndecl_attribute): Handle function_return.
9401         (ix86_attribute_table): Add function_return.
9402         * config/i386/i386.h (machine_function): Add
9403         function_return_type.
9404         * config/i386/i386.md (simple_return_internal): Use
9405         ix86_output_function_return.
9406         (simple_return_internal_long): Likewise.
9407         * config/i386/i386.opt (mfunction-return=): New option.
9408         (indirect_branch): Mention -mfunction-return=.
9409         * doc/extend.texi: Document function_return function attribute.
9410         * doc/invoke.texi: Document -mfunction-return= option.
9412 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9414         * config/i386/i386-opts.h (indirect_branch): New.
9415         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9416         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9417         with local indirect jump when converting indirect call and jump.
9418         (ix86_set_indirect_branch_type): New.
9419         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9420         (indirectlabelno): New.
9421         (indirect_thunk_needed): Likewise.
9422         (indirect_thunk_bnd_needed): Likewise.
9423         (indirect_thunks_used): Likewise.
9424         (indirect_thunks_bnd_used): Likewise.
9425         (INDIRECT_LABEL): Likewise.
9426         (indirect_thunk_name): Likewise.
9427         (output_indirect_thunk): Likewise.
9428         (output_indirect_thunk_function): Likewise.
9429         (ix86_output_indirect_branch_via_reg): Likewise.
9430         (ix86_output_indirect_branch_via_push): Likewise.
9431         (ix86_output_indirect_branch): Likewise.
9432         (ix86_output_indirect_jmp): Likewise.
9433         (ix86_code_end): Call output_indirect_thunk_function if needed.
9434         (ix86_output_call_insn): Call ix86_output_indirect_branch if
9435         needed.
9436         (ix86_handle_fndecl_attribute): Handle indirect_branch.
9437         (ix86_attribute_table): Add indirect_branch.
9438         * config/i386/i386.h (machine_function): Add indirect_branch_type
9439         and has_local_indirect_jump.
9440         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9441         to true.
9442         (tablejump): Likewise.
9443         (*indirect_jump): Use ix86_output_indirect_jmp.
9444         (*tablejump_1): Likewise.
9445         (simple_return_indirect_internal): Likewise.
9446         * config/i386/i386.opt (mindirect-branch=): New option.
9447         (indirect_branch): New.
9448         (keep): Likewise.
9449         (thunk): Likewise.
9450         (thunk-inline): Likewise.
9451         (thunk-extern): Likewise.
9452         * doc/extend.texi: Document indirect_branch function attribute.
9453         * doc/invoke.texi: Document -mindirect-branch= option.
9455 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
9457         PR ipa/83051
9458         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9460 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
9462         * ipa-inline.c (want_inline_small_function_p): Return false if
9463         inlining has already failed with CIF_FINAL_ERROR.
9464         (update_caller_keys): Call want_inline_small_function_p before
9465         can_inline_edge_p.
9466         (update_callee_keys): Likewise.
9468 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9470         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9471         New function.
9472         (rs6000_quadword_masked_address_p): Likewise.
9473         (quad_aligned_load_p): Likewise.
9474         (quad_aligned_store_p): Likewise.
9475         (const_load_sequence_p): Add comment to describe the outer-most loop.
9476         (mimic_memory_attributes_and_flags): New function.
9477         (rs6000_gen_stvx): Likewise.
9478         (replace_swapped_aligned_store): Likewise.
9479         (rs6000_gen_lvx): Likewise.
9480         (replace_swapped_aligned_load): Likewise.
9481         (replace_swapped_load_constant): Capitalize argument name in
9482         comment describing this function.
9483         (rs6000_analyze_swaps): Add a third pass to search for vector loads
9484         and stores that access quad-word aligned addresses and replace
9485         with stvx or lvx instructions when appropriate.
9486         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9487         New function prototype.
9488         (rs6000_quadword_masked_address_p): Likewise.
9489         (rs6000_gen_lvx): Likewise.
9490         (rs6000_gen_stvx): Likewise.
9491         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9492         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9493         when memory address is aligned.
9494         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9495         this split to select lvx instruction when memory address is aligned.
9496         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9497         instruction when memory address is aligned.
9498         (*vsx_le_perm_load_v16qi): Likewise.
9499         (four unnamed splitters): Modify to select the stvx instruction
9500         when memory is aligned.
9502 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
9504         * predict.c (determine_unlikely_bbs): Handle correctly BBs
9505         which appears in the queue multiple times.
9507 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9508             Alan Hayward  <alan.hayward@arm.com>
9509             David Sherwood  <david.sherwood@arm.com>
9511         * tree-vectorizer.h (vec_lower_bound): New structure.
9512         (_loop_vec_info): Add check_nonzero and lower_bounds.
9513         (LOOP_VINFO_CHECK_NONZERO): New macro.
9514         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9515         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9516         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9517         fields.  Make seg_len the distance travelled, not including the
9518         access size.
9519         (dr_direction_indicator): Declare.
9520         (dr_zero_step_indicator): Likewise.
9521         (dr_known_forward_stride_p): Likewise.
9522         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9523         tree-ssanames.h.
9524         (runtime_alias_check_p): Allow runtime alias checks with
9525         variable strides.
9526         (operator ==): Compare access_size and align.
9527         (prune_runtime_alias_test_list): Rework for new distinction between
9528         the access_size and seg_len.
9529         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
9530         segment lengths.
9531         (get_segment_min_max): New function.
9532         (create_intersect_range_checks): Use it.
9533         (dr_step_indicator): New function.
9534         (dr_direction_indicator): Likewise.
9535         (dr_zero_step_indicator): Likewise.
9536         (dr_known_forward_stride_p): Likewise.
9537         * tree-loop-distribution.c (data_ref_segment_size): Return
9538         DR_STEP * (niters - 1).
9539         (compute_alias_check_pairs): Update call to the dr_with_seg_len
9540         constructor.
9541         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9542         (vect_preserves_scalar_order_p): New function, split out from...
9543         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
9544         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9545         (vect_vfa_access_size): New function.
9546         (vect_vfa_align): Likewise.
9547         (vect_compile_time_alias): Take access_size_a and access_b arguments.
9548         (dump_lower_bound): New function.
9549         (vect_check_lower_bound): Likewise.
9550         (vect_small_gap_p): Likewise.
9551         (vectorizable_with_step_bound_p): Likewise.
9552         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9553         depencies if the vectorization factor is 1.  Convert the checks
9554         for nonzero steps into checks on the bounds of DR_STEP.  Try using
9555         a bunds check for variable steps if the minimum required step is
9556         relatively small. Update calls to the dr_with_seg_len
9557         constructor and to vect_compile_time_alias.
9558         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9559         function.
9560         (vect_loop_versioning): Call it.
9561         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9562         when retrying.
9563         (vect_estimate_min_profitable_iters): Account for any bounds checks.
9565 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9566             Alan Hayward  <alan.hayward@arm.com>
9567             David Sherwood  <david.sherwood@arm.com>
9569         * doc/sourcebuild.texi (vect_scatter_store): Document.
9570         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9571         optabs.
9572         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9573         Document.
9574         * genopinit.c (main): Add supports_vec_scatter_store and
9575         supports_vec_scatter_store_cached to target_optabs.
9576         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9577         IFN_MASK_SCATTER_STORE.
9578         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9579         functions.
9580         * internal-fn.h (internal_store_fn_p): Declare.
9581         (internal_fn_stored_value_index): Likewise.
9582         * internal-fn.c (scatter_store_direct): New macro.
9583         (expand_scatter_store_optab_fn): New function.
9584         (direct_scatter_store_optab_supported_p): New macro.
9585         (internal_store_fn_p): New function.
9586         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9587         IFN_MASK_SCATTER_STORE.
9588         (internal_fn_mask_index): Likewise.
9589         (internal_fn_stored_value_index): New function.
9590         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9591         for scatter stores.
9592         * optabs-query.h (supports_vec_scatter_store_p): Declare.
9593         * optabs-query.c (supports_vec_scatter_store_p): New function.
9594         * tree-vectorizer.h (vect_get_store_rhs): Declare.
9595         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9596         true for scatter stores.
9597         (vect_gather_scatter_fn_p): Handle scatter stores too.
9598         (vect_check_gather_scatter): Consider using scatter stores if
9599         supports_vec_scatter_store_p.
9600         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9601         scatter stores too.
9602         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9603         internal_fn_stored_value_index.
9604         (check_load_store_masking): Handle scatter stores too.
9605         (vect_get_store_rhs): Make public.
9606         (vectorizable_call): Use internal_store_fn_p.
9607         (vectorizable_store): Handle scatter store internal functions.
9608         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9609         when deciding whether the end of the group has been reached.
9610         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9611         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9612         (mask_scatter_store<mode>): New insns.
9614 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9615             Alan Hayward  <alan.hayward@arm.com>
9616             David Sherwood  <david.sherwood@arm.com>
9618         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9619         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9620         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9621         function.
9622         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9623         Use vect_truncate_gather_scatter_offset if we can't treat the
9624         operation as a normal gather load or scatter store.
9625         (get_group_load_store_type): Take the gather_scatter_info
9626         as argument.  Try using a gather load or scatter store for
9627         single-element groups.
9628         (get_load_store_type): Update calls to get_group_load_store_type
9629         and vect_use_strided_gather_scatters_p.
9631 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9632             Alan Hayward  <alan.hayward@arm.com>
9633             David Sherwood  <david.sherwood@arm.com>
9635         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9636         optional tree argument.
9637         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9638         null target hooks.
9639         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9640         but continue to use the current value as a fallback.
9641         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9642         to compare the updates.
9643         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9644         (get_load_store_type): Use it when handling a strided access.
9645         (vect_get_strided_load_store_ops): New function.
9646         (vect_get_data_ptr_increment): Likewise.
9647         (vectorizable_load): Handle strided gather loads.  Always pass
9648         a step to vect_create_data_ref_ptr and bump_vector_ptr.
9650 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9651             Alan Hayward  <alan.hayward@arm.com>
9652             David Sherwood  <david.sherwood@arm.com>
9654         * doc/md.texi (gather_load@var{m}): Document.
9655         (mask_gather_load@var{m}): Likewise.
9656         * genopinit.c (main): Add supports_vec_gather_load and
9657         supports_vec_gather_load_cached to target_optabs.
9658         * optabs-tree.c (init_tree_optimization_optabs): Use
9659         ggc_cleared_alloc to allocate target_optabs.
9660         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9661         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9662         functions.
9663         * internal-fn.h (internal_load_fn_p): Declare.
9664         (internal_gather_scatter_fn_p): Likewise.
9665         (internal_fn_mask_index): Likewise.
9666         (internal_gather_scatter_fn_supported_p): Likewise.
9667         * internal-fn.c (gather_load_direct): New macro.
9668         (expand_gather_load_optab_fn): New function.
9669         (direct_gather_load_optab_supported_p): New macro.
9670         (direct_internal_fn_optab): New function.
9671         (internal_load_fn_p): Likewise.
9672         (internal_gather_scatter_fn_p): Likewise.
9673         (internal_fn_mask_index): Likewise.
9674         (internal_gather_scatter_fn_supported_p): Likewise.
9675         * optabs-query.c (supports_at_least_one_mode_p): New function.
9676         (supports_vec_gather_load_p): Likewise.
9677         * optabs-query.h (supports_vec_gather_load_p): Declare.
9678         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9679         and memory_type field.
9680         (NUM_PATTERNS): Bump to 15.
9681         * tree-vect-data-refs.c: Include internal-fn.h.
9682         (vect_gather_scatter_fn_p): New function.
9683         (vect_describe_gather_scatter_call): Likewise.
9684         (vect_check_gather_scatter): Try using internal functions for
9685         gather loads.  Recognize existing calls to a gather load function.
9686         (vect_analyze_data_refs): Consider using gather loads if
9687         supports_vec_gather_load_p.
9688         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9689         (vect_get_gather_scatter_offset_type): Likewise.
9690         (vect_convert_mask_for_vectype): Likewise.
9691         (vect_add_conversion_to_patterm): Likewise.
9692         (vect_try_gather_scatter_pattern): Likewise.
9693         (vect_recog_gather_scatter_pattern): New pattern recognizer.
9694         (vect_vect_recog_func_ptrs): Add it.
9695         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9696         internal_fn_mask_index and internal_gather_scatter_fn_p.
9697         (check_load_store_masking): Take the gather_scatter_info as an
9698         argument and handle gather loads.
9699         (vect_get_gather_scatter_ops): New function.
9700         (vectorizable_call): Check internal_load_fn_p.
9701         (vectorizable_load): Likewise.  Handle gather load internal
9702         functions.
9703         (vectorizable_store): Update call to check_load_store_masking.
9704         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9705         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9706         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9707         (aarch64_gather_scale_operand_d): New predicates.
9708         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9709         (mask_gather_load<mode>): New insns.
9711 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9712             Alan Hayward  <alan.hayward@arm.com>
9713             David Sherwood  <david.sherwood@arm.com>
9715         * optabs.def (fold_left_plus_optab): New optab.
9716         * doc/md.texi (fold_left_plus_@var{m}): Document.
9717         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9718         * internal-fn.c (fold_left_direct): Define.
9719         (expand_fold_left_optab_fn): Likewise.
9720         (direct_fold_left_optab_supported_p): Likewise.
9721         * fold-const-call.c (fold_const_fold_left): New function.
9722         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9723         * tree-parloops.c (valid_reduction_p): New function.
9724         (gather_scalar_reductions): Use it.
9725         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9726         (vect_finish_replace_stmt): Declare.
9727         * tree-vect-loop.c (fold_left_reduction_fn): New function.
9728         (needs_fold_left_reduction_p): New function, split out from...
9729         (vect_is_simple_reduction): ...here.  Accept reductions that
9730         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9731         (vect_force_simple_reduction): Also store the reduction type in
9732         the assignment's STMT_VINFO_REDUC_TYPE.
9733         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9734         (merge_with_identity): New function.
9735         (vect_expand_fold_left): Likewise.
9736         (vectorize_fold_left_reduction): Likewise.
9737         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
9738         scalar phi in place for it.  Check for target support and reject
9739         cases that would reassociate the operation.  Defer the transform
9740         phase to vectorize_fold_left_reduction.
9741         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9742         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9743         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9745 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9747         * tree-if-conv.c (predicate_mem_writes): Remove redundant
9748         call to ifc_temp_var.
9750 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9751             Alan Hayward  <alan.hayward@arm.com>
9752             David Sherwood  <david.sherwood@arm.com>
9754         * target.def (legitimize_address_displacement): Take the original
9755         offset as a poly_int.
9756         * targhooks.h (default_legitimize_address_displacement): Update
9757         accordingly.
9758         * targhooks.c (default_legitimize_address_displacement): Likewise.
9759         * doc/tm.texi: Regenerate.
9760         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9761         as an argument, moving assert of ad->disp == ad->disp_term to...
9762         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
9763         Try calling targetm.legitimize_address_displacement before expanding
9764         the address rather than afterwards, and adjust for the new interface.
9765         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9766         Match the new hook interface.  Handle SVE addresses.
9767         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9768         new hook interface.
9770 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9772         * Makefile.in (OBJS): Add early-remat.o.
9773         * target.def (select_early_remat_modes): New hook.
9774         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9775         * doc/tm.texi: Regenerate.
9776         * targhooks.h (default_select_early_remat_modes): Declare.
9777         * targhooks.c (default_select_early_remat_modes): New function.
9778         * timevar.def (TV_EARLY_REMAT): New timevar.
9779         * passes.def (pass_early_remat): New pass.
9780         * tree-pass.h (make_pass_early_remat): Declare.
9781         * early-remat.c: New file.
9782         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9783         function.
9784         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9786 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9787             Alan Hayward  <alan.hayward@arm.com>
9788             David Sherwood  <david.sherwood@arm.com>
9790         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9791         vfm1 with a bound_epilog parameter.
9792         (vect_do_peeling): Update calls accordingly, and move the prologue
9793         call earlier in the function.  Treat the base bound_epilog as 0 for
9794         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
9795         this base when peeling for gaps.
9796         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9797         with fully-masked loops.
9798         (vect_estimate_min_profitable_iters): Handle the single peeled
9799         iteration in that case.
9801 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9802             Alan Hayward  <alan.hayward@arm.com>
9803             David Sherwood  <david.sherwood@arm.com>
9805         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9806         single-element interleaving even if the size is not a power of 2.
9807         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9808         accesses for single-element interleaving if the group size is
9809         not a power of 2.
9811 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9812             Alan Hayward  <alan.hayward@arm.com>
9813             David Sherwood  <david.sherwood@arm.com>
9815         * doc/md.texi (fold_extract_last_@var{m}): Document.
9816         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9817         * optabs.def (fold_extract_last_optab): New optab.
9818         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9819         * internal-fn.c (fold_extract_direct): New macro.
9820         (expand_fold_extract_optab_fn): Likewise.
9821         (direct_fold_extract_optab_supported_p): Likewise.
9822         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9823         * tree-vect-loop.c (vect_model_reduction_cost): Handle
9824         EXTRACT_LAST_REDUCTION.
9825         (get_initial_def_for_reduction): Do not create an initial vector
9826         for EXTRACT_LAST_REDUCTION reductions.
9827         (vectorizable_reduction): Leave the scalar phi in place for
9828         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
9829         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
9830         epilogue code for EXTRACT_LAST_REDUCTION and defer the
9831         transform phase to vectorizable_condition.
9832         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9833         split out from...
9834         (vect_finish_stmt_generation): ...here.
9835         (vect_finish_replace_stmt): New function.
9836         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
9837         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
9838         pattern.
9839         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
9841 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9842             Alan Hayward  <alan.hayward@arm.com>
9843             David Sherwood  <david.sherwood@arm.com>
9845         * doc/md.texi (extract_last_@var{m}): Document.
9846         * optabs.def (extract_last_optab): New optab.
9847         * internal-fn.def (EXTRACT_LAST): New internal function.
9848         * internal-fn.c (cond_unary_direct): New macro.
9849         (expand_cond_unary_optab_fn): Likewise.
9850         (direct_cond_unary_optab_supported_p): Likewise.
9851         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
9852         loops using EXTRACT_LAST.
9853         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
9854         (extract_last_<mode>): ...this optab.
9855         (vec_extract<mode><Vel>): Update accordingly.
9857 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9858             Alan Hayward  <alan.hayward@arm.com>
9859             David Sherwood  <david.sherwood@arm.com>
9861         * target.def (empty_mask_is_expensive): New hook.
9862         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
9863         * doc/tm.texi: Regenerate.
9864         * targhooks.h (default_empty_mask_is_expensive): Declare.
9865         * targhooks.c (default_empty_mask_is_expensive): New function.
9866         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
9867         if the target says that empty masks are expensive.
9868         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
9869         New function.
9870         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
9872 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9873             Alan Hayward  <alan.hayward@arm.com>
9874             David Sherwood  <david.sherwood@arm.com>
9876         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
9877         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
9878         (vect_use_loop_mask_for_alignment_p): New function.
9879         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
9880         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
9881         niters_skip argument.  Make sure that the first niters_skip elements
9882         of the first iteration are inactive.
9883         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
9884         Update call to vect_set_loop_masks_directly.
9885         (get_misalign_in_elems): New function, split out from...
9886         (vect_gen_prolog_loop_niters): ...here.
9887         (vect_update_init_of_dr): Take a code argument that specifies whether
9888         the adjustment should be added or subtracted.
9889         (vect_update_init_of_drs): Likewise.
9890         (vect_prepare_for_masked_peels): New function.
9891         (vect_do_peeling): Skip prologue peeling if we're using a mask
9892         instead.  Update call to vect_update_inits_of_drs.
9893         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9894         mask_skip_niters.
9895         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
9896         alignment.  Do not include the number of peeled iterations in
9897         the minimum threshold in that case.
9898         (vectorizable_induction): Adjust the start value down by
9899         LOOP_VINFO_MASK_SKIP_NITERS iterations.
9900         (vect_transform_loop): Call vect_prepare_for_masked_peels.
9901         Take the number of skipped iterations into account when calculating
9902         the loop bounds.
9903         * tree-vect-stmts.c (vect_gen_while_not): New function.
9905 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9906             Alan Hayward  <alan.hayward@arm.com>
9907             David Sherwood  <david.sherwood@arm.com>
9909         * doc/sourcebuild.texi (vect_fully_masked): Document.
9910         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
9911         default value to 0.
9912         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
9913         split out from...
9914         (vect_analyze_loop_2): ...here. Don't check the vectorization
9915         factor against the number of loop iterations if the loop is
9916         fully-masked.
9918 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9919             Alan Hayward  <alan.hayward@arm.com>
9920             David Sherwood  <david.sherwood@arm.com>
9922         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
9923         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
9924         (dump_groups): Update accordingly.
9925         (iv_use::mem_type): New member variable.
9926         (address_p): New function.
9927         (record_use): Add a mem_type argument and initialize the new
9928         mem_type field.
9929         (record_group_use): Add a mem_type argument.  Use address_p.
9930         Remove obsolete null checks of base_object.  Update call to record_use.
9931         (find_interesting_uses_op): Update call to record_group_use.
9932         (find_interesting_uses_cond): Likewise.
9933         (find_interesting_uses_address): Likewise.
9934         (get_mem_type_for_internal_fn): New function.
9935         (find_address_like_use): Likewise.
9936         (find_interesting_uses_stmt): Try find_address_like_use before
9937         calling find_interesting_uses_op.
9938         (addr_offset_valid_p): Use the iv mem_type field as the type
9939         of the addressed memory.
9940         (add_autoinc_candidates): Likewise.
9941         (get_address_cost): Likewise.
9942         (split_small_address_groups_p): Use address_p.
9943         (split_address_groups): Likewise.
9944         (add_iv_candidate_for_use): Likewise.
9945         (autoinc_possible_for_pair): Likewise.
9946         (rewrite_groups): Likewise.
9947         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
9948         (determine_group_iv_cost): Update after split of USE_ADDRESS.
9949         (get_alias_ptr_type_for_ptr_address): New function.
9950         (rewrite_use_address): Rewrite address uses in calls that were
9951         identified by find_address_like_use.
9953 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9954             Alan Hayward  <alan.hayward@arm.com>
9955             David Sherwood  <david.sherwood@arm.com>
9957         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
9958         TARGET_MEM_REFs.
9959         * gimple-expr.h (is_gimple_addressable: Likewise.
9960         * gimple-expr.c (is_gimple_address): Likewise.
9961         * internal-fn.c (expand_call_mem_ref): New function.
9962         (expand_mask_load_optab_fn): Use it.
9963         (expand_mask_store_optab_fn): Likewise.
9965 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9966             Alan Hayward  <alan.hayward@arm.com>
9967             David Sherwood  <david.sherwood@arm.com>
9969         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
9970         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
9971         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
9972         (cond_umax@var{mode}): Document.
9973         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
9974         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
9975         (cond_umin_optab, cond_umax_optab): New optabs.
9976         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
9977         (COND_IOR, COND_XOR): New internal functions.
9978         * internal-fn.h (get_conditional_internal_fn): Declare.
9979         * internal-fn.c (cond_binary_direct): New macro.
9980         (expand_cond_binary_optab_fn): Likewise.
9981         (direct_cond_binary_optab_supported_p): Likewise.
9982         (get_conditional_internal_fn): New function.
9983         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
9984         Cope with reduction statements that are vectorized as calls rather
9985         than assignments.
9986         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
9987         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
9988         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
9989         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
9990         (UNSPEC_COND_EOR): New unspecs.
9991         (optab): Add mappings for them.
9992         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
9993         (sve_int_op, sve_fp_op): New int attributes.
9995 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9996             Alan Hayward  <alan.hayward@arm.com>
9997             David Sherwood  <david.sherwood@arm.com>
9999         * optabs.def (while_ult_optab): New optab.
10000         * doc/md.texi (while_ult@var{m}@var{n}): Document.
10001         * internal-fn.def (WHILE_ULT): New internal function.
10002         * internal-fn.h (direct_internal_fn_supported_p): New override
10003         that takes two types as argument.
10004         * internal-fn.c (while_direct): New macro.
10005         (expand_while_optab_fn): New function.
10006         (convert_optab_supported_p): Likewise.
10007         (direct_while_optab_supported_p): New macro.
10008         * wide-int.h (wi::udiv_ceil): New function.
10009         * tree-vectorizer.h (rgroup_masks): New structure.
10010         (vec_loop_masks): New typedef.
10011         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10012         and fully_masked_p.
10013         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10014         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10015         (vect_max_vf): New function.
10016         (slpeel_make_loop_iterate_ntimes): Delete.
10017         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10018         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10019         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10020         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10021         internal-fn.h, stor-layout.h and optabs-query.h.
10022         (vect_set_loop_mask): New function.
10023         (add_preheader_seq): Likewise.
10024         (add_header_seq): Likewise.
10025         (interleave_supported_p): Likewise.
10026         (vect_maybe_permute_loop_masks): Likewise.
10027         (vect_set_loop_masks_directly): Likewise.
10028         (vect_set_loop_condition_masked): Likewise.
10029         (vect_set_loop_condition_unmasked): New function, split out from
10030         slpeel_make_loop_iterate_ntimes.
10031         (slpeel_make_loop_iterate_ntimes): Rename to..
10032         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
10033         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10034         (vect_do_peeling): Update call accordingly.
10035         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10036         loops.
10037         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10038         mask_compare_type, can_fully_mask_p and fully_masked_p.
10039         (release_vec_loop_masks): New function.
10040         (_loop_vec_info): Use it to free the loop masks.
10041         (can_produce_all_loop_masks_p): New function.
10042         (vect_get_max_nscalars_per_iter): Likewise.
10043         (vect_verify_full_masking): Likewise.
10044         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10045         retries, and free the mask rgroups before retrying.  Check loop-wide
10046         reasons for disallowing fully-masked loops.  Make the final decision
10047         about whether use a fully-masked loop or not.
10048         (vect_estimate_min_profitable_iters): Do not assume that peeling
10049         for the number of iterations will be needed for fully-masked loops.
10050         (vectorizable_reduction): Disable fully-masked loops.
10051         (vectorizable_live_operation): Likewise.
10052         (vect_halve_mask_nunits): New function.
10053         (vect_double_mask_nunits): Likewise.
10054         (vect_record_loop_mask): Likewise.
10055         (vect_get_loop_mask): Likewise.
10056         (vect_transform_loop): Handle the case in which the final loop
10057         iteration might handle a partial vector.  Call vect_set_loop_condition
10058         instead of slpeel_make_loop_iterate_ntimes.
10059         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10060         (check_load_store_masking): New function.
10061         (prepare_load_store_mask): Likewise.
10062         (vectorizable_store): Handle fully-masked loops.
10063         (vectorizable_load): Likewise.
10064         (supportable_widening_operation): Use vect_halve_mask_nunits for
10065         booleans.
10066         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10067         (vect_gen_while): New function.
10068         * config/aarch64/aarch64.md (umax<mode>3): New expander.
10069         (aarch64_uqdec<mode>): New insn.
10071 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10072             Alan Hayward  <alan.hayward@arm.com>
10073             David Sherwood  <david.sherwood@arm.com>
10075         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10076         (reduc_xor_scal_optab): New optabs.
10077         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10078         (reduc_xor_scal_@var{m}): Document.
10079         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10080         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10081         internal functions.
10082         * fold-const-call.c (fold_const_call): Handle them.
10083         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10084         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10085         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10086         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10087         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10088         (UNSPEC_XORV): New unspecs.
10089         (optab): Add entries for them.
10090         (BITWISEV): New int iterator.
10091         (bit_reduc_op): New int attributes.
10093 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10094             Alan Hayward  <alan.hayward@arm.com>
10095             David Sherwood  <david.sherwood@arm.com>
10097         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10098         * internal-fn.def (VEC_SHL_INSERT): New internal function.
10099         * optabs.def (vec_shl_insert_optab): New optab.
10100         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10101         (duplicate_and_interleave): Likewise.
10102         * tree-vect-loop.c: Include internal-fn.h.
10103         (neutral_op_for_slp_reduction): New function, split out from
10104         get_initial_defs_for_reduction.
10105         (get_initial_def_for_reduction): Handle option 2 for variable-length
10106         vectors by loading the neutral value into a vector and then shifting
10107         the initial value into element 0.
10108         (get_initial_defs_for_reduction): Replace the code argument with
10109         the neutral value calculated by neutral_op_for_slp_reduction.
10110         Use gimple_build_vector for constant-length vectors.
10111         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10112         but the first group_size elements have a neutral value.
10113         Use duplicate_and_interleave otherwise.
10114         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10115         Update call to get_initial_defs_for_reduction.  Handle SLP
10116         reductions for variable-length vectors by creating one vector
10117         result for each scalar result, with the elements associated
10118         with other scalar results stubbed out with the neutral value.
10119         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10120         Require IFN_VEC_SHL_INSERT for double reductions on
10121         variable-length vectors, or SLP reductions that have
10122         a neutral value.  Require can_duplicate_and_interleave_p
10123         support for variable-length unchained SLP reductions if there
10124         is no neutral value, such as for MIN/MAX reductions.  Also require
10125         the number of vector elements to be a multiple of the number of
10126         SLP statements when doing variable-length unchained SLP reductions.
10127         Update call to vect_create_epilog_for_reduction.
10128         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10129         and remove initial values.
10130         (duplicate_and_interleave): Make public.
10131         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10132         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10134 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10135             Alan Hayward  <alan.hayward@arm.com>
10136             David Sherwood  <david.sherwood@arm.com>
10138         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10139         (can_duplicate_and_interleave_p): New function.
10140         (vect_get_and_check_slp_defs): Take the vector of statements
10141         rather than just the current one.  Remove excess parentheses.
10142         Restriction rejectinon of vect_constant_def and vect_external_def
10143         for variable-length vectors to boolean types, or types for which
10144         can_duplicate_and_interleave_p is false.
10145         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10146         (duplicate_and_interleave): New function.
10147         (vect_get_constant_vectors): Use gimple_build_vector for
10148         constant-length vectors and suitable variable-length constant
10149         vectors.  Use duplicate_and_interleave for other variable-length
10150         vectors.  Don't defer the update when inserting new statements.
10152 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10153             Alan Hayward  <alan.hayward@arm.com>
10154             David Sherwood  <david.sherwood@arm.com>
10156         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10157         min_profitable_iters doesn't go negative.
10159 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10160             Alan Hayward  <alan.hayward@arm.com>
10161             David Sherwood  <david.sherwood@arm.com>
10163         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10164         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10165         * optabs.def (vec_mask_load_lanes_optab): New optab.
10166         (vec_mask_store_lanes_optab): Likewise.
10167         * internal-fn.def (MASK_LOAD_LANES): New internal function.
10168         (MASK_STORE_LANES): Likewise.
10169         * internal-fn.c (mask_load_lanes_direct): New macro.
10170         (mask_store_lanes_direct): Likewise.
10171         (expand_mask_load_optab_fn): Handle masked operations.
10172         (expand_mask_load_lanes_optab_fn): New macro.
10173         (expand_mask_store_optab_fn): Handle masked operations.
10174         (expand_mask_store_lanes_optab_fn): New macro.
10175         (direct_mask_load_lanes_optab_supported_p): Likewise.
10176         (direct_mask_store_lanes_optab_supported_p): Likewise.
10177         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10178         parameter.
10179         (vect_load_lanes_supported): Likewise.
10180         * tree-vect-data-refs.c (strip_conversion): New function.
10181         (can_group_stmts_p): Likewise.
10182         (vect_analyze_data_ref_accesses): Use it instead of checking
10183         for a pair of assignments.
10184         (vect_store_lanes_supported): Take a masked_p parameter.
10185         (vect_load_lanes_supported): Likewise.
10186         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10187         vect_store_lanes_supported and vect_load_lanes_supported.
10188         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10189         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10190         parameter.  Don't allow gaps for masked accesses.
10191         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
10192         and vect_load_lanes_supported.
10193         (get_load_store_type): Take a masked_p parameter and update
10194         call to get_group_load_store_type.
10195         (vectorizable_store): Update call to get_load_store_type.
10196         Handle IFN_MASK_STORE_LANES.
10197         (vectorizable_load): Update call to get_load_store_type.
10198         Handle IFN_MASK_LOAD_LANES.
10200 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10201             Alan Hayward  <alan.hayward@arm.com>
10202             David Sherwood  <david.sherwood@arm.com>
10204         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10205         modes for SVE.
10206         * config/aarch64/aarch64-protos.h
10207         (aarch64_sve_struct_memory_operand_p): Declare.
10208         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10209         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10210         (VPRED, vpred): Handle SVE structure modes.
10211         * config/aarch64/constraints.md (Utx): New constraint.
10212         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10213         (aarch64_sve_struct_nonimmediate_operand): New predicates.
10214         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10215         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10216         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10217         structure modes.  Split into pieces after RA.
10218         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10219         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10220         New patterns.
10221         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10222         SVE structure modes.
10223         (aarch64_classify_address): Likewise.
10224         (sizetochar): Move earlier in file.
10225         (aarch64_print_operand): Handle SVE register lists.
10226         (aarch64_array_mode): New function.
10227         (aarch64_sve_struct_memory_operand_p): Likewise.
10228         (TARGET_ARRAY_MODE): Redefine.
10230 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10231             Alan Hayward  <alan.hayward@arm.com>
10232             David Sherwood  <david.sherwood@arm.com>
10234         * target.def (array_mode): New target hook.
10235         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10236         * doc/tm.texi: Regenerate.
10237         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10238         * hooks.c (hook_optmode_mode_uhwi_none): New function.
10239         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10240         targetm.array_mode.
10241         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
10242         type sizes.
10244 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10245             Alan Hayward  <alan.hayward@arm.com>
10246             David Sherwood  <david.sherwood@arm.com>
10248         * fold-const.c (fold_binary_loc): Check the argument types
10249         rather than the result type when testing for a vector operation.
10251 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10253         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10254         * doc/tm.texi: Regenerate.
10256 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10257             Alan Hayward  <alan.hayward@arm.com>
10258             David Sherwood  <david.sherwood@arm.com>
10260         * doc/invoke.texi (-msve-vector-bits=): Document new option.
10261         (sve): Document new AArch64 extension.
10262         * doc/md.texi (w): Extend the description of the AArch64
10263         constraint to include SVE vectors.
10264         (Upl, Upa): Document new AArch64 predicate constraints.
10265         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10266         enum.
10267         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10268         (msve-vector-bits=): New option.
10269         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10270         SVE when these are disabled.
10271         (sve): New extension.
10272         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10273         modes.  Adjust their number of units based on aarch64_sve_vg.
10274         (MAX_BITSIZE_MODE_ANY_MODE): Define.
10275         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10276         aarch64_addr_query_type.
10277         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10278         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10279         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10280         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10281         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10282         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10283         (aarch64_simd_imm_zero_p): Delete.
10284         (aarch64_check_zero_based_sve_index_immediate): Declare.
10285         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10286         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10287         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10288         (aarch64_sve_float_mul_immediate_p): Likewise.
10289         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10290         rather than an rtx.
10291         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10292         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10293         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10294         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10295         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10296         (aarch64_regmode_natural_size): Likewise.
10297         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10298         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10299         left one place.
10300         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10301         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10302         for VG and the SVE predicate registers.
10303         (V_ALIASES): Add a "z"-prefixed alias.
10304         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10305         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10306         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10307         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10308         (REG_CLASS_NAMES): Add entries for them.
10309         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
10310         and the predicate registers.
10311         (aarch64_sve_vg): Declare.
10312         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10313         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10314         (REGMODE_NATURAL_SIZE): Define.
10315         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10316         SVE macros.
10317         * config/aarch64/aarch64.c: Include cfgrtl.h.
10318         (simd_immediate_info): Add a constructor for series vectors,
10319         and an associated step field.
10320         (aarch64_sve_vg): New variable.
10321         (aarch64_dbx_register_number): Handle VG and the predicate registers.
10322         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10323         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10324         (VEC_ANY_DATA, VEC_STRUCT): New constants.
10325         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10326         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10327         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10328         (aarch64_get_mask_mode): New functions.
10329         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10330         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10331         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
10332         predicate modes and predicate registers.  Explicitly restrict
10333         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
10334         to store a vector mode if it is recognized by
10335         aarch64_classify_vector_mode.
10336         (aarch64_regmode_natural_size): New function.
10337         (aarch64_hard_regno_caller_save_mode): Return the original mode
10338         for predicates.
10339         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10340         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10341         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10342         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10343         functions.
10344         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
10345         does not overlap dest if the function is frame-related.  Handle
10346         SVE constants.
10347         (aarch64_split_add_offset): New function.
10348         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10349         them aarch64_add_offset.
10350         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10351         and update call to aarch64_sub_sp.
10352         (aarch64_add_cfa_expression): New function.
10353         (aarch64_expand_prologue): Pass extra temporary registers to the
10354         functions above.  Handle the case in which we need to emit new
10355         DW_CFA_expressions for registers that were originally saved
10356         relative to the stack pointer, but now have to be expressed
10357         relative to the frame pointer.
10358         (aarch64_output_mi_thunk): Pass extra temporary registers to the
10359         functions above.
10360         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
10361         IP0 and IP1 values for SVE frames.
10362         (aarch64_expand_vec_series): New function.
10363         (aarch64_expand_sve_widened_duplicate): Likewise.
10364         (aarch64_expand_sve_const_vector): Likewise.
10365         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10366         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
10367         into the register, rather than emitting a SET directly.
10368         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10369         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10370         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10371         (offset_9bit_signed_scaled_p): New functions.
10372         (aarch64_replicate_bitmask_imm): New function.
10373         (aarch64_bitmask_imm): Use it.
10374         (aarch64_cannot_force_const_mem): Reject expressions involving
10375         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
10376         (aarch64_classify_index): Handle SVE indices, by requiring
10377         a plain register index with a scale that matches the element size.
10378         (aarch64_classify_address): Handle SVE addresses.  Assert that
10379         the mode of the address is VOIDmode or an integer mode.
10380         Update call to aarch64_classify_symbol.
10381         (aarch64_classify_symbolic_expression): Update call to
10382         aarch64_classify_symbol.
10383         (aarch64_const_vec_all_in_range_p): New function.
10384         (aarch64_print_vector_float_operand): Likewise.
10385         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
10386         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
10387         and the FP immediates 1.0 and 0.5.
10388         (aarch64_print_address_internal): Handle SVE addresses.
10389         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10390         (aarch64_regno_regclass): Handle predicate registers.
10391         (aarch64_secondary_reload): Handle big-endian reloads of SVE
10392         data modes.
10393         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10394         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10395         (aarch64_convert_sve_vector_bits): New function.
10396         (aarch64_override_options): Use it to handle -msve-vector-bits=.
10397         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10398         rather than an rtx.
10399         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10400         Handle SVE vector and predicate modes.  Accept VL-based constants
10401         that need only one temporary register, and VL offsets that require
10402         no temporary registers.
10403         (aarch64_conditional_register_usage): Mark the predicate registers
10404         as fixed if SVE isn't available.
10405         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10406         Return true for SVE vector and predicate modes.
10407         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10408         rather than an unsigned int.  Handle SVE modes.
10409         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
10410         SVE modes.
10411         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10412         if SVE is enabled.
10413         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10414         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10415         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10416         (aarch64_sve_float_mul_immediate_p): New functions.
10417         (aarch64_sve_valid_immediate): New function.
10418         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10419         Explicitly reject structure modes.  Check for INDEX constants.
10420         Handle PTRUE and PFALSE constants.
10421         (aarch64_check_zero_based_sve_index_immediate): New function.
10422         (aarch64_simd_imm_zero_p): Delete.
10423         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10424         vector modes.  Accept constants in the range of CNT[BHWD].
10425         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10426         ask for an Advanced SIMD mode.
10427         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10428         (aarch64_simd_vector_alignment): Handle SVE predicates.
10429         (aarch64_vectorize_preferred_vector_alignment): New function.
10430         (aarch64_simd_vector_alignment_reachable): Use it instead of
10431         the vector size.
10432         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10433         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10434         functions.
10435         (MAX_VECT_LEN): Delete.
10436         (expand_vec_perm_d): Add a vec_flags field.
10437         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10438         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10439         (aarch64_evpc_ext): Don't apply a big-endian lane correction
10440         for SVE modes.
10441         (aarch64_evpc_rev): Rename to...
10442         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
10443         (aarch64_evpc_rev_global): New function.
10444         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10445         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10446         MAX_VECT_LEN.
10447         (aarch64_evpc_sve_tbl): New function.
10448         (aarch64_expand_vec_perm_const_1): Update after rename of
10449         aarch64_evpc_rev.  Handle SVE permutes too, trying
10450         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10451         than aarch64_evpc_tbl.
10452         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10453         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10454         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10455         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10456         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10457         (aarch64_expand_sve_vcond): New functions.
10458         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10459         of aarch64_vector_mode_p.
10460         (aarch64_dwarf_poly_indeterminate_value): New function.
10461         (aarch64_compute_pressure_classes): Likewise.
10462         (aarch64_can_change_mode_class): Likewise.
10463         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10464         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10465         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10466         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10467         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10468         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10469         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10470         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10471         constraints.
10472         (Dn, Dl, Dr): Accept const as well as const_vector.
10473         (Dz): Likewise.  Compare against CONST0_RTX.
10474         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10475         of "vector" where appropriate.
10476         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10477         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10478         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10479         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10480         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10481         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10482         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10483         (v_int_equiv): Extend to SVE modes.
10484         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10485         mode attributes.
10486         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10487         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10488         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10489         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10490         (SVE_COND_FP_CMP): New int iterators.
10491         (perm_hilo): Handle the new unpack unspecs.
10492         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10493         attributes.
10494         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10495         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10496         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10497         (aarch64_equality_operator, aarch64_constant_vector_operand)
10498         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10499         (aarch64_sve_nonimmediate_operand): Likewise.
10500         (aarch64_sve_general_operand): Likewise.
10501         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10502         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10503         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10504         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10505         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10506         (aarch64_sve_float_arith_immediate): Likewise.
10507         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10508         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10509         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10510         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10511         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10512         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10513         (aarch64_sve_float_arith_operand): Likewise.
10514         (aarch64_sve_float_arith_with_sub_operand): Likewise.
10515         (aarch64_sve_float_mul_operand): Likewise.
10516         (aarch64_sve_vec_perm_operand): Likewise.
10517         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10518         (aarch64_mov_operand): Accept const_poly_int and const_vector.
10519         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10520         as well as const_vector.
10521         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10522         in file.  Use CONST0_RTX and CONSTM1_RTX.
10523         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
10524         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10525         Use aarch64_simd_imm_zero.
10526         * config/aarch64/aarch64-sve.md: New file.
10527         * config/aarch64/aarch64.md: Include it.
10528         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10529         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10530         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10531         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10532         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10533         (sve): New attribute.
10534         (enabled): Disable instructions with the sve attribute unless
10535         TARGET_SVE.
10536         (movqi, movhi): Pass CONST_POLY_INT operaneds through
10537         aarch64_expand_mov_immediate.
10538         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10539         CNT[BHSD] immediates.
10540         (movti): Split CONST_POLY_INT moves into two halves.
10541         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10542         Split additions that need a temporary here if the destination
10543         is the stack pointer.
10544         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10545         (*add<mode>3_poly_1): New instruction.
10546         (set_clobber_cc): New expander.
10548 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10550         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10551         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
10552         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10553         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10554         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
10555         Change innermode from fixed_mode_size to machine_mode.
10556         (simplify_subreg): Update call accordingly.  Handle a constant-sized
10557         subreg of a variable-length CONST_VECTOR.
10559 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10560             Alan Hayward  <alan.hayward@arm.com>
10561             David Sherwood  <david.sherwood@arm.com>
10563         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10564         (add_offset_to_base): New function, split out from...
10565         (create_mem_ref): ...here.  When handling a scale other than 1,
10566         check first whether the address is valid without the offset.
10567         Add it into the base if so, leaving the index and scale as-is.
10569 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
10571         PR c++/83778
10572         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10573         fold_for_warn before checking if arg2 is INTEGER_CST.
10575 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
10577         * config/rs6000/predicates.md (load_multiple_operation): Delete.
10578         (store_multiple_operation): Delete.
10579         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10580         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10581         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10582         guarded by TARGET_STRING.
10583         (rs6000_output_load_multiple): Delete.
10584         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10585         OPTION_MASK_STRING / TARGET_STRING handling.
10586         (print_operand) <'N', 'O'>: Add comment that these are unused now.
10587         (const rs6000_opt_masks) <"string">: Change mask to 0.
10588         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10589         (MASK_STRING): Delete.
10590         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10591         parts.  Simplify.
10592         (load_multiple): Delete.
10593         (*ldmsi8): Delete.
10594         (*ldmsi7): Delete.
10595         (*ldmsi6): Delete.
10596         (*ldmsi5): Delete.
10597         (*ldmsi4): Delete.
10598         (*ldmsi3): Delete.
10599         (store_multiple): Delete.
10600         (*stmsi8): Delete.
10601         (*stmsi7): Delete.
10602         (*stmsi6): Delete.
10603         (*stmsi5): Delete.
10604         (*stmsi4): Delete.
10605         (*stmsi3): Delete.
10606         (movmemsi_8reg): Delete.
10607         (corresponding unnamed define_insn): Delete.
10608         (movmemsi_6reg): Delete.
10609         (corresponding unnamed define_insn): Delete.
10610         (movmemsi_4reg): Delete.
10611         (corresponding unnamed define_insn): Delete.
10612         (movmemsi_2reg): Delete.
10613         (corresponding unnamed define_insn): Delete.
10614         (movmemsi_1reg): Delete.
10615         (corresponding unnamed define_insn): Delete.
10616         * config/rs6000/rs6000.opt (mno-string): New.
10617         (mstring): Replace by deprecation warning stub.
10618         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10620 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
10622         * regrename.c (regrename_do_replace): If replacing the same
10623         reg multiple times, try to reuse last created gen_raw_REG.
10625         PR debug/81155
10626         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10627         main to workaround a bug in GDB.
10629 2018-01-12  Tom de Vries  <tom@codesourcery.com>
10631         PR target/83737
10632         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10634 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
10636         PR rtl-optimization/80481
10637         * ira-color.c (get_cap_member): New function.
10638         (allocnos_conflict_by_live_ranges_p): Use it.
10639         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10640         (setup_slot_coalesced_allocno_live_ranges): Ditto.
10642 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
10644         PR target/83628
10645         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10646         (*saddl_se_1): Ditto.
10647         (*ssubsi_1): Ditto.
10648         (*ssubl_se_1): Ditto.
10650 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10652         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10653         rather than wi::to_widest for DR_INITs.
10654         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10655         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10656         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10657         INTEGER_CSTs.
10658         (vect_analyze_group_access_1): Note that here.
10660 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10662         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10663         polynomial type sizes.
10665 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10667         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10668         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10669         (gimple_add_tmp_var): Likewise.
10671 2018-01-12  Martin Liska  <mliska@suse.cz>
10673         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10674         (gimple_alloc_sizes): Likewise.
10675         (dump_gimple_statistics): Use PRIu64 in printf format.
10676         * gimple.h: Change uint64_t to int.
10678 2018-01-12  Martin Liska  <mliska@suse.cz>
10680         * tree-core.h: Use uint64_t instead of int.
10681         * tree.c (tree_node_counts): Likewise.
10682         (tree_node_sizes): Likewise.
10683         (dump_tree_statistics): Use PRIu64 in printf format.
10685 2018-01-12  Martin Liska  <mliska@suse.cz>
10687         * Makefile.in: As qsort_chk is implemented in vec.c, add
10688         vec.o to linkage of gencfn-macros.
10689         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10690         passing the info to record_node_allocation_statistics.
10691         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10692         and pass the info.
10693         * ggc-common.c (struct ggc_usage): Add operator== and use
10694         it in operator< and compare function.
10695         * mem-stats.h (struct mem_usage): Likewise.
10696         * vec.c (struct vec_usage): Remove operator< and compare
10697         function. Can be simply inherited.
10699 2018-01-12  Martin Jambor  <mjambor@suse.cz>
10701         PR target/81616
10702         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10703         * tree-ssa-math-opts.c: Include domwalk.h.
10704         (convert_mult_to_fma_1): New function.
10705         (fma_transformation_info): New type.
10706         (fma_deferring_state): Likewise.
10707         (cancel_fma_deferring): New function.
10708         (result_of_phi): Likewise.
10709         (last_fma_candidate_feeds_initial_phi): Likewise.
10710         (convert_mult_to_fma): Added deferring logic, split actual
10711         transformation to convert_mult_to_fma_1.
10712         (math_opts_dom_walker): New type.
10713         (math_opts_dom_walker::after_dom_children): New method, body moved
10714         here from pass_optimize_widening_mul::execute, added deferring logic
10715         bits.
10716         (pass_optimize_widening_mul::execute): Moved most of code to
10717         math_opts_dom_walker::after_dom_children.
10718         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10719         * config/i386/i386.c (ix86_option_override_internal): Added
10720         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10722 2018-01-12  Richard Biener  <rguenther@suse.de>
10724         PR debug/83157
10725         * dwarf2out.c (gen_variable_die): Do not reset old_die for
10726         inline instance vars.
10728 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
10730         PR target/81819
10731         * config/rx/rx.c (rx_is_restricted_memory_address):
10732         Handle SUBREG case.
10734 2018-01-12  Richard Biener  <rguenther@suse.de>
10736         PR tree-optimization/80846
10737         * target.def (split_reduction): New target hook.
10738         * targhooks.c (default_split_reduction): New function.
10739         * targhooks.h (default_split_reduction): Declare.
10740         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10741         target requests first reduce vectors by combining low and high
10742         parts.
10743         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10744         (get_vectype_for_scalar_type_and_size): Export.
10745         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10746         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10747         * doc/tm.texi: Regenerate.
10748         * config/i386/i386.c (ix86_split_reduction): Implement
10749         TARGET_VECTORIZE_SPLIT_REDUCTION.
10751 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10753         PR target/83368
10754         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10755         in PIC mode except for TARGET_VXWORKS_RTP.
10756         * config/sparc/sparc.c: Include cfgrtl.h.
10757         (TARGET_INIT_PIC_REG): Define.
10758         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10759         (sparc_pic_register_p): New predicate.
10760         (sparc_legitimate_address_p): Use it.
10761         (sparc_legitimize_pic_address): Likewise.
10762         (sparc_delegitimize_address): Likewise.
10763         (sparc_mode_dependent_address_p): Likewise.
10764         (gen_load_pcrel_sym): Remove 4th parameter.
10765         (load_got_register): Adjust call to above.  Remove obsolete stuff.
10766         (sparc_expand_prologue): Do not call load_got_register here.
10767         (sparc_flat_expand_prologue): Likewise.
10768         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10769         (sparc_use_pseudo_pic_reg): New function.
10770         (sparc_init_pic_reg): Likewise.
10771         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10772         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10774 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
10776         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10777         Add item for branch_cost.
10779 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10781         PR rtl-optimization/83565
10782         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10783         not extend the result to a larger mode for rotate operations.
10784         (num_sign_bit_copies1): Likewise.
10786 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10788         PR target/40411
10789         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10790         -symbolic.
10791         Use values-Xc.o for -pedantic.
10792         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10794 2018-01-12  Martin Liska  <mliska@suse.cz>
10796         PR ipa/83054
10797         * ipa-devirt.c (final_warning_record::grow_type_warnings):
10798         New function.
10799         (possible_polymorphic_call_targets): Use it.
10800         (ipa_devirt): Likewise.
10802 2018-01-12  Martin Liska  <mliska@suse.cz>
10804         * profile-count.h (enum profile_quality): Use 0 as invalid
10805         enum value of profile_quality.
10807 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
10809         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10810         -mext-string options.
10812 2018-01-12  Richard Biener  <rguenther@suse.de>
10814         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10815         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10816         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10817         Likewise.
10818         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10820 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
10822         * configure.ac (--with-long-double-format): Add support for the
10823         configuration option to change the default long double format on
10824         PowerPC systems.
10825         * config.gcc (powerpc*-linux*-*): Likewise.
10826         * configure: Regenerate.
10827         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10828         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10829         used without modification.
10831 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10833         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
10834         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
10835         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
10836         MISC_BUILTIN_SPEC_BARRIER.
10837         (rs6000_init_builtins): Likewise.
10838         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
10839         enum value.
10840         (speculation_barrier): New define_insn.
10841         * doc/extend.texi: Document __builtin_speculation_barrier.
10843 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
10845         PR target/83203
10846         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
10847         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
10848         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
10849         iterators.
10850         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
10851         integral modes instead of "ss" and "sd".
10852         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
10853         vectors with 32-bit and 64-bit elements.
10854         (vecdupssescalarmodesuffix): New mode attribute.
10855         (vec_dup<mode>): Use it.
10857 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
10859         PR target/83330
10860         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
10861         frame if argument is passed on stack.
10863 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
10865         PR target/82682
10866         * ree.c (combine_reaching_defs): Optimize also
10867         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
10868         reg2=any_extend(exp); reg1=reg2;, formatting fix.
10870 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
10872         PR middle-end/83189
10873         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
10875 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
10877         PR middle-end/83718
10878         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
10879         after they are computed.
10881 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
10883         PR tree-optimization/83695
10884         * gimple-loop-linterchange.cc
10885         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
10886         reset cached scev information after interchange.
10887         (pass_linterchange::execute): Remove call to scev_reset_htab.
10889 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10891         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
10892         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
10893         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
10894         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
10895         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
10896         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
10897         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
10898         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
10899         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
10900         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
10901         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
10902         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
10903         (V_lane_reg): Likewise.
10904         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
10905         New define_expand.
10906         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
10907         (vfmal_lane_low<mode>_intrinsic,
10908         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
10909         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
10910         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
10911         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
10912         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
10913         vfmsl_lane_high<mode>_intrinsic): New define_insns.
10915 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10917         * config/arm/arm-cpus.in (fp16fml): New feature.
10918         (ALL_SIMD): Add fp16fml.
10919         (armv8.2-a): Add fp16fml as an option.
10920         (armv8.3-a): Likewise.
10921         (armv8.4-a): Add fp16fml as part of fp16.
10922         * config/arm/arm.h (TARGET_FP16FML): Define.
10923         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
10924         when appropriate.
10925         * config/arm/arm-modes.def (V2HF): Define.
10926         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
10927         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
10928         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
10929         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
10930         vfmsl_low, vfmsl_high): New set of builtins.
10931         * config/arm/iterators.md (PLUSMINUS): New code iterator.
10932         (vfml_op): New code attribute.
10933         (VFMLHALVES): New int iterator.
10934         (VFML, VFMLSEL): New mode attributes.
10935         (V_reg): Define mapping for V2HF.
10936         (V_hi, V_lo): New mode attributes.
10937         (VF_constraint): Likewise.
10938         (vfml_half, vfml_half_selector): New int attributes.
10939         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
10940         define_expand.
10941         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
10942         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
10943         New define_insn.
10944         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
10945         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
10946         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
10947         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
10948         documentation.
10949         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
10950         Document new effective target and option set.
10952 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10954         * config/arm/arm-cpus.in (armv8_4): New feature.
10955         (ARMv8_4a): New fgroup.
10956         (armv8.4-a): New arch.
10957         * config/arm/arm-tables.opt: Regenerate.
10958         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
10959         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
10960         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
10961         Add matching rules for -march=armv8.4-a and extensions.
10962         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
10964 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
10966         PR target/81821
10967         * config/rx/rx.md (BW): New mode attribute.
10968         (sync_lock_test_and_setsi): Add mode suffix to insn output.
10970 2018-01-11  Richard Biener  <rguenther@suse.de>
10972         PR tree-optimization/83435
10973         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
10974         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
10975         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
10977 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10978             Alan Hayward  <alan.hayward@arm.com>
10979             David Sherwood  <david.sherwood@arm.com>
10981         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
10982         field.
10983         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
10984         (aarch64_print_address_internal): Use it to check for a zero offset.
10986 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
10987             Alan Hayward  <alan.hayward@arm.com>
10988             David Sherwood  <david.sherwood@arm.com>
10990         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
10991         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
10992         Return a poly_int64 rather than a HOST_WIDE_INT.
10993         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
10994         rather than a HOST_WIDE_INT.
10995         * config/aarch64/aarch64.h (aarch64_frame): Protect with
10996         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
10997         hard_fp_offset, frame_size, initial_adjust, callee_offset and
10998         final_offset from HOST_WIDE_INT to poly_int64.
10999         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11000         to_constant when getting the number of units in an Advanced SIMD
11001         mode.
11002         (aarch64_builtin_vectorized_function): Check for a constant number
11003         of units.
11004         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11005         GET_MODE_SIZE.
11006         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11007         attribute instead of GET_MODE_NUNITS.
11008         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11009         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11010         GET_MODE_SIZE for fixed-size registers.
11011         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11012         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11013         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11014         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11015         (aarch64_print_operand, aarch64_print_address_internal)
11016         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11017         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11018         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11019         Handle polynomial GET_MODE_SIZE.
11020         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
11021         wider than SImode without modification.
11022         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11023         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11024         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11025         passing and returning SVE modes.
11026         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11027         rather than GEN_INT.
11028         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11029         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11030         (aarch64_allocate_and_probe_stack_space): Likewise.
11031         (aarch64_layout_frame): Cope with polynomial offsets.
11032         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11033         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
11034         polynomial offsets.
11035         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11036         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11037         poly_int64 rather than a HOST_WIDE_INT.
11038         (aarch64_get_separate_components, aarch64_process_components)
11039         (aarch64_expand_prologue, aarch64_expand_epilogue)
11040         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11041         (aarch64_anchor_offset): New function, split out from...
11042         (aarch64_legitimize_address): ...here.
11043         (aarch64_builtin_vectorization_cost): Handle polynomial
11044         TYPE_VECTOR_SUBPARTS.
11045         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11046         GET_MODE_NUNITS.
11047         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11048         number of elements from the PARALLEL rather than the mode.
11049         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11050         rather than GET_MODE_BITSIZE.
11051         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11052         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11053         (aarch64_expand_vec_perm_const_1): Handle polynomial
11054         d->perm.length () and d->perm elements.
11055         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
11056         Apply to_constant to d->perm elements.
11057         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11058         polynomial CONST_VECTOR_NUNITS.
11059         (aarch64_move_pointer): Take amount as a poly_int64 rather
11060         than an int.
11061         (aarch64_progress_pointer): Avoid temporary variable.
11062         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11063         the mode attribute instead of GET_MODE.
11065 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11066             Alan Hayward  <alan.hayward@arm.com>
11067             David Sherwood  <david.sherwood@arm.com>
11069         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11070         x exists before using it.
11071         (aarch64_add_constant_internal): Rename to...
11072         (aarch64_add_offset_1): ...this.  Replace regnum with separate
11073         src and dest rtxes.  Handle the case in which they're different,
11074         including when the offset is zero.  Replace scratchreg with an rtx.
11075         Use 2 additions if there is no spare register into which we can
11076         move a 16-bit constant.
11077         (aarch64_add_constant): Delete.
11078         (aarch64_add_offset): Replace reg with separate src and dest
11079         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
11080         Use aarch64_add_offset_1.
11081         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11082         an rtx rather than an int.  Take the delta as a poly_int64
11083         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
11084         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11085         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11086         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11087         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11088         and aarch64_add_sp.
11089         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11090         aarch64_add_constant.
11092 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11094         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11095         Use scalar_float_mode.
11097 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11099         * config/aarch64/aarch64-simd.md
11100         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11101         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11102         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11103         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11104         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11105         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11106         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11107         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11108         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11109         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11111 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11113         PR target/83514
11114         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11115         targ_options->x_arm_arch_string is non NULL.
11117 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
11119         * config/aarch64/aarch64.h
11120         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
11122 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
11124         PR target/82096
11125         * expmed.c (emit_store_flag_force): Swap if const op0
11126         and change VOIDmode to mode of op0.
11128 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11130         PR rtl-optimization/83761
11131         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11132         than bytes to mode_for_size.
11134 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11136         PR middle-end/83189
11137         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11138         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11139         profile.
11141 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11143         PR middle-end/83575
11144         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11145         when in layout mode.
11146         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11147         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11148         partition fixup.
11150 2018-01-10  Michael Collison  <michael.collison@arm.com>
11152         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11153         * config/aarch64/aarch64-option-extension.def: Add
11154         AARCH64_OPT_EXTENSION of 'fp16fml'.
11155         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11156         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11157         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11158         * config/aarch64/constraints.md (Ui7): New constraint.
11159         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11160         (VFMLA_SEL_W): Ditto.
11161         (f16quad): Ditto.
11162         (f16mac1): Ditto.
11163         (VFMLA16_LOW): New int iterator.
11164         (VFMLA16_HIGH): Ditto.
11165         (UNSPEC_FMLAL): New unspec.
11166         (UNSPEC_FMLSL): Ditto.
11167         (UNSPEC_FMLAL2): Ditto.
11168         (UNSPEC_FMLSL2): Ditto.
11169         (f16mac): New code attribute.
11170         * config/aarch64/aarch64-simd-builtins.def
11171         (aarch64_fmlal_lowv2sf): Ditto.
11172         (aarch64_fmlsl_lowv2sf): Ditto.
11173         (aarch64_fmlalq_lowv4sf): Ditto.
11174         (aarch64_fmlslq_lowv4sf): Ditto.
11175         (aarch64_fmlal_highv2sf): Ditto.
11176         (aarch64_fmlsl_highv2sf): Ditto.
11177         (aarch64_fmlalq_highv4sf): Ditto.
11178         (aarch64_fmlslq_highv4sf): Ditto.
11179         (aarch64_fmlal_lane_lowv2sf): Ditto.
11180         (aarch64_fmlsl_lane_lowv2sf): Ditto.
11181         (aarch64_fmlal_laneq_lowv2sf): Ditto.
11182         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11183         (aarch64_fmlalq_lane_lowv4sf): Ditto.
11184         (aarch64_fmlsl_lane_lowv4sf): Ditto.
11185         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11186         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11187         (aarch64_fmlal_lane_highv2sf): Ditto.
11188         (aarch64_fmlsl_lane_highv2sf): Ditto.
11189         (aarch64_fmlal_laneq_highv2sf): Ditto.
11190         (aarch64_fmlsl_laneq_highv2sf): Ditto.
11191         (aarch64_fmlalq_lane_highv4sf): Ditto.
11192         (aarch64_fmlsl_lane_highv4sf): Ditto.
11193         (aarch64_fmlalq_laneq_highv4sf): Ditto.
11194         (aarch64_fmlsl_laneq_highv4sf): Ditto.
11195         * config/aarch64/aarch64-simd.md:
11196         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11197         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11198         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11199         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11200         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11201         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11202         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11203         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11204         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11205         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11206         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11207         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11208         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11209         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11210         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11211         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11212         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11213         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11214         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11215         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11216         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11217         (vfmlsl_low_u32): Ditto.
11218         (vfmlalq_low_u32): Ditto.
11219         (vfmlslq_low_u32): Ditto.
11220         (vfmlal_high_u32): Ditto.
11221         (vfmlsl_high_u32): Ditto.
11222         (vfmlalq_high_u32): Ditto.
11223         (vfmlslq_high_u32): Ditto.
11224         (vfmlal_lane_low_u32): Ditto.
11225         (vfmlsl_lane_low_u32): Ditto.
11226         (vfmlal_laneq_low_u32): Ditto.
11227         (vfmlsl_laneq_low_u32): Ditto.
11228         (vfmlalq_lane_low_u32): Ditto.
11229         (vfmlslq_lane_low_u32): Ditto.
11230         (vfmlalq_laneq_low_u32): Ditto.
11231         (vfmlslq_laneq_low_u32): Ditto.
11232         (vfmlal_lane_high_u32): Ditto.
11233         (vfmlsl_lane_high_u32): Ditto.
11234         (vfmlal_laneq_high_u32): Ditto.
11235         (vfmlsl_laneq_high_u32): Ditto.
11236         (vfmlalq_lane_high_u32): Ditto.
11237         (vfmlslq_lane_high_u32): Ditto.
11238         (vfmlalq_laneq_high_u32): Ditto.
11239         (vfmlslq_laneq_high_u32): Ditto.
11240         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11241         (AARCH64_FL_FOR_ARCH8_4): New.
11242         (AARCH64_ISA_F16FML): New ISA flag.
11243         (TARGET_F16FML): New feature flag for fp16fml.
11244         (doc/invoke.texi): Document new fp16fml option.
11246 2018-01-10  Michael Collison  <michael.collison@arm.com>
11248         * config/aarch64/aarch64-builtins.c:
11249         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11250         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11251         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11252         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11253         (AARCH64_ISA_SHA3): New ISA flag.
11254         (TARGET_SHA3): New feature flag for sha3.
11255         * config/aarch64/iterators.md (sha512_op): New int attribute.
11256         (CRYPTO_SHA512): New int iterator.
11257         (UNSPEC_SHA512H): New unspec.
11258         (UNSPEC_SHA512H2): Ditto.
11259         (UNSPEC_SHA512SU0): Ditto.
11260         (UNSPEC_SHA512SU1): Ditto.
11261         * config/aarch64/aarch64-simd-builtins.def
11262         (aarch64_crypto_sha512hqv2di): New builtin.
11263         (aarch64_crypto_sha512h2qv2di): Ditto.
11264         (aarch64_crypto_sha512su0qv2di): Ditto.
11265         (aarch64_crypto_sha512su1qv2di): Ditto.
11266         (aarch64_eor3qv8hi): Ditto.
11267         (aarch64_rax1qv2di): Ditto.
11268         (aarch64_xarqv2di): Ditto.
11269         (aarch64_bcaxqv8hi): Ditto.
11270         * config/aarch64/aarch64-simd.md:
11271         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11272         (aarch64_crypto_sha512su0qv2di): Ditto.
11273         (aarch64_crypto_sha512su1qv2di): Ditto.
11274         (aarch64_eor3qv8hi): Ditto.
11275         (aarch64_rax1qv2di): Ditto.
11276         (aarch64_xarqv2di): Ditto.
11277         (aarch64_bcaxqv8hi): Ditto.
11278         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11279         (vsha512h2q_u64): Ditto.
11280         (vsha512su0q_u64): Ditto.
11281         (vsha512su1q_u64): Ditto.
11282         (veor3q_u16): Ditto.
11283         (vrax1q_u64): Ditto.
11284         (vxarq_u64): Ditto.
11285         (vbcaxq_u16): Ditto.
11286         * config/arm/types.md (crypto_sha512): New type attribute.
11287         (crypto_sha3): Ditto.
11288         (doc/invoke.texi): Document new sha3 option.
11290 2018-01-10  Michael Collison  <michael.collison@arm.com>
11292         * config/aarch64/aarch64-builtins.c:
11293         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11294         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11295         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11296         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11297         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11298         (AARCH64_ISA_SM4): New ISA flag.
11299         (TARGET_SM4): New feature flag for sm4.
11300         * config/aarch64/aarch64-simd-builtins.def
11301         (aarch64_sm3ss1qv4si): Ditto.
11302         (aarch64_sm3tt1aq4si): Ditto.
11303         (aarch64_sm3tt1bq4si): Ditto.
11304         (aarch64_sm3tt2aq4si): Ditto.
11305         (aarch64_sm3tt2bq4si): Ditto.
11306         (aarch64_sm3partw1qv4si): Ditto.
11307         (aarch64_sm3partw2qv4si): Ditto.
11308         (aarch64_sm4eqv4si): Ditto.
11309         (aarch64_sm4ekeyqv4si): Ditto.
11310         * config/aarch64/aarch64-simd.md:
11311         (aarch64_sm3ss1qv4si): Ditto.
11312         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11313         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11314         (aarch64_sm4eqv4si): Ditto.
11315         (aarch64_sm4ekeyqv4si): Ditto.
11316         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11317         (sm3part_op): Ditto.
11318         (CRYPTO_SM3TT): Ditto.
11319         (CRYPTO_SM3PART): Ditto.
11320         (UNSPEC_SM3SS1): New unspec.
11321         (UNSPEC_SM3TT1A): Ditto.
11322         (UNSPEC_SM3TT1B): Ditto.
11323         (UNSPEC_SM3TT2A): Ditto.
11324         (UNSPEC_SM3TT2B): Ditto.
11325         (UNSPEC_SM3PARTW1): Ditto.
11326         (UNSPEC_SM3PARTW2): Ditto.
11327         (UNSPEC_SM4E): Ditto.
11328         (UNSPEC_SM4EKEY): Ditto.
11329         * config/aarch64/constraints.md (Ui2): New constraint.
11330         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11331         * config/arm/types.md (crypto_sm3): New type attribute.
11332         (crypto_sm4): Ditto.
11333         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11334         (vsm3tt1aq_u32): Ditto.
11335         (vsm3tt1bq_u32): Ditto.
11336         (vsm3tt2aq_u32): Ditto.
11337         (vsm3tt2bq_u32): Ditto.
11338         (vsm3partw1q_u32): Ditto.
11339         (vsm3partw2q_u32): Ditto.
11340         (vsm4eq_u32): Ditto.
11341         (vsm4ekeyq_u32): Ditto.
11342         (doc/invoke.texi): Document new sm4 option.
11344 2018-01-10  Michael Collison  <michael.collison@arm.com>
11346         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11347         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11348         (AARCH64_FL_FOR_ARCH8_4): New.
11349         (AARCH64_FL_V8_4): New flag.
11350         (doc/invoke.texi): Document new armv8.4-a option.
11352 2018-01-10  Michael Collison  <michael.collison@arm.com>
11354         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11355         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11356         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11357         * config/aarch64/aarch64-option-extension.def: Add
11358         AARCH64_OPT_EXTENSION of 'sha2'.
11359         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11360         (crypto): Disable sha2 and aes if crypto disabled.
11361         (crypto): Enable aes and sha2 if enabled.
11362         (simd): Disable sha2 and aes if simd disabled.
11363         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11364         New flags.
11365         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11366         (TARGET_SHA2): New feature flag for sha2.
11367         (TARGET_AES): New feature flag for aes.
11368         * config/aarch64/aarch64-simd.md:
11369         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11370         conditional on TARGET_AES.
11371         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11372         (aarch64_crypto_sha1hsi): Make pattern conditional
11373         on TARGET_SHA2.
11374         (aarch64_crypto_sha1hv4si): Ditto.
11375         (aarch64_be_crypto_sha1hv4si): Ditto.
11376         (aarch64_crypto_sha1su1v4si): Ditto.
11377         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11378         (aarch64_crypto_sha1su0v4si): Ditto.
11379         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11380         (aarch64_crypto_sha256su0v4si): Ditto.
11381         (aarch64_crypto_sha256su1v4si): Ditto.
11382         (doc/invoke.texi): Document new aes and sha2 options.
11384 2018-01-10  Martin Sebor  <msebor@redhat.com>
11386         PR tree-optimization/83781
11387         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11388         as string arrays.
11390 2018-01-11  Martin Sebor  <msebor@gmail.com>
11391             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11393         PR tree-optimization/83501
11394         PR tree-optimization/81703
11396         * tree-ssa-strlen.c (get_string_cst): Rename...
11397         (get_string_len): ...to this.  Handle global constants.
11398         (handle_char_store): Adjust.
11400 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
11401             Jim Wilson  <jimw@sifive.com>
11403         * config/riscv/riscv-protos.h (riscv_output_return): New.
11404         * config/riscv/riscv.c (struct machine_function): New naked_p field.
11405         (riscv_attribute_table, riscv_output_return),
11406         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11407         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11408         (riscv_compute_frame_info): Only compute frame->mask if not a naked
11409         function.
11410         (riscv_expand_prologue): Add early return for naked function.
11411         (riscv_expand_epilogue): Likewise.
11412         (riscv_function_ok_for_sibcall): Return false for naked function.
11413         (riscv_set_current_function): New.
11414         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11415         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11416         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11417         * doc/extend.texi (RISC-V Function Attributes): New.
11419 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
11421         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11422         check for 128-bit long double before checking TCmode.
11423         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11424         128-bit long doubles before checking TFmode or TCmode.
11425         (FLOAT128_IBM_P): Likewise.
11427 2018-01-10  Martin Sebor  <msebor@redhat.com>
11429         PR tree-optimization/83671
11430         * builtins.c (c_strlen): Unconditionally return zero for the empty
11431         string.
11432         Use -Warray-bounds for warnings.
11433         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11434         for non-constant array indices with COMPONENT_REF, arrays of
11435         arrays, and pointers to arrays.
11436         (gimple_fold_builtin_strlen): Determine and set length range for
11437         non-constant character arrays.
11439 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
11441         PR middle-end/81897
11442         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11443         empty blocks.
11445 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
11447         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11449 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
11451         PR target/83399
11452         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11453         VECTOR_MEM_ALTIVEC_OR_VSX_P.
11454         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11455         indexed_or_indirect_operand predicate.
11456         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11457         (*vsx_le_perm_load_v8hi): Likewise.
11458         (*vsx_le_perm_load_v16qi): Likewise.
11459         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11460         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11461         (*vsx_le_perm_store_v8hi): Likewise.
11462         (*vsx_le_perm_store_v16qi): Likewise.
11463         (eight unnamed splitters): Likewise.
11465 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
11467         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11468         * config/rs6000/emmintrin.h: Likewise.
11469         * config/rs6000/mmintrin.h: Likewise.
11470         * config/rs6000/xmmintrin.h: Likewise.
11472 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
11474         PR c++/43486
11475         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11476         "public_flag".
11477         * tree.c (tree_nop_conversion): Return true for location wrapper
11478         nodes.
11479         (maybe_wrap_with_location): New function.
11480         (selftest::check_strip_nops): New function.
11481         (selftest::test_location_wrappers): New function.
11482         (selftest::tree_c_tests): Call it.
11483         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11484         (maybe_wrap_with_location): New decl.
11485         (EXPR_LOCATION_WRAPPER_P): New macro.
11486         (location_wrapper_p): New inline function.
11487         (tree_strip_any_location_wrapper): New inline function.
11489 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
11491         PR target/83735
11492         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11493         stack_realign_offset for the largest alignment of stack slot
11494         actually used.
11495         (ix86_find_max_used_stack_alignment): New function.
11496         (ix86_finalize_stack_frame_flags): Use it.  Set
11497         max_used_stack_alignment if we don't realign stack.
11498         * config/i386/i386.h (machine_function): Add
11499         max_used_stack_alignment.
11501 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
11503         * config/arm/arm.opt (-mbranch-cost): New option.
11504         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11505         account.
11507 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
11509         PR target/83629
11510         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11511         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11513 2018-01-10  Richard Biener  <rguenther@suse.de>
11515         PR debug/83765
11516         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11517         early out so it also covers the case where we have a non-NULL
11518         origin.
11520 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
11522         PR tree-optimization/83753
11523         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11524         for non-strided grouped accesses if the number of elements is 1.
11526 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11528         PR target/81616
11529         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11530         * i386.h (TARGET_USE_GATHER): Define.
11531         * x86-tune.def (X86_TUNE_USE_GATHER): New.
11533 2018-01-10  Martin Liska  <mliska@suse.cz>
11535         PR bootstrap/82831
11536         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11537         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11538         partitioning.
11539         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11540         CLEANUP_NO_PARTITIONING is not set.
11542 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
11544         * doc/rtl.texi: Remove documentation of (const ...) wrappers
11545         for vectors, as a partial revert of r254296.
11546         * rtl.h (const_vec_p): Delete.
11547         (const_vec_duplicate_p): Don't test for vector CONSTs.
11548         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11549         * expmed.c (make_tree): Likewise.
11551         Revert:
11552         * common.md (E, F): Use CONSTANT_P instead of checking for
11553         CONST_VECTOR.
11554         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11555         checking for CONST_VECTOR.
11557 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11559         PR middle-end/83575
11560         * predict.c (force_edge_cold): Handle in more sane way edges
11561         with no prediction.
11563 2018-01-09  Carl Love  <cel@us.ibm.com>
11565         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11566         V4SI, V4SF types.
11567         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11568         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11569         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11570         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
11571         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11572         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
11573         * config/rs6000/rs6000-protos.h: Add extern defition for
11574         rs6000_generate_float2_double_code.
11575         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11576         function.
11577         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11578         (float2_v2df): Add define_expand.
11580 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
11582         PR target/83628
11583         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11584         op_mode in the force_to_mode call.
11586 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11588         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11589         instead of checking each element individually.
11590         (aarch64_evpc_uzp): Likewise.
11591         (aarch64_evpc_zip): Likewise.
11592         (aarch64_evpc_ext): Likewise.
11593         (aarch64_evpc_rev): Likewise.
11594         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11595         instead of checking each element individually.  Return true without
11596         generating rtl if
11597         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11598         whether all selected elements come from the same input, instead of
11599         checking each element individually.  Remove calls to gen_rtx_REG,
11600         start_sequence and end_sequence and instead assert that no rtl is
11601         generated.
11603 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11605         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11606         order of HIGH and CONST checks.
11608 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11610         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11611         if the destination isn't an SSA_NAME.
11613 2018-01-09  Richard Biener  <rguenther@suse.de>
11615         PR tree-optimization/83668
11616         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11617         move prologue...
11618         (canonicalize_loop_form): ... here, renamed from ...
11619         (canonicalize_loop_closed_ssa_form): ... this and amended to
11620         swap successor edges for loop exit blocks to make us use
11621         the RPO order we need for initial schedule generation.
11623 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
11625         PR tree-optimization/64811
11626         * match.pd: When optimizing comparisons with Inf, avoid
11627         introducing or losing exceptions from comparisons with NaN.
11629 2018-01-09  Martin Liska  <mliska@suse.cz>
11631         PR sanitizer/82517
11632         * asan.c (shadow_mem_size): Add gcc_assert.
11634 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
11636         Don't save registers in main().
11638         PR target/83738
11639         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11640         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11641         * config/avr/avr.c (avr_set_current_function): Don't error if
11642         naked, OS_task or OS_main are specified at the same time.
11643         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11644         OS_main.
11645         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11646         attribute.
11647         * common/config/avr/avr-common.c (avr_option_optimization_table):
11648         Switch on -mmain-is-OS_task for optimizing compilations.
11650 2018-01-09  Richard Biener  <rguenther@suse.de>
11652         PR tree-optimization/83572
11653         * graphite.c: Include cfganal.h.
11654         (graphite_transform_loops): Connect infinite loops to exit
11655         and remove fake edges at the end.
11657 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11659         * ipa-inline.c (edge_badness): Revert accidental checkin.
11661 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11663         PR ipa/80763
11664         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11665         symbols; not inline clones.
11667 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
11669         PR target/83507
11670         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11671         hard registers.  Formatting fixes.
11673         PR preprocessor/83722
11674         * gcc.c (try_generate_repro): Pass
11675         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11676         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11677         do_report_bug.
11679 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
11680             Kito Cheng  <kito.cheng@gmail.com>
11682         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11683         (riscv_leaf_function_p): Delete.
11684         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11686 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11688         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11689         function.
11690         (do_ifelse): New function.
11691         (do_isel): New function.
11692         (do_sub3): New function.
11693         (do_add3): New function.
11694         (do_load_mask_compare): New function.
11695         (do_overlap_load_compare): New function.
11696         (expand_compare_loop): New function.
11697         (expand_block_compare): Call expand_compare_loop() when appropriate.
11698         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11699         option description.
11700         (-mblock-compare-inline-loop-limit): New option.
11702 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11704         PR target/83677
11705         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11706         Reverse order of second and third operands in first alternative.
11707         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11708         of first and second elements in UNSPEC_VPERMR vector.
11709         (altivec_expand_vec_perm_le): Likewise.
11711 2018-01-08  Jeff Law  <law@redhat.com>
11713         PR rtl-optimizatin/81308
11714         * tree-switch-conversion.c (cfg_altered): New file scoped static.
11715         (process_switch): If group_case_labels makes a change, then set
11716         cfg_altered.
11717         (pass_convert_switch::execute): If a switch is converted, then
11718         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
11720         PR rtl-optimization/81308
11721         * recog.c (split_all_insns): Conditionally cleanup the CFG after
11722         splitting insns.
11724 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
11726         PR target/83663 - Revert r255946
11727         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11728         generation for cases where splatting a value is not useful.
11729         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11730         across a vec_duplicate and a paradoxical subreg forming a vector
11731         mode to a vec_concat.
11733 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11735         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11736         -march=armv8.3-a variants.
11737         * config/arm/t-multilib: Likewise.
11738         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
11740 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11742         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11743         to generate rtl.
11744         (cceq_ior_compare_complement): Give it a name so I can use it, and
11745         change boolean_or_operator predicate to boolean_operator so it can
11746         be used to generate a crand.
11747         (eqne): New code iterator.
11748         (bd/bd_neg): New code_attrs.
11749         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11750         a single define_insn.
11751         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11752         decrement (bdnzt/bdnzf/bdzt/bdzf).
11753         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11754         with the new names of the branch decrement patterns, and added the
11755         names of the branch decrement conditional patterns.
11757 2018-01-08  Richard Biener  <rguenther@suse.de>
11759         PR tree-optimization/83563
11760         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11761         cache.
11763 2018-01-08  Richard Biener  <rguenther@suse.de>
11765         PR middle-end/83713
11766         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11768 2018-01-08  Richard Biener  <rguenther@suse.de>
11770         PR tree-optimization/83685
11771         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11772         references to abnormals.
11774 2018-01-08  Richard Biener  <rguenther@suse.de>
11776         PR lto/83719
11777         * dwarf2out.c (output_indirect_strings): Handle empty
11778         skeleton_debug_str_hash.
11779         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11781 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11783         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11784         (emit_store_direct): Likewise.
11785         (arc_trampoline_adjust_address): Likewise.
11786         (arc_asm_trampoline_template): New function.
11787         (arc_initialize_trampoline): Use asm_trampoline_template.
11788         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11789         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11790         * config/arc/arc.md (flush_icache): Delete pattern.
11792 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11794         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11795         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11796         munaligned-access.
11798 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11800         PR target/83681
11801         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11802         by not USED_FOR_TARGET.
11803         (make_pass_resolve_sw_modes): Likewise.
11805 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11807         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11808         USED_FOR_TARGET.
11810 2018-01-08  Richard Biener  <rguenther@suse.de>
11812         PR middle-end/83580
11813         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11815 2018-01-08  Richard Biener  <rguenther@suse.de>
11817         PR middle-end/83517
11818         * match.pd ((t * 2) / 2) -> t): Add missing :c.
11820 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
11822         PR middle-end/81897
11823         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11824         basic blocks with a small number of successors.
11825         (convert_control_dep_chain_into_preds): Improve handling of
11826         forwarder blocks.
11827         (dump_predicates): Split apart into...
11828         (dump_pred_chain): ...here...
11829         (dump_pred_info): ...and here.
11830         (can_one_predicate_be_invalidated_p): Add debugging printfs.
11831         (can_chain_union_be_invalidated_p): Improve check for invalidation
11832         of paths.
11833         (uninit_uses_cannot_happen): Avoid unnecessary if
11834         convert_control_dep_chain_into_preds yielded nothing.
11836 2018-01-06  Martin Sebor  <msebor@redhat.com>
11838         PR tree-optimization/83640
11839         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
11840         subtracting negative offset from size.
11841         (builtin_access::overlap): Adjust offset bounds of the access to fall
11842         within the size of the object if possible.
11844 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
11846         PR rtl-optimization/83699
11847         * expmed.c (extract_bit_field_1): Restrict the vector usage of
11848         extract_bit_field_as_subreg to cases in which the extracted
11849         value is also a vector.
11851         * lra-constraints.c (process_alt_operands): Test for the equivalence
11852         substitutions when detecting a possible reload cycle.
11854 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
11856         PR debug/83480
11857         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
11858         by default if flag_selective_schedling{,2}.  Formatting fixes.
11860         PR rtl-optimization/83682
11861         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
11862         if it has non-VECTOR_MODE element mode.
11863         (vec_duplicate_p): Likewise.
11865         PR middle-end/83694
11866         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
11867         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
11869 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
11871         PR target/83604
11872         * config/i386/i386-builtin.def
11873         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
11874         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
11875         Require also OPTION_MASK_ISA_AVX512F in addition to
11876         OPTION_MASK_ISA_GFNI.
11877         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
11878         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
11879         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
11880         to OPTION_MASK_ISA_GFNI.
11881         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
11882         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
11883         OPTION_MASK_ISA_AVX512BW.
11884         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
11885         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
11886         addition to OPTION_MASK_ISA_GFNI.
11887         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
11888         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
11889         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
11890         to OPTION_MASK_ISA_GFNI.
11891         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
11892         a requirement for all ISAs rather than any of them with a few
11893         exceptions.
11894         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
11895         processing.
11896         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
11897         bitmasks to be enabled with 3 exceptions, instead of requiring any
11898         enabled ISA with lots of exceptions.
11899         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
11900         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
11901         Change avx512bw in isa attribute to avx512f.
11902         * config/i386/sgxintrin.h: Add license boilerplate.
11903         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
11904         to __AVX512F__ and __AVX512VL to __AVX512VL__.
11905         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
11906         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
11907         defined.
11908         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
11909         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
11910         temporarily sse2 rather than sse if not enabled already.
11912         PR target/83604
11913         * config/i386/sse.md (VI248_VLBW): Rename to ...
11914         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
11915         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
11916         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
11917         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
11918         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
11919         mode iterator instead of VI248_VLBW.
11921 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
11923         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
11924         (record_modified): Skip clobbers; add debug output.
11925         (param_change_prob): Use sreal frequencies.
11927 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
11929         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
11930         punt for user-aligned variables.
11932 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
11934         * tree-chrec.c (chrec_contains_symbols): Return true for
11935         POLY_INT_CST.
11937 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
11939         PR target/82439
11940         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
11941         of (x|y) == x for BICS pattern.
11943 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
11945         PR tree-optimization/83605
11946         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
11947         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
11948         can throw.
11950 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11952         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
11953         * config/epiphany/rtems.h: New file.
11955 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
11956             Uros Bizjak  <ubizjak@gmail.com>
11958         PR target/83554
11959         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
11960         QIreg_operand instead of register_operand predicate.
11961         * config/i386/i386.c (ix86_rop_should_change_byte_p,
11962         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
11963         comments instead of -fmitigate[-_]rop.
11965 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
11967         PR bootstrap/81926
11968         * cgraphunit.c (symbol_table::compile): Switch to text_section
11969         before calling assembly_start debug hook.
11970         * run-rtl-passes.c (run_rtl_passes): Likewise.
11971         Include output.h.
11973 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11975         * tree-vrp.c (extract_range_from_binary_expr_1): Check
11976         range_int_cst_p rather than !symbolic_range_p before calling
11977         extract_range_from_multiplicative_op_1.
11979 2018-01-04  Jeff Law  <law@redhat.com>
11981         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
11982         redundant test in assertion.
11984 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11986         * doc/rtl.texi: Document machine_mode wrapper classes.
11988 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11990         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
11991         using tree_to_uhwi.
11993 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
11995         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
11996         the VEC_PERM_EXPR fold to fail.
11998 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12000         PR debug/83585
12001         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12002         to switched_sections.
12004 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12006         PR target/83680
12007         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12008         test for d.testing.
12010 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
12012         PR target/83387
12013         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12014         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12016 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12018         PR debug/83666
12019         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12020         is BLKmode and bitpos not zero or mode change is needed.
12022 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12024         PR target/83675
12025         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12026         TARGET_VIS2.
12028 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
12030         PR target/83628
12031         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12032         instead of MULT rtx.  Update all corresponding splitters.
12033         (*saddl_se): Ditto.
12034         (*ssub<modesuffix>): Ditto.
12035         (*ssubl_se): Ditto.
12036         (*cmp_sadd_di): Update split patterns.
12037         (*cmp_sadd_si): Ditto.
12038         (*cmp_sadd_sidi): Ditto.
12039         (*cmp_ssub_di): Ditto.
12040         (*cmp_ssub_si): Ditto.
12041         (*cmp_ssub_sidi): Ditto.
12042         * config/alpha/predicates.md (const23_operand): New predicate.
12043         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12044         Look for ASHIFT, not MULT inner operand.
12045         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12047 2018-01-04  Martin Liska  <mliska@suse.cz>
12049         PR gcov-profile/83669
12050         * gcov.c (output_intermediate_file): Add version to intermediate
12051         gcov file.
12052         * doc/gcov.texi: Document new field 'version' in intermediate
12053         file format. Fix location of '-k' option of gcov command.
12055 2018-01-04  Martin Liska  <mliska@suse.cz>
12057         PR ipa/82352
12058         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12060 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12062         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12064 2018-01-03  Martin Sebor  <msebor@redhat.com>
12066         PR tree-optimization/83655
12067         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12068         checking calls with invalid arguments.
12070 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12072         * tree-vect-stmts.c (vect_get_store_rhs): New function.
12073         (vectorizable_mask_load_store): Delete.
12074         (vectorizable_call): Return false for masked loads and stores.
12075         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
12076         instead of gimple_assign_rhs1.
12077         (vectorizable_load): Handle IFN_MASK_LOAD.
12078         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12080 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12082         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12083         split out from..,
12084         (vectorizable_mask_load_store): ...here.
12085         (vectorizable_load): ...and here.
12087 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12089         * tree-vect-stmts.c (vect_build_all_ones_mask)
12090         (vect_build_zero_merge_argument): New functions, split out from...
12091         (vectorizable_load): ...here.
12093 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12095         * tree-vect-stmts.c (vect_check_store_rhs): New function,
12096         split out from...
12097         (vectorizable_mask_load_store): ...here.
12098         (vectorizable_store): ...and here.
12100 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12102         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12103         split out from...
12104         (vectorizable_mask_load_store): ...here.
12106 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12108         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12109         (vect_model_store_cost): Take a vec_load_store_type instead of a
12110         vect_def_type.
12111         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12112         (vect_model_store_cost): Take a vec_load_store_type instead of a
12113         vect_def_type.
12114         (vectorizable_mask_load_store): Update accordingly.
12115         (vectorizable_store): Likewise.
12116         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12118 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12120         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12121         IFN_MASK_LOAD calls here rather than...
12122         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12124 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12125             Alan Hayward  <alan.hayward@arm.com>
12126             David Sherwood  <david.sherwood@arm.com>
12128         * expmed.c (extract_bit_field_1): For vector extracts,
12129         fall back to extract_bit_field_as_subreg if vec_extract
12130         isn't available.
12132 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12133             Alan Hayward  <alan.hayward@arm.com>
12134             David Sherwood  <david.sherwood@arm.com>
12136         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12137         they are variable or constant sized.
12138         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12139         slots for constant-sized data.
12141 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12142             Alan Hayward  <alan.hayward@arm.com>
12143             David Sherwood  <david.sherwood@arm.com>
12145         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12146         handling COND_EXPRs with boolean comparisons, try to find a better
12147         basis for the mask type than the boolean itself.
12149 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12151         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12152         is calculated and how it can be overridden.
12153         * genmodes.c (max_bitsize_mode_any_mode): New variable.
12154         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12155         if defined.
12156         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12157         if nonzero.
12159 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12160             Alan Hayward  <alan.hayward@arm.com>
12161             David Sherwood  <david.sherwood@arm.com>
12163         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12164         Remove the mode argument.
12165         (aarch64_simd_valid_immediate): Remove the mode and inverse
12166         arguments.
12167         * config/aarch64/iterators.md (bitsize): New iterator.
12168         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12169         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12170         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12171         aarch64_simd_valid_immediate.
12172         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12173         (aarch64_reg_or_bic_imm): Likewise.
12174         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12175         with an insn_type enum and msl with a modifier_type enum.
12176         Replace element_width with a scalar_mode.  Change the shift
12177         to unsigned int.  Add constructors for scalar_float_mode and
12178         scalar_int_mode elements.
12179         (aarch64_vect_float_const_representable_p): Delete.
12180         (aarch64_can_const_movi_rtx_p)
12181         (aarch64_simd_scalar_immediate_valid_for_move)
12182         (aarch64_simd_make_constant): Update call to
12183         aarch64_simd_valid_immediate.
12184         (aarch64_advsimd_valid_immediate_hs): New function.
12185         (aarch64_advsimd_valid_immediate): Likewise.
12186         (aarch64_simd_valid_immediate): Remove mode and inverse
12187         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
12188         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12189         and aarch64_float_const_representable_p on the result.
12190         (aarch64_output_simd_mov_immediate): Remove mode argument.
12191         Update call to aarch64_simd_valid_immediate and use of
12192         simd_immediate_info.
12193         (aarch64_output_scalar_simd_mov_immediate): Update call
12194         accordingly.
12196 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12197             Alan Hayward  <alan.hayward@arm.com>
12198             David Sherwood  <david.sherwood@arm.com>
12200         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12201         (mode_nunits): Likewise CONST_MODE_NUNITS.
12202         * machmode.def (ADJUST_NUNITS): Document.
12203         * genmodes.c (mode_data::need_nunits_adj): New field.
12204         (blank_mode): Update accordingly.
12205         (adj_nunits): New variable.
12206         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12207         parameter.
12208         (emit_mode_size_inline): Set need_bytesize_adj for all modes
12209         listed in adj_nunits.
12210         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12211         listed in adj_nunits.  Don't emit case statements for such modes.
12212         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12213         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
12214         nothing if adj_nunits is nonnull.
12215         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12216         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12217         (emit_mode_fbit): Update use of print_maybe_const_decl.
12218         (emit_move_size): Likewise.  Treat the array as non-const
12219         if adj_nunits.
12220         (emit_mode_adjustments): Handle adj_nunits.
12222 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12224         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12225         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12226         (VECTOR_MODES): Use it.
12227         (make_vector_modes): Take the prefix as an argument.
12229 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12230             Alan Hayward  <alan.hayward@arm.com>
12231             David Sherwood  <david.sherwood@arm.com>
12233         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12234         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12235         for MODE_VECTOR_BOOL.
12236         * machmode.def (VECTOR_BOOL_MODE): Document.
12237         * genmodes.c (VECTOR_BOOL_MODE): New macro.
12238         (make_vector_bool_mode): New function.
12239         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12240         MODE_VECTOR_BOOL.
12241         * lto-streamer-in.c (lto_input_mode_table): Likewise.
12242         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12243         Likewise.
12244         * stor-layout.c (int_mode_for_mode): Likewise.
12245         * tree.c (build_vector_type_for_mode): Likewise.
12246         * varasm.c (output_constant_pool_2): Likewise.
12247         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12248         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
12249         for MODE_VECTOR_BOOL.
12250         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12251         of mode class checks.
12252         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12253         instead of a list of mode class checks.
12254         (expand_vector_scalar_condition): Likewise.
12255         (type_for_widest_vector_mode): Handle BImode as an inner mode.
12257 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12258             Alan Hayward  <alan.hayward@arm.com>
12259             David Sherwood  <david.sherwood@arm.com>
12261         * machmode.h (mode_size): Change from unsigned short to
12262         poly_uint16_pod.
12263         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12264         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12265         or if measurement_type is not polynomial.
12266         (fixed_size_mode::includes_p): Check for constant-sized modes.
12267         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12268         return a poly_uint16 rather than an unsigned short.
12269         (emit_mode_size): Change the type of mode_size from unsigned short
12270         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
12271         (emit_mode_adjustments): Cope with polynomial vector sizes.
12272         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12273         for GET_MODE_SIZE.
12274         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12275         for GET_MODE_SIZE.
12276         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12277         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12278         * caller-save.c (setup_save_areas): Likewise.
12279         (replace_reg_with_saved_mem): Likewise.
12280         * calls.c (emit_library_call_value_1): Likewise.
12281         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12282         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12283         (gen_lowpart_for_combine): Likewise.
12284         * convert.c (convert_to_integer_1): Likewise.
12285         * cse.c (equiv_constant, cse_insn): Likewise.
12286         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12287         (cselib_subst_to_values): Likewise.
12288         * dce.c (word_dce_process_block): Likewise.
12289         * df-problems.c (df_word_lr_mark_ref): Likewise.
12290         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12291         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12292         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12293         (rtl_for_decl_location): Likewise.
12294         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12295         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12296         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12297         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12298         (expand_expr_real_1): Likewise.
12299         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12300         (pad_below): Likewise.
12301         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12302         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12303         * ira.c (get_subreg_tracking_sizes): Likewise.
12304         * ira-build.c (ira_create_allocno_objects): Likewise.
12305         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12306         (ira_sort_regnos_for_alter_reg): Likewise.
12307         * ira-costs.c (record_operand_costs): Likewise.
12308         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12309         (resolve_simple_move): Likewise.
12310         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12311         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12312         (lra_constraints): Likewise.
12313         (CONST_POOL_OK_P): Reject variable-sized modes.
12314         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12315         (add_pseudo_to_slot, lra_spill): Likewise.
12316         * omp-low.c (omp_clause_aligned_alignment): Likewise.
12317         * optabs-query.c (get_best_extraction_insn): Likewise.
12318         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12319         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12320         (expand_mult_highpart, valid_multiword_target_p): Likewise.
12321         * recog.c (offsettable_address_addr_space_p): Likewise.
12322         * regcprop.c (maybe_mode_change): Likewise.
12323         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12324         * regrename.c (build_def_use): Likewise.
12325         * regstat.c (dump_reg_info): Likewise.
12326         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12327         (find_reloads, find_reloads_subreg_address): Likewise.
12328         * reload1.c (eliminate_regs_1): Likewise.
12329         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12330         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12331         (simplify_binary_operation_1, simplify_subreg): Likewise.
12332         * targhooks.c (default_function_arg_padding): Likewise.
12333         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12334         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12335         (verify_gimple_assign_ternary): Likewise.
12336         * tree-inline.c (estimate_move_cost): Likewise.
12337         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12338         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12339         (get_address_cost_ainc): Likewise.
12340         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12341         (vect_supportable_dr_alignment): Likewise.
12342         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12343         (vectorizable_reduction): Likewise.
12344         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12345         (vectorizable_operation, vectorizable_load): Likewise.
12346         * tree.c (build_same_sized_truth_vector_type): Likewise.
12347         * valtrack.c (cleanup_auto_inc_dec): Likewise.
12348         * var-tracking.c (emit_note_insn_var_location): Likewise.
12349         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12350         (ADDR_VEC_ALIGN): Likewise.
12352 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12353             Alan Hayward  <alan.hayward@arm.com>
12354             David Sherwood  <david.sherwood@arm.com>
12356         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12357         unsigned short.
12358         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12359         or if measurement_type is polynomial.
12360         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12361         * combine.c (make_extraction): Likewise.
12362         * dse.c (find_shift_sequence): Likewise.
12363         * dwarf2out.c (mem_loc_descriptor): Likewise.
12364         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12365         (extract_bit_field, extract_low_bits): Likewise.
12366         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12367         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12368         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12369         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12370         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12371         * reload.c (find_reloads): Likewise.
12372         * reload1.c (alter_reg): Likewise.
12373         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12374         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12375         * tree-if-conv.c (predicate_mem_writes): Likewise.
12376         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12377         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12378         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12379         * valtrack.c (dead_debug_insert_temp): Likewise.
12380         * varasm.c (mergeable_constant_section): Likewise.
12381         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12383 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12384             Alan Hayward  <alan.hayward@arm.com>
12385             David Sherwood  <david.sherwood@arm.com>
12387         * expr.c (expand_assignment): Cope with polynomial mode sizes
12388         when assigning to a CONCAT.
12390 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12391             Alan Hayward  <alan.hayward@arm.com>
12392             David Sherwood  <david.sherwood@arm.com>
12394         * machmode.h (mode_precision): Change from unsigned short to
12395         poly_uint16_pod.
12396         (mode_to_precision): Return a poly_uint16 rather than an unsigned
12397         short.
12398         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12399         or if measurement_type is not polynomial.
12400         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
12401         in which the mode is already known to be a scalar_int_mode.
12402         * genmodes.c (emit_mode_precision): Change the type of mode_precision
12403         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
12404         initializer.
12405         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12406         for GET_MODE_PRECISION.
12407         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12408         for GET_MODE_PRECISION.
12409         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12410         as polynomial.
12411         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12412         (expand_field_assignment, make_extraction): Likewise.
12413         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12414         (get_last_value): Likewise.
12415         * convert.c (convert_to_integer_1): Likewise.
12416         * cse.c (cse_insn): Likewise.
12417         * expr.c (expand_expr_real_1): Likewise.
12418         * lra-constraints.c (simplify_operand_subreg): Likewise.
12419         * optabs-query.c (can_atomic_load_p): Likewise.
12420         * optabs.c (expand_atomic_load): Likewise.
12421         (expand_atomic_store): Likewise.
12422         * ree.c (combine_reaching_defs): Likewise.
12423         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12424         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12425         * tree.h (type_has_mode_precision_p): Likewise.
12426         * ubsan.c (instrument_si_overflow): Likewise.
12428 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12429             Alan Hayward  <alan.hayward@arm.com>
12430             David Sherwood  <david.sherwood@arm.com>
12432         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12433         polynomial numbers of units.
12434         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12435         (valid_vector_subparts_p): New function.
12436         (build_vector_type): Remove temporary shim and take the number
12437         of units as a poly_uint64 rather than an int.
12438         (build_opaque_vector_type): Take the number of units as a
12439         poly_uint64 rather than an int.
12440         * tree.c (build_vector_from_ctor): Handle polynomial
12441         TYPE_VECTOR_SUBPARTS.
12442         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12443         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12444         (build_vector_from_val): If the number of units is variable,
12445         use build_vec_duplicate_cst for constant operands and
12446         VEC_DUPLICATE_EXPR otherwise.
12447         (make_vector_type): Remove temporary is_constant ().
12448         (build_vector_type, build_opaque_vector_type): Take the number of
12449         units as a poly_uint64 rather than an int.
12450         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12451         VECTOR_CST_NELTS.
12452         * cfgexpand.c (expand_debug_expr): Likewise.
12453         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12454         (store_constructor, expand_expr_real_1): Likewise.
12455         (const_scalar_mask_from_tree): Likewise.
12456         * fold-const-call.c (fold_const_reduction): Likewise.
12457         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12458         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12459         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12460         (fold_relational_const): Likewise.
12461         (native_interpret_vector): Likewise.  Change the size from an
12462         int to an unsigned int.
12463         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12464         TYPE_VECTOR_SUBPARTS.
12465         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12466         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12467         duplicating a non-constant operand into a variable-length vector.
12468         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12469         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12470         * ipa-icf.c (sem_variable::equals): Likewise.
12471         * match.pd: Likewise.
12472         * omp-simd-clone.c (simd_clone_subparts): Likewise.
12473         * print-tree.c (print_node): Likewise.
12474         * stor-layout.c (layout_type): Likewise.
12475         * targhooks.c (default_builtin_vectorization_cost): Likewise.
12476         * tree-cfg.c (verify_gimple_comparison): Likewise.
12477         (verify_gimple_assign_binary): Likewise.
12478         (verify_gimple_assign_ternary): Likewise.
12479         (verify_gimple_assign_single): Likewise.
12480         * tree-pretty-print.c (dump_generic_node): Likewise.
12481         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12482         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12483         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12484         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12485         (vect_shift_permute_load_chain): Likewise.
12486         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12487         (expand_vector_condition, optimize_vector_constructor): Likewise.
12488         (lower_vec_perm, get_compute_type): Likewise.
12489         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12490         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12491         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12492         (vect_recog_mask_conversion_pattern): Likewise.
12493         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12494         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12495         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12496         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12497         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12498         (vectorizable_shift, vectorizable_operation, vectorizable_store)
12499         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12500         (supportable_widening_operation): Likewise.
12501         (supportable_narrowing_operation): Likewise.
12502         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12503         Likewise.
12504         * varasm.c (output_constant): Likewise.
12506 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12507             Alan Hayward  <alan.hayward@arm.com>
12508             David Sherwood  <david.sherwood@arm.com>
12510         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12511         so that both the length == 3 and length != 3 cases set up their
12512         own permute vectors.  Add comments explaining why we know the
12513         number of elements is constant.
12514         (vect_permute_load_chain): Likewise.
12516 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12517             Alan Hayward  <alan.hayward@arm.com>
12518             David Sherwood  <david.sherwood@arm.com>
12520         * machmode.h (mode_nunits): Change from unsigned char to
12521         poly_uint16_pod.
12522         (ONLY_FIXED_SIZE_MODES): New macro.
12523         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12524         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12525         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12526         New typedefs.
12527         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12528         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12529         or if measurement_type is not polynomial.
12530         * genmodes.c (ZERO_COEFFS): New macro.
12531         (emit_mode_nunits_inline): Make mode_nunits_inline return a
12532         poly_uint16.
12533         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12534         Use ZERO_COEFFS when emitting initializers.
12535         * data-streamer.h (bp_pack_poly_value): New function.
12536         (bp_unpack_poly_value): Likewise.
12537         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12538         for GET_MODE_NUNITS.
12539         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12540         for GET_MODE_NUNITS.
12541         * tree.c (make_vector_type): Remove temporary shim and make
12542         the real function take the number of units as a poly_uint64
12543         rather than an int.
12544         (build_vector_type_for_mode): Handle polynomial nunits.
12545         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12546         * emit-rtl.c (const_vec_series_p_1): Likewise.
12547         (gen_rtx_CONST_VECTOR): Likewise.
12548         * fold-const.c (test_vec_duplicate_folding): Likewise.
12549         * genrecog.c (validate_pattern): Likewise.
12550         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12551         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12552         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12553         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12554         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12555         * rtlanal.c (subreg_get_info): Likewise.
12556         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12557         (vect_grouped_load_supported): Likewise.
12558         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12559         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12560         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12561         (simplify_const_unary_operation, simplify_binary_operation_1)
12562         (simplify_const_binary_operation, simplify_ternary_operation)
12563         (test_vector_ops_duplicate, test_vector_ops): Likewise.
12564         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12565         instead of CONST_VECTOR_NUNITS.
12566         * varasm.c (output_constant_pool_2): Likewise.
12567         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12568         explicit-encoded elements in the XVEC for variable-length vectors.
12570 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12572         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12574 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12575             Alan Hayward  <alan.hayward@arm.com>
12576             David Sherwood  <david.sherwood@arm.com>
12578         * coretypes.h (fixed_size_mode): Declare.
12579         (fixed_size_mode_pod): New typedef.
12580         * builtins.h (target_builtins::x_apply_args_mode)
12581         (target_builtins::x_apply_result_mode): Change type to
12582         fixed_size_mode_pod.
12583         * builtins.c (apply_args_size, apply_result_size, result_vector)
12584         (expand_builtin_apply_args_1, expand_builtin_apply)
12585         (expand_builtin_return): Update accordingly.
12587 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12589         * cse.c (hash_rtx_cb): Hash only the encoded elements.
12590         * cselib.c (cselib_hash_rtx): Likewise.
12591         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12592         CONST_VECTOR encoding.
12594 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12595             Jeff Law  <law@redhat.com>
12597         PR target/83641
12598         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12599         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12600         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12601         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12603         PR target/83641
12604         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12605         explicitly probe *sp in a noreturn function if there were any callee
12606         register saves or frame pointer is needed.
12608 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12610         PR debug/83621
12611         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12612         BLKmode for ternary, binary or unary expressions.
12614         PR debug/83645
12615         * var-tracking.c (delete_vta_debug_insn): New inline function.
12616         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12617         insns from get_insns () to NULL instead of each bb separately.
12618         Use delete_vta_debug_insn.  No longer static.
12619         (vt_debug_insns_local, variable_tracking_main_1): Adjust
12620         delete_vta_debug_insns callers.
12621         * rtl.h (delete_vta_debug_insns): Declare.
12622         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12623         instead of variable_tracking_main.
12625 2018-01-03  Martin Sebor  <msebor@redhat.com>
12627         PR tree-optimization/83603
12628         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12629         arguments past the endof the argument list in functions declared
12630         without a prototype.
12631         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12632         Avoid checking when arguments are null.
12634 2018-01-03  Martin Sebor  <msebor@redhat.com>
12636         PR c/83559
12637         * doc/extend.texi (attribute const): Fix a typo.
12638         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12639         issuing -Wsuggest-attribute for void functions.
12641 2018-01-03  Martin Sebor  <msebor@redhat.com>
12643         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12644         offset_int::from instead of wide_int::to_shwi.
12645         (maybe_diag_overlap): Remove assertion.
12646         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12647         * gimple-ssa-sprintf.c (format_directive): Same.
12648         (parse_directive): Same.
12649         (sprintf_dom_walker::compute_format_length): Same.
12650         (try_substitute_return_value): Same.
12652 2018-01-03  Jeff Law  <law@redhat.com>
12654         PR middle-end/83654
12655         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12656         non-constant residual for zero at runtime and avoid probing in
12657         that case.  Reorganize code for trailing problem to mirror handling
12658         of the residual.
12660 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12662         PR tree-optimization/83501
12663         * tree-ssa-strlen.c (get_string_cst): New.
12664         (handle_char_store): Call get_string_cst.
12666 2018-01-03  Martin Liska  <mliska@suse.cz>
12668         PR tree-optimization/83593
12669         * tree-ssa-strlen.c: Include tree-cfg.h.
12670         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12671         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12672         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12673         to false.
12674         (strlen_dom_walker::before_dom_children): Call
12675         gimple_purge_dead_eh_edges. Dump tranformation with details
12676         dump flags.
12677         (strlen_dom_walker::before_dom_children): Update call by adding
12678         new argument cleanup_eh.
12679         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12681 2018-01-03  Martin Liska  <mliska@suse.cz>
12683         PR ipa/83549
12684         * cif-code.def (VARIADIC_THUNK): New enum value.
12685         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12686         thunks.
12688 2018-01-03  Jan Beulich  <jbeulich@suse.com>
12690         * sse.md (mov<mode>_internal): Tighten condition for when to use
12691         vmovdqu<ssescalarsize> for TI and OI modes.
12693 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12695         Update copyright years.
12697 2018-01-03  Martin Liska  <mliska@suse.cz>
12699         PR ipa/83594
12700         * ipa-visibility.c (function_and_variable_visibility): Skip
12701         functions with noipa attribure.
12703 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12705         * gcc.c (process_command): Update copyright notice dates.
12706         * gcov-dump.c (print_version): Ditto.
12707         * gcov.c (print_version): Ditto.
12708         * gcov-tool.c (print_version): Ditto.
12709         * gengtype.c (create_file): Ditto.
12710         * doc/cpp.texi: Bump @copying's copyright year.
12711         * doc/cppinternals.texi: Ditto.
12712         * doc/gcc.texi: Ditto.
12713         * doc/gccint.texi: Ditto.
12714         * doc/gcov.texi: Ditto.
12715         * doc/install.texi: Ditto.
12716         * doc/invoke.texi: Ditto.
12718 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12720         * vector-builder.h (vector_builder::m_full_nelts): Change from
12721         unsigned int to poly_uint64.
12722         (vector_builder::full_nelts): Update prototype accordingly.
12723         (vector_builder::new_vector): Likewise.
12724         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12725         (vector_builder::operator ==): Likewise.
12726         (vector_builder::finalize): Likewise.
12727         * int-vector-builder.h (int_vector_builder::int_vector_builder):
12728         Take the number of elements as a poly_uint64 rather than an
12729         unsigned int.
12730         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12731         from unsigned int to poly_uint64.
12732         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12733         (vec_perm_indices::new_vector): Likewise.
12734         (vec_perm_indices::length): Likewise.
12735         (vec_perm_indices::nelts_per_input): Likewise.
12736         (vec_perm_indices::input_nelts): Likewise.
12737         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12738         number of elements per input as a poly_uint64 rather than an
12739         unsigned int.  Use the original encoding for variable-length
12740         vectors, rather than clamping each individual element.
12741         For the second and subsequent elements in each pattern,
12742         clamp the step and base before clamping their sum.
12743         (vec_perm_indices::series_p): Handle polynomial element counts.
12744         (vec_perm_indices::all_in_range_p): Likewise.
12745         (vec_perm_indices_to_tree): Likewise.
12746         (vec_perm_indices_to_rtx): Likewise.
12747         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12748         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12749         (tree_vector_builder::new_binary_operation): Handle polynomial
12750         element counts.  Return false if we need to know the number
12751         of elements at compile time.
12752         * fold-const.c (fold_vec_perm): Punt if the number of elements
12753         isn't known at compile time.
12755 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12757         * vec-perm-indices.h (vec_perm_builder): Change element type
12758         from HOST_WIDE_INT to poly_int64.
12759         (vec_perm_indices::element_type): Update accordingly.
12760         (vec_perm_indices::clamp): Handle polynomial element_types.
12761         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12762         (vec_perm_indices::all_in_range_p): Likewise.
12763         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12764         than shwi trees.
12765         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12766         polynomial vec_perm_indices element types.
12767         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12768         * fold-const.c (fold_vec_perm): Likewise.
12769         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12770         * tree-vect-generic.c (lower_vec_perm): Likewise.
12771         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12772         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12773         element type to HOST_WIDE_INT.
12775 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12776             Alan Hayward  <alan.hayward@arm.com>
12777             David Sherwood  <david.sherwood@arm.com>
12779         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12780         rather than an int.  Use plus_constant.
12781         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12782         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12784 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12785             Alan Hayward  <alan.hayward@arm.com>
12786             David Sherwood  <david.sherwood@arm.com>
12788         * calls.c (emit_call_1, expand_call): Change struct_value_size from
12789         a HOST_WIDE_INT to a poly_int64.
12791 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12792             Alan Hayward  <alan.hayward@arm.com>
12793             David Sherwood  <david.sherwood@arm.com>
12795         * calls.c (load_register_parameters): Cope with polynomial
12796         mode sizes.  Require a constant size for BLKmode parameters
12797         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
12798         forces a parameter to be padded at the lsb end in order to
12799         fill a complete number of words, require the parameter size
12800         to be ordered wrt UNITS_PER_WORD.
12802 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12803             Alan Hayward  <alan.hayward@arm.com>
12804             David Sherwood  <david.sherwood@arm.com>
12806         * reload1.c (spill_stack_slot_width): Change element type
12807         from unsigned int to poly_uint64_pod.
12808         (alter_reg): Treat mode sizes as polynomial.
12810 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12811             Alan Hayward  <alan.hayward@arm.com>
12812             David Sherwood  <david.sherwood@arm.com>
12814         * reload.c (complex_word_subreg_p): New function.
12815         (reload_inner_reg_of_subreg, push_reload): Use it.
12817 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12818             Alan Hayward  <alan.hayward@arm.com>
12819             David Sherwood  <david.sherwood@arm.com>
12821         * lra-constraints.c (process_alt_operands): Reject matched
12822         operands whose sizes aren't ordered.
12823         (match_reload): Refer to this check here.
12825 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12826             Alan Hayward  <alan.hayward@arm.com>
12827             David Sherwood  <david.sherwood@arm.com>
12829         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12830         that the mode size is in the set {1, 2, 4, 8, 16}.
12832 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12833             Alan Hayward  <alan.hayward@arm.com>
12834             David Sherwood  <david.sherwood@arm.com>
12836         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
12837         Use plus_constant instead of gen_rtx_PLUS.
12839 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12840             Alan Hayward  <alan.hayward@arm.com>
12841             David Sherwood  <david.sherwood@arm.com>
12843         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
12844         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
12845         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
12846         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
12847         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
12848         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
12849         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
12850         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
12851         * config/i386/i386.c (ix86_push_rounding): ...this new function.
12852         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
12853         a poly_int64.
12854         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
12855         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
12856         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
12857         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
12858         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
12859         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
12860         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
12861         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
12862         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
12863         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
12864         function.
12865         * expr.c (emit_move_resolve_push): Treat the input and result
12866         of PUSH_ROUNDING as a poly_int64.
12867         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
12868         (emit_push_insn): Likewise.
12869         * lra-eliminations.c (mark_not_eliminable): Likewise.
12870         * recog.c (push_operand): Likewise.
12871         * reload1.c (elimination_effects): Likewise.
12872         * rtlanal.c (nonzero_bits1): Likewise.
12873         * calls.c (store_one_arg): Likewise.  Require the padding to be
12874         known at compile time.
12876 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12877             Alan Hayward  <alan.hayward@arm.com>
12878             David Sherwood  <david.sherwood@arm.com>
12880         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
12881         Use plus_constant instead of gen_rtx_PLUS.
12883 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12884             Alan Hayward  <alan.hayward@arm.com>
12885             David Sherwood  <david.sherwood@arm.com>
12887         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
12888         rather than an int.
12890 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12891             Alan Hayward  <alan.hayward@arm.com>
12892             David Sherwood  <david.sherwood@arm.com>
12894         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
12895         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
12896         via stack temporaries.  Treat the mode size as polynomial too.
12898 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12899             Alan Hayward  <alan.hayward@arm.com>
12900             David Sherwood  <david.sherwood@arm.com>
12902         * expr.c (expand_expr_real_2): When handling conversions involving
12903         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
12904         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
12905         as a poly_uint64 too.
12907 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12908             Alan Hayward  <alan.hayward@arm.com>
12909             David Sherwood  <david.sherwood@arm.com>
12911         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
12913 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12914             Alan Hayward  <alan.hayward@arm.com>
12915             David Sherwood  <david.sherwood@arm.com>
12917         * combine.c (can_change_dest_mode): Handle polynomial
12918         REGMODE_NATURAL_SIZE.
12919         * expmed.c (store_bit_field_1): Likewise.
12920         * expr.c (store_constructor): Likewise.
12921         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
12922         and polynomial REGMODE_NATURAL_SIZE.
12923         (gen_lowpart_common): Likewise.
12924         * reginfo.c (record_subregs_of_mode): Likewise.
12925         * rtlanal.c (read_modify_subreg_p): Likewise.
12927 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12928             Alan Hayward  <alan.hayward@arm.com>
12929             David Sherwood  <david.sherwood@arm.com>
12931         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
12932         numbers of elements.
12934 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12935             Alan Hayward  <alan.hayward@arm.com>
12936             David Sherwood  <david.sherwood@arm.com>
12938         * match.pd: Cope with polynomial numbers of vector elements.
12940 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12941             Alan Hayward  <alan.hayward@arm.com>
12942             David Sherwood  <david.sherwood@arm.com>
12944         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
12945         in a POINTER_PLUS_EXPR.
12947 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12948             Alan Hayward  <alan.hayward@arm.com>
12949             David Sherwood  <david.sherwood@arm.com>
12951         * omp-simd-clone.c (simd_clone_subparts): New function.
12952         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
12953         (ipa_simd_modify_function_body): Likewise.
12955 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12956             Alan Hayward  <alan.hayward@arm.com>
12957             David Sherwood  <david.sherwood@arm.com>
12959         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
12960         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
12961         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
12962         (expand_vector_condition, vector_element): Likewise.
12963         (subparts_gt): New function.
12964         (get_compute_type): Use subparts_gt.
12965         (count_type_subparts): Delete.
12966         (expand_vector_operations_1): Use subparts_gt instead of
12967         count_type_subparts.
12969 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12970             Alan Hayward  <alan.hayward@arm.com>
12971             David Sherwood  <david.sherwood@arm.com>
12973         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
12974         (vect_compile_time_alias): ...this new function.  Do the calculation
12975         on poly_ints rather than trees.
12976         (vect_prune_runtime_alias_test_list): Update call accordingly.
12978 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12979             Alan Hayward  <alan.hayward@arm.com>
12980             David Sherwood  <david.sherwood@arm.com>
12982         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
12983         numbers of units.
12984         (vect_schedule_slp_instance): Likewise.
12986 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12987             Alan Hayward  <alan.hayward@arm.com>
12988             David Sherwood  <david.sherwood@arm.com>
12990         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
12991         constant and extern definitions for variable-length vectors.
12992         (vect_get_constant_vectors): Note that the number of units
12993         is known to be constant.
12995 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12996             Alan Hayward  <alan.hayward@arm.com>
12997             David Sherwood  <david.sherwood@arm.com>
12999         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13000         of units as polynomial.  Choose between WIDE and NARROW based
13001         on multiple_p.
13003 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13004             Alan Hayward  <alan.hayward@arm.com>
13005             David Sherwood  <david.sherwood@arm.com>
13007         * tree-vect-stmts.c (simd_clone_subparts): New function.
13008         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13010 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13011             Alan Hayward  <alan.hayward@arm.com>
13012             David Sherwood  <david.sherwood@arm.com>
13014         * tree-vect-stmts.c (vectorizable_call): Treat the number of
13015         vectors as polynomial.  Use build_index_vector for
13016         IFN_GOMP_SIMD_LANE.
13018 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13019             Alan Hayward  <alan.hayward@arm.com>
13020             David Sherwood  <david.sherwood@arm.com>
13022         * tree-vect-stmts.c (get_load_store_type): Treat the number of
13023         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13024         for variable-length vectors.
13025         (vectorizable_mask_load_store): Treat the number of units as
13026         polynomial, asserting that it is constant if the condition has
13027         already been enforced.
13028         (vectorizable_store, vectorizable_load): Likewise.
13030 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13031             Alan Hayward  <alan.hayward@arm.com>
13032             David Sherwood  <david.sherwood@arm.com>
13034         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13035         of units as polynomial.  Punt if we can't tell at compile time
13036         which vector contains the final result.
13038 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13039             Alan Hayward  <alan.hayward@arm.com>
13040             David Sherwood  <david.sherwood@arm.com>
13042         * tree-vect-loop.c (vectorizable_induction): Treat the number
13043         of units as polynomial.  Punt on SLP inductions.  Use an integer
13044         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
13045         cast of such a series for variable-length floating-point
13046         reductions.
13048 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13049             Alan Hayward  <alan.hayward@arm.com>
13050             David Sherwood  <david.sherwood@arm.com>
13052         * tree.h (build_index_vector): Declare.
13053         * tree.c (build_index_vector): New function.
13054         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13055         of units as polynomial, forcibly converting it to a constant if
13056         vectorizable_reduction has already enforced the condition.
13057         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
13058         to create a {1,2,3,...} vector.
13059         (vectorizable_reduction): Treat the number of units as polynomial.
13060         Choose vectype_in based on the largest scalar element size rather
13061         than the smallest number of units.  Enforce the restrictions
13062         relied on above.
13064 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13065             Alan Hayward  <alan.hayward@arm.com>
13066             David Sherwood  <david.sherwood@arm.com>
13068         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13069         number of units as polynomial.
13071 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13072             Alan Hayward  <alan.hayward@arm.com>
13073             David Sherwood  <david.sherwood@arm.com>
13075         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13076         * target.def (autovectorize_vector_sizes): Return the vector sizes
13077         by pointer, using vector_sizes rather than a bitmask.
13078         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13079         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13080         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13081         Likewise.
13082         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13083         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13084         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13085         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13086         * omp-general.c (omp_max_vf): Likewise.
13087         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13088         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13089         * tree-vect-loop.c (vect_analyze_loop): Likewise.
13090         * tree-vect-slp.c (vect_slp_bb): Likewise.
13091         * doc/tm.texi: Regenerate.
13092         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13093         to a poly_uint64.
13094         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13095         the vector size as a poly_uint64 rather than an unsigned int.
13096         (current_vector_size): Change from an unsigned int to a poly_uint64.
13097         (get_vectype_for_scalar_type): Update accordingly.
13098         * tree.h (build_truth_vector_type): Take the size and number of
13099         units as a poly_uint64 rather than an unsigned int.
13100         (build_vector_type): Add a temporary overload that takes
13101         the number of units as a poly_uint64 rather than an unsigned int.
13102         * tree.c (make_vector_type): Likewise.
13103         (build_truth_vector_type): Take the number of units as a poly_uint64
13104         rather than an unsigned int.
13106 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13107             Alan Hayward  <alan.hayward@arm.com>
13108             David Sherwood  <david.sherwood@arm.com>
13110         * target.def (get_mask_mode): Take the number of units and length
13111         as poly_uint64s rather than unsigned ints.
13112         * targhooks.h (default_get_mask_mode): Update accordingly.
13113         * targhooks.c (default_get_mask_mode): Likewise.
13114         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13115         * doc/tm.texi: Regenerate.
13117 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13118             Alan Hayward  <alan.hayward@arm.com>
13119             David Sherwood  <david.sherwood@arm.com>
13121         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13122         * omp-general.c (omp_max_vf): Likewise.
13123         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13124         (expand_omp_simd): Handle polynomial safelen.
13125         * omp-low.c (omplow_simd_context): Add a default constructor.
13126         (omplow_simd_context::max_vf): Change from int to poly_uint64.
13127         (lower_rec_simd_input_clauses): Update accordingly.
13128         (lower_rec_input_clauses): Likewise.
13130 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13131             Alan Hayward  <alan.hayward@arm.com>
13132             David Sherwood  <david.sherwood@arm.com>
13134         * tree-vectorizer.h (vect_nunits_for_cost): New function.
13135         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13136         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13137         (vect_analyze_slp_cost): Likewise.
13138         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13139         (vect_model_load_cost): Likewise.
13141 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13142             Alan Hayward  <alan.hayward@arm.com>
13143             David Sherwood  <david.sherwood@arm.com>
13145         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13146         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13147         from an unsigned int * to a poly_uint64_pod *.
13148         (calculate_unrolling_factor): New function.
13149         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
13151 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13152             Alan Hayward  <alan.hayward@arm.com>
13153             David Sherwood  <david.sherwood@arm.com>
13155         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13156         from an unsigned int to a poly_uint64.
13157         (_loop_vec_info::slp_unrolling_factor): Likewise.
13158         (_loop_vec_info::vectorization_factor): Change from an int
13159         to a poly_uint64.
13160         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13161         (vect_get_num_vectors): New function.
13162         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13163         (vect_get_num_copies): Use vect_get_num_vectors.
13164         (vect_analyze_data_ref_dependences): Change max_vf from an int *
13165         to an unsigned int *.
13166         (vect_analyze_data_refs): Change min_vf from an int * to a
13167         poly_uint64 *.
13168         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13169         than an unsigned HOST_WIDE_INT.
13170         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13171         (vect_analyze_data_ref_dependence): Change max_vf from an int *
13172         to an unsigned int *.
13173         (vect_analyze_data_ref_dependences): Likewise.
13174         (vect_compute_data_ref_alignment): Handle polynomial vf.
13175         (vect_enhance_data_refs_alignment): Likewise.
13176         (vect_prune_runtime_alias_test_list): Likewise.
13177         (vect_shift_permute_load_chain): Likewise.
13178         (vect_supportable_dr_alignment): Likewise.
13179         (dependence_distance_ge_vf): Take the vectorization factor as a
13180         poly_uint64 rather than an unsigned HOST_WIDE_INT.
13181         (vect_analyze_data_refs): Change min_vf from an int * to a
13182         poly_uint64 *.
13183         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13184         vfm1 as a poly_uint64 rather than an int.  Make the same change
13185         for the returned bound_scalar.
13186         (vect_gen_vector_loop_niters): Handle polynomial vf.
13187         (vect_do_peeling): Likewise.  Update call to
13188         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13189         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13190         be constant.
13191         * tree-vect-loop.c (vect_determine_vectorization_factor)
13192         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13193         (vect_get_known_peeling_cost): Likewise.
13194         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13195         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13196         (vect_transform_loop): Likewise.  Use the lowest possible VF when
13197         updating the upper bounds of the loop.
13198         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
13199         rather than an int.
13200         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13201         polynomial unroll factors.
13202         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13203         (vect_make_slp_decision): Likewise.
13204         (vect_supported_load_permutation_p): Likewise, and polynomial
13205         vf too.
13206         (vect_analyze_slp_cost): Handle polynomial vf.
13207         (vect_slp_analyze_node_operations): Likewise.
13208         (vect_slp_analyze_bb_1): Likewise.
13209         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13210         than an unsigned HOST_WIDE_INT.
13211         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13212         (vectorizable_load): Handle polynomial vf.
13213         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13214         a poly_uint64.
13215         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13217 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13218             Alan Hayward  <alan.hayward@arm.com>
13219             David Sherwood  <david.sherwood@arm.com>
13221         * match.pd: Handle bit operations involving three constants
13222         and try to fold one pair.
13224 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13226         * tree-vect-loop-manip.c: Include gimple-fold.h.
13227         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13228         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
13229         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13230         Add a path that uses a step of VF instead of 1, but disable it
13231         for now.
13232         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13233         and niters_no_overflow parameters.  Update calls to
13234         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13235         Create a new SSA name if the latter choses to use a ste other
13236         than zero, and return it via niters_vector_mult_vf_var.
13237         * tree-vect-loop.c (vect_transform_loop): Update calls to
13238         vect_do_peeling, vect_gen_vector_loop_niters and
13239         slpeel_make_loop_iterate_ntimes.
13240         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13241         (vect_gen_vector_loop_niters): Update declarations after above changes.
13243 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
13245         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13246         128-bit round to integer instructions.
13247         (ceil<mode>2): Likewise.
13248         (btrunc<mode>2): Likewise.
13249         (round<mode>2): Likewise.
13251 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13253         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13254         unaligned VSX load/store on P8/P9.
13255         (expand_block_clear): Allow the use of unaligned VSX
13256         load/store on P8/P9.
13258 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13260         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13261         New function.
13262         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13263         swap associated with both a load and a store.
13265 2018-01-02  Andrew Waterman  <andrew@sifive.com>
13267         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13268         * config/riscv/riscv.md (clear_cache): Use it.
13270 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
13272         * web.c: Remove out-of-date comment.
13274 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13276         * expr.c (fixup_args_size_notes): Check that any existing
13277         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13278         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13279         (emit_single_push_insn): ...here.
13281 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13283         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13284         (const_vector_encoded_nelts): New function.
13285         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13286         (const_vector_int_elt, const_vector_elt): Declare.
13287         * emit-rtl.c (const_vector_int_elt_1): New function.
13288         (const_vector_elt): Likewise.
13289         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13290         of CONST_VECTOR_ELT.
13292 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13294         * expr.c: Include rtx-vector-builder.h.
13295         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13296         directly on the tree encoding.
13297         (const_vector_from_tree): Likewise.
13298         * optabs.c: Include rtx-vector-builder.h.
13299         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13300         sequence of "u" values.
13301         * vec-perm-indices.c: Include rtx-vector-builder.h.
13302         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13303         directly on the vec_perm_indices encoding.
13305 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13307         * doc/rtl.texi (const_vector): Describe new encoding scheme.
13308         * Makefile.in (OBJS): Add rtx-vector-builder.o.
13309         * rtx-vector-builder.h: New file.
13310         * rtx-vector-builder.c: Likewise.
13311         * rtl.h (rtx_def::u2): Add a const_vector field.
13312         (CONST_VECTOR_NPATTERNS): New macro.
13313         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13314         (CONST_VECTOR_DUPLICATE_P): Likewise.
13315         (CONST_VECTOR_STEPPED_P): Likewise.
13316         (CONST_VECTOR_ENCODED_ELT): Likewise.
13317         (const_vec_duplicate_p): Check for a duplicated vector encoding.
13318         (unwrap_const_vec_duplicate): Likewise.
13319         (const_vec_series_p): Check for a non-duplicated vector encoding.
13320         Say that the function only returns true for integer vectors.
13321         * emit-rtl.c: Include rtx-vector-builder.h.
13322         (gen_const_vec_duplicate_1): Delete.
13323         (gen_const_vector): Call gen_const_vec_duplicate instead of
13324         gen_const_vec_duplicate_1.
13325         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13326         (gen_const_vec_duplicate): Use rtx_vector_builder.
13327         (gen_const_vec_series): Likewise.
13328         (gen_rtx_CONST_VECTOR): Likewise.
13329         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13330         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13331         Build a new vector rather than modifying a CONST_VECTOR in-place.
13332         (handle_special_swappables): Update call accordingly.
13333         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13334         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13335         Build a new vector rather than modifying a CONST_VECTOR in-place.
13336         (handle_special_swappables): Update call accordingly.
13338 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13340         * simplify-rtx.c (simplify_const_binary_operation): Use
13341         CONST_VECTOR_ELT instead of XVECEXP.
13343 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13345         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13346         the selector elements to be different from the data elements
13347         if the selector is a VECTOR_CST.
13348         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13349         ssizetype for the selector.
13351 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13353         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13354         before testing each element individually.
13355         * tree-vect-generic.c (lower_vec_perm): Likewise.
13357 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13359         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13360         * selftest-run-tests.c (selftest::run_tests): Call it.
13361         * vector-builder.h (vector_builder::operator ==): New function.
13362         (vector_builder::operator !=): Likewise.
13363         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13364         (vec_perm_indices::all_from_input_p): New function.
13365         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13366         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13367         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13368         instead of reading the VECTOR_CST directly.  Detect whether both
13369         vector inputs are the same before constructing the vec_perm_indices,
13370         and update the number of inputs argument accordingly.  Use the
13371         utility functions added above.  Only construct sel2 if we need to.
13373 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13375         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13376         the broadcast of the low byte.
13377         (expand_mult_highpart): Use an explicit encoding for the permutes.
13378         * optabs-query.c (can_mult_highpart_p): Likewise.
13379         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13380         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13381         (vectorizable_bswap): Likewise.
13382         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13383         explicit encoding for the power-of-2 permutes.
13384         (vect_permute_store_chain): Likewise.
13385         (vect_grouped_load_supported): Likewise.
13386         (vect_permute_load_chain): Likewise.
13388 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13390         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13391         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13392         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13393         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13394         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13395         (vect_gen_perm_mask_any): Likewise.
13397 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13399         * int-vector-builder.h: New file.
13400         * vec-perm-indices.h: Include int-vector-builder.h.
13401         (vec_perm_indices): Redefine as an int_vector_builder.
13402         (auto_vec_perm_indices): Delete.
13403         (vec_perm_builder): Redefine as a stand-alone class.
13404         (vec_perm_indices::vec_perm_indices): New function.
13405         (vec_perm_indices::clamp): Likewise.
13406         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13407         (vec_perm_indices::new_vector): New function.
13408         (vec_perm_indices::new_expanded_vector): Update for new
13409         vec_perm_indices class.
13410         (vec_perm_indices::rotate_inputs): New function.
13411         (vec_perm_indices::all_in_range_p): Operate directly on the
13412         encoded form, without computing elided elements.
13413         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13414         encoding.  Update for new vec_perm_indices class.
13415         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13416         the given vec_perm_builder.
13417         (expand_vec_perm_var): Update vec_perm_builder constructor.
13418         (expand_mult_highpart): Use vec_perm_builder instead of
13419         auto_vec_perm_indices.
13420         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13421         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
13422         or double series encoding as appropriate.
13423         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13424         vec_perm_indices instead of auto_vec_perm_indices.
13425         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13426         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13427         (vect_permute_store_chain): Likewise.
13428         (vect_grouped_load_supported): Likewise.
13429         (vect_permute_load_chain): Likewise.
13430         (vect_shift_permute_load_chain): Likewise.
13431         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13432         (vect_transform_slp_perm_load): Likewise.
13433         (vect_schedule_slp_instance): Likewise.
13434         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13435         (vectorizable_mask_load_store): Likewise.
13436         (vectorizable_bswap): Likewise.
13437         (vectorizable_store): Likewise.
13438         (vectorizable_load): Likewise.
13439         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13440         vec_perm_indices instead of auto_vec_perm_indices.  Use
13441         tree_to_vec_perm_builder to read the vector from a tree.
13442         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13443         vec_perm_builder instead of a vec_perm_indices.
13444         (have_whole_vector_shift): Use vec_perm_builder and
13445         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
13446         truncation to calc_vec_perm_mask_for_shift.
13447         (vect_create_epilog_for_reduction): Likewise.
13448         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13449         from auto_vec_perm_indices to vec_perm_indices.
13450         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13451         instead of changing individual elements.
13452         (aarch64_vectorize_vec_perm_const): Use new_vector to install
13453         the vector in d.perm.
13454         * config/arm/arm.c (expand_vec_perm_d::perm): Change
13455         from auto_vec_perm_indices to vec_perm_indices.
13456         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13457         instead of changing individual elements.
13458         (arm_vectorize_vec_perm_const): Use new_vector to install
13459         the vector in d.perm.
13460         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13461         Update vec_perm_builder constructor.
13462         (rs6000_expand_interleave): Likewise.
13463         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13464         (rs6000_expand_interleave): Likewise.
13466 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13468         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13469         to qimode could truncate the indices.
13470         * optabs.c (expand_vec_perm_var): Likewise.
13472 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13474         * Makefile.in (OBJS): Add vec-perm-indices.o.
13475         * vec-perm-indices.h: New file.
13476         * vec-perm-indices.c: Likewise.
13477         * target.h (vec_perm_indices): Replace with a forward class
13478         declaration.
13479         (auto_vec_perm_indices): Move to vec-perm-indices.h.
13480         * optabs.h: Include vec-perm-indices.h.
13481         (expand_vec_perm): Delete.
13482         (selector_fits_mode_p, expand_vec_perm_var): Declare.
13483         (expand_vec_perm_const): Declare.
13484         * target.def (vec_perm_const_ok): Replace with...
13485         (vec_perm_const): ...this new hook.
13486         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13487         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13488         * doc/tm.texi: Regenerate.
13489         * optabs.def (vec_perm_const): Delete.
13490         * doc/md.texi (vec_perm_const): Likewise.
13491         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13492         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13493         expand_vec_perm for constant permutation vectors.  Assert that
13494         the mode of variable permutation vectors is the integer equivalent
13495         of the mode that is being permuted.
13496         * optabs-query.h (selector_fits_mode_p): Declare.
13497         * optabs-query.c: Include vec-perm-indices.h.
13498         (selector_fits_mode_p): New function.
13499         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13500         is defined, instead of checking whether the vec_perm_const_optab
13501         exists.  Use targetm.vectorize.vec_perm_const instead of
13502         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
13503         fit in the vector mode before using a variable permute.
13504         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13505         vec_perm_indices instead of an rtx.
13506         (expand_vec_perm): Replace with...
13507         (expand_vec_perm_const): ...this new function.  Take the selector
13508         as a vec_perm_indices rather than an rtx.  Also take the mode of
13509         the selector.  Update call to shift_amt_for_vec_perm_mask.
13510         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13511         Use vec_perm_indices::new_expanded_vector to expand the original
13512         selector into bytes.  Check whether the indices fit in the vector
13513         mode before using a variable permute.
13514         (expand_vec_perm_var): Make global.
13515         (expand_mult_highpart): Use expand_vec_perm_const.
13516         * fold-const.c: Includes vec-perm-indices.h.
13517         * tree-ssa-forwprop.c: Likewise.
13518         * tree-vect-data-refs.c: Likewise.
13519         * tree-vect-generic.c: Likewise.
13520         * tree-vect-loop.c: Likewise.
13521         * tree-vect-slp.c: Likewise.
13522         * tree-vect-stmts.c: Likewise.
13523         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13524         Delete.
13525         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13526         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13527         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13528         (aarch64_vectorize_vec_perm_const): ...this new function.
13529         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13530         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13531         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13532         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13533         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13534         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13535         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13536         into...
13537         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
13538         check for NEON modes.
13539         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13540         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13541         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13542         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13543         into...
13544         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
13545         the old VEC_PERM_CONST conditions.
13546         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13547         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13548         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13549         (ia64_vectorize_vec_perm_const_ok): Merge into...
13550         (ia64_vectorize_vec_perm_const): ...this new function.
13551         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13552         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13553         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13554         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13555         * config/mips/mips.c (mips_expand_vec_perm_const)
13556         (mips_vectorize_vec_perm_const_ok): Merge into...
13557         (mips_vectorize_vec_perm_const): ...this new function.
13558         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13559         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13560         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13561         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13562         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13563         (rs6000_expand_vec_perm_const): Delete.
13564         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13565         Delete.
13566         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13567         (altivec_expand_vec_perm_const_le): Take each operand individually.
13568         Operate on constant selectors rather than rtxes.
13569         (altivec_expand_vec_perm_const): Likewise.  Update call to
13570         altivec_expand_vec_perm_const_le.
13571         (rs6000_expand_vec_perm_const): Delete.
13572         (rs6000_vectorize_vec_perm_const_ok): Delete.
13573         (rs6000_vectorize_vec_perm_const): New function.
13574         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13575         an element count and rtx array.
13576         (rs6000_expand_extract_even): Update call accordingly.
13577         (rs6000_expand_interleave): Likewise.
13578         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13579         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13580         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13581         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13582         (rs6000_expand_vec_perm_const): Delete.
13583         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13584         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13585         (altivec_expand_vec_perm_const_le): Take each operand individually.
13586         Operate on constant selectors rather than rtxes.
13587         (altivec_expand_vec_perm_const): Likewise.  Update call to
13588         altivec_expand_vec_perm_const_le.
13589         (rs6000_expand_vec_perm_const): Delete.
13590         (rs6000_vectorize_vec_perm_const_ok): Delete.
13591         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
13592         reference to the SPE evmerge intructions.
13593         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13594         an element count and rtx array.
13595         (rs6000_expand_extract_even): Update call accordingly.
13596         (rs6000_expand_interleave): Likewise.
13597         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13598         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13599         new function.
13600         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13602 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13604         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13605         vector mode and that that mode matches the mode of the data
13606         being permuted.
13607         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13608         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
13609         directly using expand_vec_perm_1 when forcing selectors into
13610         registers.
13611         (expand_vec_perm_var): New function, split out from expand_vec_perm.
13613 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13615         * optabs-query.h (can_vec_perm_p): Delete.
13616         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13617         * optabs-query.c (can_vec_perm_p): Split into...
13618         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13619         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13620         particular selector is valid.
13621         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13622         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13623         (vect_grouped_load_supported): Likewise.
13624         (vect_shift_permute_load_chain): Likewise.
13625         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13626         (vect_transform_slp_perm_load): Likewise.
13627         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13628         (vectorizable_bswap): Likewise.
13629         (vect_gen_perm_mask_checked): Likewise.
13630         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
13631         implementations of variable permutation vectors into account
13632         when deciding which selector to use.
13633         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13634         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13635         with a false third argument.
13636         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13637         to test whether the constant selector is valid and can_vec_perm_var_p
13638         to test whether a variable selector is valid.
13640 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13642         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13643         * optabs-query.c (can_vec_perm_p): Likewise.
13644         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13645         instead of vec_perm_indices.
13646         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13647         (vect_gen_perm_mask_checked): Likewise,
13648         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13649         (vect_gen_perm_mask_checked): Likewise,
13651 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13653         * optabs-query.h (qimode_for_vec_perm): Declare.
13654         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13655         (qimode_for_vec_perm): ...this new function.
13656         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13658 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13660         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13661         does not have a conditional at the top.
13663 2018-01-02  Richard Biener  <rguenther@suse.de>
13665         * ipa-inline.c (big_speedup_p): Fix expression.
13667 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13669         PR target/81616
13670         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13671         for generic 4->6.
13673 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13675         PR target/81616
13676         Generic tuning.
13677         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13678         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13679         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13680         cond_taken_branch_cost 3->4.
13682 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
13684         PR tree-optimization/83581
13685         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13686         TODO_cleanup_cfg if any changes have been made.
13688         PR middle-end/83608
13689         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13690         convert_modes if target mode has the right side, but different mode
13691         class.
13693         PR middle-end/83609
13694         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13695         last argument when extracting from CONCAT.  If either from_real or
13696         from_imag is NULL, use expansion through memory.  If result is not
13697         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13698         the parts directly to inner mode, if even that fails, use expansion
13699         through memory.
13701         PR middle-end/83623
13702         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13703         check for bswap in mode rather than HImode and use that in expand_unop
13704         too.
13706 Copyright (C) 2018 Free Software Foundation, Inc.
13708 Copying and distribution of this file, with or without modification,
13709 are permitted in any medium without royalty provided the copyright
13710 notice and this notice are preserved.