[arm] Remove mode26 feature bit
[official-gcc.git] / gcc / ChangeLog
blob12895be3e6bc1b4cfb5b1d46725942b00dc9e9ae
1 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3         * config/arm/arm-cpus.in (mode26): Delete.
4         (armv4): Delete mode26 reference.
5         * config/arm/arm.c (arm_configure_build_target): Delete use of
6         isa_bit_mode26.
8 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
10         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
11         New insn pattern.
12         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
13         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
14         for non-SSE modes.
15         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
16         (floatunsdidf2): Ditto.
18 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
20         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
21         (fixuns_trunc<mode>si2_avx512f): Ditto.
22         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
23         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
24         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
26 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
28         PR rtl-optimization/79985
29         * df-scan.c (df_insn_refs_collect): Remove special case for
30         global registers and asm statements.
32 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
34         * extend.texi (Global Register Variables): Rewrite the bullet list.
35         Note that the register is available for allocation. Note that access
36         via inline asm must use constraints. Add note about async-signal
37         handlers. Remove paragraph about automagic register selection.
39 2018-05-23  Richard Biener  <rguenther@suse.de>
41         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
42         of fixed offset from memset VN.
44 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
46         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
47         first_interp field.
48         (alloc_cand_and_find_basis): Initialize first_interp field.
49         (slsr_process_mul): Modify first_interp field.
50         (slsr_process_add): Likewise.
51         (slsr_process_cast): Modify first_interp field for each new
52         interpretation.
53         (slsr_process_copy): Likewise.
54         (dump_candidate): Dump first_interp field.
55         (replace_mult_candidate): Process all interpretations, not just
56         subsequent ones.
57         (replace_rhs_if_not_dup): Likewise.
58         (replace_one_candidate): Likewise.
60 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
62         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
63         Add new boolean.
64         (aarch64_needs_frame_chain): New function.
65         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
67 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
69         PR target/84882
70         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
71         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
72         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
73         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
74         as true for strict-align.
75         (aarch64_can_inline_p): Perform checks even when callee has no
76         attributes to check for strict alignment.
77         * doc/extend.texi (AArch64 Function Attributes): Document
78         no-strict-align.
79         * doc/invoke.texi: (AArch64 Options): Likewise.
81 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
83         PR tree-optimization/85853
84         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
85         the handling of the root of the node to...
86         (vect_slp_analyze_node_operations_1): ...this new function,
87         and run the whole thing with the child nodes' def types
88         set according to their SLP node's def type.
90 2018-05-23  Richard Biener  <rguenther@suse.de>
92         PR middle-end/85874
93         * tree-data-ref.c (create_runtime_alias_checks): Defer
94         and ignore overflow warnings.
96 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
98         PR tree-optimization/85822
99         * tree-vrp.c (is_masked_range_test): Fix handling of negative
100         constants.
102 2018-05-23  Richard Biener  <rguenther@suse.de>
104         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
105         memset constants via native_interpret_expr.
107 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
109         PR target/85345
110         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
111         attribute.
112         (cgraph_node::create_alias): Likewise.
113         (cgraph_node::get_availability): Check ifunc_resolver instead
114         of looking up ifunc attribute.
115         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
116         * varasm.c (do_assemble_alias): Likewise.
117         (assemble_alias): Likewise.
118         (default_binds_local_p_3): Likewise.
119         * cgraph.h (cgraph_node): Add ifunc_resolver.
120         (cgraph_node::only_called_directly_or_aliased_p): Return false
121         for IFUNC resolver.
122         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
123         attribute.
124         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
125         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
126         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
127         instead of looking up ifunc attribute.
129 2018-05-22  Luis Machado  <luis.machado@linaro.org>
131         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
133 2018-05-22  Martin Sebor  <msebor@redhat.com>
135         PR middle-end/85359
136         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
137         only when expasion succeeds.
138         (expand_builtin_strcmp): Same.
139         (expand_builtin_strncmp): Same.
141 2018-05-22  Martin Sebor  <msebor@redhat.com>
143         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
145 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
146             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
148         * config/aarch64/aarch64-ldpstp.md: Replace uses of
149         aarch64_mem_pair_operand with memory_operand and delete operand swapping
150         code.
151         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
152         Add check for legitimate_address.
153         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
154         (aarch64_swap_ldrstr_operands): New.
155         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
156         Define prototype.
158 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
159             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
161         * config/aarch64/aarch64.md: New patterns to generate stp
162         and ldp.
163         (store_pair_sw, store_pair_dw): New patterns to generate stp for
164         single words and double words.
165         (load_pair_sw, load_pair_dw): Likewise.
166         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
167         Delete.
168         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
169         Delete.
170         * config/aarch64/aarch64-ldpstp.md: Modify peephole
171         for different mode ldpstp and add peephole for merged zero stores.
172         Likewise for loads.
173         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
174         Add size check.
175         (aarch64_gen_store_pair): Rename calls to match new patterns.
176         (aarch64_gen_load_pair): Rename calls to match new patterns.
177         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
178         (load_pair<DREG:mode><DREG2:mode>): ... This.
179         (store_pair<mode>): Rename to...
180         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
181         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
182         New mode iterators.
183         (V_INT_EQUIV): Handle SImode.
184         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
185         New predicate.
187 2018-05-22  Martin Sebor  <msebor@redhat.com>
189         PR c/85623
190         * calls.c (maybe_warn_nonstring_arg): Use string length to set
191         or ajust the presumed bound on an operation to avoid unnecessary
192         warnings.
194 2018-05-22  Martin Sebor  <msebor@redhat.com>
196         PR tree-optimization/85826
197         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
198         assuming that a DECL necesarily has a constant size.
200 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
202         PR middle-end/85862
203         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
205 2018-05-22  Richard Biener  <rguenther@suse.de>
207         PR tree-optimization/85834
208         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
209         non-constant and non-zero memset arguments.
211 2018-05-22  Martin Liska  <mliska@suse.cz>
213         PR ipa/85607
214         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
216 2018-05-22  Richard Biener  <rguenther@suse.de>
218         PR tree-optimization/85863
219         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
220         comparisons when vectype is specified.
221         (vectorizable_condition): Do not specify vectype for
222         vect_is_simple_cond when SLP vectorizing.
224 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
226         PR target/85657
227         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
228         define __ibm128 as long double.
229         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
230         as a distinct type when IEEE 128-bit support is enabled.
231         (init_float128_ieee): Fix up conversions between IFmode and IEEE
232         128-bit types to use the correct functions.
233         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
234         convert between 128-bit floating point types that have different
235         modes but the same representation, instead of using gen_lowpart to
236         makean alias.
237         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
238         KFmode.
239         (IFKF_reg): New attributes to give the register constraints for
240         IFmode and KFmode.
241         (extend<mode>tf2_internal): New insns to mark an explicit
242         conversion between 128-bit floating point types that have a
243         different mode but share the same representation.
245 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
247         PR tree-optimization/85814
248         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
249         a null return from get_strinfo when unsharing the next
250         strinfo in the chain.
252 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
254         PR gcc/84923
255         * varasm.c (weak_finish): Clean up weak_decls.
257 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
259         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
260         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
261         UNSPEC_UADALP values.
262         * config/aarch64/iterators.md (ABAL): New int iterator.
263         (ABDL2): Likewise.
264         (ADALP): Likewise.
265         (sur): Add mappings for the above.
266         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
267         New define_insn.
268         (aarch64_<sur>abal<mode>_4): Likewise.
269         (aarch64_<sur>adalp<mode>_3): Likewise.
270         (<sur>sadv16qi): New define_expand.
272 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
274         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
275         (*movdf_internal): Ditto.
276         (*rcpsf2_sse): Ditto.
277         (*rsqrtsf2_sse): Ditto.
278         (*sqrt<mode>2_sse): Ditto.
280 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
282         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
283         eor3q<mode>4.
284         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
285         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
286         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
287         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
288         vbcaxq_s64): New.
289         * config/aarch64/arm_neon.h: Likewise.
290         * config/aarch64/iterators.md (VQ_I): New.
292 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
294         * config.gcc: Add arc/t-multilib-linux to tmake_file for
295         arc*-*-linux*.
296         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
297         MULTILIB_DIRNAMES
299 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
301         * config/nds32/constraints.md (S): New constraint.
302         * config/nds32/nds32.md (call_internal): Use constraint S.
303         (call_value_internal): Likewise.
304         (sibcall_internal): Likewise.
305         (sibcall_value_internal): Likewise.
307 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
308             Chung-Ju Wu  <jasonwucj@gmail.com>
310         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
311         into consideration.
313 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
314             Chung-Ju Wu  <jasonwucj@gmail.com>
316         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
317         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
318         (nds32_rtx_costs_impl): Simplify.
319         (nds32_address_cost_impl): Simplify.
320         (nds32_init_rtx_costs): New function.
321         (nds32_rtx_costs_speed_prefer): Likewise.
322         (nds32_rtx_costs_size_prefer): Likewise.
323         (nds32_address_cost_speed_prefer): Likewise.
324         (nds32_address_cost_speed_fwprop): Likewise.
325         (nds32_address_cost_size_prefer): Likewise.
326         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
327         * config/nds32/nds32.c (nds32_option_override): Use
328         nds32_init_rtx_costs function.
330 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
332         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
333         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
334         (TARGET_PIPELINE_N8): Likewise.
335         (TARGET_PIPELINE_N10): Likewise.
336         (TARGET_PIPELINE_N13): Likewise.
337         (TARGET_PIPELINE_GRAYWOLF): Likewise.
339 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
341         * config/nds32/nds32-fpu.md: Update copyright year.
343 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
345         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
347 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
349         * config/nds32/nds32.c
350         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
351         * config/nds32/nds32.opt (minline-asm-r15): New option.
353 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
355         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
356         MASK_HW_ABS.
357         * config/nds32/nds32.md (abssi2): New pattern.
359 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
361         * config/i386/i386.md (rex64namesuffix): New mode attribute.
362         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
363         Merge insn pattern from sse_cvtsi2ss<round_name> and
364         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
365         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
366         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
367         using SWI48 mode iterator.
368         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
369         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
370         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
371         pattern from sse_cvttss2si<round_saeonly_name>
372         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
373         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
374         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
375         using SWI48 mode iterator.
376         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
377         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
378         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
379         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
380         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
381         using SWI48 mode iterator.
382         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
383         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
384         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
385         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
386         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
387         SWI48 mode iterator.
388         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
389         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
390         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
391         pattern from sse_cvttsd2si<round_saeonly_name>
392         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
394 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
396         * config/nds32/nds32-md-auxiliary.c
397         (nds32_valid_smw_lwm_base_p): Refine.
398         (nds32_output_smw_single_word): Refine.
399         (nds32_output_smw_double_word): New.
400         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
402 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
404         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
405         (nds32_output_stack_pop): Refine.
406         (nds32_expand_unaligned_load): Refine.
407         (nds32_expand_unaligned_store): Refine.
409 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
410             Chung-Ju Wu  <jasonwucj@gmail.com>
412         * config/nds32/constants.md: Add TP_REGNUM constant.
413         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
414         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
415         UNSPEC_ADD32.
416         * config/nds32/nds32-doubleword.md: Consider flag_pic.
417         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
418         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
419         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
420         and PIC code generation.
421         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
422         code generation.
423         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
424         optimization.
425         * config/nds32/nds32.md: Support TLS and PIC.
426         * config/nds32/nds32.c: Support TLS and PIC.
427         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
428         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
429         predicate.
431 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
433         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
434         mode with E_ prefix.
436 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
437             Chung-Ju Wu  <jasonwucj@gmail.com>
439         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
440         * config/nds32/nds32-md-auxiliary.c
441         (symbolic_reference_mentioned_p): New.
442         (nds32_legitimize_ict_address): New.
443         (nds32_expand_ict_move): New.
444         (nds32_indirect_call_referenced_p): New.
445         (nds32_symbol_binds_local_p): Delete.
446         (nds32_long_call_p): Modify.
447         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
448         * config/nds32/nds32-protos.h
449         (symbolic_reference_mentioned_p): Declare.
450         (nds32_legitimize_ict_address): Declare.
451         (nds32_expand_ict_move): Declare.
452         (nds32_indirect_call_referenced_p): Declare.
453         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
454         (nds32_relax_group): Use nds32_ict_const_p as condition.
455         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
456         (nds32_asm_file_start): Output ict_model directive in asm code.
457         (nds32_legitimate_address_p): Consider indirect call.
458         (nds32_print_operand): Consider indirect call.
459         (nds32_print_operand_address): Consider indirect call.
460         (nds32_insert_attributes): Handle "indirect_call" attribute.
461         (TARGET_LEGITIMATE_ADDRESS_P): Define.
462         (TARGET_LEGITIMATE_CONSTANT_P): Define.
463         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
464         (TARGET_DELEGITIMIZE_ADDRESS): Define.
465         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
466         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
467         (TARGET_ICT_MODEL_SMALL): Define.
468         (TARGET_ICT_MODEL_LARGE): Define.
469         * config/nds32/nds32.md (movsi): Consider ict model.
470         (call, call_value): Consider ict model.
471         (sibcall, sibcall_value): Consider ict model.
472         * config/nds32/nds32.opt (mict-model): New option.
473         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
474         model.
476 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
477             Monk Chiang  <sh.chiang04@gmail.com>
478             Jim Wilson <jimw@sifive.com>
480         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
481         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
482         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
483         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
484         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
485         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
486         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
487         compute save_libcall_adjustment properly.
488         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
489         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
490         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
491         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
492         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
493         (ABI_SPEC): Handle mabi=ilp32e.
494         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
495         (RVE): Add RVE mask.
496         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
497         <-march>: Add rv32e as an example.
499 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
501         PR c++/82899
502         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
503         (intra_create_variable_infos): Handle C++ constructors.
505 2018-05-18  Martin Liska  <mliska@suse.cz>
507         * passes.def: Remove a redundant pass.
509 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
511         PR bootstrap/85838
512         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
514 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
516         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
517         (ARMv4): Update.
518         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
519         (ARMv6m): Update.
520         (armv2, armv2a, armv3, armv3m): Delete architectures.
521         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
522         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
523         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
524         Delete cpus.
525         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
526         (*mulsidi3adddi): Likewise.
527         (mulsidi3): Likewise.
528         (*mulsidi3_nov6): Likewise.
529         (umulsidi3): Likewise.
530         (umulsidi3_nov6): Likewise.
531         (umaddsidi4): Likewise.
532         (*umulsidi3adddi): Likewise.
533         (smulsi3_highpart): Likewise.
534         (*smulsi3_highpart_nov6): Likewise.
535         (umulsi3_highpart): Likewise.
536         (*umulsi3_highpart_nov6): Likewise.
537         * config/arm/arm.h (arm_arch3m): Delete.
538         * config/arm/arm.c (arm_arch3m): Delete.
539         (arm_option_override_internal): Update armv3-related comment.
540         (arm_configure_build_target): Delete use of isa_bit_mode32.
541         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
542         (arm_rtx_costs_internal): Delete check of arm_arch3m.
543         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
544         (mulsa3): Likewise.
545         (mulusa3): Likewise.
546         * config/arm/arm-protos.h (arm_arch3m): Delete.
547         * config/arm/arm-tables.opt: Regenerate.
548         * config/arm/arm-tune.md: Likewise.
549         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
550         deleted architectures.
552 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
554         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
555         (armv5t, armv5te): New features.
556         (ARMv5, ARMv5e): Delete fgroups.
557         (ARMv5t, ARMv5te): Adjust for above changes.
558         (ARMv6m): Likewise.
559         (armv5, armv5e): Delete arches.
560         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
561         arm_arch5.
562         (*call_reg_arm): Likewise.
563         (*call_value_reg_armv5): Likewise.
564         (*call_value_reg_arm): Likewise.
565         (*call_symbol): Likewise.
566         (*call_value_symbol): Likewise.
567         (*sibcall_insn): Likewise.
568         (*sibcall_value_insn): Likewise.
569         (clzsi2): Likewise.
570         (prefetch): Likewise.
571         (define_split and define_peephole2 dependent on arm_arch5):
572         Likewise.
573         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
574         arm_arch5e.
575         (TARGET_ARM_QBIT): Likewise.
576         (TARGET_DSP_MULTIPLY): Likewise.
577         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
578         (arm_arch5, arm_arch5e): Delete.
579         (arm_arch5t, arm_arch5te): Declare.
580         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
581         (arm_arch5t): Declare.
582         (arm_option_reconfigure_globals): Update for the above.
583         (arm_options_perform_arch_sanity_checks): Update comment, replace
584         use of arm_arch5 with arm_arch5t.
585         (use_return_insn): Likewise.
586         (arm_emit_call_insn): Likewise.
587         (output_return_instruction): Likewise.
588         (arm_final_prescan_insn): Likewise.
589         (arm_coproc_builtin_available): Likewise.
590         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
591         arm_arch5e with arm_arch5t and arm_arch5te.
592         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
593         (arm_arch5t, arm_arch5te): Declare.
594         * config/arm/arm-tables.opt: Regenerate.
595         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
596         * config/arm/t-multilib: Likewise.
597         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
598         instead of arm_arch5.
599         (*call_reg_thumb1): Likewise.
600         (*call_value_reg_thumb1_v5): Likewise.
601         (*call_value_reg_thumb1): Likewise.
602         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
603         unreachable path.
604         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
606 2018-05-18  Martin Liska  <mliska@suse.cz>
608         PR gcov-profile/84846
609         * doc/gcov.texi: Document -t option of gcov tool.
611 2018-05-18  Martin Liska  <mliska@suse.cz>
613         PR gcov-profile/84846
614         * gcov.c (print_usage): Add new -t option.
615         (process_args): Handle the option.
616         (generate_results): Use stdout as output when requested by
617         the option.
619 2018-05-18  Martin Liska  <mliska@suse.cz>
621         PR gcov-profile/84846
622         * coverage.c (coverage_init): Write PWD to .gcno file.
623         * doc/gcov.texi: Document how working directory is printed.
624         * gcov-dump.c (dump_gcov_file): Print PWD.
625         * gcov.c (output_intermediate_file): Likewise.
626         (read_graph_file): Read PWD string.
627         (output_lines): Print PWD.
629 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
631         PR middle-end/85817
632         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
633         for retval and return false if all args to phi are zero.        
635 2018-05-18  Richard Biener  <rguenther@suse.de>
637         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
638         method.
639         (evrp_dom_walker::before_dom_children): Call it.
641 2018-05-18  Richard Biener  <rguenther@suse.de>
643         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
644         results when processing array refs with variable index.
646 2018-05-18  Toon Moene  <toon@moene.org>
648         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
649         directly after that of -floop-interchange. Indicate that both
650         options are enabled by default when specifying -O3. 
652 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
654         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
655         iterator.  Delete separate integer-mode vec_set<mode> expander.
656         (aarch64_simd_vec_setv2di): Delete.
657         (vec_setv2di): Delete.
658         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
659         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
660         the "w, r" alternative.
662 2018-05-18  Martin Liska  <mliska@suse.cz>
664         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
665         * tree-pass.h (make_pass_lower_switch_O0): New function.
666         * tree-switch-conversion.c (node_has_low_bound): Remove.
667         (node_has_high_bound): Likewise.
668         (node_is_bounded): Likewise.
669         (class pass_lower_switch): Make it a template type and create
670         two instances.
671         (pass_lower_switch::execute): Add template argument.
672         (make_pass_lower_switch): New function.
673         (make_pass_lower_switch_O0): New function.
674         (do_jump_if_equal): Remove.
675         (emit_case_nodes): Simplify to just handle all 3 cases and leave
676         all the hard work to tree optimization passes.
678 2018-05-18  Martin Liska  <mliska@suse.cz>
680         * dbgcnt.c (limit_low): Renamed from limit.
681         (limit_high): New variable.
682         (dbg_cnt_is_enabled): Check for upper limit.
683         (dbg_cnt): Adjust dumping.
684         (dbg_cnt_set_limit_by_index): Add new argument for high
685         value.
686         (dbg_cnt_set_limit_by_name): Likewise.
687         (dbg_cnt_process_single_pair): Parse new format.
688         (dbg_cnt_process_opt): Use strtok.
689         (dbg_cnt_list_all_counters): Remove 'value' and add
690         'limit_high'.
691         * doc/invoke.texi: Document changes.
693 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
695         * doc/sourcebuild.texi (scalar_all_fma): Document.
696         * tree.def (FMA_EXPR): Delete.
697         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
698         * internal-fn.c (ternary_direct): New macro.
699         (expand_ternary_optab_fn): Likewise.
700         (direct_ternary_optab_supported_p): Likewise.
701         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
702         * builtins.c (fold_builtin_fma): Delete.
703         (fold_builtin_3): Don't call it.
704         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
705         * expr.c (expand_expr_real_2): Likewise.
706         * fold-const.c (operand_equal_p): Likewise.
707         (fold_ternary_loc): Likewise.
708         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
709         * gimple.c (DEFTREECODE): Likewise.
710         * gimplify.c (gimplify_expr): Likewise.
711         * optabs-tree.c (optab_for_tree_code): Likewise.
712         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
713         * tree-eh.c (operation_could_trap_p): Likewise.
714         (stmt_could_throw_1_p): Likewise.
715         * tree-inline.c (estimate_operator_cost): Likewise.
716         * tree-pretty-print.c (dump_generic_node): Likewise.
717         (op_code_prio): Likewise.
718         * tree-ssa-loop-im.c (stmt_cost): Likewise.
719         * tree-ssa-operands.c (get_expr_operands): Likewise.
720         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
721         * fold-const-call.h (fold_fma): Delete.
722         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
723         CFN_FNMA and CFN_FNMS.
724         (fold_fma): Delete.
725         * genmatch.c (combined_fn): New enum.
726         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
727         (commutative_op): New function.
728         (commutate): Use it.  Handle more than 2 operands.
729         (dt_operand::gen_gimple_expr): Use commutative_op.
730         (parser::parse_expr): Allow :c to be used with non-binary
731         operators if the commutative operand is known.
732         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
733         CFN_FMS, CFN_FNMA and CFN_FNMS.
734         (backprop::process_assign_use): Remove FMA_EXPR handling.
735         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
736         (gen_hsa_fma): New function.
737         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
738         IFN_FNMA and IFN_FNMS.
739         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
740         * gimple-fold.h (follow_all_ssa_edges): Declare.
741         * gimple-fold.c (follow_all_ssa_edges): New function.
742         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
743         gimple_build interface and use follow_all_ssa_edges to fold the result.
744         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
745         instead of checking for optabs directly.
746         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
747         rather than FMA_EXPRs.
748         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
749         call to IFN_FMA instead of an FMA_EXPR.
751 2018-05-17  Jim Wilson  <jimw@sifive.com>
753         * expr.c (do_tablejump): When converting index to Pmode, if we have a
754         sign extended promoted subreg, and the range does not have the sign bit
755         set, then do a sign extend.
757         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
758         test, check for sign extended subreg and/or constant operands, and
759         do a sign extend in that case.
761 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
763         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
764         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
765         Add untyped.
766         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
767         Change logics_shift_reg to logics_shift_imm.
768         (thunderx2t99_fp_loadpair_basic): Delete.
769         (thunderx2t99_fp_storepair_basic): Delete.
770         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
771         (thunderx2t99_asimd_polynomial): Delete.
772         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
773         and neon_fp_mul_d_scalar_q.
774         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
775         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
776         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
777         (thunderx2t99_asimd_lut): Add missing tbl types.
778         (thunderx2t99_asimd_ext): Delete.
779         (thunderx2t99_asimd_load1_1_mult): Delete.
780         (thunderx2t99_asimd_load1_2_mult): Delete.
781         (thunderx2t99_asimd_load1_ldp): New.
782         (thunderx2t99_asimd_load1): New.
783         (thunderx2t99_asimd_load2): Add missing *load2* types.
784         (thunderx2t99_asimd_load3): New.
785         (thunderx2t99_asimd_load4): New.
786         (thunderx2t99_asimd_store1_1_mult): Delete.
787         (thunderx2t99_asimd_store1_2_mult): Delete.
788         (thunderx2t99_asimd_store2_mult): Delete.
789         (thunderx2t99_asimd_store2_onelane): Delete.
790         (thunderx2t99_asimd_store_stp): New.
791         (thunderx2t99_asimd_store1): New.
792         (thunderx2t99_asimd_store2): New.
793         (thunderx2t99_asimd_store3): New.
794         (thunderx2t99_asimd_store4): New.
796 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
798         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
799         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
801 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
802             Segher Boessenkool  <segher@kernel.crashing.org>
804         PR target/85698
805         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
806         operand.
808 2018-05-17  Richard Biener  <rguenther@suse.de>
810         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
811         for pruning loop and prune defs feeding only already visited PHIs.
813 2018-05-17  Richard Biener  <rguenther@suse.de>
815         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
817 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
818             Richard Biener  <rguenther@suse.de>
820         PR tree-optimization/85793
821         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
822         for VMAT_ELEMENTWISE.
824 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
826         * internal-fn.h (lookup_internal_fn): Declare
827         * internal-fn.c (lookup_internal_fn): New function.
828         * gimple.c (gimple_build_call_from_tree): Handle calls to
829         internal functions.
830         * gimple-pretty-print.c (dump_gimple_call): Print "." before
831         internal function names.
832         * tree-pretty-print.c (dump_generic_node): Likewise.
833         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
835 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
837         * gimple-fold.h (gimple_build): Make the function forms take
838         combined_fn rather than built_in_function.
839         (gimple_simplify): Likewise.
840         * gimple-match-head.c (gimple_simplify): Likewise.
841         * gimple-fold.c (gimple_build): Likewise.
842         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
843         rather than gimple_build_call_internal.
844         (get_initial_defs_for_reduction): Likewise.
845         (vect_create_epilog_for_reduction): Likewise.
846         (vectorizable_live_operation): Likewise.
848 2018-05-17  Martin Liska  <mliska@suse.cz>
850         * gimple-ssa-sprintf.c (format_directive): Do not use
851         space in between 'G_' and '('.
853 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
855         PR target/85323
856         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
857         even if the mask is not all ones.
859         PR target/85323
860         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
861         vector.
862         (ix86_gimple_fold_builtin): Likewise.
864         PR target/85323
865         * config/i386/i386.c: Include tree-vector-builder.h.
866         (ix86_vector_shift_count): New function.
867         (ix86_fold_builtin): Fold shift builtins by scalar count.
868         (ix86_gimple_fold_builtin): Likewise.
870         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
871         _mm512_setzero): New intrinsics.
873 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
874             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
876         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
877         code generation for cases where splatting a value is not useful.
878         * simplify-rtx.c (simplify_ternary_operation): Simplify
879         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
880         mode to a vec_concat.
882 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
884         * config.gcc: Support "goldmont-plus".
885         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
886         "goldmont-plus".
887         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
888         PROCESSOR_GOLDMONT_PLUS.
889         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
890         (processor_target_table): Add "goldmont-plus".
891         (PTA_GOLDMONT_PLUS): Define.
892         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
893         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
894         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
895         (fold_builtin_cpu): Add "goldmont-plus".
896         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
897         (ix86_option_override_internal): Add "goldmont-plus".
898         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
899         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
900         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
901         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
903 2018-05-17  Richard Biener  <rguenther@suse.de>
905         PR tree-optimization/85757
906         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
907         remove defs that only feed that PHI from further processing.
909 2018-05-16  Jim Wilson  <jimw@sifive.com>
911         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
912         asterisk to name.
913         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
915 2018-05-16  Mark Wielaard  <mark@klomp.org>
917         * dwarf2out.c (count_index_strings): New function.
918         (output_indirect_strings): Call count_index_strings and generate
919         header for dwarf_version >= 5.
921 2018-05-16  Mark Wielaard  <mark@klomp.org>
923         * dwarf2out.c (dwarf_FORM): New function.
924         (set_indirect_string): Use dwarf_FORM.
925         (reset_indirect_string): Likewise.
926         (size_of_die): Likewise.
927         (value_format): Likewise.
928         (output_die): Likewise.
929         (add_skeleton_AT_string): Likewise.
930         (output_macinfo_op): Likewise.
931         (index_string): Likewise.
932         (output_index_string_offset): Likewise.
933         (output_index_string): Likewise.
934         (count_index_strings): Likewise.
936 2018-05-16  Carl Love  <cel@us.ibm.com>
938         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
939         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
941 2018-05-16  Martin Jambor  <mjambor@suse.cz>
943         * ipa-prop.c (ipa_free_all_edge_args): Remove.
944         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
946 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
948         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
949         (fnma<mode>4): Likewise.
950         (fms<mode>4): Likewise.
951         (fnms<mode>4): Likewise.
952         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
953         (aarch64_fnma<mode>4): Likewise.
954         (aarch64_fms<mode>4): Likewise.
955         (aarch64_fnms<mode>4): Likewise.
956         (aarch64_fnmadd<mode>4): Likewise.
958 2018-05-16  Jason Merrill  <jason@redhat.com>
960         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
962 2018-05-16  Richard Biener  <rguenther@suse.de>
964         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
965         (dump_stmt_cost): Declare.
966         (add_stmt_cost): Dump cost we add.
967         (add_stmt_costs): New function.
968         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
969         No longer exported.
970         (vect_analyze_stmt): Adjust prototype.
971         (vectorizable_condition): Likewise.
972         (vectorizable_live_operation): Likewise.
973         (vectorizable_reduction): Likewise.
974         (vectorizable_induction): Likewise.
975         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
976         cost vector to pass to vectorizable_ and record afterwards.
977         (vect_model_reduction_cost): Take cost vector argument and adjust.
978         (vect_model_induction_cost): Likewise.
979         (vectorizable_reduction): Likewise.
980         (vectorizable_induction): Likewise.
981         (vectorizable_live_operation): Likewise.
982         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
983         SLP_TREE_NUMBER_OF_VEC_STMTS.
984         (vect_analyze_slp_cost_1): Remove.
985         (vect_analyze_slp_cost): Likewise.
986         (vect_slp_analyze_node_operations): Take visited args and
987         a target cost vector.  Avoid processing already visited stmt sets.
988         (vect_slp_analyze_operations): Use a local cost vector to gather
989         costs and register those of non-discarded instances.
990         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
991         (vect_schedule_slp_instance): Remove copying of
992         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
993         zero.
994         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
995         adding cost.  Record cost entry location.
996         (vect_prologue_cost_for_slp_op): Function to compute cost of
997         a constant or invariant generated for SLP vect in the prologue,
998         split out from vect_analyze_slp_cost_1.
999         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
1000         (vect_model_promotion_demotion_cost): Likewise.
1001         (vect_model_store_cost): Likewise, make static.
1002         (vect_model_load_cost): Likewise.
1003         (vectorizable_bswap): Add cost vector arg and adjust.
1004         (vectorizable_call): Likewise.
1005         (vectorizable_simd_clone_call): Likewise.
1006         (vectorizable_conversion): Likewise.
1007         (vectorizable_assignment): Likewise.
1008         (vectorizable_shift): Likewise.
1009         (vectorizable_operation): Likewise.
1010         (vectorizable_store): Likewise.
1011         (vectorizable_load): Likewise.
1012         (vectorizable_condition): Likewise.
1013         (vectorizable_comparison): Likewise.
1014         (can_vectorize_live_stmts): Likewise.
1015         (vect_analyze_stmt): Likewise.
1016         (vect_transform_stmt): Adjust calls to vectorizable_*.
1017         * tree-vectorizer.c: Include gimple-pretty-print.h.
1018         (dump_stmt_cost): New function.
1020 2018-05-16  Richard Biener  <rguenther@suse.de>
1022         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
1023         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
1024         * tree-ssa-dse.c: Include tree-ssa-loop.h.
1025         (check_name): New callback.
1026         (dse_classify_store): Track cycles via a visited bitmap of PHI
1027         defs and simplify handling of in-loop and across loop dead stores
1028         and properly fail for loop-variant refs.  Handle byte-tracking with
1029         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
1030         limiting the walk.
1032 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
1034         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
1035         (vect_get_mask_type_for_stmt): Likewise.
1036         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
1037         split out from...
1038         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
1039         to determine the statement's vector type and the vector type that
1040         should be used for calculating nunits.  Deal with cases in which
1041         the type has to be deferred.
1042         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
1043         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
1044         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
1045         (vect_determine_vf_for_stmt): New functions, split out from...
1046         (vect_determine_vectorization_factor): ...here.
1047         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
1048         (vect_get_mask_type_for_stmt): New functions, split out from
1049         vect_determine_vectorization_factor.
1051 2018-05-16  Richard Biener  <rguenther@suse.de>
1053         * tree-cfg.c (verify_gimple_assign_ternary): Properly
1054         verify the [VEC_]COND_EXPR embedded comparison.
1056 2018-05-15  Martin Sebor  <msebor@redhat.com>
1058         PR tree-optimization/85753
1059         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
1060         RECORD_TYPE in addition to ARRAY_TYPE.
1062 2018-05-15  Martin Sebor  <msebor@redhat.com>
1064         PR middle-end/85643
1065         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
1067 2018-05-15  Richard Biener  <rguenther@suse.de>
1069         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
1070         add by_clobber_p one.  Change algorithm to collect all defs
1071         representing uses we need to walk and try reducing them to
1072         a single one before failing.
1073         (dse_dom_walker::dse_optimize_stmt): Adjust.
1075 2018-05-13  Mark Wielaard  <mark@klomp.org>
1077         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
1078         (size_of_loc_descr): Likewise.
1079         (output_loc_operands): Likewise.
1080         (output_loc_operands_raw): Likewise.
1081         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
1082         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
1083         (hash_loc_operands): Likewise.
1084         (compare_loc_operands): Likewise.
1086 2018-05-14  Mark Wielaard  <mark@klomp.org>
1088         * dwarf2out.c (count_index_addrs): New function.
1089         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
1091 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1093         PR tree-optimization/83648
1094         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
1095         return value as malloc candidate.
1097 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1099         PR ipa/85734
1100         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
1101         as true in call to suggest_attribute.
1103 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
1105         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
1106         -mreadonly-in-sdata.
1108 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1110         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
1111         New pattern.
1112         (aarch64_crypto_aesd_fused): Likewise.
1114 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
1116         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
1117         (movsi_aarch64): Likewise.
1118         (load_pairsi): Likewise.
1119         (load_pairdi): Likewise.
1120         (store_pairsi): Likewise.
1121         (store_pairdi): Likewise.
1122         (load_pairsf): Likewise.
1123         (load_pairdf): Likewise.
1124         (store_pairsf): Likewise.
1125         (store_pairdf): Likewise.
1126         (zero_extend): Likewise.
1127         (trunc): Swap alternatives.
1128         (fcvt_target): Add '?' to prefer w over r.
1130 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
1132         PR target/85756
1133         * config/i386/i386.md: Disallow non-commutative arithmetics in
1134         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
1135         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
1136         in the peephole2 before it.
1138 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
1140         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
1141         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
1142         (ix86_handle_option): Handle -mcldemote.
1143         * config.gcc: New header.
1144         * config/i386/cldemoteintrin.h: New file.
1145         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
1146         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1147         -mcldemote.
1148         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1149         OPTION_MASK_ISA_CLDEMOTE.
1150         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
1151         (ix86_valid_target_attribute_inner_p): Ditto.
1152         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
1153         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
1154         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
1155         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
1156         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
1157         (cldemote): New.
1158         * config/i386/i386.opt: Add -mcldemote.
1159         * config/i386/x86intrin.h: New header.
1160         * doc/invoke.texi: Add -mcldemote.
1162 2018-05-14  Richard Biener  <rguenther@suse.de>
1164         * doc/match-and-simplify.texi: Adjust :s documentation.
1166 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
1168         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
1169         intended memcpy size.
1170         (REORDER_45): Likewise.
1172 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
1174         * sort.cc: New file.
1175         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
1176         * vec.c (qsort_chk): Use gcc_qsort.
1177         * Makefile.in (OBJS-libcommon): Add sort.o.
1178         (build/sort.o): New target.  Use it...
1179         (BUILD_RTL): ... here, and...
1180         (build/gencfn-macros): ... here, and...
1181         (build/genmatch): ... here.
1183 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
1184             Chung-Ju Wu  <jasonwucj@gmail.com>
1186         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
1187         * config/nds32/nds32-graywolf.md: New file.
1188         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
1189         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
1190         pipeline.
1191         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
1192         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
1193         * config/nds32/nds32.md (pipeline_model): Add graywolf.
1194         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
1195         * config/nds32/pipelines.md: Include n15 settings.
1197 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
1198             Chung-Ju Wu  <jasonwucj@gmail.com>
1200         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
1201         * config/nds32/nds32-n13.md: New file.
1202         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
1203         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1204         pipeline.
1205         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1206         * config/nds32/nds32.md (pipeline_model): Add n13.
1207         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1208         * config/nds32/pipelines.md: Include n13 settings.
1210 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
1211             Chung-Ju Wu  <jasonwucj@gmail.com>
1213         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1214         * config/nds32/nds32-n10.md: New file.
1215         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1216         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1217         pipeline.
1218         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1219         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1220         * config/nds32/nds32.md (pipeline_model): Add n10.
1221         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1222         * config/nds32/pipelines.md: Include n10 settings.
1224 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
1225             Kito Cheng  <kito.cheng@gmail.com>
1226             Chung-Ju Wu  <jasonwucj@gmail.com>
1228         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1229         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1230         Add enum values for DSP extension instructions.
1231         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1232         New constraints.
1233         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1234         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1235         New code iterators.
1236         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1237         * config/nds32/nds32-dspext.md: New file for DSP implementation.
1238         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1239         * config/nds32/nds32-intrinsic.md: Likewise.
1240         * config/nds32/nds32_intrinsic.h: Likewise.
1241         * config/nds32/nds32-md-auxiliary.c: Likewise.
1242         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1243         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1244         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1245         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1246         * config/nds32/nds32-protos.h: New declarations for DSP extension.
1247         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1248         TYPE_DMAC in switch statement.
1249         * config/nds32/nds32.c: New checking and implementation for DSP
1250         extension instructions.
1251         * config/nds32/nds32.h: Likewise.
1252         * config/nds32/nds32.md: Likewise.
1253         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1254         * config/nds32/predicates.md: Implement new predicates for DSP
1255         extension.
1257 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
1259         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1260         Reformat alternatives and attributes so it is easier to identify
1261         which constraints/attributes go with which instruction.
1262         (mov<mode>_hardfloat32, FMOVE64): Likewise.
1263         (mov<mode>_softfloat32, FMOVE64): Likewise.
1264         (mov<mode>_hardfloat64, FMOVE64): Likewise.
1265         (mov<mode>_softfloat64, FMOVE64): Likewise.
1267 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1269         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1270         subsection.
1271         (Basic PowerPC Built-in Functions): The new name of the
1272         subsection previously known as "PowerPC Built-in Functions".
1273         (Basic PowerPC Built-in Functions Available on all Configurations):
1274         New subsubsection.
1275         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1276         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1277         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1278         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1280 2018-05-11  Martin Jambor  <mjambor@suse.cz>
1282         PR ipa/85655
1283         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1284         single const.
1286 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
1288         PR target/85733
1289         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1291 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
1293         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1294         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1295         (ix86_handle_option): Handle -mwaitpkg.
1296         * config.gcc: New header.
1297         * config/i386/cpuid.h (bit_WAITPKG): New bit.
1298         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1299         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1300         function type.
1301         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1302         OPTION_MASK_ISA_WAITPKG.
1303         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1304         (ix86_option_override_internal): Add PTA_WAITPKG.
1305         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1306         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1307         IX86_BUILTIN_TPAUSE.
1308         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1309         __builtin_ia32_umwait and __builtin_ia32_tpause.
1310         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1311         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1312         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1313         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1314         UNSPECV_TPAUSE): New.
1315         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1316         * config/i386/i386.opt: Add -mwaitpkg.
1317         * config/i386/waitpkgintrin.h: New file.
1318         * config/i386/x86intrin.h: New header.
1319         * doc/invoke.texi: Add -mwaitpkg.
1321 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
1323         PR target/85606
1324         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1325         equivalent.
1326         (cortex-m0): Use armv6s-m isa.
1327         (cortex-m0plus): Likewise.
1328         (cortex-m1): Likewise.
1329         (cortex-m0.small-multiply): Likewise.
1330         (cortex-m0plus.small-multiply): Likewise.
1331         (cortex-m1.small-multiply): Likewise.
1333 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
1334             Jakub Jelinek  <jakub@redhat.com>
1336         PR tree-optimization/85692
1337         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1338         source permute as well.
1340 2018-05-11  Martin Liska  <mliska@suse.cz>
1342         PR sanitizer/85556
1343         * doc/extend.texi: Document LLVM style format for no_sanitize
1344         attribute.
1346 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
1348         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1349         mode_supports_vsx_dform_quad to mode_supports_dq_form.
1350         (mode_supports_vsx_dform_quad): Likewise.
1351         (mode_supports_vmx_dform): Move these functions to be next to the
1352         other mode_supports functions.
1353         (mode_supports_dq_form): Likewise.
1354         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1355         mode_supports_dq_form.
1356         (reg_offset_addressing_ok_p): Likewise.
1357         (offsettable_ok_by_alignment): Likewise.
1358         (rs6000_legitimate_offset_address_p): Likewise.
1359         (legitimate_lo_sum_address_p): Likewise.
1360         (rs6000_legitimize_address): Likewise.
1361         (rs6000_legitimize_reload_address): Likewise.
1362         (rs6000_secondary_reload_inner): Likewise.
1363         (rs6000_preferred_reload_class): Likewise.
1364         (rs6000_output_move_128bit): Likewise.
1366 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
1368         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1369         Generate SImode target register for null target.
1370         <case IX86_BUILTIN_XGETBV>: Ditto.
1371         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1372         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1374 2018-05-10  Carl Love  <cel@us.ibm.com>
1376         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1377         dcbtt and dcbtstt if operands[2] is 0.
1379 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
1381         PR target/85693
1382         * config/i386/sse.md (usadv64qi): New expander.
1384 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
1386         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1387         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1388         -maltivec=be support.
1389         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1390         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1391         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1392         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1393         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1394         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1395         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1396         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1397         altivec_vsumsws): Adjust.
1398         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1399         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1400         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1401         support.
1402         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1403         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1404         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1405         (altivec_lve<VI_char>x): Delete expand.
1406         (*altivec_lve<VI_char>x_internal): Rename to...
1407         (altivec_lve<VI_char>x): ... this.
1408         (altivec_lvxl_<mode>): Delete expand.
1409         (*altivec_lvxl_<mode>_internal): Rename to ...
1410         (altivec_lvxl_<mode>): ... this.
1411         (altivec_stvxl_<mode>): Delete expand.
1412         (*altivec_stvxl_<mode>_internal): Rename to ...
1413         (altivec_stvxl_<mode>): ... this.
1414         (altivec_stve<VI_char>x): Delete expand.
1415         (*altivec_stve<VI_char>x_internal): Rename to ...
1416         (altivec_stve<VI_char>x): ... this.
1417         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1418         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1419         reduc_plus_scal_<mode>): Adjust.
1420         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1421         comment.
1422         (rs6000_cpu_cpp_builtins): Adjust.
1423         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1424         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1425         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1426         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1427         -maltivec=be support.
1428         (rs6000_split_vec_extract_var): Adjust.
1429         (rs6000_split_v4si_init): Adjust.
1430         (swap_selector_for_mode): Delete.
1431         (altivec_expand_lvx_be, altivec_expand_stvx_be,
1432         altivec_expand_stvex_be): Delete.
1433         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1434         -maltivec=be support.
1435         (rs6000_gimple_fold_builtin): Ditto.
1436         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1437         Adjust.
1438         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1439         (TARGET_DIRECT_MOVE_64BIT): Adjust.
1440         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1441         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1442         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1443         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1444         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1445         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1446         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1447         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1448         anonymous split): Adjust.
1449         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1450         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1452 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
1454         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1455         when --with-gxx-include-dir is also specified.
1456         * configure: Regenerate.
1458 2018-05-09  Jim Wilson  <jimw@sifive.com>
1460         PR target/84797
1461         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1462         * config/riscv/t-withmultilib: New.
1463         * config/riscv/withmultilib.h: New.
1464         * doc/install.texi: Document RISC-V --with-multilib-list support.
1466 2018-05-09  Richard Biener  <rguenther@suse.de>
1468         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1469         vector.
1470         (vect_bb_vectorization_profitable_p): Adjust.  Compute
1471         actual scalar cost using the cost vector and the add_stmt_cost
1472         machinery.
1474 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1476         PR rtl-optimization/85645
1477         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1478         in the REG_CFA_REGISTER note for LR, don't leave it empty.
1480 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1482         PR rtl-optimization/85645
1483         * shrink-wrap.c (spread_components): Return a boolean saying if
1484         anything was changed.
1485         (try_shrink_wrapping_separate): Iterate spread_components until
1486         nothing changes anymore.
1488 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1490         PR rtl-optimization/85645
1491         * regrename.c (build_def_use): Also kill the chains that include the
1492         destination of a REG_CFA_REGISTER note.
1494 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
1496         PR rtl-optimization/85645
1497         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1498         insn that has a REG_CFA_REGISTER note.
1500 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
1502         * cfgexpand.c (expand_clobber): New function.
1503         (expand_gimple_stmt_1): Use it.
1504         * tree-vect-stmts.c (vect_clobber_variable): New function,
1505         split out from...
1506         (vectorizable_simd_clone_call): ...here.
1507         (vectorizable_store): Emit a clobber either side of an
1508         IFN_STORE_LANES sequence.
1509         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1511 2018-05-09  Tom de Vries  <tom@codesourcery.com>
1513         PR target/85626
1514         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1515         (define_insn "trap_if_false"): Add exit after trap.
1517 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
1519         PR rtl-optimization/85638
1520         * bb-reorder.c: Include common/common-target.h.
1521         (create_forwarder_block): New function extracted from...
1522         (fix_up_crossing_landing_pad): ...here.  Rename into...
1523         (dw2_fix_up_crossing_landing_pad): ...this.
1524         (sjlj_fix_up_crossing_landing_pad): New function.
1525         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1526         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1527         from both partitions and exit the loop after one iteration.
1529 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1531         Revert:
1532         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1533         subsection.
1534         (Basic PowerPC Built-in Functions): The new name of the
1535         subsection previously known as "PowerPC Built-in Functions".
1536         (Basic PowerPC Built-in Functions Available on all Configurations):
1537         New subsubsection.
1538         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1539         subsubsection.
1540         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1541         subsubsection.
1542         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1543         subsubsection.
1544         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1545         subsubsection.
1547 2018-05-08  Jim Wilson  <jimw@sifive.com>
1549         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1550         (LD_EMUL_SUFFIX): New.
1551         (LINK_SPEC): Use it.
1553 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1555         * doc/extend.texi (PowerPC Built-in Functions): Rename this
1556         subsection.
1557         (Basic PowerPC Built-in Functions): The new name of the
1558         subsection previously known as "PowerPC Built-in Functions".
1559         (Basic PowerPC Built-in Functions Available on all Configurations):
1560         New subsubsection.
1561         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1562         subsubsection.
1563         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1564         subsubsection.
1565         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1566         subsubsection.
1567         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1568         subsubsection.
1570 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
1572         PR target/85683
1573         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1574         after cmpelim optimization.
1576 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
1578         * config.gcc: Support "goldmont".
1579         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1580         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1581         PROCESSOR_GOLDMONT.
1582         * config/i386/i386.c (m_GOLDMONT): Define.
1583         (processor_target_table): Add "goldmont".
1584         (PTA_GOLDMONT): Define.
1585         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1586         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1587         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1588         (fold_builtin_cpu): Add "goldmont".
1589         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1590         (ix86_option_override_internal): Add "goldmont".
1591         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1592         (processor_type): Add PROCESSOR_GOLDMONT.
1593         * config/i386/i386.md: Add CPU "glm".
1594         * config/i386/glm.md: New file.
1595         * config/i386/x86-tune.def: Add m_GOLDMONT.
1596         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1598 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
1600         PR target/85572
1601         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1602         E_V4DImode.
1603         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1604         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
1605         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
1607         PR target/85317
1608         * config/i386/i386.c (ix86_fold_builtin): Handle
1609         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1611         PR target/85480
1612         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1613         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1615 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
1617         PR target/85658
1618         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1619         (check_arch): Likewise.
1620         (check_fpu): Return the result rather than printing it.
1621         (end arch): Fix operator precedence.
1622         (end cpu): Likewise.
1623         (END): Print the result from check_fpu.
1625 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
1626             Alan Hayward  <alan.hayward@arm.com>
1627             David Sherwood  <david.sherwood@arm.com>
1629         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1630         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1631         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1632         (*fcmuo<mode>_and): New patterns.
1634 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
1636         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1637         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1638         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1639         (cmp_op, sve_imm_con): New code attributes.
1640         (SVE_COND_INT_CMP, imm_con): Delete.
1641         (cmp_op): Remove above unspecs from int attribute.
1642         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1643         to...
1644         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
1645         comparison-specific unspecs.
1646         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1647         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1648         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1649         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1650         (*vec_fcm<cmp_op><mode>): Rename to...
1651         (*fcm<cmp_op><mode>): ...this and adjust likewise.
1652         (*vec_fcmuo<mode>): Rename to...
1653         (*fcmuo<mode>): ...this and adjust likewise.
1654         (*pred_fcm<cmp_op><mode>): New pattern.
1655         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1656         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1657         functions.
1658         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1659         and UNORDERED.
1660         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1661         (aarch64_emit_sve_predicated_cond): New function.
1662         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1663         (aarch64_emit_unspec_cond_or): Replace with...
1664         (aarch64_emit_sve_or_conds): ...this new function.  Use
1665         aarch64_emit_sve_ptrue_op for the individual comparisons and
1666         aarch64_emit_binop to OR them together.
1667         (aarch64_emit_inverted_unspec_cond): Replace with...
1668         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
1669         aarch64_emit_sve_ptrue_op for the comparison and
1670         aarch64_emit_unop to invert the result.
1671         (aarch64_expand_sve_vec_cmp_float): Update after the above
1672         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
1674 2018-05-07  Nathan Sidwell  <nathan@acm.org>
1676         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1677         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1678         (Backwards Compatibility): Likewise.
1680 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1682         PR bootstrap/85681
1683         Revert:
1684         2018-05-07  Luis Machado  <luis.machado@linaro.org>
1686         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1687         <prefetch_dynamic_strides>: New const bool field.
1688         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1689         prefetch_dynamic_strides.
1690         (exynosm1_prefetch_tune): Likewise.
1691         (thunderxt88_prefetch_tune): Likewise.
1692         (thunderx_prefetch_tune): Likewise.
1693         (thunderx2t99_prefetch_tune): Likewise.
1694         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1695         (aarch64_override_options_internal): Update to set
1696         PARAM_PREFETCH_DYNAMIC_STRIDES.
1697         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1698         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1699         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1700         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1701         prefetch-dynamic-strides setting.
1703         2018-05-07  Luis Machado  <luis.machado@linaro.org>
1705         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1706         <minimum_stride>: New const int field.
1707         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1708         minimum_stride field.
1709         (exynosm1_prefetch_tune): Likewise.
1710         (thunderxt88_prefetch_tune): Likewise.
1711         (thunderx_prefetch_tune): Likewise.
1712         (thunderx2t99_prefetch_tune): Likewise.
1713         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1714         (aarch64_override_options_internal): Update to set
1715         PARAM_PREFETCH_MINIMUM_STRIDE.
1716         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1717         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1718         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1719         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1720         stride is constant and is below the minimum stride threshold.
1722 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1724         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1725         to 512.
1727 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1729         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1730         <prefetch_dynamic_strides>: New const bool field.
1731         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1732         prefetch_dynamic_strides.
1733         (exynosm1_prefetch_tune): Likewise.
1734         (thunderxt88_prefetch_tune): Likewise.
1735         (thunderx_prefetch_tune): Likewise.
1736         (thunderx2t99_prefetch_tune): Likewise.
1737         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1738         (aarch64_override_options_internal): Update to set
1739         PARAM_PREFETCH_DYNAMIC_STRIDES.
1740         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1741         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1742         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1743         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1744         prefetch-dynamic-strides setting.
1746 2018-05-07  Luis Machado  <luis.machado@linaro.org>
1748         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1749         <minimum_stride>: New const int field.
1750         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1751         minimum_stride field.
1752         (exynosm1_prefetch_tune): Likewise.
1753         (thunderxt88_prefetch_tune): Likewise.
1754         (thunderx_prefetch_tune): Likewise.
1755         (thunderx2t99_prefetch_tune): Likewise.
1756         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1757         (aarch64_override_options_internal): Update to set
1758         PARAM_PREFETCH_MINIMUM_STRIDE.
1759         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1760         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1761         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1762         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1763         stride is constant and is below the minimum stride threshold.
1765 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
1767         PR c++/85659
1768         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1769         the type is addressable.  Don't force op into register if it has
1770         BLKmode.
1772 2018-05-05  Roland McGrath  <mcgrathr@google.com>
1774         PR other/77609
1775         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1776         any section for which we don't know a specific type it should have,
1777         regardless of name.  Previously this was done only for the exact
1778         names ".init_array", ".fini_array", and ".preinit_array".
1779         (default_elf_asm_named_section): Add comment about
1780         relationship with default_section_type_flags and SECTION_NOTYPE.
1781         (get_section): Don't consider it a type conflict if one side has
1782         SECTION_NOTYPE and the other doesn't, as long as neither has the
1783         SECTION_BSS et al used in the default_section_type_flags logic.
1785 2018-05-05  Tom de Vries  <tom@codesourcery.com>
1787         PR target/85653
1788         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1789         (workaround_barsyncs): New function.
1790         (nvptx_reorg): Use workaround_barsyncs.
1791         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1792         (define_expand "nvptx_membar_cta"): New define_expand.
1793         (define_insn "*nvptx_membar_cta"): New insn.
1795 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
1797         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1798         To improve optimization opportunities.
1799         * builtin-types.def: The new needed builtin types for the above.
1801 2018-05-04  Richard Biener  <rguenther@suse.de>
1803         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1804         * gimple-ssa-store-merging.c
1805         (imm_store_chain_info::output_merged_store): Remove redundant create,
1806         release split_store vector contents on failure.
1807         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1808         scalar stmt vector on cache hit.
1810 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
1812         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1813         Xilinx FP support.
1814         * config.gcc (powerpc-xilinx-eabi*): Remove.
1815         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1816         support.
1817         (fusion_addis_mem_combo_load): Ditto.
1818         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1819         FP support.
1820         (rs6000_cpu_cpp_builtins): Ditto.
1821         * config/rs6000/rs6000-linux.c
1822         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1823         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1824         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1825         support.
1826         (rs6000_setup_reg_addr_masks): Ditto.
1827         (rs6000_init_hard_regno_mode_ok): Ditto.
1828         (rs6000_option_override_internal): Ditto.
1829         (legitimate_lo_sum_address_p): Ditto.
1830         (rs6000_legitimize_address): Ditto.
1831         (rs6000_legitimize_reload_address): Ditto.
1832         (rs6000_legitimate_address_p): Ditto.
1833         (abi_v4_pass_in_fpr): Ditto.
1834         (setup_incoming_varargs): Ditto.
1835         (rs6000_gimplify_va_arg): Ditto.
1836         (rs6000_split_multireg_move): Ditto.
1837         (rs6000_savres_strategy): Ditto.
1838         (rs6000_emit_prologue_components): Ditto.
1839         (rs6000_emit_epilogue_components): Ditto.
1840         (rs6000_emit_prologue): Ditto.
1841         (rs6000_emit_epilogue): Ditto.
1842         (rs6000_elf_file_end): Ditto.
1843         (rs6000_function_value): Ditto.
1844         (rs6000_libcall_value): Ditto.
1845         * config/rs6000/rs6000.h: Ditto.
1846         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1847         (TARGET_MINMAX): ... this.  New.
1848         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1849         * config/rs6000/rs6000.md: Remove Xilinx FP support.
1850         (*movsi_internal1_single): Delete.
1851         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1852         mfpu=, mxilinx-fpu): Delete.
1853         * config/rs6000/singlefp.h: Delete.
1854         * config/rs6000/sysv4.h: Remove Xilinx FP support.
1855         * config/rs6000/t-rs6000: Ditto.
1856         * config/rs6000/t-xilinx: Delete.
1857         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1858         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1859         (VStype_simple): Delete.
1860         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1861         * config/rs6000/xfpu.h: Delete.
1862         * config/rs6000/xfpu.md: Delete.
1863         * config/rs6000/xilinx.h: Delete.
1864         * config/rs6000/xilinx.opt: Delete.
1865         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1866         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1868 2018-05-04  Tom de Vries  <tom@codesourcery.com>
1870         PR libgomp/85639
1871         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1872         if ignore == 0.
1874 2018-05-04  Richard Biener  <rguenther@suse.de>
1876         PR middle-end/85627
1877         * tree-complex.c (update_complex_assignment): We are always in SSA form.
1878         (expand_complex_div_wide): Likewise.
1879         (expand_complex_operations_1): Likewise.
1880         (expand_complex_libcall): Preserve EH info of the original stmt.
1881         (tree_lower_complex): Handle removed blocks.
1882         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1883         on complex multiplication and division libcall builtins.
1885 2018-05-04  Richard Biener  <rguenther@suse.de>
1887         PR middle-end/85574
1888         * fold-const.c (negate_expr_p): Restrict negation of operand
1889         zero of a division to when we know that can happen without
1890         overflow.
1891         (fold_negate_expr_1): Likewise.
1893 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
1895         PR libstdc++/85466
1896         * real.h (real_nextafter): Declare.
1897         * real.c (real_nextafter): New function.
1898         * fold-const-call.c (fold_const_nextafter): New function.
1899         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1900         CASE_CFN_NEXTTOWARD.
1901         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1902         even when arg1_mode is different from arg0_mode.
1904 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1906         * doc/extend.texi (Deprecated Features): Remove
1907         -ffriend-injection.
1908         (Backwards Compatibility): Likewise.
1909         * doc/invoke.texi (C++ Language Options): Likewise.
1910         (C++ Dialect Options): Likewise.
1912 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
1914         PR target/85530
1915         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1916         _mm512_mask_mullox_epi64): New intrinsics.
1918 2018-05-03  Tom de Vries  <tom@codesourcery.com>
1920         PR testsuite/85106
1921         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1922         dump files): Add offload-tree.
1924 2018-05-03  Richard Biener  <rguenther@suse.de>
1926         PR tree-optimization/85615
1927         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1928         to loops not nested in BBs loop father to avoid creating multi-entry
1929         loops.
1931 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1933         PR tree-optimization/70291
1934         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1935         arguments.  Change return type to tree.  Emit libcall as a new
1936         statement rather than replacing existing one when inplace_p is true.
1937         (expand_complex_multiplication_components): New function.
1938         (expand_complex_multiplication): Expand floating-point complex
1939         multiplication using the above.
1940         (expand_complex_division): Rename inner_type parameter to type.
1941         Update expand_complex_libcall call-site.
1942         (expand_complex_operations_1): Update expand_complex_multiplication
1943         and expand_complex_division call-sites.
1945 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
1947         PR target/85582
1948         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1949         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1950         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1951         the highest significant bit of the shift count mask is clear.  In
1952         check whether and[sq]i3 is needed verify that all significant bits
1953         of the shift count other than the highest are set.
1955 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1957         PR libgomp/82428
1958         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1959         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1960         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1961         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1962         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1963         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1964         __builtin_goacc_parlevel_size.
1966 2018-05-02  Richard Biener  <rguenther@suse.de>
1968         PR tree-optimization/85597
1969         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1970         do not use split vect_get_vec_defs call but call vect_get_slp_defs
1971         directly.
1973 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1975         PR testsuite/85106
1976         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1977         dump files): Add ltrans-tree.
1979 2018-05-02  Tom de Vries  <tom@codesourcery.com>
1981         PR testsuite/85106
1982         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1983         dump files): Add wpa-ipa.
1985 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
1987         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
1988         powerpc*-*-linux*paired* target.
1989         * config/rs6000/750cl.h: Delete.
1990         * config/rs6000/paired.h: Delete.
1991         * config/rs6000/paired.md: Delete.
1992         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1993         float support.
1994         * config/rs6000/rs6000-builtin.def: Remove paired float support.
1995         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1996         comment.  Remove paired float support.
1997         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1998         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1999         VECTOR_PAIRED.
2000         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
2001         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
2002         declarations.
2003         * config/rs6000/rs6000.c: Remove paired float support.
2004         (paired_expand_vector_init, paired_expand_vector_move,
2005         paired_emit_vector_compare, paired_emit_vector_cond_expr,
2006         (paired_expand_lv_builtin, paired_expand_stv_builtin,
2007         paired_expand_builtin, paired_expand_predicate_builtin,
2008         paired_init_builtins): Delete.
2009         * config/rs6000/rs6000.h: Remove paired float support.
2010         * config/rs6000/rs6000.md: Remove paired float support.
2011         (move_from_CR_ov_bit): Delete.
2012         * config/rs6000/rs6000.opt (mpaired): Delete.
2013         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
2014         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
2016 2018-05-02  Richard Biener  <rguenther@suse.de>
2018         PR middle-end/85567
2019         * gimplify.c (gimplify_save_expr): When in SSA form allow
2020         SAVE_EXPRs to compute to SSA vars.
2022 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
2024         PR target/85582
2025         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
2026         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
2027         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
2028         clobber operands[2], instead use a new pseudo.  Formatting fixes.
2030 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
2032         PR tree-optimization/85586
2033         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
2034         exit early for statements in the same group if the accesses are
2035         not strided.
2037 2018-05-02  Tom de Vries  <tom@codesourcery.com>
2039         PR lto/85451
2040         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
2041         error message.
2043 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
2045         PR tree-optimization/85143
2046         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
2048 2018-05-01  Tom de Vries  <tom@codesourcery.com>
2050         PR lto/85451
2051         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
2052         not found" error message.
2054 2018-05-01  Tom de Vries  <tom@codesourcery.com>
2056         PR other/83786
2057         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
2058         * vec.c (test_ordered_remove_if): New function.
2059         (vec_c_tests): Call test_ordered_remove_if.
2060         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
2061         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
2062         * tree-vect-patterns.c (vect_pattern_recog_1): Use
2063         VEC_ORDERED_REMOVE_IF.
2065 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2067         PR tree-optimization/82665
2068         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
2069         pointer subtraction where arguments come from a memchr call.
2071 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
2073         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
2074         --push-state --as-needed and --pop-state instead of --as-needed and
2075         --no-as-needed if ld supports it.
2076         * configure: Regenerated.
2078         PR web/85578
2079         * doc/install.texi2html: Replace _002d with - and _002a with * in
2080         generated html files using sed.
2082 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2084         PR c++/85523
2085         * gcc-rich-location.c (blank_line_before_p): New function.
2086         (use_new_line): New function.
2087         (gcc_rich_location::add_fixit_insert_formatted): New function.
2088         * gcc-rich-location.h
2089         (gcc_rich_location::add_fixit_insert_formatted): New function.
2091 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2093         * selftest.c (assert_streq): Rename "expected" and "actual" to
2094         "val1" and "val2".  Extend NULL-handling to cover both inputs
2095         symmetrically, while still requiring both to be non-NULL for a pass.
2096         * selftest.h (assert_streq): Rename "expected" and "actual" to
2097         "val1" and "val2".
2098         (ASSERT_EQ): Likewise.
2099         (ASSERT_EQ_AT): Likewise.
2100         (ASSERT_KNOWN_EQ): Likewise.
2101         (ASSERT_KNOWN_EQ_AT): Likewise.
2102         (ASSERT_NE): Likewise.
2103         (ASSERT_MAYBE_NE): Likewise.
2104         (ASSERT_MAYBE_NE_AT): Likewise.
2105         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
2106         the assertion to pass.
2107         (ASSERT_STREQ_AT): Likewise.
2109 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
2111         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
2112         interaction with -pie.
2114 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2116         * selftest.h: Fix alphabetization of per-source-file selftest
2117         declarations.
2119 2018-04-30  Jason Merrill  <jason@redhat.com>
2121         PR c++/61982 - dead stores to destroyed objects.
2122         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
2123         of clobber.
2125 2018-04-30  Jason Merrill  <jason@redhat.com>
2127         * tree.c (build_clobber): New.
2128         * tree.h: Declare it.
2129         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
2131 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2133         * diagnostic-show-locus.c (layout::layout): Update for
2134         location_get_source_line returning a char_span.
2135         (struct char_span): Move to input.h.
2136         (struct correction): Update for fields in char_span becoming
2137         private.
2138         (struct source_line): Update for location_get_source_line
2139         returning a char_span.
2140         (layout::print_line): Likewise.
2141         * edit-context.c (edited_file::print_content): Likewise.
2142         (edited_file::print_diff_hunk): Likewise.
2143         (edited_file::print_run_of_changed_lines): Likewise.
2144         (edited_file::get_num_lines): Likewise.
2145         (edited_line::edited_line): Likewise.
2146         * final.c (asm_show_source): Likewise.
2147         * input.c (location_get_source_line): Convert return type
2148         from const char * to char_span, losing the final "line_len"
2149         param.
2150         (dump_location_info): Update for the above.
2151         (get_substring_ranges_for_loc): Likewise.  Use a char_span
2152         when handling the literal within the line.
2153         (test_reading_source_line): Update for location_get_source_line
2154         returning a char_span.
2155         * input.h (class char_span): Move here from
2156         diagnostic-show-locus.c, converting from a struct to a class.
2157         Make data members private.
2158         (char_span::operator bool): New.
2159         (char_span::length): New.
2160         (char_span::get_buffer): New.
2161         (char_span::operator[]): New.
2162         (char_span::subspan): Make const.
2163         (char_span::xstrdup): New.
2164         (location_get_source_line): Convert return type from const char *
2165         to char_span, losing the final "line_size" param.
2167 2018-04-30  Jan Hubicka  <jh@suse.cz>
2169         * lto-wrapper.c (ltrans_priorities): New static var.
2170         (cmp_priority): New.
2171         (run_gcc): Read priorities and if doing parallel build order
2172         the Makefile by them.
2174 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
2176         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
2178 2018-04-30  Richard Biener  <rguenther@suse.de>
2180         * tree-cfg.c (verify_address): Remove base argument, add
2181         flag whether to check TREE_ADDRESSABLE and do that.
2182         (verify_expr): Remove.
2183         (verify_types_in_gimple_reference): Add pieces from verify_expr.
2184         (verify_gimple_assign_single): Likewise.
2185         (verify_gimple_switch): Likewise.
2186         (verify_expr_location_1): Dereference tp once.  Add (disabled)
2187         piece from verify_expr.
2188         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
2190 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
2192         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
2194 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
2196         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
2197         (small_data_pattern): Likewise.
2198         (arc_rewrite_small_data): Likewise.
2199         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
2200         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
2201         (get_symbol_alignment): New function.
2202         (legitimate_small_data_address_p): Likewise.
2203         (legitimate_scaled_address): Update, call
2204         legitimate_small_data_address_p.
2205         (output_sdata): New static variable.
2206         (arc_print_operand): Update how we handle small data operands.
2207         (arc_print_operand_address): Likewise.
2208         (arc_legitimate_address_p): Update, use
2209         legitimate_small_data_address_p.
2210         (arc_rewrite_small_data_p): Remove.
2211         (arc_rewrite_small_data_1): Likewise.
2212         (arc_rewrite_small_data): Likewise.
2213         (small_data_pattern): Likewise.
2214         (compact_sda_memory_operand): Update to use
2215         legitimate_small_data_address_p and get_symbol_alignment.
2216         (prepare_move_operands): Don't rewite sdata pattern.
2217         (prepare_extend_operands): Remove.
2218         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2219         pattern.
2220         (zero_extendqisi2): Likewise.
2221         (zero_extendhisi2): Likewise.
2222         (extendqihi2): Likewise.
2223         (extendqisi2): Likewise.
2224         (extendhisi2): Likewise.
2225         (addsi3): Likewise.
2226         (subsi3): Likewise.
2227         (andsi3): Likewise.
2228         * config/arc/constraints.md (Usd): Change it to memory constraint.
2230 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
2232         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2233         as source of std instructions.
2234         * config/arc/arc.md (movsi_insn): Update pattern predicate to
2235         allow 6-bit constants as source for store instructions.
2236         (movdi_insn): Update instruction pattern to allow 6-bit constants
2237         as source for store instructions.
2239 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
2241         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2243 2018-04-30  Nathan Sidwell  <nathan@acm.org>
2244             Sandra Loosemore <sandra@codesourcery.com>
2246         * dumpfile.c (dump_open): Allow '-' for stdout.
2247         * doc/invoke.texi (Developer Options): Document dump filename
2248         determination early.  Document stdin/stdout selection.
2250 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
2252         Microblaze Target: PIC data text relative
2254         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2255         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2256         Add declaration.
2257         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2258         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2259         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2260         New addressing mode for data-text relative position indepenedent code.
2261         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2262         'ADDRESS_SYMBOLIC_TXT_REL'.
2263         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2264         (microblaze_legitimate_pic_operand): Exclude function calls from
2265         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2266         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2267         addresses cases.
2268         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2269         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2270         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2271         for 'address + offset'.
2272         (microblaze_expand_prologue): Add new function prologue call for
2273         'r20' assignation.
2274         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2275         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2276         table in case of TARGET_PIC_DATA_TEXT_REL.
2277         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2278         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2279         Add new macros 'UNSPEC_TEXT',
2280         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2281         + exclude function calls from 'UNSPEC_PLT' in case of data text
2282         relative mode.
2283         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2284         new target hook for generating address diff vector tables in case of
2285         flag_pic.
2286         * doc/tm.texi : Regenerate.
2287         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2288         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2289         of addr diff vector generation.
2290         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2291         target hook definition.
2292         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2293         Add default function for generate_pic_addr_diff_vec -> flag_pic.
2294         * doc/invoke.texi (Add new pic option): Add new microblaze pic
2295         option for data text relative.
2297 2018-04-30  Richard Biener  <rguenther@suse.de>
2299         * tree-chrec.h (evolution_function_is_constant_p): Remove
2300         redundant check.
2301         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2303 2018-04-30  Richard Biener  <rguenther@suse.de>
2305         PR bootstrap/85571
2306         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2308 2018-04-30  Richard Biener  <rguenther@suse.de>
2310         PR tree-optimization/28364
2311         PR tree-optimization/85275
2312         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2313         copying first exit test.
2315 2018-04-28  Mark Wielaard  <mark@klomp.org>
2317         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2318         dwarf_version >= 5.
2319         (dwarf_AT): Handle DW_AT_addr_base.
2320         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2322 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
2324         PR target/84431
2325         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2326         (*ashl<dwi>3_doubleword_mask_1): Ditto.
2327         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2328         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2330 2018-04-28  Richard Biener  <rguenther@suse.de>
2332         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2333         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2334         to reflect use.  Only add interesting stmts.
2336 2018-04-27  Martin Jambor  <mjambor@suse.cz>
2338         PR ipa/85549
2339         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2340         the jump function allows for passing through aggregate values.
2342 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
2344         * input.h (in_system_header_at): Convert from macro to inline
2345         function.
2346         (from_macro_expansion_at): Likewise.
2347         (from_macro_definition_at): Likewise.
2349 2018-04-27  Jeff Law  <law@redhat.com>
2351         * config.gcc: Mark tile* targets as deprecated/obsolete.
2353 2018-04-27  Richard Biener  <rguenther@suse.de>
2355         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2356         fix for ILP32.
2358 2018-04-27  Richard Biener  <rguenther@suse.de>
2360         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2362 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
2364         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2365         with Yd constraint. Set "preferred_for_speed" attribute from
2366         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2367         with Yd constraint.
2368         (*movdi_internal): Ditto.
2369         (movti_interunit splitters): Remove
2370         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2371         (movdi_interunit splitters): Ditto.
2372         * config/i386/constraints.md (Ye): Remove.
2373         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2375 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2377         PR target/85512
2378         * config/aarch64/constraints.md (Usg): Limit to 31.
2379         (Usj): Limit to 63.
2381 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
2383         PR tree-optimization/85529
2384         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2385         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2386         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2387         zero extension or masking of the MSB bit.
2388         (optimize_range_tests): Add FIRST_BB argument, pass it through
2389         to optimize_range_tests_var_bound.
2390         (maybe_optimize_range_tests, reassociate_bb): Adjust
2391         optimize_range_tests callers.
2393 2018-04-26  Richard Biener  <rguenther@suse.de>
2394             Jakub Jelinek  <jakub@redhat.com>
2396         * cgraph.h (symbol_table): Just declare debug method here.
2397         * symtab.c (symbol_table::debug): Define.
2399 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
2401         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2403 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
2405         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2406         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2407         (*movdi_internal): Substitute Yi and Yj constraint with x
2408         and Ym and Yn constraint with y constraint.  Update "isa"
2409         attribute and set "preferred_for_speed" attribute from
2410         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2411         (*movsi_internal): Ditto.
2412         (*movdf_internal): Ditto.
2413         (*movsf_internal): Ditto.
2414         (*zero_extendsidi2): Ditto.
2415         * config/i386/sse.md (vec_set<mode>_0): Ditto.
2416         (sse2_loadld): Ditto.
2417         (*vec_extract<ssevecmodelower>_0): Ditto.
2418         (*vec_extractv4si_0_zext_sse4): Ditto.
2419         (vec_concatv2di): Ditto.
2420         (*vec_dup<mode>): Ditto.
2421         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2422         * config/i386/constraints.md (Yi): Remove.
2423         (Yj): Remove.
2424         (Ym): Remove.
2425         (Yn): Remove.
2427 2018-04-26  Nathan Sidwell  <nathan@acm.org>
2429         * dumpfile.c (dump_open): New.
2430         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2431         (dump_finish): Detect stdio/stderr by value not name.
2433 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
2435         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2437 2018-04-26  Tom de Vries  <tom@codesourcery.com>
2439         PR target/84952
2440         * config/nvptx/nvptx.c (verify_neutering_jumps)
2441         (verify_neutering_labels): New function
2442         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2444 2018-04-26  Tom de Vries  <tom@codesourcery.com>
2446         PR target/84025
2447         * config/nvptx/nvptx.c (needs_neutering_p): New function.
2448         (nvptx_single): Use needs_neutering_p to skip over insns that do not
2449         need neutering.
2451 2018-04-26  Richard Biener <rguenther@suse.de>
2452             Tom de Vries  <tom@codesourcery.com>
2454         PR lto/85422
2455         * lto-streamer-out.c (output_function): Fixup loops if required to match
2456         discovery done in the reader.
2458 2018-04-26  Richard Biener  <rguenther@suse.de>
2460         PR tree-optimization/85116
2461         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2462         have a loop exit from the single latch predecessor.  Remove
2463         case of header with just condition.
2464         (ch_base::copy_headers): Exclude infinite loops from any
2465         processing.
2466         (pass_ch::execute): Record exits.
2468 2018-04-26  Richard Biener  <rguenther@suse.de>
2470         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2471         prologue cost vector and pass it to vect_get_load_cost.
2472         (vect_get_peeling_costs_all_drs): Likewise.
2473         (vect_peeling_hash_get_lowest_cost): Likewise.
2474         (vect_enhance_data_refs_alignment): Likewise.
2476 2018-04-26  Richard Biener  <rguenther@suse.de>
2478         PR middle-end/85450
2479         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2480         checking of integer<->pointer conversions.
2481         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2482         sign-/zero-extending pointer types.
2483         (expand_omp_for_static_chunk): Likewise.
2485 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
2486             Jean Lee  <xiaoyur347@gmail.com>
2488         * config/mips/mips.c (mips_asan_shadow_offset): New function.
2489         (TARGET_ASAN_SHADOW_OFFSET): Define.
2490         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2491         true for -fsanitize=address.
2493 2018-04-25  Mark Wielaard  <mark@klomp.org>
2495         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2496         shorter ones.
2498 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
2500         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2501         than "alu", remove explicit "memory" and "imm_disp" attributes.
2502         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2504         PR middle-end/85414
2505         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2506         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2507         gen_lowpart_no_emit.
2509 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
2511         PR target/85473
2512         * config/i386/i386.c (ix86_expand_builtin): Change memory
2513         operand to XI, extend p0 to Pmode.
2514         * config/i386/i386.md: Change unspec volatile and operand
2515         1 mode to XI, change operand 0 mode to P.
2517 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2519         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2520         GET_MODE_MASK before any checking.
2521         (nds32_can_use_bset_p): Likewise.
2522         (nds32_can_use_btgl_p): Likewise.
2524 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2526         * config/nds32/nds32-doubleword.md: New define_split pattern for
2527         illegal register number.
2529 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2531         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2533 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
2535         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2537 2018-04-25  Richard Biener  <rguenther@suse.de>
2539         * lto-streamer.h (LTO_major_version): Bump to 8.
2541 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
2543         * BASE-VER: Set to 9.0.0.
2545 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
2547         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2548         in __abskf2 and __powikf2.
2550 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2552         PR target/85512
2553         * config/aarch64/constraints.md (Usg, Usj): New constraints.
2554         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2555         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2556         Use the above on operand 2.  Reindent.
2557         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2559 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2561         PR target/85485
2562         * common/config/i386/i386-common.c (ix86_handle_option): Don't
2563         handle OPT_mcet.
2564         * config/i386/i386.opt (mcet): Removed.
2565         * doc/install.texi: Remove -mcet documentation.
2566         * doc/invoke.texi: Likewise.
2568 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2570         PR target/85485
2571         * doc/install.texi: Remove -mcet from bootstrap-cet.
2573 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2575         PR target/85511
2576         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2577         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2578         if TARGET_64BIT.
2580         PR target/85503
2581         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2582         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2583         containing a CONST_VECTOR.
2585 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
2587         * doc/install.texi: Update newlib dependency for nvptx.
2589 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2591         PR target/85508
2592         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2593         instead of INTVAL when shifting x left.
2595 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
2597         PR tree-optimization/85478
2598         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2599         vect_grouped_store_supported for single element vectors.
2601 2018-04-24  Richard Biener  <rguenther@suse.de>
2603         PR target/85491
2604         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2605         load cost increase to the case of non-constant step.
2607 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
2609         PR target/84828
2610         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2611         destination if any_malformed_asm.
2613 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
2615         PR middle-end/85496
2616         * expr.c (store_field): In the bitfield case, if the value comes from
2617         a function call and is returned in registers by means of a PARALLEL,
2618         do not change the mode of the temporary unless BLKmode and VOIDmode.
2620 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
2622         PR rtl-optimization/85423
2623         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2624         dependencies to debug insns when the previous insn is non-debug.
2626 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
2628         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2629         enums into a single definition.
2630         (fls): Fix predicates and printing.
2631         (seti): Likewise.
2633 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
2635         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2636         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2637         and short u6 immediate.
2638         (check_if_valid_sleep_operand): Remove.
2639         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2641 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2643         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2644         flag_always_save_lp condition.
2645         * config/nds32/nds32.opt (malways-save-lp): New option.
2647 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2649         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2650         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2651         * config/nds32/nds32.h
2652         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2653         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2655 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2657         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2658         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2660 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
2661             Chung-Ju Wu  <jasonwucj@gmail.com>
2663         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2664         Declare.
2665         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2666         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2668 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2670         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2672 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2674         * config/nds32/nds32-protos.h (nds32_data_alignment,
2675         nds32_local_alignment): Declare.
2676         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2677         nds32_local_alignment): New functions.
2678         (TARGET_CONSTANT_ALIGNMENT): Define.
2679         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2681 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2683         * config/nds32/nds32.c
2684         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2685         (TARGET_MODES_TIEABLE_P): Likewise.
2687 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
2689         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2690         level Ofast and Og.
2692 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
2693             Chung-Ju Wu  <jasonwucj@gmail.com>
2695         * config/nds32/constants.md (unspec_volatile_element): Add enum values
2696         for unaligned access.
2697         * config/nds32/nds32-intrinsic.c: Implementation of expanding
2698         unaligned access.
2699         * config/nds32/nds32-intrinsic.md: Likewise.
2700         * config/nds32/nds32_intrinsic.h: Likewise.
2701         * config/nds32/nds32.h (nds32_builtins): Likewise.
2702         * config/nds32/nds32.opt (munaligned-access): New option.
2703         * config/nds32/nds32.c (nds32_asm_file_start): Display
2704         flag_unaligned_access status.
2706 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
2708         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2709         -mno-relax is present.
2710         * config/riscv/linux.h (LINK_SPEC): Ditto.
2712 2018-04-20  Martin Sebor  <msebor@redhat.com>
2714         PR c/85365
2715         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2716         for null pointers.
2717         (gimple_fold_builtin_stxcpy_chk): Same.
2718         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2720 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
2722         PR target/85456
2723         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2724         __powikf2 when long double is IEEE 128-bit.
2726 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
2728         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2729         step to make sure stack always aligned.
2731 2018-04-20  Carl Love  <cel@us.ibm.com>
2733         PR target/83402
2734         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2735         size check for arg0.
2737 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
2738             Tom de Vries  <tom@codesourcery.com>
2740         PR target/85445
2741         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2742         Emit insns for calls too.
2743         (nvptx_find_par): Always look for worker-level predecessor insn.
2744         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
2745         calls.
2746         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2747         (nvptx_process_pars): Propagate frames for calls.
2749 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
2751         PR target/85469
2752         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2753         Removed.
2754         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2755         (ix86_handle_option): Don't handle OPT_mibt.
2756         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2757         __SHSTK__.
2758         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2759         has_ibt and ibt.
2760         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2761         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2762         (ix86_target_macros): Define __CET__ with flag_cf_protection
2763         for -fcf-protection.
2764         * config/i386/i386.c (isa2_opts): Remove -mibt.
2765         * config/i386/i386.h (TARGET_IBT): Removed.
2766         (TARGET_IBT_P): Likewise.
2767         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2768         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2769         * config/i386/i386.opt (mcet): Update help message.
2770         (mshstk): Likewise.
2771         (mibt): Removed.
2772         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
2773         -mcet as an alias for -mshstk.
2775 2018-04-20  Richard Biener <rguenther@suse.de>
2777         PR middle-end/85475
2778         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2779         complexity by forcing a single use of the multiply operand.
2781 2018-04-20  Martin Jambor  <mjambor@suse.cz>
2783         ipa/85449
2784         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2785         recursion dependency to only apply to non-clones.
2787 2018-04-20  Martin Jambor  <mjambor@suse.cz>
2789         ipa/85447
2790         * ipa-cp.c (create_specialized_node): Check that clones of
2791         self-recursive edges exist during IPA-CP.
2793 2018-04-19  Toon Moene  <toon@moene.org>
2795         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2796         by -O3. 
2798 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2800         PR tree-optimization/85467
2801         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2802         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
2803         VECTOR_CST element to type.
2805 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2807         PR target/85397
2808         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2809         * config/i386/i386.md (builtin_setjmp_setup): Removed.
2810         (builtin_longjmp): Likewise.
2811         (save_stack_nonlocal): New pattern.
2812         (restore_stack_nonlocal): Likewise.
2814 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2816         PR target/85404
2817         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2818         Replace ASM_OUTPUT_LABEL with fprintf.
2820 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
2822         PR target/85417
2823         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2824         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2825         * config/i386/i386-c.c (ix86_target_macros_internal): Also
2826         define __IBT__ and __SHSTK__ for -fcf-protection.
2827         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2828         TARGET_IBT.
2829         (ix86_trampoline_init): Likewise.
2830         (x86_output_mi_thunk): Likewise.
2831         (ix86_notrack_prefixed_insn_p): Likewise.
2832         (ix86_option_override_internal): Don't disallow -fcf-protection.
2833         * config/i386/i386.md (rdssp<mode>): Also enable for
2834         -fcf-protection.
2835         (incssp<mode>): Likewise.
2836         (nop_endbr): Likewise.
2837         * config/i386/i386.opt (mcet): Change help message to built-in
2838         functions only.
2839         (mibt): Likewise.
2840         (mshstk): Likewise.
2841         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2842         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
2843         enable CET built-in functions.
2845 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
2847         * common/config/i386/i386-common.c 
2848         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2849         OPTION_MASK_ISA_MOVDIRI_UNSET,
2850         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2851         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2852         * config.gcc (movdirintrin.h): New header.
2853         * config/i386/cpuid.h (bit_MOVDIRI,
2854         bit_MOVDIR64B): New bits.
2855         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2856         and -mmvodir64b.
2857         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2858         (VOID, PVOID, PCVOID)): New function types.
2859         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2860         __builtin_ia32_directstoreu_u64,
2861          __builtin_ia32_movdir64b): New builtins.
2862         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2863         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2864         and -mmovdiri.
2865         (ix86_valid_target_attribute_inner_p): Ditto.
2866         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2867         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2868         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2869         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2870         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2871         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2872         (movdiri<mode>, movdir64b_<mode>): New.
2873         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2874         * config/i386/immintrin.h: Include movdirintrin.h.
2875         * config/i386/movdirintrin.h: New file.
2876         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2878 2018-04-19  Richard Biener  <rguenther@suse.de>
2880         PR middle-end/85455
2881         * cfg.c (clear_bb_flags): When loop state says we have
2882         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2884 2018-04-19  Richard Biener  <rguenther@suse.de>
2886         PR tree-optimization/84737
2887         * tree-vect-data-refs.c (vect_copy_ref_info): New function
2888         copying restrict info.
2889         (vect_setup_realignment): Use it.
2890         * tree-vectorizer.h (vect_copy_ref_info): Declare.
2891         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2892         the first DR to all generated stores.
2893         (vectorizable_load): Likewise for loads.
2895 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2897         PR tree-optimization/85446
2898         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2899         the integral and pointer types to have the same precision.
2901         * doc/install.texi: Document --disable-cet being the default and
2902         --enable-cet=auto.
2904 2018-04-18  Martin Liska  <mliska@suse.cz>
2906         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2907         style.
2909 2018-04-18  Martin Liska  <mliska@suse.cz>
2911         Revert
2912         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2914         PR ipa/83983
2915         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2916         arguments if they are comparable.
2918 2018-04-18  Martin Liska  <mliska@suse.cz>
2920         Revert
2921         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
2923         PR lto/84805
2924         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2925         incomplete types.
2927 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
2929         PR target/85388
2930         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2931         ENDBR after calling __morestack.
2933 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
2935         PR jit/85384
2936         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2937         by using gcc_base_ver to generate a gcc_driver_version, and use
2938         it when generating GCC_DRIVER_NAME.
2939         * configure: Regenerate.
2941 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
2943         PR target/81084
2944         * config.gcc: Obsolete powerpc*-*-*spe*.
2946 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2948         PR debug/84637
2949         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2950         (stabstr_D): Change type of unum from unsigned int to
2951         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
2952         type.
2954 2018-04-17  Jim Wilson  <jimw@sifive.com>
2956         PR 84856
2957         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2958         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2959         Set arg_pointer_offset after using pretend_args_size.
2961 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2963         PR rtl-optimization/85431
2964         * dse.c (record_store): Ignore zero width stores.
2966         PR sanitizer/85230
2967         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
2968         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2969         __builtin_stack_restore rather than after it.
2970         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2971         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2972         argument instead of virtual_dynamic_stack_rtx.
2974 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2976         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2977         New prototype.
2978         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2979         Add note to error message to explain internal mapping of overloaded
2980         built-in function name to non-overloaded built-in function name.
2981         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2982         function.
2984 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
2986         PR target/85424
2987         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2988         where the inputs overlap with the output.
2990 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
2992         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2993         (=v, v) alternative and explicit "memory" attribute.
2994         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
2995         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2996         attributes.
2997         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2998         "sselog1" type instead of "sselog".
2999         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
3000         "sselog".  Remove explicit "memory" attribute.
3001         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
3002         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
3003         attributes.
3004         (vec_extract_hi_v32hi): Merge all alternatives into one, use
3005         "sselog1" type instead of "sselog".  Remove explicit "memory"
3006         attribute.
3007         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
3008         use "sselog1" type instead of "sselog".  Remove explicit "memory"
3009         attribute.
3010         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
3011         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
3012         attributes.
3013         (vec_extract_hi_v64qi): Merge all alternatives into one, use
3014         "sselog1" type instead of "sselog".  Remove explicit "memory"
3015         attribute.
3016         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
3017         use "sselog1" type instead of "sselog".  Remove explicit "memory"
3018         attribute.
3020         PR target/85430
3021         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
3023         PR middle-end/85414
3024         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
3025         on a SUBREG.
3027 2018-04-17  Martin Jambor  <mjambor@suse.cz>
3029         PR ipa/85421
3030         * ipa-cp.c (create_specialized_node): Call
3031         expand_all_artificial_thunks if necessary.
3033 2018-04-17  Martin Liska  <mliska@suse.cz>
3035         PR lto/85405
3036         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
3037         in message, remote space in between '_G' and '('.
3039 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
3041         PR target/85281
3042         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
3043         avx512f_vmcmp<mode>3<round_saeonly_name>,
3044         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
3045         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
3046         avx512f_rndscale<mode><round_saeonly_name>,
3047         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
3048         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
3049         Use %<iptr>2 instead of %2 for -masm=intel.
3050         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
3051         avx512f_vcvttss2usi<round_saeonly_name>,
3052         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
3053         -masm=intel.
3054         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
3055         avx512f_vcvttsd2usi<round_saeonly_name>,
3056         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
3057         Use %q1 instead of %1 for -masm=intel.
3058         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
3059         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
3060         of %3 for -masm=intel.
3061         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
3062         -masm=intel.
3063         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
3064         -masm=intel.
3065         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
3066         -masm=intel.
3067         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
3068         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
3069         %g1.
3070         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
3071         -masm=intel.
3072         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
3073         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
3074         %g1 and one with %0 and %1.
3075         (avx512er_vmrcp28<mode><round_saeonly_name>,
3076         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
3077         %1 for -masm=intel.
3078         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
3079         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
3080         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
3081         of %0 and %{%4%} for -masm=intel.
3082         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
3083         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
3084         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
3085         order of %0 and %{%5%}%{z%} for -masm=intel.
3087 2018-04-17  Jan Hubicka  <jh@suse.cz>
3089         PR lto/85405
3090         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
3092 2018-04-17  Martin Liska  <mliska@suse.cz>
3094         PR ipa/85329
3095         * multiple_target.c (create_dispatcher_calls): Set apostrophes
3096         for target_clone error message.  Make default implementation
3097         clone to be a local declaration.
3098         (separate_attrs): Add new argument and check for an empty
3099         string.
3100         (expand_target_clones): Handle it.
3101         (ipa_target_clone): Make redirection just for target_clones
3102         functions.
3104 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
3105             Tom de Vries  <tom@codesourcery.com>
3107         PR middle-end/84955
3108         * omp-expand.c (expand_oacc_for): Add dummy false branch for
3109         tiled basic blocks without omp continue statements.
3111 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
3113         PR target/83660
3114         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
3115         vec_extract expression as having side effects to make sure it gets
3116         a cleanup point.
3118 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
3120         PR target/85403
3121         * config/i386/i386.c (get_builtin_code_for_version): Check
3122         error_mark_node.
3124 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
3126         PR target/84331
3127         * gcc/config.gcc: Support "skylake".
3128         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
3129         PROCESSOR_SKYLAKE.
3130         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
3131         (processor_target_table): Add "skylake".
3132         (ix86_option_override_internal): Add "skylake".
3133         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
3134         PROCESSOR_CANNONLAKE.
3135         (get_builtin_code_for_version): Fix priority for
3136         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
3137         PROCESSOR_SKYLAKE-AVX512.
3138         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
3139         (processor_type): Add PROCESSOR_SKYLAKE.
3141 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
3142             Jason Merrill  <jason@redhat.com>
3144         PR c++/85112
3145         * convert.c (convert_to_integer_1): Use direct recursion for
3146         enumeral types and types with a precision less than the number
3147         of bits in their mode.
3149 2018-04-16  Julia Koval  <julia.koval@intel.com>
3151         PR target/84413
3152         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
3153         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
3155 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
3157         PR target/85293
3158         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
3159         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
3160         and -mno-direct-move.
3162 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
3164         PR target/83402
3165         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
3166         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
3167         Ensure negative shifts result in {0}.
3169 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
3171         PR rtl-optimization/79916
3172         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
3173         regs (if any) to define how to gnerate SD moves when LRA is in
3174         progress.
3176 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
3178         PR rtl-optimization/85393
3179         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
3180         * except.c (expand_dw2_landing_pad_for_region): Make static.
3181         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
3182         a label and unconditional jump to old_bb, rather than
3183         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
3184         basic block.
3186         PR rtl-optimization/85376
3187         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
3188         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
3189         instead of a specific value.
3191 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
3192             Bin Cheng  <bin.cheng@arm.com>
3194         PR tree-optimization/82965
3195         PR tree-optimization/83991
3196         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
3197         by_profile_only parameter.
3198         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
3199         information if the loop was predicted to iterate too many times.
3200         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
3202 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
3204         PR lto/71991
3205         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3206         always inline.
3208 2018-04-13  Martin Liska  <mliska@suse.cz>
3209             Jakub Jelinek  <jakub@redhat.com>
3211         PR middle-end/81657
3212         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3213         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3214         * builtins.c (expand_builtin_memory_copy_args): Use
3215         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3216         handle dest_addr == pc_rtx.
3218 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
3220         PR target/85291
3221         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3222         asked to not generate direct moves.
3223         (fix_trunc<mode>si2_stfiwx): Similar.
3224         (fix_trunc<mode>si2_internal): Similar.
3226 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3228         PR debug/83157
3229         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3230         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3231         lookup if dest in some wider mode is known to be const0_rtx and
3232         if so, record permanent equivalence for it to be ZERO_EXTEND of
3233         the narrower mode destination.
3235 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
3237         * lto-streamer-out.c (output_function): Revert 259346.
3238         * omp-expand.c (expand_oacc_for): Likewise.
3240 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
3242         PR rtl-optimization/85354
3243         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3244         * sel-sched.c (sel_global_init): ... here.
3246 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
3248         PR target/85238
3249         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3250         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3251         mode for PE-COFF targets.
3252         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3253         (i386_pe_asm_lto_end): Likewise.
3254         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3255         (TARGET_ASM_LTO_END): Likewise.
3256         * config/i386/winnt.c (saved_debug_info_level): New static variable.
3257         (i386_pe_asm_lto_start): New function.
3258         (i386_pe_asm_lto_end): Likewise.
3260 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
3261             Richard Biener  <rguenther@suse.de>
3263         PR middle-end/84955
3264         * lto-streamer-out.c (output_function): Fix CFG loop state before
3265         streaming out.
3266         * omp-expand.c (expand_oacc_for): Handle calls to internal
3267         functions like regular functions.
3269 2018-04-12  Richard Biener  <rguenther@suse.de>
3271         PR lto/85371
3272         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3273         for the early LTO debug to properly generate references to it
3274         during DIE emission.  Do not re-use that for the skeleton for
3275         split-dwarf.
3276         (dwarf2out_early_finish): Likewise.
3278 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3280         PR target/85328
3281         * config/i386/sse.md
3282         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3283         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3284         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3285         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3286         and output is a reg, avoid creating invalid lowpart subreg, but
3287         instead split into a 512-bit move.  Don't split if not AVX512VL,
3288         input is xmm16+ reg and output is a mem.
3289         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3290         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3291         xmm16+ reg and output is a mem.
3293 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3295         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3296         also for flag_dwarf2_cfi_asm.
3298 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
3300         PR rtl-optimization/85342
3301         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3302         a bool scalar var inside of the loop instead.  Don't try to update
3303         recog_data.operand after failed apply_change_group.
3305 2018-04-12  Tom de Vries  <tom@codesourcery.com>
3307         PR target/85296
3308         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3309         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
3310         array with flexible array member as array without given dimension.
3311         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3312         argument for undefined param to true.
3314 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
3316         PR target/85321
3317         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3318         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3319         from PowerPC section.
3320         * config/rs6000/sysv4.opt (mcall-): Improve help text.
3321         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3322         help text that is too long.
3323         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3324         help text that is too long.
3325         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3326         help text that is too long.
3328 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
3330         * config/alpha/alpha.md (stack_probe_internal): Rename
3331         from "probe_stack".  Update all callers.
3333 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3335         PR rtl-optimization/84566
3336         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3337         sched_macro_fuse_insns.
3339 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3341         PR target/84301
3342         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3343         (compute_block_dependences): ... from here.
3345 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3347         PR tree-optimization/85331
3348         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3349         from int to HOST_WIDE_INT.
3351 2018-04-11  Martin Jambor  <mjambor@suse.cz>
3353         PR ipa/84149
3354         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3355         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3356         not the same as the source val.
3357         (cgraph_edge_brings_value_p): New parameter.
3358         (gather_edges_for_value): Pass destination value to
3359         cgraph_edge_brings_value_p.
3360         (perhaps_add_new_callers): Likewise.
3361         (get_info_about_necessary_edges): Likewise and exclude values brought
3362         only by self-recursive edges.
3363         (create_specialized_node): Redirect only clones of self-calling edges.
3364         (+self_recursive_pass_through_p): New function.
3365         (find_more_scalar_values_for_callers_subset): Use it.
3366         (find_aggregate_values_for_callers_subset): Likewise.
3367         (known_aggs_to_agg_replacement_list): Removed.
3368         (decide_whether_version_node): Re-calculate known constants for all
3369         remaining context clones.
3371 2018-04-11  Richard Biener  <rguenther@suse.de>
3373         PR lto/85339
3374         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3375         from early DWARF output.
3376         (dwarf2out_early_finish): Output line info unconditionally into
3377         early DWARF and add reference to it.
3379 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3381         PR target/85281
3382         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3383         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3384         other than V2DFmode using iptr mode attribute.
3385         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3387 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
3389         PR rtl-optimization/84659
3390         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3392 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
3394         PR debug/85302
3395         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3396         SIZEP is NULL.
3397         (output_loc_list): Pass address of a dummy size variable even in the
3398         locview handling loop.
3399         (index_location_lists): Add comment on why skip_loc_list_entry can't
3400         call size_of_locs.
3402 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3404         PR target/85261
3405         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3406         into register.
3408 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
3410         PR target/85321
3411         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3412         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3413         and -mstring-compare-inline-limit.
3415 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3417         PR target/85287
3418         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3419         for stack clash protection in a register whenever we need it to be in
3420         a register.
3422 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3424         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3425         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3427 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
3429         PR target/85321
3430         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3431         the help text.
3432         (mlong-double-): Ditto.
3433         * config/rs6000/sysv4.opt (msdata=): Ditto.
3434         (mtls-size=): Ditto.
3436 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3438         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3439         erroneous entries for
3440         "vector int vec_ldl (int, long int *)", and
3441         "vector unsigned int vec_ldl (int, unsigned long int *)".
3442         Add comments and entries for
3443         "vector bool char vec_ldl (int, bool char *)",
3444         "vector bool short vec_ldl (int, bool short *)",
3445         "vector bool int vec_ldl (int, bool int *)",
3446         "vector bool long long vec_ldl (int, bool long long *)",
3447         "vector pixel vec_ldl (int, pixel *)",
3448         "vector long long vec_ldl (int, long long *)",
3449         "vector unsigned long long vec_ldl (int, unsigned long long *)".
3450         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3451         type tree bool_long_long_type_node and correct definition of
3452         bool_V2DI_type_node to make reference to this new type tree.
3453         (rs6000_mangle_type): Replace erroneous reference to
3454         bool_long_type_node with bool_long_long_type_node.
3455         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3456         comments to emphasize sign distinctions for char and int types and
3457         replace RS6000_BTI_bool_long constant with
3458         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
3459         use of RS6000_BTI_pixel.
3460         (bool_long_type_node): Remove this macro definition.
3461         (bool_long_long_type_node): New macro definition
3463 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
3465         PR rtl-optimization/85300
3466         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3467         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3468         simplify_unary_operation fails.
3470 2018-04-10  Martin Liska  <mliska@suse.cz>
3472         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3473         cgraph_edge and ipa_ref.
3475 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
3477         PR target/85177
3478         PR target/85255
3479         * config/i386/sse.md
3480         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3481         computation of the VEC_MERGE selector from mask.
3482         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3483         Fix decoding of the VEC_MERGE selector into mask.
3485 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
3487         PR tree-optimization/85286
3488         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3490 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
3492         * final.c (final_1): Set insn_last_address as well as
3493         insn_current_address.
3495 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3497         PR target/85173
3498         * explow.c (emit_stack_probe): Call validize_mem on memory location
3499         before passing it to gen_probe_stack.  Create address operand and
3500         legitimize it for the probe_stack_address case.
3502 2018-04-09  Jan Hubicka  <jh@suse.cz>
3504         PR lto/85078
3505         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3506         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3507         * tree.c (free_lang_data_in_type): Fix handling of binfos;
3508         walk basetypes.
3509         (free_lang_data): Rebuild type inheritance graph.
3511 2018-04-09  Martin Sebor  <msebor@redhat.com>
3513         * invoke.texi (-finline-small-functions): Mention other optimization
3514         options.
3515         (-findirect-inlining, -fpartial-inlining): Same.
3516         (-finline-functions-called-once): Same.
3517         (-freorder-blocks-and-partition): Same.
3519 2018-04-09  Jan Hubicka  <jh@suse.cz>
3521         PR rtl/84058
3522         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3523         jumps; choose last target that matches the criteria (i.e.
3524         no partition changes for non-crossing jumps).
3525         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3526         support for redirecting crossing jumps to non-crossing.
3528 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
3530         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3531         also for naked functions.
3533 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
3535         * config/arc/arc.md (add_shift): New pattern.
3536         (add_shift2): Likewise.
3537         (sub_shift): Likewise.
3538         (sub_shift_cmp0_noout): Likewise.
3539         (compare_si_ashiftsi): Likewise.
3540         (xbfu_cmp0_noout): New combine pattern.
3541         (xbfu_cmp0"): Likewise.
3542         (movsi_set_cc_insn): Place the predicable variant first.
3543         (commutative_binary_cmp0_noout): Remove clobber.
3544         (commutative_binary_cmp0): New pattern.
3545         (noncommutative_binary_cmp0): Likewise.
3546         (noncommutative_binary_cmp0_noout): Likewise.
3547         (noncommutative_binary_comparison_result_used): Removed.
3548         (rsub_cmp0): New pattern.
3549         (rsub_cmp0_noout): Likewise.
3550         (extzvsi): Changed, keep only meaningful variants.
3551         (SQH, SEZ): New iterators.
3552         (SQH_postfix): New mode attribute.
3553         (SEZ_prefix): New code attribute.
3554         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3555         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3556         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3557         of numerical value.
3558         (noncommutative_operator): Check the availability of barrel
3559         shifter option.
3561 2018-04-09  Richard Biener  <rguenther@suse.de>
3563         PR tree-optimization/85284
3564         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3565         Only use the niter constraining form of simple_iv when the exit
3566         is always executed.
3568 2018-04-09  Tom de Vries  <tom@codesourcery.com>
3570         PR target/84041
3571         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3572         (define_expand "*memory_barrier"): New define_expand.
3573         (define_insn "memory_barrier"): New insn.
3575 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3577         PR rtl-optimization/80463
3578         PR rtl-optimization/83972
3579         PR rtl-optimization/83480
3581         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3582         correct producer for the insn.
3583         (tidy_control_flow): Fixup seqnos in case of debug insns.
3585 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3587         PR rtl-optimization/83913
3589         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3590         different sched-times when merging exprs.
3592 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3594         PR rtl-optimization/83962
3596         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3597         tidy_fallthru_edge and tidy_control_flow.
3599 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
3601         PR rtl-optimization/83530
3603         * sel-sched.c (force_next_insn): New global variable.
3604         (remove_insn_for_debug): When force_next_insn is true, also leave only
3605         next insn in the ready list.
3606         (sel_sched_region): When the region wasn't scheduled, make another pass
3607         over it with force_next_insn set to 1.
3609 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
3611         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3612         into tm_file.
3613         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3614         for interrupt control.
3615         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3616         functions for interrupt control.
3617         * config/nds32/nds32-intrinsic.md: Likewise.
3618         * config/nds32/nds32_intrinsic.h: Likewise.
3619         * config/nds32/nds32.h (nds32_builtins): Likewise.
3621 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
3623         * config/nds32/nds32.c (nds32_init_machine_status,
3624         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3625         strict_aligned_p field.
3626         (nds32_expand_to_rtl_hook): New function.
3627         (TARGET_EXPAND_TO_RTL_HOOK): Define.
3628         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3630 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3631             Chung-Ju Wu  <jasonwucj@gmail.com>
3633         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3634         * config/nds32/nds32-n7.md: New file.
3635         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3636         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3637         pipeline.
3638         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3639         * config/nds32/nds32.md (pipeline_model): Add n7.
3640         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3641         * config/nds32/pipelines.md: Include n7 settings.
3643 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3644             Chung-Ju Wu  <jasonwucj@gmail.com>
3646         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3647         * config/nds32/nds32-e8.md: New file.
3648         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3649         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3650         pipeline.
3651         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3652         * config/nds32/nds32.md (pipeline_model): Add e8.
3653         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3654         * config/nds32/pipelines.md: Include e8 settings.
3656 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3657             Chung-Ju Wu  <jasonwucj@gmail.com>
3659         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3660         * config/nds32/nds32-n8.md: New file.
3661         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3662         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3663         pipeline.
3664         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3665         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3666         * config/nds32/nds32.md (pipeline_model): Add n8.
3667         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3668         * config/nds32/pipelines.md: Include n8 settings.
3670 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
3671             Chung-Ju Wu  <jasonwucj@gmail.com>
3673         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3674         * config/nds32/nds32-n9-2r1w.md: New file.
3675         * config/nds32/nds32-n9-3r2w.md: New file.
3676         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3677         nds32_register_ports): New or modify for cpu n9.
3678         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3679         pipeline.
3680         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3681         * config/nds32/nds32-utils.c: New file.
3682         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3683         TARGET_MUL_SLOW): Define.
3684         * config/nds32/nds32.md (pipeline_model): New attribute.
3685         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3686         New options that support cpu n9.
3687         * config/nds32/pipelines.md: Include n9 settings.
3688         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3690 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
3692         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3693         information if necessary.
3694         (output_cond_branch_compare_zero): Likewise.
3695         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3696         (nds32_target_alignment): Refine for alignment.
3697         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3698         (FUNCTION_BOUNDARY): Modify.
3699         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3700         align case.
3701         * config/nds32/nds32.opt (malways-align, malign-functions): New.
3703 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
3705         * config/nds32/constants.md (unspec_volatile_element): Add values for
3706         TLB operation and data prefetch.
3707         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3708         functions for TLB operation and data prefetch.
3709         * config/nds32/nds32-intrinsic.md: Likewise.
3710         * config/nds32/nds32_intrinsic.h: Likewise.
3711         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3712         (nds32_print_operand): Likewise.
3713         * config/nds32/nds32.h (nds32_builtins): Likewise.
3715 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
3716         Andrew Pinski <pinsika@gcc.gnu.org>
3718         PR middle-end/82976
3719         * match.pd: Use constant_boolean_node of correct type instead of
3720         boolean_true_node or boolean_false_node for simplifying
3721         pointer comparisons to zero.
3723 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
3725         PR tree-optimization/80021
3726         * tree.c (verify_type_variant): Make error call in verify_variant_match
3727         translatable and remove final full stop.
3729 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3731         * config/nds32/constants.md (unspec_volatile_element): Add
3732         UNSPEC_VOLATILE_EH_RETURN.
3733         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3734         nds32_output_stack_pop): Support dwarf exception handling process.
3735         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3736         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3737         exception handling process.
3738         (nds32_compute_stack_frame): Likewise.
3739         (nds32_return_addr_rtx): Likewise.
3740         (nds32_initial_elimination_offset): Likewise.
3741         (nds32_expand_prologue): Likewise.
3742         (nds32_expand_epilogue): Likewise.
3743         (nds32_dynamic_chain_address): New function.
3744         * config/nds32/nds32.h (machine_function): Add fields for dwarf
3745         exception handling.
3746         (DYNAMIC_CHAIN_ADDRESS): Define.
3747         (EH_RETURN_DATA_REGNO): Define.
3748         (EH_RETURN_STACKADJ_RTX): Define.
3749         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3750         patterns for dwarf exception handling.
3752 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3754         * config/nds32/nds32.h: Clean up obsolete macros.
3756 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3758         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3759         Add enum values for particular instructions.
3760         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3761         particular intrinsic functions.
3762         * config/nds32/nds32-intrinsic.md: Likewise.
3763         * config/nds32/nds32_intrinsic.h: Likewise.
3764         * config/nds32/nds32.h (nds32_builtins): Likewise.
3765         * config/nds32/nds32.md (type): Add pbsad and pbsada.
3766         (btst, ave): New patterns for particular instructions.
3768 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3770         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3771         Add enum values for atomic load/store and memory sync.
3772         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3773         and memory sync.
3774         * config/nds32/nds32-intrinsic.md: Likewise.
3775         * config/nds32/nds32_intrinsic.h: Likewise.
3776         * config/nds32/nds32.h (nds32_builtins): Likewise.
3778 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
3780         PR tree-optimization/85257
3781         * fold-const.c (native_encode_vector): If not all elts could fit
3782         and off is -1, return 0 rather than offset.
3783         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3784         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3785         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
3786         adjust buffer in native_interpret_expr call.
3788 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3790         * config/nds32/constants.md (unspec_volatile_element): Add cache
3791         control enum values.
3792         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3793         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3794         * config/nds32/nds32.c (nds32_cctl_names): New.
3795         (nds32_print_operand): Handle cache control register names.
3796         * config/nds32/nds32.h (nds32_builtins): New enum values.
3797         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3798         macros.
3799         * config/nds32/nds32.md (type): Add mmu.
3800         * config/nds32/pipelines.md (simple_insn): Add mmu.
3802 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3804         * config/nds32/nds32.md (type): Remove call.
3805         * config/nds32/pipelines.md (simple_insn): Likewise.
3807 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3809         * config/nds32/constants.md (unspec_volatile_element): Add
3810         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3811         UNSPEC_VOLATILE_FMFCFG.
3812         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3813         description for fmfcfg and fmfcsr.
3814         (bdesc_1arg): Add fmtcsr.
3815         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3816         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3817         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3818         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3819         unspec_fmfcfg): New patterns.
3820         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3821         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3822         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3823         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3824         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3825         __nds32__fmfcfg): Define.
3827 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
3829         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3830         intrinsic register names.
3831         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3832         intrinsic register enum values and macros.
3834 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
3836         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3837         for load/store addressing form.
3838         (nds32_print_operand_address): Likewise.
3840 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
3842         PR target/85196
3843         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3844         based on LABEL_REF.  Remove useless assertion.
3845         (pic_address_needs_scratch): Fix formatting.
3846         (sparc_legitimize_pic_address): Minor tweaks.
3847         (sparc_delegitimize_address): Adjust assertion accordingly.
3848         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3849         into symbolic_operand.
3850         (movsi_high_pic_label_ref): Likewise.
3851         (movsi_lo_sum_pic_label_ref): Likewise.
3852         (movdi_pic_label_ref): Likewise.
3853         (movdi_high_pic_label_ref): Likewise.
3854         (movdi_lo_sum_pic_label_ref): Likewise.
3856 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
3858         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3859         custom LIB_SPEC setup.
3861 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
3862             Kito Cheng  <kito.cheng@gmail.com>
3864         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3865         * config/riscv/freebsd.h: New.
3867 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3869         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3870         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3871         file.
3873 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3874             Kito Cheng  <kito.cheng@gmail.com>
3876         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3877         nds32_output_call, nds32_symbol_binds_local_p): New functions.
3878         * config/nds32/nds32-protos.h (nds32_output_call,
3879         nds32_output_return): Declare.
3880         * config/nds32/nds32.md: Refine all the call and return patterns.
3882 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3884         PR debug/85252
3885         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3886         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3888         PR rtl-optimization/84872
3889         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3890         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3891         EDGE_CROSSING edge.
3893 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
3895         * expr.c (copy_blkmode_to_reg): Revert 254862.
3896         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3898 2018-04-06  Richard Biener  <rguenther@suse.de>
3900         PR middle-end/85244
3901         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3902         after seeing a component reference with an adjacent field.  Treat
3903         refs to arrays at struct end of external decls similar to
3904         refs to unconstrained commons.
3906 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
3908         PR sanitizer/85213
3909         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3910         look through SAVE_EXPRs with non-side-effects argument.  Adjust
3911         recursive calls.
3912         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3913         save_p here.
3915 2018-04-06  Richard Biener  <rguenther@suse.de>
3917         PR middle-end/85180
3918         * alias.c (find_base_term): New wrapper around find_base_term
3919         unwinding CSELIB_VAL_PTR changes.
3920         (find_base_term): Do not restore CSELIB_VAL_PTR during the
3921         recursion.
3923 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3925         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3926         instructions.
3927         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3928         constant definitions.
3929         ("nop"): lr 0,0 -> nopr r0
3930         ("nop_lr0", "nop_lr1"): New insn definitions.
3932 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
3934         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3935         NDS32_V3PUSH_AVAILABLE_P macro.
3937 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
3938             Chung-Ju Wu  <jasonwucj@gmail.com>
3940         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3941         (nds32*-*-*): Add float and fpu_config into supported_defaults.
3942         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3943         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3944         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3945         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3946         * config/nds32/constraints.md: New constraints and checking for hard
3947         float configuration.
3948         * config/nds32/iterators.md: New mode iterator and attribute for hard
3949         float configuration.
3950         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3951         patterns.
3952         * config/nds32/nds32-fpu.md: New file.
3953         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3954         deal with hard float code generation.
3955         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3956         ARCH_V3S.
3957         (abi_type, float_reg_number): New enum type.
3958         * config/nds32/nds32-predicates.c: New predicates for hard float.
3959         * config/nds32/nds32-protos.h: Declare functions for hard float.
3960         * config/nds32/nds32.c: Implementation for hard float configuration.
3961         * config/nds32/nds32.h: Definitions for hard float configuration.
3962         * config/nds32/nds32.md: Include hard float machine description and
3963         modify patterns for hard float configuration.
3964         * config/nds32/nds32.opt: New options for hard float configuration.
3965         * config/nds32/predicates.md: New predicates for hard float
3966         configuration.
3968 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
3970         * common/config/nds32/nds32-common.c
3971         (nds32_option_optimization_table): Enable -mreleax-hint by default.
3973 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
3975         PR middle-end/85195
3976         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3977         CONSTRUCTOR_ELT (ctor, ...)->value.
3979 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
3981         PR target/85193
3982         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3984 2018-04-05  Tom de Vries  <tom@codesourcery.com>
3986         PR target/85204
3987         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3988         cond jump.
3990 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3991             Kito Cheng  <kito.cheng@gmail.com>
3993         * config/nds32/constraints.md (U33): Fine-tune checking condition.
3994         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3995         * config/nds32/nds32.h (nds32_16bit_address_type): Add
3996         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3998 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
3999             Kito Cheng  <kito.cheng@gmail.com>
4001         * config/nds32/constraints.md (Ufe): New memory constraint.
4002         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
4003         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
4004         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
4005         operands.
4006         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
4007         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
4009 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4011         * config/nds32/nds32.md: Use optimize_size in the condition for
4012         alu-shift instructions.
4014 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4016         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
4018 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4020         * config/nds32/nds32.md (negsi2): Refine pattern.
4022 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
4023             Chung-Ju Wu  <jasonwucj@gmail.com>
4025         * config/nds32/iterators.md (shift_rotate): New code iterator.
4026         (shift): New code attribute.
4027         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
4028         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
4029         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
4030         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
4031         bit-wise operations.
4032         (andsi3, *andsi3): Ditto.
4033         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
4034         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
4035         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
4036         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
4037         nds32_ior_operand, nds32_xor_operand): New predicates.
4039 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4041         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
4042         (addsi3, subsi3): ... this.
4044 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4046         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
4048 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4050         * config/nds32/nds32.md: Adjust indention.
4052 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
4054         * config/nds32/nds32.md (feature): New attribute.
4056 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
4058         * config/nds32/nds32.md (subtype): New attribute.
4060 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4062         PR target/85203
4063         * config/arm/arm-builtins.c (arm_expand_builtin): Change
4064         expansion to perform a bitwise AND of the argument followed by a
4065         boolean negation of the result.
4067 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
4069         PR rtl-optimization/84878
4070         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
4071         the basic block.  Assert the use reference is not artificial and that
4072         it has an associated insn.
4074 2018-04-04  Michael Matz  <matz@suse.de>
4076         * builtins.c (compute_objsize): Pass correct operand
4077         to array_at_struct_end_p.
4079 2018-04-04  Richard Biener  <rguenther@suse.de>
4081         PR lto/85176
4082         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
4083         from contexts for DINFO_LEVEL_TERSE and below.
4085 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4087         * config/nds32/nds32-doubleword.md (move_<mode>): Require
4088         resiter_operand condition.
4089         * config/nds32/nds32.md (*move<mode>): Ditto.
4091 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4092             Monk Chiang  <sh.chiang04@gmail.com>
4094         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
4096 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4098         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
4100 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4101             Kito Cheng  <kito.cheng@gmail.com>
4103         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
4104         nds32_cond_code_str, output_cond_branch,
4105         output_cond_branch_compare_zero, nds32_expand_cbranch,
4106         nds32_expand_cstore, nds32_expand_movcc,
4107         nds32_output_cbranchsi4_equality_zero,
4108         nds32_output_cbranchsi4_equality_reg,
4109         nds32_output_cbranchsi4_equality_reg_or_const_int,
4110         nds32_output_cbranchsi4_greater_less_zero: New functions.
4111         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
4112         nds32_expand_cstore, nds32_expand_movcc,
4113         nds32_output_cbranchsi4_equality_zero,
4114         nds32_output_cbranchsi4_equality_reg,
4115         nds32_output_cbranchsi4_equality_reg_or_const_int,
4116         nds32_output_cbranchsi4_greater_less_zero): Declare.
4117         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
4118         nds32_rimm11s_operand): New predicates.
4119         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
4120         * config/nds32/nds32.md: Rewrite all the branch and conditional move
4121         patterns.
4123 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
4125         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
4126         * config/nds32/nds32.md: Ditto.
4127         * config/nds32/pipelines.md: Ditto.
4129 2018-04-04  Richard Biener  <rguenther@suse.de>
4131         PR tree-optimization/85168
4132         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
4133         propagating abnormals.
4135 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4137         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
4139 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
4140             Kito Cheng  <kito.cheng@gmail.com>
4142         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
4143         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
4144         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
4145         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4146         * config/nds32/nds32.md (sibcall_internal): New.
4147         (sibcall_register): Remove.
4148         (sibcall_immediate): Remove.
4149         (sibcall_value_internal): New.
4150         (sibcall_value_register): Remove.
4151         (sibcall_value_immediate): Remove.
4152         * config/nds32/predicates.md (nds32_general_register_operand): New.
4153         (nds32_call_address_operand): New.
4155 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
4157         PR rtl-optimization/85167
4158         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
4159         bb_defs if *split_p, instead preinitialize it to NULL.
4161         PR tree-optimization/85156
4162         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
4163         evaluating the argument multiple times.
4165 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
4167         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
4168         than vector.
4169         (_mm_cvtpd_ps): Likewise.
4170         (_mm_cvttpd_epi32): Likewise.
4171         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
4172         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
4173         vector, pixel, and bool following altivec.h include.
4175 2018-04-03  Martin Sebor  <msebor@redhat.com>
4177         * doc/extend.texi (Common Function Attributes): Clarify.
4178         (const attribute): Likewise.
4179         (pure attribute): Likewise.
4181 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
4183         PR target/85169
4184         * config/i386/i386.c (ix86_expand_vector_set): Use
4185         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
4187 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
4189         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
4190         instructions when changing rounding bits to preserve precision bits
4191         in the x87 control word.
4193 2018-04-03  Martin Liska  <mliska@suse.cz>
4195         PR tree-optimization/82491
4196         * rtl.h (strip_offset_and_add): Replace += suboffset with
4197         poly_uint64 () + suboffset.
4199 2018-03-29  Martin Liska  <mliska@suse.cz>
4200             Martin Jambor  <mjambor@suse.cz>
4202         PR ipa/84947
4203         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4204         param_type is not an integral or pointer type.
4206 2018-04-03  Richard Biener  <rguenther@suse.de>
4208         * sese.h (recompute_all_dominators): Remove.
4210 2018-04-02  Martin Sebor  <msebor@redhat.com>
4212         * doc/invoke.texi (-Wrestrict): Fix typos.
4214 2018-04-02  Jim Wilson  <jimw@sifive.com>
4216         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4217         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4218         (<optab>di3, <optab>si3_extend): Likewise.
4219         (<optab>si3_mask, <optab>si3_mask_1): New.
4220         (<optab>di3_mask, <optab>di3_mask_1): New.
4221         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4222         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4223         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4225 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
4227         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4228         example.
4230 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
4232         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4233         (nds32_canonicalize_comparison): New function.
4235 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4236             Kito Cheng  <kito.cheng@gmail.com>
4237             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
4239         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4240         * config/nds32/constants.md (unspec_volatile_element): Add
4241         UNSPEC_VOLATILE_RELAX_GROUP.
4242         * config/nds32/nds32-relax-opt.c: New file.
4243         * config/nds32/nds32-predicates.c
4244         (nds32_symbol_load_store_p): New function.
4245         * config/nds32/nds32-protos.h
4246         (nds32_symbol_load_store_p): Declare function.
4247         (make_pass_nds32_relax_opt): Declare new rtl pass function.
4248         * config/nds32/nds32.c
4249         (nds32_register_pass): New function to register pass.
4250         (nds32_register_passes): New function to register passes.
4251         * config/nds32/nds32.md (relax_group): New pattern.
4252         * config/nds32/nds32.opt (mrelax-hint): New option.
4253         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4255 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
4257         * config/nds32/t-nds32: Modify files dependency.
4259 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4261         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4262         (PROFILE_HOOK): Define its implementation.
4264 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
4266         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4267         type and 32-bit size.
4269 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
4271         PR middle-end/85090
4272         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4273         (V_128_256): New mode iterator.
4274         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4275         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4276         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4277         of V.
4278         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4279         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4281 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
4283         PR target/83315
4284         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4285         NaN inputs correctly.
4287 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
4289         PR target/80546
4290         * config/rs6000/vsx.md (??r): New mode attribute.
4291         (*vsx_mov<mode>_64bit): Use it.
4292         (*vsx_mov<mode>_32bit): Likewise.
4294 2018-03-30  Martin Sebor  <msebor@redhat.com>
4296         PR tree-optimization/84818
4297         * builtins.c (check_access): Use warning_n.
4299 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
4301         PR target/83822
4302         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4303         condition.
4304         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4305         condition.
4307 2018-03-30  Julia Koval  <julia.koval@intel.com>
4309         PR target/84413
4310         * x86-tune.def (movx, partial_reg_dependency): Enable for
4311         m_SKYLAKE_AVX512.
4313 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
4315         PR inline-asm/84985
4316         * lra-constraints.c (process_alt_operands): Move setting
4317         this_alternative_matches below.
4319 2018-03-29  Martin Liska  <mliska@suse.cz>
4321         PR lto/84995.
4322         * doc/invoke.texi: Document how LTO works with debug info.
4323         Describe auto-load support of binutils.  Mention 'x86-64'
4324         as valid option value of -march option.
4326 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
4328         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4330         PR c/85094
4331         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4332         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4333         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4334         checking.
4336 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
4338         PR target/84912
4339         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4340         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4341         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4342         for RS6000_BTM_POWERPC64.
4343         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4344         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4345         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4346         definition.
4347         (DIVDE): Use it.
4348         (DIVDEU): Likewise.
4350 2018-03-28 Carl Love  <cel@us.ibm.com>
4352         Revert
4353         2017-09-27  Carl Love  <cel@us.ibm.com>
4355         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4356         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4357         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4358         fctiw instruction.
4360 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
4362         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4363         instead of __vector bool.
4364         (_mm_max_pu8): Likewise.
4365         (_mm_min_pi16): Likewise.
4367 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
4369         PR target/84912
4370         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4371         (DIVWEUO): Likewise.
4372         (DIVDEO): Likewise.
4373         (DIVDEUO): Likewise.
4374         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4375         DIVWEUO and DIVDEUO.
4376         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4377         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4378         (div_extend): Likewise.
4379         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4380         builtin function.
4381         (__builtin_divweuo): Likewise.
4382         (__builtin_divdeo): Likewise.
4383         (__builtin_divdeuo): Likewise.
4385 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
4387         PR target/85095
4388         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4389         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4391         PR tree-optimization/82004
4392         * gimple-match-head.c (optimize_pow_to_exp): New function.
4393         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4394         Don't fold to exp if optimize_pow_to_exp is false.
4396 2018-03-28  Martin Liska  <mliska@suse.cz>
4398         PR other/84819
4399         * calls.c (initialize_argument_information): Fix trailing space.
4400         * common.opt: Fix typo and provide better explanation for
4401         -fsanitize-coverage option.
4402         * config/i386/i386.opt: Fix typo.
4404 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
4405             Martin Liska  <mliska@suse.cz>
4407         PR sanitizer/85081
4408         * gimplify.c (asan_poison_variable): Don't do the check for
4409         gimplify_omp_ctxp here.
4410         (gimplify_decl_expr): Do it here.
4411         (gimplify_target_expr): Likewise.
4413 2018-03-28  Martin Liska  <mliska@suse.cz>
4415         PR target/84988
4416         * config/i386/i386.c (ix86_function_arg_advance): Do not call
4417         chkp_type_bounds_count if MPX is not enabled.
4419 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4421         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4423 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
4425         PR target/84914
4426         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4427         function to create the function decl for complex long double
4428         multiply and divide for -mabi=ieeelongdouble.
4429         (init_float128_ieee): Call it.
4431 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
4433         PR target/85044
4434         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4435         -fcf-protection=branch -mibt.
4436         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4438 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4440         PR target/81863
4441         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4443 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
4445         PR target/85056
4446         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4447         extern array declarations.
4449 2018-03-27  Richard Biener  <rguenther@suse.de>
4451         PR middle-end/84067
4452         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4453         explicit single_use checks.
4455 2018-03-27  Richard Biener  <rguenther@suse.de>
4457         PR tree-optimization/85082
4458         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4459         Valueize the VUSE.
4461 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4463         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4464         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4465         Turn on fasynchronous-unwind-tables and funwind-tables.
4467 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
4469         PR target/85073
4470         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4471         (*bmi_blsr_<mode>_ccz): Ditto.
4473 2018-03-26  Tom de Vries  <tom@codesourcery.com>
4475         PR tree-optimization/85063
4476         * omp-general.c (offloading_function_p): New function.  Factor out
4477         of ...
4478         * omp-offload.c (pass_omp_target_link::gate): ... here.
4479         * omp-general.h (offloading_function_p): Declare.
4480         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4481         with attribute omp declare target for offloading functions.
4483 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
4485         PR tree-optimization/84005
4486         * tree-data-ref.h (get_base_for_alignment): Declare.
4487         * tree-data-ref.c (get_base_for_alignment_1): New function.
4488         (get_base_for_alignment): Likewise.
4489         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4490         get_base_for_alignment to find a suitable base object, instead
4491         of always using drb->base_address.
4493 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
4495         PR inline-asm/85022
4496         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4497         known size by default.
4499 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
4501         PR inline-asm/85030
4502         * lra-constraints.c (process_alt_operands): Don't match BLKmode
4503         and non BLKmode operands.
4505 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4507         PR target/85026
4508         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4509         Clean up attributes.
4511 2018-03-23  Richard Biener  <rguenther@suse.de>
4513         PR debug/85020
4514         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4515         we are going to emit early debug for LTO.
4517 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
4519         PR inline-asm/85034
4520         * function.c (match_asm_constraints_1): Don't optimize if input
4521         doesn't satisfy general_operand predicate for output's mode.
4523         PR inline-asm/85022
4524         * alias.c (write_dependence_p): Don't require for x_canonicalized
4525         non-VOIDmode if x has VOIDmode.
4527         PR sanitizer/85029
4528         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4529         just don't try to optimize it rather than assert it never happens.
4531 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4533         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4534         macro expansions for definition of ST_INTERNAL_<mode> and
4535         LD_INTERNAL_<mode> builtins.
4536         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4537         Remove prototype.
4538         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4539         function.
4540         (altivec_expand_st_builtin): Likewise.
4541         (altivec_expand_builtin): Remove calls to deleted functions.
4542         (rs6000_address_for_altivec): Delete this function.
4543         * config/rs6000/vector.md: Remove expands for
4544         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4546 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
4548         PR target/84826
4549         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4550         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4551         re-computing once computed.
4552         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4553         (arm_init_machine_status): Initialize
4554         machine->static_chain_stack_bytes.
4556 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4558         PR target/84760
4559         * doc/extend.texi: Add four new prototypes for vec_ld.
4560         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4561         definitions for more logical presentation.
4562         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4563         entries for V1TI variants of __builtin_altivec_ld builtin.
4564         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4565         handling of V1TI variant of LVX icode pattern.
4566         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4567         (rs6000_gimple_fold_builtin): Likewise.
4568         (altivec_init_builtins): Add code to define
4569         __builtin_altivec_lvx_v1ti function.
4571 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
4573         PR inline-asm/84941
4574         * function.c (match_asm_constraints_1): Don't do the optimization
4575         if input isn't a REG, SUBREG, MEM or constant.
4577 2018-03-22  Tom de Vries  <tom@codesourcery.com>
4579         PR tree-optimization/84956
4580         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4581         bb_has_abnormal_pred.
4583 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
4585         PR sanitizer/85018
4586         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4587         DECL_INITIAL (decl) to decl at the end.
4588         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4589         adjust the comment.
4591 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
4593         * doc/extend.texi (__builtin_tgmath): Document when complex
4594         integer types are treated as _Complex _Float64.
4596 2018-03-21  Tom de Vries  <tom@codesourcery.com>
4598         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4600 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4602         PR tree-optimization/84960
4603         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4604         if it is ENTRY block, move them into single succ of ENTRY in that case.
4606 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
4608         PR tree-optimization/84811
4609         * poly-int.h (poly_span_traits): Remove the T3 parameter and
4610         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4611         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4612         (known_subrange_p): Update accordingly.  Cast each value involved
4613         in the size comparison, rather than casting the result of the
4614         subtraction.
4616 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4618         PR tree-optimization/84982
4619         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4620         by flipping the least significant bit rather than all bits from
4621         bitpos to bitpos + bitsize - 1.
4623 2018-03-21  Nathan Sidwell  <nathan@acm.org>
4625         * doc/extend.texi (Deprecated Features): Remove mention of
4626         long-deleted deprecations.
4628 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4630         PR jit/84288
4631         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4632         * configure: Regenerate.
4634 2018-03-21  Tom de Vries  <tom@codesourcery.com>
4636         PR tree-optimization/83126
4637         * tree-parloops.c (num_phis): New function.
4638         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4640 2018-03-21  Nathan Sidwell  <nathan@acm.org>
4642         * doc/extend.texi (Deprecated Features): Update deprecated flags,
4643         mention anon-struct/union members and trailing attributes.
4645 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
4647         PR tree-optimization/84969
4648         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4649         builtin memset partitions if they set different rhs values.
4651 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
4653         PR rtl-optimization/84989
4654         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4655         VEC_DUPLICATE with scalar result mode.
4657 2018-03-21  Martin Liska  <mliska@suse.cz>
4659         PR ipa/84963
4660         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4661         not intended return statement.
4663 2018-03-21  Martin Liska  <mliska@suse.cz>
4665         PR target/84988
4666         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4667         (chkp_find_bound_slots_1): Limit number of iterations.
4669 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
4671         PR target/84838
4672         * Minor grammar fixes for x86 options.
4674 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4676         PR debug/84875
4677         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4678         holding REG_CFA_RESTORE notes, instead turn them into a USE.
4680 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
4682         PR target/83789
4683         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4684         (altivec_lvx_<mode>_1op): Likewise.
4685         (altivec_stvx_<mode>_2op): Likewise.
4686         (altivec_stvx_<mode>_1op): Likewise.
4687         (altivec_lvx_<VM2:mode>): New define_expand.
4688         (altivec_stvx_<VM2:mode>): Likewise.
4689         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4690         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4691         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4692         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4693         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4694         (rs6000_gen_lvx): Likewise.
4695         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4696         (altivec_expand_stv_builtin): Likewise.
4697         (altivec_expand_builtin): Likewise.
4698         * config/rs6000/vector.md: Likewise.
4700 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4702         PR target/82518
4703         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4704         BYTES_BIG_ENDIAN.
4706 2018-03-20  Richard Biener  <rguenther@suse.de>
4708         PR target/84986
4709         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4710         sign-conversions as zero, fall back to standard scalar_stmt
4711         cost for the rest.
4713 2018-03-20  Martin Liska  <mliska@suse.cz>
4715         PR ipa/84825
4716         * predict.c (rebuild_frequencies): Handle case when we have
4717         PROFILE_ABSENT, but flag_guess_branch_prob is false.
4719 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4721         PR target/84990
4722         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4723         flag_section_anchors.
4724         * varasm.c (use_blocks_for_decl_p): Remove hack for
4725         dw2_force_const_mem.
4727         PR target/84845
4728         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4729         to ...
4730         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
4731         be created, use lowpart_subreg of operands[0] rather than operands[0]
4732         itself.
4733         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4734         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4735         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4736         and n constraint instead of aarch64_shift_imm_di and Usd.
4737         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4738         (*aarch64_<optab>_reg_minus<mode>3): ... this.
4740 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
4742         PR target/82989
4743         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4744         to favor GPR over NEON registers.
4745         (<shift>di3_neon): Likewise.
4747 2018-03-20  Tom de Vries  <tom@codesourcery.com>
4749         PR target/84952
4750         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4751         (nvptx_process_pars): Emit bar.sync asap and alap.
4753 2018-03-20  Tom de Vries  <tom@codesourcery.com>
4755         PR target/84954
4756         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4757         seen_label if seen_label is already set.
4759 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
4761         PR target/84945
4762         * config/i386/i386.c (fold_builtin_cpu): For features above 31
4763         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4764         Use 1U instead of 1.  Formatting fixes.
4766         PR c/84953
4767         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4768         instead of TREE_TYPE (s1) for the return value.
4770 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
4772         PR tree-optimization/84946
4773         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4774         bitsize + bitsize in poly_uint64 rather than poly_int64.
4776         PR sanitizer/78651
4777         * dwarf2asm.c: Include fold-const.c.
4778         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4779         of decl rather than decl itself.
4781         PR rtl-optimization/84643
4782         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4784 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
4786         PR sanitizer/78651
4787         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4788         calling assemble_variable.
4790 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
4792         PR target/81647
4793         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4794         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4796 2018-03-19  Jim Wilson  <jimw@sifive.com>
4798         PR bootstrap/84856
4799         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4800         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4801         (riscv_first_stack_step): Likewise.
4802         (riscv_option_override): Use STACK_BOUNDARY instead of
4803         MIN_STACK_BOUNDARY.
4804         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4805         MIN_STACK_BOUNDARY.
4806         (BIGGEST_ALIGNMENT): Set to 128.
4807         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4808         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4809         STACK_BOUNDARY.
4811 2018-03-19  Richard Biener  <rguenther@suse.de>
4813         PR tree-optimization/84933
4814         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4815         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4817 2018-03-19  Richard Biener  <rguenther@suse.de>
4819         PR tree-optimization/84859
4820         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4821         (cond_if_else_store_replacement): Perform sinking operation on
4822         single-store BBs regardless of MAX_STORES_TO_SINK setting.
4823         Generalize what a BB with a single eligible store is.
4825 2018-03-19  Richard Biener  <rguenther@suse.de>
4827         PR tree-optimization/84929
4828         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4829         chrec_is_positive against non-chrec arg.
4831 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
4833         PR target/84711
4834         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4836 2018-03-18  Martin Liska  <mliska@suse.cz>
4838         PR rtl-optimization/84635
4839         * regrename.c (build_def_use): Use matches_mode only when
4840         matches >= 0.
4842 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
4844         PR tree-optimization/84913
4845         * tree-vect-loop.c (vectorizable_reduction): Don't try to
4846         vectorize chains of COND_EXPRs.
4848 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4850         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4852 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4854         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4856 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
4858         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4860 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
4861             Kito Cheng  <kito.cheng@gmail.com>
4863         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4864         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4865         (nds32_adjust_reg_alloc_order): New function.
4866         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4868 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
4870         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4871         nds32_print_operand, nds32_print_operand_address): Use
4872         HOST_WIDE_INT_PRINT_DEC instead.
4874 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
4876         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4878 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
4880         PR target/84902
4881         * config/i386/i386.c (initial_ix86_tune_features,
4882         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4883         unsigned long long.
4884         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4885         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4886         rather than 1u << ix86_tune.  Formatting fix.
4887         (ix86_option_override_internal): Change ix86_arch_mask from
4888         unsigned int to unsigned HOST_WIDE_INT, initialize to
4889         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4890         (ix86_function_specific_restore): Likewise.
4892 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4894         PR target/84899
4895         * postreload.c (reload_combine_recognize_pattern): Perform
4896         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4897         truncate_int_for_mode the result for the destination's mode.
4899         PR c/84909
4900         * hsa-gen.c (mem_type_for_type): Fix comment typo.
4901         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4902         Likewise.
4903         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4904         Likewise.
4906 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
4908         PR target/84876
4909         * lra-assigns.c (lra_split_hard_reg_for): Don't use
4910         regno_allocno_class_array and sorted_pseudos.
4911         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4912         insns where regno is used.
4914 2018-03-16  Martin Liska  <mliska@suse.cz>
4916         PR ipa/84833
4917         * multiple_target.c (create_dispatcher_calls): Redirect
4918         reference in the symbol table.
4920 2018-03-16  Martin Liska  <mliska@suse.cz>
4922         PR ipa/84722
4923         * multiple_target.c (create_dispatcher_calls): Redirect also
4924         an alias.
4926 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4928         PR c++/79937
4929         PR c++/82410
4930         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4931         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4932         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4934 2018-03-16  Julia Koval  <julia.koval@intel.com>
4936         * doc/invoke.texi (Skylake Server): Add CLWB.
4937         Cannonlake): Remove CLWB.
4939 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
4941         PR tree-optimization/84841
4942         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4943         1 << 3.
4944         (FLOAT_ONE_CONST_TYPE): Define.
4945         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4946         (sort_by_operand_rank): Put entries with higher constant_type last
4947         rather than first to match comments.
4949 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
4951         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
4952         split predicate.
4954 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
4956         PR c++/79085
4957         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4958         check and use address of target always.
4960 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
4962         PR target/84574
4963         * config/i386/i386.c (indirect_thunk_needed): Update comments.
4964         (indirect_thunk_bnd_needed): Likewise.
4965         (indirect_thunks_used): Likewise.
4966         (indirect_thunks_bnd_used): Likewise.
4967         (indirect_return_needed): New.
4968         (indirect_return_bnd_needed): Likewise.
4969         (output_indirect_thunk_function): Add a bool argument for
4970         function return.
4971         (output_indirect_thunk_function): Don't generate alias for
4972         function return thunk.
4973         (ix86_code_end): Call output_indirect_thunk_function to generate
4974         function return thunks.
4975         (ix86_output_function_return): Set indirect_return_bnd_needed
4976         and indirect_return_needed instead of indirect_thunk_bnd_needed
4977         and indirect_thunk_needed.
4979 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
4981         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4982         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4983         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4985 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
4986             Paul Hua <paul.hua.gm@gmail.com>
4988         PR c/84852
4989         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4991 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
4993         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4994         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4995         resp. SFmode cases.
4997 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
4999         PR target/84711
5000         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
5001         instead of GET_MODE_SIZE when comparing Units.
5003 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
5005         PR target/68256
5006         * varasm.c (hash_section): Return an unchangeble hash value
5007         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
5008         Return !aarch64_can_use_per_function_literal_pools_p ().
5010 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
5012         PR target/84860
5013         * optabs.c (emit_conditional_move): Pass address of cmode's copy
5014         rather than address of cmode as last argument to prepare_cmp_insn.
5016 2018-03-15  Julia Koval  <julia.koval@intel.com>
5018         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
5019         F_AVX512VNNI, F_AVX512BITALG): New.
5021 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
5023         PR target/83451
5024         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
5025         insn for floating-point loads and stores.
5027 2018-03-14  Carl Love  <cel@us.ibm.com>
5029         * config/rs6000/rs6000-c.c: Add macro definitions for
5030         ALTIVEC_BUILTIN_VEC_PERMXOR.
5031         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
5032         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
5033         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
5034         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
5035         UNSPEC_VPERMXOR.
5036         * config/doc/extend.texi: Add prototypes for vec_permxor.
5038 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
5040         PR c/84852
5041         * diagnostic-show-locus.c (class layout_point): Convert m_line
5042         from int to linenum_type.
5043         (line_span::comparator): Use linenum "compare" function when
5044         comparing line numbers.
5045         (test_line_span): New function.
5046         (layout_range::contains_point): Convert param "row" from int to
5047         linenum_type.
5048         (layout_range::intersects_line_p): Likewise.
5049         (layout::will_show_line_p): Likewise.
5050         (layout::print_source_line): Likewise.
5051         (layout::should_print_annotation_line_p): Likewise.
5052         (layout::print_annotation_line): Likewise.
5053         (layout::print_leading_fixits): Likewise.
5054         (layout::annotation_line_showed_range_p): Likewise.
5055         (struct line_corrections): Likewise for field m_row.
5056         (line_corrections::line_corrections): Likewise for param "row".
5057         (layout::print_trailing_fixits): Likewise.
5058         (layout::get_state_at_point): Likewise.
5059         (layout::get_x_bound_for_row): Likewise.
5060         (layout::print_line): Likewise.
5061         (diagnostic_show_locus): Likewise for locals "last_line" and
5062         "row".
5063         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
5064         * input.c (selftest::test_linenum_comparisons): New function.
5065         (selftest::input_c_tests): Call it.
5066         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
5067         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
5068         * selftest.h (ASSERT_GT): New macro.
5069         (ASSERT_GT_AT): New macro.
5070         (ASSERT_LT): New macro.
5071         (ASSERT_LT_AT): New macro.
5073 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
5075         PR rtl-optimization/84780
5076         * combine.c (distribute_links): Don't make a link based on pc_rtx.
5078 2018-03-14  Martin Liska  <mliska@suse.cz>
5080         * tree.c (record_node_allocation_statistics): Use
5081         get_stats_node_kind.
5082         (get_stats_node_kind): New function extracted from
5083         record_node_allocation_statistics.
5084         (free_node): Use get_stats_node_kind.
5086 2018-03-14  Richard Biener  <rguenther@suse.de>
5088         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
5089         that the value-set of ANTIC_IN doesn't grow.
5091         Revert
5092         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5093         member.
5094         (BB_VISITED_WITH_VISITED_SUCCS): New define.
5095         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5097 2018-03-14  Julia Koval  <julia.koval@intel.com>
5099         * config.gcc (icelake-client, icelake-server): New.
5100         (icelake): Remove.
5101         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
5102         (initial_ix86_arch_features): Ditto.
5103         (PTA_SKYLAKE): Add SGX.
5104         (PTA_ICELAKE): Remove.
5105         (PTA_ICELAKE_CLIENT): New.
5106         (PTA_ICELAKE_SERVER): New.
5107         (ix86_option_override_internal): Split up icelake on icelake client and
5108         icelake server.
5109         (get_builtin_code_for_version): Ditto.
5110         (fold_builtin_cpu): Ditto.
5111         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
5112         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
5113         * config/i386/i386.h (processor_type): Ditto.
5114         * doc/invoke.texi: Ditto.
5116 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
5118         PR sanitizer/83392
5119         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
5120         INTEGER_CST offset, add it together with bitpos / 8 and
5121         sign extend based on POINTER_SIZE.
5123         PR target/84844
5124         Revert
5125         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
5127         PR target/78090
5128         * config/i386/constraints.md (Yc): New register constraint.
5129         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
5130         Use Yc constraint for alternative 2 of operand 0.  Remove
5131         preferred_for_speed attribute.
5133 2018-03-14  Richard Biener  <rguenther@suse.de>
5135         PR tree-optimization/84830
5136         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
5137         with the old one to avoid oscillations.
5139 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
5141         PR target/83712
5142         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
5143         pseudos.
5144         (assign_by_spills): Return a flag of reload assignment failure.
5145         Do not process the reload assignment failures.  Do not spill other
5146         reload pseudos if they has the same reg class.  Update n if
5147         necessary.
5148         (lra_assign): Add a return arg.  Set up from the result of
5149         assign_by_spills call.
5150         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5151         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5152         usage_insns if it is not NULL.
5153         (spill_hard_reg_in_range): New function.
5154         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5155         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5156         function prototypes.
5157         (lra_assign): Change prototype.
5158         * lra.c (lra): Add code to deal with fails by splitting hard reg
5159         live ranges.
5161 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
5163         * config/riscv/riscv.opt (mrelax): New option.
5164         * config/riscv/riscv.c (riscv_file_start): Emit ".option
5165         "norelax" when riscv_mrelax is disabled.
5166         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
5168 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5170         PR target/84743
5171         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
5172         reassociation for int modes.
5174 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
5176         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
5177         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
5178         for big-endian.
5179         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
5180         * config/aarch64/aarch64-sve.md
5181         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
5182         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
5183         (*extend<mode><Vwide>2): Rename to...
5184         (aarch64_sve_extend<mode><Vwide>2): ...this.
5185         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
5186         renaming the old pattern to...
5187         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
5188         unsigned packs.
5189         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
5190         define_expand, renaming the old pattern to...
5191         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
5192         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
5193         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
5194         account when deciding which SVE instruction the optab should use.
5195         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
5197 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
5199         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
5200         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
5201         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
5202         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
5203         (tlsdesc_small_<mode>): Turn a define_expand and use
5204         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
5205         (tlsdesc_small_advsimd_<mode>): ...this.
5206         (tlsdesc_small_sve_<mode>): New pattern.
5208 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
5210         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5211         (UNSPEC_UMUL_HIGHPART): New constants.
5212         (MUL_HIGHPART): New int iteraor.
5213         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5214         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5215         define_expand.
5216         (*<su>mul<mode>3_highpart): New define_insn.
5218 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
5220         PR lto/84805
5221         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5222         incomplete types.
5224 2018-03-13  Martin Liska  <mliska@suse.cz>
5226         PR ipa/84658.
5227         * (sem_item_optimizer::sem_item_optimizer): Initialize new
5228         vector.
5229         (sem_item_optimizer::~sem_item_optimizer): Release it.
5230         (sem_item_optimizer::merge_classes): Register variable aliases.
5231         (sem_item_optimizer::fixup_pt_set): New function.
5232         (sem_item_optimizer::fixup_points_to_sets): Likewise.
5233         * ipa-icf.h: Declare new variables and functions.
5235 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
5237         PR middle-end/84834
5238         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5239         integer_pow2p@2 and test integer_pow2p in condition.
5240         (A < 0 ? C : 0): Similarly for @1.
5242         PR middle-end/84831
5243         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5244         characters starting at p contain '\0' character, don't look beyond
5245         that.
5247         PR target/84827
5248         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5249         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5251         PR target/84828
5252         * reg-stack.c (change_stack): Change update_end var from int to
5253         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5254         also call set_block_for_insn on the newly added insns and rescan.
5256         PR target/84786
5257         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5258         on the last operand.
5260         PR c++/84704
5261         * tree.c (stabilize_reference_1): Return save_expr (e) for
5262         STATEMENT_LIST even if it doesn't have side-effects.
5264 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
5266         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5268 2018-03-12  Renlin Li  <renlin.li@arm.com>
5270         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5271         aarch64_output_scalar_simd_mov_immediate.
5273 2018-03-12  Martin Sebor  <msebor@redhat.com>
5275         PR tree-optimization/83456
5276         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5277         for perfectly overlapping calls to memcpy.
5278         (gimple_fold_builtin_memory_chk): Same.
5279         (gimple_fold_builtin_strcpy): Handle no-warning.
5280         (gimple_fold_builtin_stxcpy_chk): Same.
5281         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5283 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
5285         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5286         parameter.  Use it for SFmode.
5287         (rs6000_function_arg_advance_1): Adjust.
5288         (rs6000_function_arg): Adjust.
5289         (rs6000_gimplify_va_arg): Pass false for that new parameter.
5291 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
5293         PR rtl-optimization/84169
5294         PR rtl-optimization/84780
5295         * combine.c (can_combine_p): Check for a 2-insn combination whether
5296         the destination register is used between the two insns, too.
5298 2018-03-12  Richard Biener  <rguenther@suse.de>
5300         PR tree-optimization/84803
5301         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5302         for refs DR analysis didn't process.
5304 2018-03-12  Richard Biener  <rguenther@suse.de>
5306         PR tree-optimization/84777
5307         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5308         force-vectorize loops ignore whether we are optimizing for size.
5310 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
5312         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5313         (TARGET_MD_ASM_ADJUST): Define.
5315 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
5316             Kito Cheng  <kito.cheng@gmail.com>
5317             Chung-Ju Wu  <jasonwucj@gmail.com>
5319         * config/nds32/nds32.c (nds32_compute_stack_frame,
5320         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5321         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5322         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5323         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5324         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5325         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5326         * config/nds32/nds32.md (prologue, epilogue): Use macro
5327         NDS32_V3PUSH_AVAILABLE_P to do checking.
5329 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
5331         PR debug/58150
5332         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5333         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5334         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
5335         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
5336         addition of most attributes on !orig_type_die or the attribute not
5337         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5339 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5340             Chung-Ju Wu  <jasonwucj@gmail.com>
5342         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5343         __NDS32_VH__ macro.
5344         * config/nds32/nds32.opt (mvh): New option.
5346 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5347             Chung-Ju Wu  <jasonwucj@gmail.com>
5349         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5350         function.
5351         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5352         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5353         definition.
5355 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
5356             Chung-Ju Wu  <jasonwucj@gmail.com>
5358         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5359         function.
5360         * config/nds32/nds32-multiple.md (strlensi): New pattern.
5361         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5363 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
5364             Kito Cheng  <kito.cheng@gmail.com>
5365             Chung-Ju Wu  <jasonwucj@gmail.com>
5367         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5368         UNSPEC_FFMISM and UNSPEC_FLMISM.
5369         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5370         for ffb, ffmism and flmism.
5371         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5372         (unspec_ffmism): Ditto.
5373         (unspec_flmism): Ditto.
5374         (nds32_expand_builtin_impl): Check if string extension is available.
5375         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5376         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5378 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
5380         Reverting patch:
5381         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
5383         PR target/83712
5384         * lra-assigns.c (assign_by_spills): Return a flag of reload
5385         assignment failure.  Do not process the reload assignment
5386         failures.  Do not spill other reload pseudos if they has the same
5387         reg class.
5388         (lra_assign): Add a return arg.  Set up from the result of
5389         assign_by_spills call.
5390         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5391         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5392         usage_insns if it is not NULL.
5393         (spill_hard_reg_in_range): New function.
5394         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5395         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5396         function prototypes.
5397         (lra_assign): Change prototype.
5398         * lra.c (lra): Add code to deal with fails by splitting hard reg
5399         live ranges.
5401 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
5403         PR target/84807
5404         * config/i386/i386.opt: Replace Enforcment with Enforcement.
5406 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
5408         PR debug/84620
5409         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5410         (dw_val_node): Add val_symbolic_view.
5411         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5412         (symview_upper_bound): New.
5413         (new_line_info_table): Initialize symviews_since_reset.
5414         (dwarf2out_source_line): Count symviews_since_reset and set
5415         symview_upper_bound.
5416         (dw_val_equal_p): Handle symview.
5417         (add_AT_symview): New.
5418         (print_dw_val): Handle symview.
5419         (attr_checksum, attr_checksum_ordered): Likewise.
5420         (same_dw_val_p, size_of_die): Likewise.
5421         (value_format, output_die): Likewise.
5422         (add_high_low_attributes): Use add_AT_symview for entry_view.
5423         (dwarf2out_finish): Reset symview_upper_bound, clear
5424         zero_view_p.
5426 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
5428         PR target/83969
5429         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5430         Add strict argument and use it.
5431         (rs6000_split_multireg_move): Update for new strict argument.
5432         (mem_operand_gpr): Disallow all non-offsettable addresses.
5433         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5435 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
5437         PR target/84772
5438         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5439         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5440         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5442         PR c++/84767
5443         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5444         decl, use remap_type if we want to use the type.
5446 2018-03-09  Martin Sebor  <msebor@redhat.com>
5448         PR tree-optimization/84526
5449         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5450         Remove dead code.
5451         (builtin_access::generic_overlap): Be prepared to handle non-array
5452         base objects.
5454 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
5456         PR rtl-optimization/84682
5457         * lra-constraints.c (process_address_1): Check is_address flag
5458         for address constraints.
5459         (process_alt_operands): Likewise.
5460         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5461         preprocess_constraints.
5462         * recog.h (preprocess_constraints): Add oploc parameter.
5463         Adjust callers.
5464         * recog.c (preprocess_constraints): Test address_operand for
5465         CT_ADDRESS constraints.
5467 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
5469         PR target/83712
5470         * lra-assigns.c (assign_by_spills): Return a flag of reload
5471         assignment failure.  Do not process the reload assignment
5472         failures.  Do not spill other reload pseudos if they has the same
5473         reg class.
5474         (lra_assign): Add a return arg.  Set up from the result of
5475         assign_by_spills call.
5476         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5477         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
5478         usage_insns if it is not NULL.
5479         (spill_hard_reg_in_range): New function.
5480         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5481         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5482         function prototypes.
5483         (lra_assign): Change prototype.
5484         * lra.c (lra): Add code to deal with fails by splitting hard reg
5485         live ranges.
5487 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5489         PR target/83193
5490         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5491         Accept complain bool parameter.  Only emit errors if it is true.
5492         (arm_parse_cpu_option_name): Likewise.
5493         (arm_target_thumb_only): Adjust callers of the above.
5494         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5495         prototype to take a default true bool parameter.
5496         (arm_parse_arch_option_name): Likewise.
5498 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
5499             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5501         PR jit/64089
5502         PR jit/84288
5503         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5504         * configure: Regenerate.
5505         * configure.ac ("linker --version-script option"): New.
5506         ("linker soname option"): New.
5508 2018-03-09  Richard Biener  <rguenther@suse.de>
5510         PR tree-optimization/84775
5511         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5512         immediate uses of predicate stmts and mark them modified.
5514         Revert
5515         PR tree-optimization/84178
5516         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5517         to caller.
5518         (version_loop_for_if_conversion): Delay update_ssa call.
5519         (tree_if_conversion): Delay update_ssa until after predicate
5520         insertion.
5522 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
5524         PR target/84763
5525         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5526         when the function accesses prior frames.
5528 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
5530         PR debug/84456
5531         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5532         gen_llsym, otherwise call maybe_gen_llsym.
5534         PR inline-asm/84742
5535         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5536         has ',' character inside of it.
5538 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5540         PR target/84748
5541         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5542         as clobbering CC_REGNUM.
5544 2018-03-08  Richard Biener  <rguenther@suse.de>
5546         PR middle-end/84552
5547         * tree-scalar-evolution.c: Include tree-into-ssa.h.
5548         (follow_copies_to_constant): Do not follow SSA names registered
5549         for update.
5551 2018-03-08  Richard Biener  <rguenther@suse.de>
5553         PR tree-optimization/84178
5554         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5555         to caller.
5556         (version_loop_for_if_conversion): Delay update_ssa call.
5557         (tree_if_conversion): Delay update_ssa until after predicate
5558         insertion.
5560 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
5562         PR tree-optimization/84178
5563         * tree-if-conv.c (release_bb_predicate): Remove the
5564         the assertion that the stmts have NULL use_ops.
5565         Discard the statements, asserting that they haven't
5566         yet been added to a BB.
5568 2018-03-08  Richard Biener  <rguenther@suse.de>
5570         PR tree-optimization/84746
5571         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5572         (phi_translate): Pass in destination ANTIC_OUT set.
5573         (phi_translate_1): Likewise.  For a simplified result lookup
5574         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5575         (phi_translate_set): Adjust.
5576         (do_pre_regular_insertion): Likewise.
5577         (do_pre_partial_partial_insertion): Likewise.
5579 2018-03-08  Martin Liska  <mliska@suse.cz>
5581         PR gcov-profile/84735
5582         * doc/gcov.texi: Document usage of profile files.
5583         * gcov-io.h: Document changes in the format.
5585 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
5587         PR debug/84404
5588         PR debug/84408
5589         * dwarf2out.c (struct dw_line_info_table): Update comments for
5590         view == -1.
5591         (FORCE_RESET_NEXT_VIEW): New.
5592         (FORCE_RESETTING_VIEW_P): New.
5593         (RESETTING_VIEW_P): Check for -1 too.
5594         (ZERO_VIEW_P): Likewise.
5595         (new_line_info_table): Force-reset next view.
5596         (dwarf2out_begin_function): Likewise.
5597         (dwarf2out_source_line): Simplify zero_view_p initialization.
5598         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5599         view directly.  Omit view when omitting .loc at line 0.
5601 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
5603         PR tree-optimization/84740
5604         * tree-switch-conversion.c (process_switch): Call build_constructors
5605         only if info.phi_count is non-zero.
5607         PR tree-optimization/84739
5608         * tree-tailcall.c (find_tail_calls): Check call arguments against
5609         DECL_ARGUMENTS (current_function_decl) rather than
5610         DECL_ARGUMENTS (func) when checking for tail recursion.
5612 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
5614         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5615         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5616         Volker Reichelt's entry and add entries for people that perform
5617         GCC fuzzy testing and report numerous bugs.
5619 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
5621         PR target/82411
5622         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5623         readonly data in sdata, if that is disabled.
5624         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5625         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5626         -mreadonly-in-sdata option.
5628 2018-03-07  Martin Sebor  <msebor@redhat.com>
5630         PR tree-optimization/84468
5631         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5632         basic block when looking for nul assignment.
5634 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
5636         PR target/84277
5637         * except.h (output_function_exception_table): Adjust prototype.
5638         * except.c (output_function_exception_table): Remove FNNAME parameter
5639         and add SECTION parameter.  Ouput one part of the table at a time.
5640         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5641         the first part of the exception table and emit unwind directives.
5642         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5643         (i386_pe_seh_cold_init): Likewise.
5644         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5645         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5646         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5647         (ix86_output_call_insn): Emit a nop in one more case for SEH.
5648         * config/i386/winnt.c: Include except.h.
5649         (struct seh_frame_state): Add reg_offset, after_prologue and
5650         in_cold_section fields.
5651         (i386_pe_seh_end_prologue): Set seh->after_prologue.
5652         (i386_pe_seh_cold_init): New function.
5653         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5654         to seh->in_cold_section.
5655         (seh_emit_push): Record the offset of the push.
5656         (seh_emit_save): Record the offet of the save.
5657         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5658         Test seh->after_prologue to disregard the epilogue.
5659         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5660         (i386_pe_end_cold_function): New function.
5662 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
5664         PR fortran/84565
5665         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5666         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5668         PR c++/84704
5669         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5670         on tmp_var.
5671         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5672         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5674         PR middle-end/84723
5675         * multiple_target.c: Include tree-inline.h and intl.h.
5676         (expand_target_clones): Diagnose and fail if node->definition and
5677         !tree_versionable_function_p (node->decl).
5679 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
5681         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5682         sprint_ul.
5683         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5684         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5685         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5687 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
5689         PR target/84710
5690         * combine.c (try_combine): Use reg_or_subregno instead of handling
5691         just paradoxical SUBREGs and REGs.
5693 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
5695          * config/arc/arc.c (arc_finalize_pic): Remove function.
5696          (arc_must_save_register): We use single base PIC register, remove
5697          checks to save/restore the PIC register.
5698          (arc_expand_prologue): Likewise.
5699          * config/arc/arc-protos.h (arc_set_default_type_attributes):
5700          Remove.
5701          (arc_verify_short): Likewise.
5702          (arc_attr_type): Likewise.
5703          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5704          (walk_stores): Likewise.
5705          (arc_address_cost): Make it static.
5706          (arc_verify_short): Likewise.
5707          (branch_dest): Likewise.
5708          (arc_attr_type): Likewise.
5709          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5710          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5711          (arc_final_prescan_insn): Remove inserting the nops due to
5712          hardware hazards.  It is done in reorg step.
5713          (insn_length_variant_t): Remove.
5714          (insn_length_parameters_t): Likewise.
5715          (arc_insn_length_parameters): Likewise.
5716          (arc_get_insn_variants): Likewise.
5717          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5719 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
5721         PR inline-asm/84683
5722         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5723         assertion failure.
5725         PR tree-optimization/84687
5726         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5727         on new_node->decl.
5728         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5730 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5732         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5733         Rename to ppc_speculation_barrier.
5734         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5735         __builtin_ppc_speculation_barrier.
5737 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
5739         PR target/84700
5740         * combine.c (combine_simplify_rtx): Don't try to simplify if
5741         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5742         are equal to x.
5744 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
5746         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5747         to 32 bytes when compiling for POWER9.
5749 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
5751         PR target/84564
5752         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5753         regparm >= 3 with no arg reg available also for calls with
5754         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
5756         PR target/84524
5757         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5758         orig,vex.
5759         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
5761 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
5763         PR target/84264
5764         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5766 2018-03-05  Richard Biener  <rguenther@suse.de>
5768         PR tree-optimization/84486
5769         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5770         When inserting a __builtin_assume_aligned call set the LHS
5771         SSA name alignment info accordingly.
5773 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
5775         PR tree-optimization/84114
5776         * config/aarch64/aarch64.c (aarch64_reassociation_width)
5777         Avoid reassociation of FLOAT_MODE addition.
5779 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
5781         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5782         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5783         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5784         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5785         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5786         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5787         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5788         and -mwbnoinvd.
5789         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5790         __builtin_ia32_wbinvd): New builtins.
5791         (SPECIAL_ARGS2): New.
5792         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5793         (SPECIAL_ARGS2): New.
5794         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5795         (ix86_valid_target_attribute_inner_p): Ditto.
5796         (ix86_init_mmx_sse_builtins): Add special_args2.
5797         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5798         TARGET_WBNOINVD_P): New.
5799         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5800         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5801         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5802         * config/i386/immintrin.h (_wbinvd): New intrinsic.
5803         * config/i386/pconfigintrin.h: New file.
5804         * config/i386/wbnoinvdintrin.h: Ditto.
5805         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5806         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5808 2018-03-05  Richard Biener  <rguenther@suse.de>
5810         PR tree-optimization/84670
5811         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5812         member.
5813         (BB_VISITED_WITH_VISITED_SUCCS): New define.
5814         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5815         (compute_antic_aux): Only assert the number of values in ANTIC_IN
5816         doesn't grow if all successors (recursively) were visited at least
5817         once.
5819 2018-03-05  Richard Biener  <rguenther@suse.de>
5821         PR tree-optimization/84650
5822         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5823         if executed in the loop pipeline.
5825 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
5827         * doc/configfiles.texi (Configuration Files): Move info about
5828         conditionalizing $target-protos.h to...
5829         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
5830         differs from $target-protos.h.
5832 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
5833             Chung-Ju Wu  <jasonwucj@gmail.com>
5835         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5836         * config/nds32/nds32-multiple.md (setmemsi): Define.
5837         * config/nds32/nds32-memory-manipulation.c
5838         (nds32_gen_dup_4_byte_to_word_value): New.
5839         (emit_setmem_word_loop): New.
5840         (emit_setmem_byte_loop): New.
5841         (nds32_expand_setmem_loop): New.
5842         (nds32_expand_setmem_loop_v3m): New.
5843         (nds32_expand_setmem_unroll): New.
5844         (nds32_expand_setmem): New.
5846 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5847             Chung-Ju Wu  <jasonwucj@gmail.com>
5849         * config/nds32/nds32-memory-manipulation.c
5850         (nds32_emit_load_store): New.
5851         (nds32_emit_post_inc_load_store): New.
5852         (nds32_emit_mem_move): New.
5853         (nds32_emit_mem_move_block): New.
5854         (nds32_expand_movmemsi_loop_unknown_size): New.
5855         (nds32_expand_movmemsi_loop_known_size): New.
5856         (nds32_expand_movmemsi_loop): New.
5857         (nds32_expand_movmemsi_unroll): New.
5858         (nds32_expand_movmemqi): Rename ...
5859         (nds32_expand_movmemsi): ... to this.
5860         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5861         (movmemsi): ... to this.
5862         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5863         (nds32_expand_movmemsi): ... to this.
5865 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5866             Monk Chiang  <sh.chiang04@gmail.com>
5867             Chung-Ju Wu  <jasonwucj@gmail.com>
5869         * config/nds32/nds32-protos.h
5870         (nds32_expand_load_multiple): New arguments.
5871         (nds32_expand_store_multiple): Ditto.
5872         (nds32_valid_multiple_load_store): Rename ...
5873         (nds32_valid_multiple_load_store_p): ... to this.
5874         * config/nds32/nds32-memory-manipulation.c
5875         (nds32_expand_load_multiple): Refine implementation.
5876         (nds32_expand_store_multiple): Ditto.
5877         * config/nds32/nds32-multiple.md
5878         (load_multiple): Update nds32_expand_load_multiple interface.
5879         (store_multiple): Update nds32_expand_store_multiple interface.
5880         * config/nds32/nds32-predicates.c
5881         (nds32_valid_multiple_load_store): Rename ...
5882         (nds32_valid_multiple_load_store_p): ... to this and refine
5883         implementation.
5884         * config/nds32/predicates.md
5885         (nds32_load_multiple_and_update_address_operation): New predicate.
5886         (nds32_store_multiple_and_update_address_operation): New predicate.
5888 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
5889             Chung-Ju Wu  <jasonwucj@gmail.com>
5891         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5892         (combo): New attribute.
5893         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5895 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
5897         * config/nds32/nds32.opt: Change -mcmodel= default value.
5899 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
5900             Monk Chiang  <sh.chiang04@gmail.com>
5901             Chung-Ju Wu  <jasonwucj@gmail.com>
5903         * config/nds32/constants.md (unspec_element): New enum.
5904         * config/nds32/constraints.md (Umw): New constraint.
5905         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5906         * config/nds32/nds32-intrinsic.md: Likewise.
5907         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5908         (nds32_valid_smw_lwm_base_p): New.
5909         (nds32_output_smw_single_word): New.
5910         (nds32_output_lmw_single_word): New.
5911         (nds32_expand_unaligned_load): New.
5912         (nds32_expand_unaligned_store): New.
5913         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5914         (nds32_output_smw_single_word): Declare.
5915         (nds32_output_lmw_single_word): Declare.
5916         (nds32_expand_unaligned_load): Declare.
5917         (nds32_expand_unaligned_store): Declare.
5918         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5919         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5920         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5921         NDS32_BUILTIN_UASTORE_DW.
5922         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5923         predicate.
5925 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
5926             Kito Cheng  <kito.cheng@gmail.com>
5927             Chung-Ju Wu  <jasonwucj@gmail.com>
5929         * config/nds32/nds32-intrinsic.c
5930         (nds32_expand_builtin_null_ftype_reg): Delete.
5931         (nds32_expand_builtin_reg_ftype_imm): Ditto.
5932         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5933         (nds32_read_argument): New.
5934         (nds32_legitimize_target): Ditto.
5935         (nds32_legitimize_argument): Ditto.
5936         (nds32_check_constant_argument): Ditto.
5937         (nds32_expand_unop_builtin): Ditto.
5938         (nds32_expand_unopimm_builtin): Ditto.
5939         (nds32_expand_binop_builtin): Ditto.
5940         (nds32_builtin_decl_impl): Ditto.
5941         (builtin_description): Ditto.
5942         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5943         (nds32_init_builtins_impl): Ditto.
5944         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5945         (nds32_builtin_decl): New.
5946         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5947         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5949 2018-03-02  Jeff Law  <law@redhat.com>
5951         * reorg.c (stop_search_p): Handle DEBUG_INSN.
5952         (redundant_insn, fill_simple_delay_slots): Likewise.
5953         (fill_slots_from_thread): Likewise.
5954         * resource.c (mark_referenced_resources): Likewise.
5955         (mark_set_resources, find_dead_or_set_registers): Likewise.
5957 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5959         * substring-locations.h (format_warning_va): Formatting fix for
5960         ATTRIBUTE_GCC_DIAG.
5961         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5962         argument.
5963         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5964         * substring-locations.c: Include intl.h.
5965         (format_warning_va): Turned into small wrapper around
5966         format_warning_n_va, renamed to ...
5967         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5968         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5969         use ngettext.
5970         (format_warning_at_substring_n): New function.
5971         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5972         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
5973         format_warning_at_substring with just a shorter name instead of
5974         const function pointer.
5975         (fmtwarn_n): New function.
5976         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5977         appropriate, get rid of all the fmtstr temporaries, move conditionals
5978         with G_() wrapped string literals directly into fmtwarn arguments,
5979         cast dir.len to (int), formatting fixes.
5981 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
5983         * doc/invoke.texi: Remove "Cilk Plus" references.
5985 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5986             Richard Biener  <rguenther@suse.de>
5988         PR ipa/84628
5989         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5990         for error or warning attributes if CALL_FROM_THUNK_P is set.
5991         Formatting fixes.
5993 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
5995         PR target/56540
5996         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5997         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5999         PR target/56540
6000         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
6001         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
6003         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
6004         instead of -1U in last predictors element's probability member.
6006 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
6008         PR ipa/83983
6009         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
6010         arguments if they are comparable.
6012 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
6014         PR tree-optimization/84634
6015         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
6016         masks and masked_loop_p with a single loop_masks, making sure it's
6017         null for bb vectorization.
6019 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
6021         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
6022         (vect_analyze_data_ref_access): Use loop->safe_len rather than
6023         loop->force_vectorize to check whether there is no alias.
6025 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
6027         PR target/84614
6028         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
6029         prototypes.
6030         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
6031         comments.
6032         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
6033         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
6034         instead of a loop around prev_real_insn.
6035         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
6036         prev_real_insn.
6038         PR inline-asm/84625
6039         * config/i386/i386.c (ix86_print_operand): Use conditional
6040         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
6041         zero vector.
6043 2018-03-02  Richard Biener  <rguenther@suse.de>
6045         PR tree-optimization/84427
6046         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
6047         (bitmap_set_subtract_values): Rewrite to handle multiple
6048         exprs per value.
6049         (clean): Likewise.
6050         (prune_clobbered_mems): Likewise.
6051         (phi_translate): Take edge instead of pred/phiblock.
6052         (phi_translate_1): Likewise.
6053         (phi_translate_set): Likewise.  Insert all translated
6054         exprs for a value into the set, keeping possibly multiple
6055         expressions per value.
6056         (compute_antic_aux): Adjust for phi_translate changes.
6057         When intersecting union the expressions and prune those
6058         not in the final value set, keeping possibly multiple
6059         expressions per value.  Do not use value-insertion
6060         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
6061         all expressions.  Add verification that the value-sets
6062         only shrink during iteration.
6063         (compute_partial_antic_aux): Adjust for the phi_translate changes.
6064         (do_pre_regular_insertion): Likewise.
6065         (do_pre_partial_partial_insertion): Likewise.
6067 2018-03-02  Richard Biener  <rguenther@suse.de>
6069         PR target/82005
6070         * config/darwin.c (saved_debug_info_level): New static global.
6071         (darwin_asm_lto_start): Disable debug info generation for LTO out.
6072         (darwin_asm_lto_end): Restore debug info generation settings.
6074 2018-03-01  Martin Liska  <mliska@suse.cz>
6076         PR sanitizer/82484
6077         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
6078         volatile arguments.
6080 2018-03-01  Richard Biener  <rguenther@suse.de>
6082         PR debug/84645
6083         * dwarf2out.c (gen_variable_die): Properly handle late VLA
6084         type annotation with LTO when debug was disabled at compile-time.
6086 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
6088         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
6089         XINT with INTVAL.
6090         (mips_final_postscan_insn): Likewise.
6092 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
6094         PR rtl-optimization/84528
6095         * alias.c (init_alias_target): Add commentary.
6096         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
6097         a unique base value if the frame pointer is not eliminated
6098         to the stack pointer.
6100 2018-03-01  Tom de Vries  <tom@codesourcery.com>
6102         PR rtl-optimization/83327
6103         * lra-int.h (hard_regs_spilled_into): Declare.
6104         * lra.c (hard_regs_spilled_into): Define.
6105         (init_reg_info): Init hard_regs_spilled_into.
6106         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
6107         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
6108         (process_bb_lives): Handle hard_regs_spilled_into.
6109         (lra_create_live_ranges_1): Before doing liveness propagation, clear
6110         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
6112 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
6114         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
6115         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
6116         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
6117         * config/rs6000/aix72.h: New file.
6119 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
6121         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
6122         instead of warning_at with conditional singular and plural messages
6123         where possible.
6125         PR target/52991
6126         * stor-layout.c (update_alignment_for_field): For
6127         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
6128         && !DECL_PACKED (field), do the alignment update, just use
6129         only desired_align instead of MAX (type_align, desired_align)
6130         as the alignment.
6131         (place_field): Don't do known_align < desired_align handling
6132         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
6133         is non-NULL, instead do it after rli->prev_field handling and
6134         only if not within a bitfield word.  For DECL_PACKED (field)
6135         use type_align of BITS_PER_UNIT.
6137 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
6139         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
6140         superfluous parentheses and trailing spaces.
6142 2018-02-28  Richard Biener  <rguenther@suse.de>
6144         PR tree-optimization/84584
6145         * graphite-scop-detection.c (scop_detection::add_scop): Discard
6146         SCoPs with fake exit edge.
6148 2018-02-28  Martin Liska  <mliska@suse.cz>
6150         PR testsuite/84597
6151         * timevar.c (timer::print): Fix format to properly print 100%
6152         values.
6154 2018-02-28  Richard Biener  <rguenther@suse.de>
6156         PR middle-end/84607
6157         * genmatch.c (capture_info::walk_match): Do not mark
6158         captured expressions without operands as expr_p given
6159         they act more like predicates and should be subject to
6160         "lost tail" side-effect preserving.
6162 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
6164         PR rtl-optimization/81611
6165         * auto-inc-dec.c (attempt_change): Move dead note from
6166         mem_insn if it's the next use of regno
6167         (find_address): Take address use of reg holding
6168         non-incremented value.  Add parm to limit search to the named
6169         reg only.
6170         (merge_in_block): Attempt to use a mem insn that is the next
6171         use of the original regno.
6173 2018-02-27  Martin Sebor  <msebor@redhat.com>
6175         PR c++/83871
6176         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
6177         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
6179 2018-02-27  Martin Sebor  <msebor@redhat.com>
6181         PR translation/84207
6182         * diagnostic-core.h (warning_n, error_n, inform_n): Change
6183         n argument to unsigned HOST_WIDE_INT.
6184         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
6185         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
6186         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
6187         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
6189 2018-02-27  Richard Biener  <rguenther@suse.de>
6191         PR tree-optimization/84512
6192         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
6193         Do not use the estimate returned from record_stmt_cost for
6194         the scalar iteration cost but sum properly using add_stmt_cost.
6196 2018-02-27  Richard Biener  <rguenther@suse.de>
6198         PR tree-optimization/84466
6199         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6200         Adjust last change to less strictly validate use operands.
6202 2018-02-27  Martin Liska  <mliska@suse.cz>
6204         PR gcov-profile/84548
6205         * gcov.c (process_file): Allow partial overlap and consider it
6206         also as group functions.
6207         (output_lines): Properly calculate range of lines for a group.
6209 2018-02-27  Martin Liska  <mliska@suse.cz>
6211         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6212         'ggc' suffixes.  Change first column width.
6213         (timer::print): Fix formatting of the column.
6215 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
6217         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6218         preserve inline entry blocks for the sake of debug inline
6219         entry point markers alone.
6220         (remove_unused_locals): Suggest in comments a better place to
6221         force the preservation of inline entry blocks that are
6222         otherwise unused, but do not preserve them.
6224 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6226         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6228 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6230         PR target/84039
6231         * config/i386/constraints.md (Bs): Replace
6232         ix86_indirect_branch_register with
6233         TARGET_INDIRECT_BRANCH_REGISTER.
6234         (Bw): Likewise.
6235         * config/i386/i386.md (indirect_jump): Likewise.
6236         (tablejump): Likewise.
6237         (*sibcall_memory): Likewise.
6238         (*sibcall_value_memory): Likewise.
6239         Peepholes of indirect call and jump via memory: Likewise.
6240         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6241         (*sibcall_value_GOT_32): Likewise.
6242         * config/i386/predicates.md (indirect_branch_operand): Likewise.
6243         (GOT_memory_operand): Likewise.
6244         (call_insn_operand): Likewise.
6245         (sibcall_insn_operand): Likewise.
6246         (GOT32_symbol_operand): Likewise.
6247         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6249 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
6251         PR rtl-optimization/83496
6252         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6253         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
6254         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6255         redundant insn, if any.
6256         (relax_delay_slots): Likewise.
6257         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6259 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
6261         PR tree-optimization/83965
6262         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6263         that grouped statements are part of a reduction chain.  Return
6264         true if the statement is not marked as a reduction itself but
6265         is part of a group.
6266         (vect_recog_dot_prod_pattern): Don't check whether the statement
6267         is part of a group here.
6268         (vect_recog_sad_pattern): Likewise.
6269         (vect_recog_widen_sum_pattern): Likewise.
6271 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
6273         PR debug/84545
6274         * final.c (rest_of_clean_state): Also look for calls inside sequences.
6276 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
6278         PR target/84530
6279         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6280         the bool argument.
6281         (ix86_output_indirect_function_return): New prototype.
6282         (ix86_split_simple_return_pop_internal): Likewise.
6283         * config/i386/i386.c (indirect_return_via_cx): New.
6284         (indirect_return_via_cx_bnd): Likewise.
6285         (indirect_thunk_name): Handle return va CX_REG.
6286         (output_indirect_thunk_function): Create alias for
6287         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6288         (ix86_output_indirect_jmp): Remove the bool argument.
6289         (ix86_output_indirect_function_return): New function.
6290         (ix86_split_simple_return_pop_internal): Likewise.
6291         * config/i386/i386.md (*indirect_jump): Don't pass false
6292         to ix86_output_indirect_jmp.
6293         (*tablejump_1): Likewise.
6294         (simple_return_pop_internal): Change it to define_insn_and_split.
6295         Call ix86_split_simple_return_pop_internal to split it for
6296         -mfunction-return=.
6297         (simple_return_indirect_internal): Call
6298         ix86_output_indirect_function_return instead of
6299         ix86_output_indirect_jmp.
6301 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
6303         PR bootstrap/84405
6304         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6305         memset and value initialization afterwards.
6307 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
6309         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6311 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6313         PR target/84521
6314         * common/config/aarch64/aarch64-common.c
6315         (aarch_option_optimization_table[]): Switch
6316         off fomit-frame-pointer
6318 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
6319             Chung-Ju Wu  <jasonwucj@gmail.com>
6321         * config/nds32/nds32-multiple.md (load_multiple): Disallow
6322         volatile memory.
6323         (store_multiple): Ditto.
6325 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
6327         * config.gcc: Add --with-cpu support for nds32 target.
6328         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6329         * config/nds32/nds32.opt: Add -mcpu= option.
6331 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
6333         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6334         isel=yes): Warn for these deprecated options.
6336 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
6338         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6339         ISA_2_5_MASKS_EMBEDDED.
6341 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
6343         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6344         p->max as pointers rather than using iterative_hash_expr.
6346 2018-02-23  Carl Love  <cel@us.ibm.com>
6348         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6349         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6350         BU_P8V_OVERLOAD_2.
6351         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6352         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6353         P8V_BUILTIN_VEC_VUNSIGNED2.
6355 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
6357         PR target/81572
6358         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6359         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6360         LRA_UNKNOWN_ALT.
6361         * lra-constraints.c (curr_insn_transform): Set up
6362         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
6363         LRA_UNKNOWN_ALT.
6364         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6365         * lra-eliminations.c (spill_pseudos): Ditto.
6366         (process_insn_for_elimination): Ditto.
6367         * lra-lives.c (reg_early_clobber_p): Use the new macros.
6368         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6369         LRA_NON_CLOBBERED_ALT.
6371 2018-02-22  Martin Sebor  <msebor@redhat.com>
6373         PR tree-optimization/84480
6374         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6375         to maybe_diag_stxncpy_trunc.  Call it.
6376         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6377         from gimple_fold_builtin_strcpy.  Print inlining stack.
6378         (handle_builtin_stxncpy): Print inlining stack.
6379         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6381 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
6383         PR target/84176
6384         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6385         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6386         and -fcheck-pointer-bounds are used together.
6387         (indirect_thunk_prefix): New enum.
6388         (indirect_thunk_need_prefix): New function.
6389         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
6390         "_nt" instead of "_bnd" for NOTRACK prefix.
6391         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6392         (output_indirect_thunk_function): Likewise.
6393         (): Likewise.
6394         (ix86_code_end): Update output_indirect_thunk_function calls.
6395         (ix86_output_indirect_branch_via_reg): Replace
6396         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6397         (ix86_output_indirect_branch_via_push): Likewise.
6398         (ix86_output_function_return): Likewise.
6399         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6400         incompatible with -fcf-protection=branch and
6401         -fcheck-pointer-bounds.
6403 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
6405         PR target/83335
6406         * config/aarch64/aarch64.c (aarch64_print_address_internal):
6407         Change gcc_assert call to output_operand_lossage.
6409 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
6411         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6413 2018-02-22  DJ Delorie  <dj@redhat.com>
6414             Sebastian Perta  <sebastian.perta@renesas.com>
6415             Oleg Endo  <olegendo@gcc.gnu.org>
6417         * config/rx/rx.c (rx_rtx_costs): New function.
6418         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6420 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6422         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6424 2018-02-22  Martin Liska  <mliska@suse.cz>
6426         PR driver/83193
6427         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6428         Add "native" as a possible value.
6430 2018-02-22  Martin Liska  <mliska@suse.cz>
6432         PR driver/83193
6433         * config/i386/i386.c (ix86_option_override_internal):
6434         Add "native" as a possible value for -march and -mtune.
6436 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
6438         PR target/84502
6439         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6440         to all type variants.
6442         PR tree-optimization/84503
6443         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6444         width as info->bitpos + info->bitsize - start.
6445         (merged_store_group::merge_overlapping): Simplify width computation.
6446         (check_no_overlap): New function.
6447         (imm_store_chain_info::try_coalesce_bswap): Compute expected
6448         start + width and last_order of the group, fail if check_no_overlap
6449         fails.
6450         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6451         to group if check_no_overlap fails.
6453 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
6455         * config/rs6000/altivec.md: Delete contraint arguments to
6456         define_expand, define_split, and define_peephole2, and in
6457         define_insn_and_split if always unused.
6458         * config/rs6000/darwin.md: Ditto.
6459         * config/rs6000/dfp.md: Ditto.
6460         * config/rs6000/rs6000.md: Ditto.
6461         * config/rs6000/sync.md: Ditto.
6462         * config/rs6000/vector.md: Ditto.
6463         * config/rs6000/vsx.md: Ditto.
6465 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
6467         * config/rs6000/altivec.md: Write output control strings as braced
6468         blocks instead of double-quoted strings.
6469         * config/rs6000/darwin.md: Ditto.
6470         * config/rs6000/rs6000.md: Ditto.
6471         * config/rs6000/vector.md: Ditto.
6472         * config/rs6000/vsx.md: Ditto.
6474 2018-02-21  Jason Merrill  <jason@redhat.com>
6476         PR c++/84314 - ICE with templates and fastcall attribute.
6477         * attribs.c (build_type_attribute_qual_variant): Remove assert.
6479 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
6481         * ipa-cp.c (determine_versionability): Fix comment typos.
6483 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
6485         PR c/84229
6486         * ipa-cp.c (determine_versionability): Do not version functions caling
6487         va_arg_pack.
6489 2018-02-21  Martin Liska  <mliska@suse.cz>
6491         PR driver/83193
6492         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6493         Add "native" as a possible value.
6494         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
6495         the macro when native cpu detection is available.
6497 2018-02-21  Martin Liska  <mliska@suse.cz>
6499         PR driver/83193
6500         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6501         Add "native" as a possible value.
6502         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6503         when native cpu detection is available.
6505 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
6506             Martin Sebor  <msebor@redhat.com>
6508         PR tree-optimization/84478
6509         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6510         false.
6511         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6512         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6513         support which is conservatively correct, for 2 only stay conservative
6514         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
6515         argument to the 2 argument get_range_strlen, adjust 6 arg
6516         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6517         false.
6518         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6519         (gimple_fold_builtin_strlen): Pass true as last argument to
6520         get_range_strlen.
6522 2018-02-20  Martin Sebor  <msebor@redhat.com>
6524         PR middle-end/84095
6525         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6526         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
6527         (builtin_memref::builtin_memref): Factor out parts into
6528         set_base_and_offset and call it.
6530 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
6532         PR middle-end/84406
6533         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6534         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6535         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
6536         search at the associated MODE_INT.
6538 2018-02-20  Jeff Law  <law@redhat.com>
6540         PR middle-end/82123
6541         PR tree-optimization/81592
6542         PR middle-end/79257
6543         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6544         for range data rather than using global data.
6545         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6546         range data rather than using global data.
6547         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6548         pass it to children as needed.
6549         (struct directive::fmtresult): Similarly.
6550         (struct directive::set_width): Similarly.
6551         (struct directive::set_precision): Similarly.
6552         (format_integer, format_directive, parse_directive): Similarly.
6553         (format_none): Accept unnamed vr_values parameter.
6554         (format_percent, format_floating, format_character): Similarly.
6555         (format_string, format_plain): Similarly.
6556         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6557         the EVRP range analyzer for range data rather than using global data.
6558         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
6559         gimple-ssa-evrp-analyze.h
6560         (class sprintf_dom_walker): Add after_dom_children member function.
6561         Add evrp_range_analyzer member.
6562         (sprintf_dom_walker::before_dom_children): Call into the EVRP
6563         range analyzer as needed.
6564         (sprintf_dom_walker::after_dom_children): New member function.
6565         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6566         if not optimizing.
6567         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6568         (evrp_range_analyzer::pop_to_marker): Likewise.
6570 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
6572         PR tree-optimization/84419
6573         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6574         with the required type if its current type is compatible but
6575         different.
6577 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
6579         PR middle-end/82004
6580         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6581         after vectorization.
6583 2018-02-20  Martin Liska  <mliska@suse.cz>
6585         PR driver/83193
6586         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6587         possible values if we don't have a hint.
6589 2018-02-20  Martin Liska  <mliska@suse.cz>
6591         PR c/84310
6592         PR target/79747
6593         * final.c (shorten_branches): Build align_tab array with one
6594         more element.
6595         * opts.c (finish_options): Add alignment option limit check.
6596         (MAX_CODE_ALIGN): Likewise.
6597         (MAX_CODE_ALIGN_VALUE): Likewise.
6598         * doc/invoke.texi: Document maximum allowed option value for
6599         all -falign-* options.
6601 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
6603         PR target/84146
6604         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6605         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6606         * var-tracking.c (emit_note_insn_var_location): Remove all references
6607         to NOTE_INSN_CALL_ARG_LOCATION.
6608         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6609         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6610         Use copy_rtx_if_shared.
6611         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6612         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6613         (dwarf2out_var_location): Remove handling of
6614         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6615         on call_insn.
6616         * final.c (final_scan_insn): Remove all references to
6617         NOTE_INSN_CALL_ARG_LOCATION.
6618         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
6619         before dumping final insns.
6620         * except.c (emit_note_eh_region_end): Remove all references to
6621         NOTE_INSN_CALL_ARG_LOCATION.
6622         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6623         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6624         * config/arc/arc.c (hwloop_optimize): Likewise.
6625         * config/arm/arm.c (create_fix_barrier): Likewise.
6626         * config/s390/s390.c (s390_chunkify_start): Likewise.
6627         * config/sh/sh.c (find_barrier): Likewise.
6628         * config/i386/i386.c (rest_of_insert_endbranch,
6629         ix86_seh_fixup_eh_fallthru): Likewise.
6630         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6631         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6632         * config/frv/frv.c (frv_function_prologue): Likewise.
6633         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
6634         reg note.
6635         (note_outside_basic_block_p): Remove all references to
6636         NOTE_INSN_CALL_ARG_LOCATION.
6637         * gengtype.c (adjust_field_rtx_def): Likewise.
6638         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6639         Likewise.
6640         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6641         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6643         PR c++/84444
6644         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6645         is ADDR_EXPR.
6647         PR tree-optimization/84452
6648         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6649         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6650         is NULL.
6652 2018-02-19  Martin Liska  <mliska@suse.cz>
6654         PR sanitizer/82183
6655         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6657 2018-02-19  Martin Liska  <mliska@suse.cz>
6658             Richard Sandiford  <richard.sandiford@linaro.org>
6660         PR tree-optimization/82491
6661         * gimple-fold.c (get_base_constructor): Make earlier bail out
6662         to prevent ubsan.
6664 2018-02-19  Carl Love  <cel@us.ibm.com>
6666         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6667         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6668         BU_P8V_OVERLOAD_1.
6669         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6670         P8V_BUILTIN_VEC_NEG.
6672 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
6674         * config/rl78/rl78.md (movdf): New define expand.
6676 2018-02-19  Martin Liska  <mliska@suse.cz>
6678         PR other/80589
6679         * doc/invoke.texi: Fix typo.
6680         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6682 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
6684         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6685         handle rs6000_single_float and rs6000_double_float specially for
6686         e500 family CPUs.
6688 2018-02-16  Jeff Law  <law@redhat.com>
6690         * config/rx/rx.c (add_pop_cfi_notes): New function.;
6691         (pop_regs): Use it.
6693 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
6695         PR ipa/84425
6696         * ipa-inline.c (inline_small_functions): Fix a typo.
6698 2018-02-16  Nathan Sidwell  <nathan@acm.org>
6700         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6702 2018-02-16  Carl Love  <cel@us.ibm.com>
6704         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6705         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6706         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6707         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6708         expansion to P8V_BUILTIN_VEC_FLOAT2.
6710 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
6712         PR rtl-optimization/70023
6713         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6714         src_regno into account.
6716 2018-02-16  Carl Love  <cel@us.ibm.com>
6718         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6719         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6720         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6721         * config/rs6000/rs6000.c: Remove case statements for
6722         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6723         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6724         and P9V_BUILTIN_VEC_VINSERT4B.
6725         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6726         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6727         * config/rs6000/vsx.md:
6728         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6729         vec_insert4b.
6731 2018-02-16  Carl Love  <cel@us.ibm.com>
6733         * config/rs6000/altivec.h: Add builtin names vec_extract4b
6734         vec_insert4b.
6735         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6736         definitions.
6737         * config/rs6000/rs6000-c.c: Add the definitions for
6738         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6739         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6740         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6741         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
6742         definition for insert4b and define insn *insert3b_internal.
6743         * doc/extend.texi: Add documentation for vec_extract4b.
6745 2018-02-16  Nathan Sidwell  <nathan@acm.org>
6747         * doc/extend.texi (Backwards Compatibility): Mention friend
6748         injection.  Note for-scope is deprecated.
6749         * doc/invoke.texi (-ffriend-injection): Deprecate.
6751 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
6753         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6754         that moved to I2, also allow destinations that are a paradoxical
6755         subreg (instead of a normal reg).
6757 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
6759         PR target/83831
6760         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6761         to QImode.
6763 2018-02-16  Richard Biener  <rguenther@suse.de>
6765         PR tree-optimization/84037
6766         PR tree-optimization/84016
6767         PR target/82862
6768         * config/i386/i386.c (ix86_builtin_vectorization_cost):
6769         Adjust vec_construct for the fact we need additional higher latency
6770         128bit inserts for AVX256 and AVX512 vector builds.
6771         (ix86_add_stmt_cost): Scale vector construction cost for
6772         elementwise loads.
6774 2018-02-16  Richard Biener  <rguenther@suse.de>
6776         PR tree-optimization/84417
6777         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6778         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6779         (non_rewritable_lvalue_p): Likewise, use poly-ints.
6781 2018-02-16  Martin Liska  <mliska@suse.cz>
6783         PR sanitizer/84307
6784         * internal-fn.def (ASAN_CHECK): Set proper flags.
6785         (ASAN_MARK): Likewise.
6787 2018-02-16  Julia Koval  <julia.koval@intel.com>
6789         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6790         from PTA_CANNONLAKE.
6792 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
6794         PR target/84272
6795         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6796         Use ++iter rather than iter++ for std::list iterators.
6797         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
6798         defer deleting them until all nodes in the forest are processed.  Do
6799         free even leaf nodes.  Change to_process into auto_vec.
6801         PR bootstrap/84405
6802         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6803         * vec.h (vec_default_construct): Use memset instead of placement new
6804         if BROKEN_VALUE_INITIALIZATION is defined.
6805         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6806         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6807         is defined.
6809         PR rtl-optimization/83723
6810         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6811         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
6812         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
6813         recursive calls.
6814         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6815         callers.
6816         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6818 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
6820         PR rtl-optimization/81443
6821         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6822         from inner REGs to paradoxical SUBREGs.
6824 2018-02-16  Richard Biener  <rguenther@suse.de>
6826         PR tree-optimization/84399
6827         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6828         For operands we can analyze at their definition make sure we can
6829         analyze them at each use as well.
6831 2018-02-16  Richard Biener  <rguenther@suse.de>
6833         PR tree-optimization/84190
6834         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6835         volatile accesses if the decl isn't volatile.
6837 2018-02-15  Jason Merrill  <jason@redhat.com>
6839         PR c++/84314 - ICE with templates and fastcall attribute.
6840         * attribs.c (build_type_attribute_qual_variant): Don't clobber
6841         TYPE_CANONICAL on an existing type.
6843 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
6845         PR tree-optimization/84383
6846         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6847         dstoff nor call operand_equal_p if dstbase is NULL.
6849         PR tree-optimization/84334
6850         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6851         also a CONSTANT_CLASS_P, punt.
6853 2018-02-14  Jim Wilson  <jimw@sifive.com>
6855         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6856         first SMALL_OPERAND check.  New local min_second_step.  Move assert
6857         to where locals are set.  Add TARGET_RVC support.
6858         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6860 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
6862         * doc/invoke.texi: Correct -Wformat-overflow code sample.
6864 2018-02-14  Martin Sebor  <msebor@redhat.com>
6866         PR tree-optimization/83698
6867         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6868         arrays constrain the offset range to their bounds.
6869         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6870         (builtin_access::overlap): Avoid setting the size of overlap if it's
6871         already been set.
6872         (maybe_diag_overlap): Also consider arrays when deciding what values
6873         of offsets to include in diagnostics.
6875 2018-02-14  Martin Sebor  <msebor@redhat.com>
6877         PR c/84108
6878         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6879         that correspond to the kind of a declaration.
6881 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
6883         PR target/83984
6884         * config/pa/pa.md: Load address of PIC label using the linkage table
6885         if the label is nonlocal.
6887 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6889         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6890         warning message if user requests -maltivec=be.
6891         * doc/invoke.texi: Document deprecation of -maltivec=be.
6893 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
6895         PR target/84220
6896         * config/rs6000/rs6000-c.c: Update definitions for
6897         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6898         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6900 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6902         PR target/84239
6903         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6904         add _get_ssp intrinsics. Remove argument from
6905         __builtin_ia32_rdssp[d|q].
6906         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6907         * config/i386/i386-builtin.def: Remove argument from
6908         __builtin_ia32_rdssp[d|q].
6909         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6910         ix86_expand_special_args_builtin for _rdssp[d|q].
6911         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6912         Clear register before usage.
6913         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6914         Add documentation for new _get_ssp and _inc_ssp intrinsics.
6916 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
6918         PR tree-optimization/84357
6919         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6920         operand 1 of an ARRAY_REF too.
6922 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
6924         PR target/83831
6925         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6926         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6927         declarations.
6928         (set_of_reg): New struct.
6929         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6930         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6931         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6932         functions.
6933         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6934         Split into bitclr, bitset, bitinvert patterns if appropriate.
6935         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6936         use rx_fuse_in_memory_bitop.
6937         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6938         to named insn, correct maximum insn length.
6940 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
6942         PR target/79242
6943         * machmode.def: Define a complex mode for PARTIAL_INT.
6944         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6945         MODE_PARTIAL_INT.
6946         * doc/rtl.texi: Document CSPImode.
6947         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6948         handling.
6949         (msp430_hard_regno_nregs_with_padding): Likewise.
6951 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
6953         PR target/84279
6954         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6956 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
6958         PR rtl-optimization/84169
6959         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
6960         we generated a parallel as new i3 and we split that to new i2 and i3
6961         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
6962         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
6963         those to i2, not i1.  Partially rewrite this scan code.
6965 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
6967         PR c/82210
6968         * stor-layout.c (place_field): For variable length fields, adjust
6969         offset_align afterwards not just based on the field's alignment,
6970         but also on the size.
6972         PR middle-end/84309
6973         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6974         of exps and logs in the use_exp2 case.
6976 2018-02-13  Jeff Law  <law@redhat.com>
6978         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6979         entry for "vector".
6981         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6982         ARGS as unused.
6984 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
6986         PR debug/84342
6987         PR debug/84319
6988         * common.opt (gas-loc-support, gas-locview-support): New.
6989         (ginline-points, ginternal-reset-location-views): New.
6990         * doc/invoke.texi: Document them.  Use @itemx where intended.
6991         (gvariable-location-views): Adjust.
6992         * target.def (reset_location_view): New.
6993         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6994         (TARGET_RESET_LOCATION_VIEW): New.
6995         * doc/tm.texi: Rebuilt.
6996         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6997         (dwarf2out_default_as_locview_support): New.
6998         (output_asm_line_debug_info): Use option variables.
6999         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
7000         (output_loc_list): Likewise.
7001         (add_high_low_attributes): Check option variables.
7002         Don't output entry view attribute in strict mode.
7003         (gen_inlined_subroutine_die): Check option variables.
7004         (dwarf2out_inline_entry): Likewise.
7005         (init_sections_and_labels): Likewise.
7006         (dwarf2out_early_finish): Likewise.
7007         (maybe_reset_location_view): New, from...
7008         (dwarf2out_var_location): ... here.  Call it.
7009         * debug.h (dwarf2out_default_as_loc_support): Declare.
7010         (dwarf2out_default_as_locview_support): Declare.
7011         * hooks.c (hook_int_rtx_insn_0): New.
7012         * hooks.h (hook_int_rtx_insn_0): Declare.
7013         * toplev.c (process_options): Take -gas-loc-support and
7014         -gas-locview-support from dwarf2out.  Enable
7015         -gvariable-location-views by default only with locview
7016         assembler support.  Enable -ginternal-reset-location-views by
7017         default only if the target defines the corresponding hook.
7018         Enable -ginline-points by default if location views are
7019         enabled; force it disabled if statement frontiers are
7020         disabled.
7021         * tree-inline.c (expand_call_inline): Check option variables.
7022         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
7024 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
7026         PR tree-optimization/84321
7027         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
7028         handling.  Also check whether the anti-range contains any values
7029         that satisfy the mask; switch to a VR_RANGE if not.
7031 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
7033         PR sanitizer/84340
7034         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
7036 2018-02-13  Martin Jambor  <mjambor@suse.cz>
7038         PR c++/83990
7039         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
7040         of call statements, also set location of a load to a temporary.
7042 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
7044         * config/rl78/rl78.c (add_vector_labels): New function.
7045         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
7046         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
7047         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
7048         which checks that no arguments are passed.
7049         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
7050         * doc/extend.texi: Documentation for the new attribute.
7052 2018-02-13  Andreas Schwab  <schwab@suse.de>
7054         * config/riscv/linux.h (CPP_SPEC): Define.
7056 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
7058         PR target/84335
7059         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
7060         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
7061         OPTION_MASK_ISA_AES as first argument to def_builtin_const
7062         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
7063         instead of OPTION_MASK_ISA_PCLMUL as first argument to
7064         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
7065         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
7066         temporarily for AES and PCLMUL builtins.
7068         PR tree-optimization/84339
7069         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
7070         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
7071         Formatting fixes.
7073         PR middle-end/84309
7074         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
7075         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
7076         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
7077         inline function.
7078         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
7079         inline function.
7080         * omp-simd-clone.h: New file.
7081         * omp-simd-clone.c: Include omp-simd-clone.h.
7082         (expand_simd_clones): No longer static.
7083         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
7084         cgraph.h and omp-simd-clone.h.
7085         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
7086         (vect_recog_widen_shift_pattern): Formatting fix.
7087         (vect_pattern_recog_1): Don't check optab for calls.
7089         PR target/84336
7090         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
7091         operands[2] into a REG before using gen_lowpart on it.
7093 2018-02-12  Jeff Law  <law@redhat.com>
7095         PR target/83760
7096         * config/sh/sh.c (find_barrier): Consider a sibling call
7097         a barrier as well.
7099         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
7100         successfully back substituting a reg.
7102 2018-02-12  Richard Biener  <rguenther@suse.de>
7104         PR tree-optimization/84037
7105         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
7106         parameter, move visited init to caller.
7107         (vect_slp_analyze_operations): Separate cost from validity
7108         check, initialize visited once for all instances.
7109         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
7110         for all instances.
7111         * tree-vect-stmts.c (vect_model_simple_cost): Make early
7112         out an assert.
7113         (vect_model_promotion_demotion_cost): Likewise.
7114         (vectorizable_bswap): Guard cost modeling with !slp_node
7115         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
7116         SLP stmts.
7117         (vectorizable_call): Likewise.
7118         (vectorizable_conversion): Likewise.
7119         (vectorizable_assignment): Likewise.
7120         (vectorizable_shift): Likewise.
7121         (vectorizable_operation): Likewise.
7122         (vectorizable_store): Likewise.
7123         (vectorizable_load): Likewise.
7124         (vectorizable_condition): Likewise.
7125         (vectorizable_comparison): Likewise.
7127 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
7129         PR sanitizer/84307
7130         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
7131         (ASAN_MARK): Fix fnspec to account for return value, change pointer
7132         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
7134 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
7136         PR middle-end/83665
7137         * params.def (inline-min-speedup): Increase from 8 to 15.
7138         (max-inline-insns-auto): Decrease from 40 to 30.
7139         * ipa-split.c (consider_split): Add some buffer for function to
7140         be considered inlining candidate.
7141         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
7142         default values.
7144 2018-02-12  Richard Biener  <rguenther@suse.de>
7146         PR tree-optimization/84037
7147         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
7148         matched stmts if we cannot swap the non-matched ones.
7150 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
7152         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
7153         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
7154         _mm_maskz_scalef_round_ss): New intrinsics.
7155         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
7156         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
7157         __builtin_ia32_scalefss_round): Remove.
7158         (__builtin_ia32_scalefsd_mask_round,
7159         __builtin_ia32_scalefss_mask_round): New intrinsics.
7160         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
7161         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
7162         ((match_operand:VF_128 2 "<round_nimm_predicate>"
7163         "<round_constraint>")): Changed to ...
7164         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
7165         "<round_scalar_constraint>")): ... this.
7166         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
7167         %0, %1, %2<round_op3>}"): Changed to ...
7168         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
7169         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
7170         %2<round_scalar_mask_op3>}"): ... this.
7171         * config/i386/subst.md (round_scalar_nimm_predicate): New.
7173 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
7175         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
7176         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
7177         (_mm_maskz_sqrt_round_ss): New intrinsics.
7178         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
7179         (__builtin_ia32_sqrtsd_mask_round)
7180         (__builtin_ia32_sqrtss_mask_round): New builtins.
7181         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
7182         (__builtin_ia32_sqrtss_round): Remove.
7183         (__builtin_ia32_sqrtsd_mask_round)
7184         (__builtin_ia32_sqrtss_mask_round): New builtins.
7185         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
7186         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
7187         ((match_operand:VF_128 1 "vector_operand"
7188         "xBm,<round_constraint>")): Changed to ...
7189         ((match_operand:VF_128 1 "vector_operand"
7190         "xBm,<round_scalar_constraint>")): ... this.
7191         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
7192         %0, %2, %<iptr>1<round_op3>}): Changed to ...
7193         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
7194         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
7195         %<iptr>1<round_scalar_mask_op3>}): ... this.
7196         ((set_attr "prefix" "<round_prefix>")): Changed to ...
7197         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
7199 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
7201         PR target/84266
7202         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
7203         Cast vec_cmpeq result to correct type.
7204         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7205         Cast vec_cmpgt result to correct type.
7207 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
7209         * final.c (final_scan_insn_1): Renamed from...
7210         (final_scan_insn): ... this.  New wrapper, to recover
7211         seen from the outermost call in recursive ones.
7212         * config/sparc/sparc.c (output_return): Drop seen from call.
7213         (output_sibcall): Likewise.
7214         * config/visium/visium.c (output_branch): Likewise.
7216 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
7218         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7219         function label.
7221 2018-02-10  Alan Modra  <amodra@gmail.com>
7223         PR target/84300
7224         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7225         Specify LR as an input.
7227 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
7229         PR sanitizer/83987
7230         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7231         remove_member_access_dummy_vars): New functions.
7232         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7233         lower_omp_1, execute_lower_omp): Use them.
7235         PR rtl-optimization/84308
7236         * shrink-wrap.c (spread_components): Release todo vector.
7238 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
7240         PR rtl-optimization/57193
7241         * ira-color.c (struct allocno_color_data): Add member
7242         conflict_allocno_hard_prefs.
7243         (update_conflict_allocno_hard_prefs): New.
7244         (bucket_allocno_compare_func): Add a preference based on
7245         conflict_allocno_hard_prefs.
7246         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7247         (color_allocnos): Remove a dead code.  Initiate
7248         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
7250 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
7252         PR target/84226
7253         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7254         constraint from =wa to wa.  Avoid a subreg on the output operand,
7255         instead use a pseudo and subreg it in a move.
7256         (p9_xxbrd_<mode>): Changed to ...
7257         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7258         (p9_xxbrd_v2df): New expander.
7259         (p9_xxbrw_<mode>): Changed to ...
7260         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7261         (p9_xxbrw_v4sf): New expander.
7263 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
7265         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7267 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
7269         PR target/83926
7270         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7271         multiply in 32-bit mode.
7272         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7273         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7274         mode.
7276 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
7278         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7279         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7280         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7281         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7283 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
7285         PR lto/84213
7286         * dwarf2out.c (is_trivial_indirect_ref): New function.
7287         (dwarf2out_late_global_decl): Do not generate a location
7288         attribute for variables that have a non-trivial DECL_VALUE_EXPR
7289         and that are not defined in the current unit.
7291 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
7293         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7294         instead of a libcall for UNORDERED.
7296 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
7298         PR target/82641
7299         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7300         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7302 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7304         PR target/PR84295
7305         * config/s390/s390.c (s390_set_current_function): Invoke
7306         s390_indirect_branch_settings also if fndecl didn't change.
7308 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
7310         * config/rs6000/rs6000.md (blockage): Set length to zero.
7312 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
7314         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7316 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
7318         PR sanitizer/84285
7319         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7320         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7321         -static-lib*san.
7323         PR debug/84252
7324         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7325         PARALLEL incoming that failed vt_get_decl_and_offset check.
7327         PR middle-end/84237
7328         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7329         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7330         TREE_READONLY bit.
7331         (get_variable_section): For decls in named .bss* sections pass true as
7332         second argument to bss_initializer_p.
7334 2018-02-09  Marek Polacek  <polacek@redhat.com>
7335             Jakub Jelinek  <jakub@redhat.com>
7337         PR c++/83659
7338         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7339         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
7340         Sync some changes from cxx_fold_indirect_ref.
7342 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
7344         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7345         markers.
7346         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7347         (BLOCK_INLINE_ENTRY_LABEL): New.
7348         (dwarf2out_var_location): Disregard inline entry markers.
7349         (inline_entry_data): New struct.
7350         (inline_entry_data_hasher): New hashtable type.
7351         (inline_entry_data_hasher::hash): New.
7352         (inline_entry_data_hasher::equal): New.
7353         (inline_entry_data_table): New variable.
7354         (add_high_low_attributes): Add DW_AT_entry_pc and
7355         DW_AT_GNU_entry_view attributes if a pending entry is found
7356         in inline_entry_data_table.  Add old entry_pc attribute only
7357         if debug nonbinding markers are disabled.
7358         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7359         markers are enabled.
7360         (block_within_block_p, dwarf2out_inline_entry): New.
7361         (dwarf2out_finish): Check that no entries remained in
7362         inline_entry_data_table.
7363         * final.c (reemit_insn_block_notes): Handle inline entry notes.
7364         (final_scan_insn, notice_source_line): Likewise.
7365         (rest_of_clean_state): Skip inline entry markers.
7366         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7367         markers.
7368         * gimple.c (gimple_build_debug_inline_entry): New.
7369         * gimple.h (enum gimple_debug_subcode): Add
7370         GIMPLE_DEBUG_INLINE_ENTRY.
7371         (gimple_build_debug_inline_entry): Declare.
7372         (gimple_debug_inline_entry_p): New.
7373         (gimple_debug_nonbind_marker_p): Adjust.
7374         * insn-notes.def (INLINE_ENTRY): New.
7375         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7376         inline entry marker notes.
7377         (print_insn): Likewise.
7378         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7379         (INSN_DEBUG_MARKER_KIND): Likewise.
7380         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7381         * tree-inline.c (expand_call_inline): Build and insert
7382         debug_inline_entry stmt.
7383         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7384         inline entry blocks early, if nonbind markers are enabled.
7385         (dump_scope_block): Dump fragment info.
7386         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7387         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7388         (gimple_build_debug_inline_entry): New.
7389         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7390         Enable/disable inline entry points too.
7391         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7392         (DEBUG_INSN): Describe inline entry markers.
7394         * common.opt (gvariable-location-views): New.
7395         (gvariable-location-views=incompat5): New.
7396         * config.in: Rebuilt.
7397         * configure: Rebuilt.
7398         * configure.ac: Test assembler for view support.
7399         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7400         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7401         * dwarf2out.c (var_loc_view): New typedef.
7402         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7403         (dwarf2out_locviews_in_attribute): New.
7404         (dwarf2out_locviews_in_loclist): New.
7405         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7406         (enum dw_line_info_opcode): Add LI_adv_address.
7407         (struct dw_line_info_table): Add view.
7408         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7409         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7410         (zero_view_p): New variable.
7411         (ZERO_VIEW_P): New macro.
7412         (output_asm_line_debug_info): New.
7413         (struct var_loc_node): Add view.
7414         (add_AT_view_list, AT_loc_list): New.
7415         (add_var_loc_to_decl): Add view param.  Test it against last.
7416         (new_loc_list): Add view params.  Record them.
7417         (AT_loc_list_ptr): Handle loc and view lists.
7418         (view_list_to_loc_list_val_node): New.
7419         (print_dw_val): Handle dw_val_class_view_list.
7420         (size_of_die): Likewise.
7421         (value_format): Likewise.
7422         (loc_list_has_views): New.
7423         (gen_llsym): Set vl_symbol too.
7424         (maybe_gen_llsym, skip_loc_list_entry): New.
7425         (dwarf2out_maybe_output_loclist_view_pair): New.
7426         (output_loc_list): Output view list or entries too.
7427         (output_view_list_offset): New.
7428         (output_die): Handle dw_val_class_view_list.
7429         (output_dwarf_version): New.
7430         (output_compilation_unit_header): Use it.
7431         (output_skeleton_debug_sections): Likewise.
7432         (output_rnglists, output_line_info): Likewise.
7433         (output_pubnames, output_aranges): Update version comments.
7434         (output_one_line_info_table): Output view numbers in asm comments.
7435         (dw_loc_list): Determine current endview, pass it to new_loc_list.
7436         Call maybe_gen_llsym.
7437         (loc_list_from_tree_1): Adjust.
7438         (add_AT_location_description): Create view list attribute if
7439         needed, check it's absent otherwise.
7440         (convert_cfa_to_fb_loc_list): Adjust.
7441         (maybe_emit_file): Call output_asm_line_debug_info for test.
7442         (dwarf2out_var_location): Reset views as needed.  Precompute
7443         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
7444         attribute.  Set view.
7445         (new_line_info_table): Reset next view.
7446         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7447         (dwarf2out_source_line): Likewise.  Output view resets and labels to
7448         the assembler, or select appropriate line info opcodes.
7449         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7450         (optimize_string_length): Catch it.  Adjust.
7451         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
7452         dw_val_class_view_list, and remove it if no longer needed.
7453         (hash_loc_list): Hash view numbers.
7454         (loc_list_hasher::equal): Compare them.
7455         (optimize_location_lists): Check whether a view list symbol is
7456         needed, and whether the locview attribute is present, and
7457         whether they match.  Remove the locview attribute if no longer
7458         needed.
7459         (index_location_lists): Call skip_loc_list_entry for test.
7460         (dwarf2out_finish): Call output_asm_line_debug_info for test.
7461         Use output_dwarf_version.
7462         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7463         (struct dw_val_node): Add val_view_list.
7464         * final.c (SEEN_NEXT_VIEW): New.
7465         (set_next_view_needed): New.
7466         (clear_next_view_needed): New.
7467         (maybe_output_next_view): New.
7468         (final_start_function): Rename to...
7469         (final_start_function_1): ... this.  Take pointer to FIRST,
7470         add SEEN parameter.  Emit param bindings in the initial view.
7471         (final_start_function): Reintroduce SEEN-less interface.
7472         (final): Rename to...
7473         (final_1): ... this.  Take SEEN parameter.  Output final pending
7474         next view at the end.
7475         (final): Reintroduce seen-less interface.
7476         (final_scan_insn): Output pending next view before switching
7477         sections or ending a block.  Mark the next view as needed when
7478         outputting variable locations.  Notify debug backend of section
7479         changes, and of location view changes.
7480         (rest_of_handle_final): Adjust.
7481         * toplev.c (process_options): Autodetect value for debug variable
7482         location views option.  Warn on incompat5 without -gdwarf-5.
7483         * doc/invoke.texi (gvariable-location-views): New.
7484         (gvariable-location-views=incompat5): New.
7485         (gno-variable-location-views): New.
7487 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
7489         PR tree-optimization/84136
7490         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7491         that the result of find_edge is non-NULL.
7493 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
7495         PR target/83008
7496         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7497         storing integer register in SImode.  Fix cost of 256 and 512
7498         byte aligned SSE register store.
7500 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
7502         * config/i386/i386.c (ix86_multiplication_cost): Fix
7503         multiplication cost for TARGET_AVX512DQ.
7505 2018-02-08  Marek Polacek  <polacek@redhat.com>
7507         PR tree-optimization/84238
7508         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7509         get_range_strlen.
7511 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7513         PR tree-optimization/84265
7514         * tree-vect-stmts.c (vectorizable_store): Don't treat
7515         VMAT_CONTIGUOUS accesses as grouped.
7516         (vectorizable_load): Likewise.
7518 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7520         PR tree-optimization/81635
7521         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7522         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7523         (test_round_for_mask): New functions.
7524         (wide_int_cc_tests): Call test_round_for_mask.
7525         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7526         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7527         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7528         range returned by get_range_info.
7530 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
7532         PR ipa/81360
7533         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7534         * symtab.c: Include builtins.h
7535         (symtab_node::output_to_lto_symbol_table_p): Move here
7536         from lto-streamer-out.c:output_symbol_p.
7537         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7538         (output_symbol_p): Move all logic to symtab.c
7539         (produce_symtab): Update.
7541 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7543         * config/s390/s390-opts.h (enum indirect_branch): Define.
7544         * config/s390/s390-protos.h (s390_return_addr_from_memory)
7545         (s390_indirect_branch_via_thunk)
7546         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7547         (enum s390_indirect_branch_type): Define.
7548         * config/s390/s390.c (struct s390_frame_layout, struct
7549         machine_function): Remove.
7550         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7551         (indirect_branch_table_label_no, indirect_branch_table_name):
7552         Define variables.
7553         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7554         (enum s390_indirect_branch_option): Define.
7555         (s390_return_addr_from_memory): New function.
7556         (s390_handle_string_attribute): New function.
7557         (s390_attribute_table): Add new attribute handler.
7558         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7559         (s390_indirect_branch_via_thunk): New function.
7560         (s390_indirect_branch_via_inline_thunk): New function.
7561         (s390_function_ok_for_sibcall): When jumping via thunk disallow
7562         sibling call optimization for non z10 compiles.
7563         (s390_emit_call): Force indirect branch target to be a single
7564         register.  Add r1 clobber for non-z10 compiles.
7565         (s390_emit_epilogue): Emit return jump via return_use expander.
7566         (s390_reorg): Handle JUMP_INSNs as execute targets.
7567         (s390_option_override_internal): Perform validity checks for the
7568         new command line options.
7569         (s390_indirect_branch_attrvalue): New function.
7570         (s390_indirect_branch_settings): New function.
7571         (s390_set_current_function): Invoke s390_indirect_branch_settings.
7572         (s390_output_indirect_thunk_function):  New function.
7573         (s390_code_end): Implement target hook.
7574         (s390_case_values_threshold): Implement target hook.
7575         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7576         macros.
7577         * config/s390/s390.h (struct s390_frame_layout)
7578         (struct machine_function): Move here from s390.c.
7579         (TARGET_INDIRECT_BRANCH_NOBP_RET)
7580         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7581         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7582         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7583         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7584         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7585         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7586         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7587         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7588         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7589         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7590         (mnemonic attribute): Add values which aren't recognized
7591         automatically.
7592         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7593         pattern for branch conversion.  Fix mnemonic attribute.
7594         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7595         indirect branch via thunk if requested.
7596         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7597         ("*indirect_jump"): Disable for branch conversion using out of
7598         line thunks.
7599         ("indirect_jump_via_thunk<mode>_z10")
7600         ("indirect_jump_via_thunk<mode>")
7601         ("indirect_jump_via_inlinethunk<mode>_z10")
7602         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7603         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7604         ("casesi_jump_via_inlinethunk<mode>_z10")
7605         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7606         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7607         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7608         ("*indirect2_jump"): Disable for branch conversion.
7609         ("casesi_jump"): Turn into expander and expand patterns for branch
7610         conversion.
7611         ("return_use"): New expander.
7612         ("*return"): Emit return via thunk and rename it to ...
7613         ("*return<mode>"): ... this one.
7614         * config/s390/s390.opt: Add new options and and enum for the
7615         option values.
7617 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
7619         * lra-constraints.c (match_reload): Unconditionally use
7620         gen_lowpart_SUBREG, rather than selecting between that
7621         and equivalent gen_rtx_SUBREG code.
7623 2018-02-08  Richard Biener  <rguenther@suse.de>
7625         PR tree-optimization/84233
7626         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7627         changed flag instead of boguously re-using phi_inserted.
7629 2018-02-08  Martin Jambor  <mjambor@suse.cz>
7631         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7632         static local variables.
7634 2018-02-08  Richard Biener  <rguenther@suse.de>
7636         PR tree-optimization/84278
7637         * tree-vect-stmts.c (vectorizable_store): When looking for
7638         smaller vector types to perform grouped strided loads/stores
7639         make sure the mode is supported by the target.
7640         (vectorizable_load): Likewise.
7642 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
7644         * config/aarch64/aarch64.c (aarch64_components_for_bb):
7645         Increase LDP/STP opportunities by adding adjacent callee-saves.
7647 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
7649         PR rtl-optimization/84068
7650         PR rtl-optimization/83459
7651         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7653 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
7655         PR tree-optimization/84224
7656         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7657         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7658         non-zero arguments.
7660 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
7662         PR target/84113
7663         * config/rs6000/altivec.md (*restore_world): Remove LR use.
7664         * config/rs6000/predicates.md (restore_world_operation): Adjust op
7665         count, remove one USE.
7667 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
7669         * doc/install.texi (Configuration): Document the
7670         --with-long-double-format={ibm,ieee} PowerPC configuration
7671         options.
7673         PR target/84154
7674         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7675         Convert from define_expand to be define_insn_and_split.  Rework
7676         float/double/_Float128 conversions to QI/HI/SImode to work with
7677         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
7678         conversions to QI/HImode types did a store and then a load to
7679         truncate the value.  For conversions to VSX registers, don't split
7680         the insn, instead emit the code directly.  Use the code iterator
7681         any_fix to combine signed and unsigned conversions.
7682         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7683         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7684         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7685         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7686         (fix_<mode>di2_hw): Likewise.
7687         (fixuns_<mode>di2_hw): Likewise.
7688         (fix_<mode>si2_hw): Likewise.
7689         (fixuns_<mode>si2_hw): Likewise.
7690         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7691         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7692         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7693         fix<uns>_trunc<SFDF:mode>si2_p8.
7694         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7695         used.
7696         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7697         (fix<uns>_<mode>_mem): Likewise.
7698         (fctiw<u>z_<mode>_mem): Likewise.
7699         (fix<uns>_<mode>_mem): Likewise.
7700         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7701         the register allocator from doing a direct move to the GPRs to do
7702         a store, and instead use the ISA 3.0 store byte/half-word from
7703         vector register instruction.  For IEEE 128-bit floating point,
7704         also optimize stores of 32-bit ints.
7705         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7707 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
7709         * genextract.c (push_pathstr_operand): New function to support
7710         [a-zA-Z].
7711         (walk_rtx): Call push_pathstr_operand.
7712         (print_path): Support [a-zA-Z].
7714 2018-02-07  Richard Biener  <rguenther@suse.de>
7716         PR tree-optimization/84037
7717         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7718         (cse_and_gimplify_to_preheader): Declare.
7719         (vect_get_place_in_interleaving_chain): Likewise.
7720         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7721         ivexpr_map.
7722         (_loop_vec_info::~_loop_vec_info): Delete it.
7723         (cse_and_gimplify_to_preheader): New function.
7724         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7725         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7726         (vectorizable_load): Likewise.  For grouped stores always base
7727         the IV on the first element.
7728         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7729         condition before gimplifying.
7731 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
7733         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7734         *DIV_EXPR and *MOD_EXPR.
7736 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
7738         PR target/84248
7739         * config/i386/i386.c (ix86_option_override_internal): Mask out
7740         the CF_SET bit when checking -fcf-protection.
7742 2018-02-07  Tom de Vries  <tom@codesourcery.com>
7744         PR libgomp/84217
7745         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7746         enough.
7748 2018-02-07  Richard Biener  <rguenther@suse.de>
7750         PR tree-optimization/84204
7751         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7752         this place.
7754         PR tree-optimization/84205
7755         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7756         special-case isl_ast_op_zdiv_r.
7758         PR tree-optimization/84223
7759         * graphite-scop-detection.c (gather_bbs::before_dom_children):
7760         Only add conditions from within the region.
7761         (gather_bbs::after_dom_children): Adjust.
7763 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
7765         PR target/84209
7766         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7767         * config/avr/avr.md: Only post-reload split REG-REG moves if
7768         either register is GENERAL_REG_P.
7770 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
7772         PR tree-optimization/84235
7773         * tree-ssa-scopedtables.c
7774         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7775         if the subtraction is performed in floating point type where NaNs are
7776         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7777         build 1.  Formatting fix.
7779 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
7781         PR target/84146
7782         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7783         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7784         and skip it regardless of bb boundaries.  Use CALL_P macro,
7785         don't test INSN_P (insn) together with CALL_P or JUMP_P check
7786         unnecessarily, formatting fix.
7788 2018-02-06  Michael Collison  <michael.collison@arm.com>
7790         * config/arm/thumb2.md:
7791         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7792         (*thumb_mov_notscc): Ditto.
7794 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
7796         PR target/84154
7797         * config/rs6000/rs6000.md (su code attribute): Use "u" for
7798         unsigned_fix, not "s".
7800 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7802         * configure.ac (gcc_fn_eh_frame_ro): New function.
7803         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7804         correct .eh_frame permissions.
7805         * configure: Regenerate.
7807 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
7809         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7810         irrelevant options.
7812 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7814         * config/rs6000/rs6000.c (rs6000_option_override_internal):
7815         Display warning message for -mno-speculate-indirect-jumps.
7817 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
7819         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7820         Undocumented.
7821         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7823 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
7825         PR tree-optimization/84225
7826         * tree-eh.c (find_trapping_overflow): Only call
7827         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7829 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7831         PR target/84145
7832         * config/i386/i386.c: Reimplement the check of possible options
7833         -mibt/-mshstk conbination. Change error messages.
7834         * doc/invoke.texi: Fix a typo: remove extra '='.
7836 2018-02-06  Marek Polacek  <polacek@redhat.com>
7838         PR tree-optimization/84228
7839         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7841 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
7843         PR target/82641
7844         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7845         emitted arch directives.
7846         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7847         __ARM_FEATURE_COPROC before changing architectures.
7849 2018-02-06  Richard Biener  <rguenther@suse.de>
7851         * config/i386/i386.c (print_reg): Fix typo.
7852         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7854 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
7856         * configure: Regenerate.
7858 2018-02-05  Martin Sebor  <msebor@redhat.com>
7860         PR tree-optimization/83369
7861         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7862         inlining context.
7864 2018-02-05  Martin Liska  <mliska@suse.cz>
7866         * doc/invoke.texi: Cherry-pick upstream r323995.
7868 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
7870         * ira.c (ira_init_register_move_cost): Adjust comment.
7872 2018-02-05  Martin Liska  <mliska@suse.cz>
7874         PR gcov-profile/84137
7875         * doc/gcov.texi: Fix typo in documentation.
7877 2018-02-05  Martin Liska  <mliska@suse.cz>
7879         PR gcov-profile/83879
7880         * doc/gcov.texi: Document necessity of --dynamic-list-data when
7881         using dlopen functionality.
7883 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
7885         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7886         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7887         _mm_maskz_range_ss, _mm_mask_range_round_ss,
7888         _mm_maskz_range_round_ss): New intrinsics.
7889         (__builtin_ia32_rangesd128_round)
7890         (__builtin_ia32_rangess128_round): Remove.
7891         (__builtin_ia32_rangesd128_mask_round,
7892         __builtin_ia32_rangess128_mask_round): New builtins.
7893         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7894         __builtin_ia32_rangess128_round): Remove.
7895         (__builtin_ia32_rangesd128_mask_round,
7896         __builtin_ia32_rangess128_mask_round): New builtins.
7897         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7898         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7899         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7900         "<round_saeonly_constraint>")): Changed to ...
7901         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7902         "<round_saeonly_scalar_constraint>")): ... this.
7903         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7904         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7905         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7906         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7907         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7909 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
7911         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7912         options.
7913         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7914         Remove all values except native, 8540 and 8548.
7916 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
7918         * config/i386/i386.c (ix86_output_function_return): Pass
7919         INVALID_REGNUM, instead of -1, as invalid register number to
7920         indirect_thunk_name and output_indirect_thunk.
7922 2018-02-02  Julia Koval  <julia.koval@intel.com>
7924         * config.gcc: Add -march=icelake.
7925         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7926         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7927         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7928         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7929         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7930         (processor_target_table): Add icelake.
7931         (ix86_option_override_internal): Handle new PTAs.
7932         (get_builtin_code_for_version): Handle icelake.
7933         (M_INTEL_COREI7_ICELAKE): New.
7934         (fold_builtin_cpu): Handle icelake.
7935         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7936         * doc/invoke.texi: Add -march=icelake.
7938 2018-02-02  Julia Koval  <julia.koval@intel.com>
7940         * config/i386/i386.c (ix86_option_override_internal): Change flags type
7941         to wide_int_bitmask.
7942         * wide-int-bitmask.h: New.
7944 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
7946         PR target/84066
7947         * config/i386/i386.md: Replace Pmode with word_mode in
7948         builtin_setjmp_setup and builtin_longjmp to support x32.
7950 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
7952         PR target/56010
7953         PR target/83743
7954         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7955         #include "opts.h".
7956         (rs6000_supported_cpu_names): New static variable.
7957         (linux_cpu_translation_table): Likewise.
7958         (elf_platform) <cpu>: Define new static variable and use it.
7959         Translate kernel AT_PLATFORM name to canonical name if needed.
7960         Error if platform name is unknown.
7962 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
7964         PR target/84089
7965         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7967 2018-02-01  Jeff Law  <law@redhat.com>
7969         PR target/84128
7970         * config/i386/i386.c (release_scratch_register_on_entry): Add new
7971         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
7972         the scratch if RELEASE_VIA_POP is false.
7973         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7974         If we have to save a temporary register, decrement SIZE appropriately.
7975         Pass new arguments to release_scratch_register_on_entry.
7976         (ix86_adjust_stack_and_probe): Likewise.
7977         (ix86_emit_probe_stack_range): Pass new arguments to
7978         release_scratch_register_on_entry.
7980 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
7982         PR rtl-optimization/84157
7983         * combine.c (change_zero_ext): Use REG_P predicate in
7984         front of HARD_REGISTER_P predicate.
7986 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
7988         * config/avr/avr.c (avr_option_override): Move disabling of
7989         -fdelete-null-pointer-checks to...
7990         * common/config/avr/avr-common.c (avr_option_optimization_table):
7991         ...here.
7993 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
7995         PR tree-optimization/81635
7996         * tree-data-ref.c (split_constant_offset_1): For types that
7997         wrap on overflow, try to use range info to prove that wrapping
7998         cannot occur.
8000 2018-02-01  Renlin Li  <renlin.li@arm.com>
8002         PR target/83370
8003         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
8004         TAILCALL_ADDR_REGS.
8005         (aarch64_register_move_cost): Likewise.
8006         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
8007         TAILCALL_ADDR_REGS.
8008         (REG_CLASS_NAMES): Likewise.
8009         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
8010         TAILCALL_ADDR_REGS. Remove IP registers.
8011         * config/aarch64/aarch64.md (Ucs): Update register constraint.
8013 2018-02-01  Richard Biener  <rguenther@suse.de>
8015         * domwalk.h (dom_walker::dom_walker): Add additional constructor
8016         for specifying RPO order and allow NULL for that.
8017         * domwalk.c (dom_walker::dom_walker): Likewise.
8018         (dom_walker::walk): Handle NULL RPO order.
8019         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
8020         in RPO order.
8021         (rewrite_update_dom_walker): Likewise.
8022         (mark_def_dom_walker): Likewise.
8024 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8026         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
8027         (aarch64_maybe_expand_sve_subreg_move): Declare.
8028         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
8029         * config/aarch64/predicates.md (aarch64_any_register_operand): New
8030         predicate.
8031         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
8032         that are semantically a reverse operation.
8033         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
8034         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
8035         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
8036         functions.
8037         (aarch64_can_change_mode_class): For big-endian, forbid changes
8038         between two SVE modes if they have different element sizes.
8040 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8042         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
8043         the TImode handling for big-endian targets.
8045 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8047         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
8048         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
8049         not just bytes.
8050         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
8051         Remove BSWAP handing for big-endian targets and use the form of
8052         LD1RQ appropariate for the mode.
8054 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8056         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
8057         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
8058         duplicated element.
8060 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
8062         PR tearget/83845
8063         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
8064         check for operands that need to go through aarch64_sve_reload_be.
8066 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
8068         PR tree-optimization/81661
8069         PR tree-optimization/84117
8070         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
8071         * tree-eh.c: Include gimplify.h.
8072         (find_trapping_overflow, replace_trapping_overflow,
8073         rewrite_to_non_trapping_overflow): New functions.
8074         * tree-vect-loop.c: Include tree-eh.h.
8075         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
8076         * tree-data-ref.c: Include tree-eh.h.
8077         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
8079 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
8081         PR rtl-optimization/84123
8082         * combine.c (change_zero_ext): Check if hard register satisfies
8083         can_change_dest_mode before calling gen_lowpart_SUBREG.
8085 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
8087         PR target/82444
8088         * ira.c (ira_init_register_move_cost): Remove assert.
8090 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8092         PR rtl-optimization/84071
8093         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
8094         * doc/tm.texi: Regenerate.
8096 2018-01-31  Richard Biener  <rguenther@suse.de>
8098         PR tree-optimization/84132
8099         * tree-data-ref.c (analyze_miv_subscript): Properly
8100         check whether evolution_function_is_affine_multivariate_p
8101         before calling gcd_of_steps_may_divide_p.
8103 2018-01-31  Julia Koval  <julia.koval@intel.com>
8105         PR target/83618
8106         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
8107         * config/i386/i386.md (rdpid_rex64) New.
8108         (rdpid): Make 32bit only.
8110 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
8112         PR lto/84105
8113         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
8114         an IDENTIFIER_NODE for FUNCTION_TYPE's.
8116 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8118         Revert
8119         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
8121         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8123 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
8125         PR rtl-optimization/84071
8126         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
8127         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
8129 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
8131         * config/arc/arc.c (arc_handle_aux_attribute): New function.
8132         (arc_attribute_table): Add 'aux' attribute.
8133         (arc_in_small_data_p): Consider aux like variables.
8134         (arc_is_aux_reg_p): New function.
8135         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
8136         (arc_get_aux_arg): New function.
8137         (prepare_move_operands): Handle aux-register access.
8138         (arc_handle_aux_attribute): New function.
8139         * doc/extend.texi (ARC Variable attributes): Add subsection.
8141 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
8143         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
8144         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
8145         (arc_attribute_table): Add 'uncached' attribute.
8146         (arc_print_operand): Print '.di' flag for uncached memory
8147         accesses.
8148         (arc_in_small_data_p): Do not consider for small data the uncached
8149         types.
8150         (arc_is_uncached_mem_p): New function.
8151         * config/arc/predicates.md (compact_store_memory_operand): Check
8152         for uncached memory accesses.
8153         (nonvol_nonimm_operand): Likewise.
8154         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
8156 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
8158         PR c/84100
8159         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
8160         falign-loops=): Add Optimization flag.
8162 2018-01-30  Jeff Law  <law@redhat.com>
8164         PR target/84064
8165         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
8166         INT_REGISTERS_SAVED.  Check it prior to calling
8167         get_scratch_register_on_entry.
8168         (ix86_adjust_stack_and_probe): Similarly.
8169         (ix86_emit_probe_stack_range): Similarly.
8170         (ix86_expand_prologue): Corresponding changes.
8172 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8174         PR target/40411
8175         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
8176         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
8178 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
8180         PR target/84112
8181         * lra-constraints.c (curr_insn_transform): Process AND in the
8182         address.
8184 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
8186         PR rtl-optimization/83986
8187         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
8188         dependence against last_pending_memory_flush in addition to
8189         pending_jump_insns.
8191 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
8193         PR tree-optimization/81611
8194         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
8195         copies.
8197 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
8199         PR target/83758
8200         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
8201         a reg rtx.
8203 2018-01-30  Richard Biener  <rguenther@suse.de>
8204             Jakub Jelinek  <jakub@redhat.com>
8206         PR tree-optimization/84111
8207         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8208         inner loops added during recursion, as they don't have up-to-date
8209         SSA form.
8211 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
8213         PR ipa/81360
8214         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8215         (can_inline_edge_by_limits_p): ... here.
8216         (can_early_inline_edge_p, check_callers,
8217         update_caller_keys, update_callee_keys, recursive_inlining,
8218         add_new_edges_to_heap, speculation_useful_p,
8219         inline_small_functions,
8220         inline_small_functions, flatten_function,
8221         inline_to_all_callers_1): Update.
8223 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
8225         * profile-count.c (profile_count::combine_with_ipa_count): Handle
8226         zeros correctly.
8228 2018-01-30  Richard Biener  <rguenther@suse.de>
8230         PR tree-optimization/83008
8231         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8232         invariant and constant vector uses in stmts when they need
8233         more than one stmt.
8235 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8237         PR bootstrap/84017
8238         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8239         * configure: Regenerate.
8241 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8243         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8244         pattern.
8245         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8246         Use gen_rtx_REG rather than gen_lowpart.
8248 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8250         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8251         rather than 0 when creating partial subregs.
8253 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
8255         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8256         of usage.
8258 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
8260         PR target/81550
8261         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8262         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8263         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8264         flags.  This restores the settings used before the 2017-07-24.
8265         Turning off pre increment/decrement/modify allows IVOPTS to
8266         optimize DF/SF loops where the index is an int.
8268 2018-01-29  Richard Biener  <rguenther@suse.de>
8269             Kelvin Nilsen  <kelvin@gcc.gnu.org>
8271         PR bootstrap/80867
8272         * tree-vect-stmts.c (vectorizable_call): Don't call
8273         targetm.vectorize_builtin_md_vectorized_function if callee is
8274         NULL.
8276 2018-01-22  Carl Love  <cel@us.ibm.com>
8278         * doc/extend.tex: Fix typo in second arg in
8279         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8281 2018-01-29  Richard Biener  <rguenther@suse.de>
8283         PR tree-optimization/84086
8284         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8285         (flush_ssaname_freelist): When SSA names were released reset
8286         the SCEV hash table.
8288 2018-01-29  Richard Biener  <rguenther@suse.de>
8290         PR tree-optimization/84057
8291         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8292         removed paths when removing edges.
8294 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
8296         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8297         -mfunction-return=@var{choice}.
8299 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
8301         PR diagnostic/84034
8302         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8303         Handle CR like TAB.
8304         (layout::print_source_line): Likewise.
8305         (test_get_line_width_without_trailing_whitespace): Add test cases.
8307 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
8309         PR middle-end/84040
8310         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8311         debug insns.
8313 2018-01-26  Jim Wilson  <jimw@sifive.com>
8315         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8317         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8318         specified.
8320 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8322         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8323         and CMP + SUB-immediate -> SUBS.
8325 2018-01-26  Martin Sebor  <msebor@redhat.com>
8327         PR tree-optimization/83896
8328         * tree-ssa-strlen.c (get_string_len): Rename...
8329         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
8330         Avoid assuming length is constant.
8331         (handle_char_store): Use HOST_WIDE_INT for string length.
8333 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
8335         PR target/81763
8336         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8337         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8339 2018-01-26  Richard Biener  <rguenther@suse.de>
8341         PR rtl-optimization/84003
8342         * dse.c (record_store): Only record redundant stores when
8343         the earlier store aliases at least all accesses the later one does.
8345 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
8347         PR rtl-optimization/83985
8348         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8349         REG_CFA_RESTORE insns.
8350         (delete_unmarked_insns): Don't ignore separate shrink wrapping
8351         REG_CFA_RESTORE insns here.
8353         PR c/83989
8354         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8355         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8357 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8359         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8360         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8361         (arc_init): Likewise.
8362         (arc_override_options): Likewise.
8363         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8364         value.
8365         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8366         support.
8367         * config/arc/arc.h (TARGET_DBNZ): Define.
8368         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8369         properly set the tune attribute.
8370         (dbnz): Use TARGET_DBNZ guard.
8371         * config/arc/arc.opt (mtune): Add core3 option.
8373 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8375         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8376         recognize new pic like addresses.
8377         (arc_delegitimize_address): Clean up.
8379 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8381         * config/arc/arc-arches.def: Option mrf16 valid for all
8382         architectures.
8383         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8384         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8385         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8386         * config/arc/arc-tables.opt: Regenerate.
8387         * config/arc/arc.c (arc_conditional_register_usage): Handle
8388         reduced register file case.
8389         (arc_file_start): Set must have build attributes.
8390         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8391         mrf16 option value.
8392         * config/arc/arc.opt (mrf16): Add new option.
8393         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8394         * config/arc/genmultilib.awk: Handle new mrf16 option.
8395         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8396         * config/arc/t-multilib: Regenerate.
8397         * doc/invoke.texi (ARC Options): Document mrf16 option.
8399 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8401         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8402         * config/arc/arc.c (arc_handle_secure_attribute): New function.
8403         (arc_attribute_table): Add 'secure_call' attribute.
8404         (arc_print_operand): Print secure call operand.
8405         (arc_function_ok_for_sibcall): Don't optimize tail calls when
8406         secure.
8407         (arc_is_secure_call_p): New function.  * config/arc/arc.md
8408         (call_i): Add support for sjli instruction.
8409         (call_value_i): Likewise.
8410         * config/arc/constraints.md (Csc): New constraint.
8412 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
8413             John Eric Martin  <John.Martin@emmicro-us.com>
8415         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8416         * config/arc/arc.c (_arc_jli_section): New struct.
8417         (arc_jli_section): New type.
8418         (rc_jli_sections): New static variable.
8419         (arc_handle_jli_attribute): New function.
8420         (arc_attribute_table): Add jli_always and jli_fixed attribute.
8421         (arc_file_end): New function.
8422         (TARGET_ASM_FILE_END): Define.
8423         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8424         (arc_add_jli_section): New function.
8425         (jli_call_scan): Likewise.
8426         (arc_reorg): Call jli_call_scan.
8427         (arc_output_addsi): Remove 'S' from printing asm operand.
8428         (arc_is_jli_call_p): New function.
8429         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8430         operand.
8431         (movhi_insn): Likewise.
8432         (movsi_insn): Likewise.
8433         (movsi_set_cc_insn): Likewise.
8434         (loadqi_update): Likewise.
8435         (load_zeroextendqisi_update): Likewise.
8436         (load_signextendqisi_update): Likewise.
8437         (loadhi_update): Likewise.
8438         (load_zeroextendhisi_update): Likewise.
8439         (load_signextendhisi_update): Likewise.
8440         (loadsi_update): Likewise.
8441         (loadsf_update): Likewise.
8442         (movsicc_insn): Likewise.
8443         (bset_insn): Likewise.
8444         (bxor_insn): Likewise.
8445         (bclr_insn): Likewise.
8446         (bmsk_insn): Likewise.
8447         (bicsi3_insn): Likewise.
8448         (cmpsi_cc_c_insn): Likewise.
8449         (movsi_ne): Likewise.
8450         (movsi_cond_exec): Likewise.
8451         (clrsbsi2): Likewise.
8452         (norm_f): Likewise.
8453         (normw): Likewise.
8454         (swap): Likewise.
8455         (divaw): Likewise.
8456         (flag): Likewise.
8457         (sr): Likewise.
8458         (kflag): Likewise.
8459         (ffs): Likewise.
8460         (ffs_f): Likewise.
8461         (fls): Likewise.
8462         (call_i): Remove 'S' asm letter, add jli instruction.
8463         (call_value_i): Likewise.
8464         * config/arc/arc.op (mjli-always): New option.
8465         * config/arc/constraints.md (Cji): New constraint.
8466         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8467         operand.
8468         (subsf3_fpx): Likewise.
8469         (mulsf3_fpx): Likewise.
8470         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8471         asm operand.
8472         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8473         function attrbutes.
8474         * doc/invoke.texi (ARC): Document mjli-always option.
8476 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
8478         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
8479         avoid addition with 0 and use incw and decw where possible.
8481 2018-01-26  Richard Biener  <rguenther@suse.de>
8483         PR tree-optimization/81082
8484         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8485         association if it requires casting to unsigned.
8486         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8487         from fold_plusminus_mult_expr to catch important cases late when
8488         range info is available.
8490 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8492         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8493         * configure.ac (hidden_linkonce): New test.
8494         * configure: Regenerate.
8495         * config.in: Regenerate.
8497 2018-01-26  Julia Koval  <julia.koval@intel.com>
8499         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8500         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8501         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8502         _mm_mask_bitshuffle_epi64_mask): Fix type.
8503         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8504         USI_FTYPE_V4DI_V4DI_USI): Remove.
8505         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8506         __builtin_ia32_vpshufbitqmb256_mask,
8507         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8508         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8509         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8511 2018-01-26  Alan Modra  <amodra@gmail.com>
8513         PR target/84033
8514         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8515         UNSPEC_VBPERMQ.  Sort other unspecs.
8517 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
8519         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8521 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
8523         PR middle-end/83055
8524         * predict.c (drop_profile): Do not push/pop cfun; update also
8525         node->count.
8526         (handle_missing_profiles): Fix logic looking for zero profiles.
8528 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
8530         PR middle-end/83977
8531         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8532         on functions with #pragma omp declare simd or functions with simd
8533         attribute.
8534         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8535         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8536         Remove trailing \n from warning_at calls.
8538 2018-01-25  Tom de Vries  <tom@codesourcery.com>
8540         PR target/84028
8541         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8542         for neutered workers.
8544 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
8546         PR target/68467
8547         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8548         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8550 2018-01-24  Jeff Law  <law@redhat.com>
8552         PR target/83994
8553         * i386.c (get_probe_interval): Move to earlier point.
8554         (ix86_compute_frame_layout): If -fstack-clash-protection and
8555         the frame is larger than the probe interval, then use pushes
8556         to save registers rather than reg->mem moves.
8557         (ix86_expand_prologue): Remove conditional for int_registers_saved
8558         assertion.
8560 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
8562         PR target/84014
8563         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8564         min/max for never referenced object.
8566 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
8568         PR middle-end/83977
8569         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8570         here.
8571         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8572         attributes from DECL_ATTRIBUTES (decl) without affecting
8573         DECL_ATTRIBUTES (current_function_decl).
8574         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8575         functions with non-NULL DECL_ABSTRACT_ORIGIN.
8577 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
8579         PR tree-optimization/83979
8580         * fold-const.c (fold_comparison): Use constant_boolean_node
8581         instead of boolean_{true,false}_node.
8583 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
8585         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8586         with zero counts.
8588 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8590         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8591         Simplify the clause that sets the length attribute.
8592         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8593         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8594         clause that sets the length attribute.
8595         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8597 2018-01-24  Tom de Vries  <tom@codesourcery.com>
8599         PR target/83589
8600         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8601         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8602         Add strict parameter.
8603         (prevent_branch_around_nothing): Insert dummy insn between branch to
8604         label and label with no ptx insn inbetween.
8605         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8607 2018-01-24  Tom de Vries  <tom@codesourcery.com>
8609         PR target/81352
8610         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8611         for neutered threads in warp.
8612         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8614 2018-01-24  Richard Biener  <rguenther@suse.de>
8616         PR tree-optimization/83176
8617         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8618         operands.
8620 2018-01-24  Richard Biener  <rguenther@suse.de>
8622         PR tree-optimization/82819
8623         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8624         code generating pluses that are no-ops in the target precision.
8626 2018-01-24  Richard Biener  <rguenther@suse.de>
8628         PR middle-end/84000
8629         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8631 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8633         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8634         to merge probabilities.
8635         * predict.c (probably_never_executed): Also mark as cold functions
8636         with global 0 profile and guessed local profile.
8637         * profile-count.c (profile_probability::combine_with_count): New
8638         member function.
8639         * profile-count.h (profile_probability::operator*,
8640         profile_probability::operator*=, profile_probability::operator/,
8641         profile_probability::operator/=): Reduce precision to adjusted
8642         and set value to guessed on contradictory divisions.
8643         (profile_probability::combine_with_freq): Remove.
8644         (profile_probability::combine_wiht_count): Declare.
8645         (profile_count::force_nonzero):: Set to adjusted.
8646         (profile_count::probability_in):: Set quality to adjusted.
8647         * tree-ssa-tail-merge.c (replace_block_by): Use
8648         combine_with_count.
8650 2018-01-23  Andrew Waterman  <andrew@sifive.com>
8651             Jim Wilson  <jimw@sifive.com>
8653         * config/riscv/riscv.c (riscv_stack_boundary): New.
8654         (riscv_option_override): Set riscv_stack_boundary.  Handle
8655         riscv_preferred_stack_boundary_arg.
8656         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8657         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8658         (STACK_BOUNDARY): Set to riscv_stack_boundary.
8659         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8660         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8661         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8663 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
8665         PR target/83905
8666         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8667         of struct ix86_frame.
8668         (ix86_expand_epilogue): Likewise.  Add a local variable for
8669         the reg_save_offset field in struct ix86_frame.
8671 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
8673         PR tree-optimization/82604
8674         * tree-loop-distribution.c (enum partition_kind): New enum item
8675         PKIND_PARTIAL_MEMSET.
8676         (partition_builtin_p): Support above new enum item.
8677         (generate_code_for_partition): Ditto.
8678         (compute_access_range): Differentiate cases that equality can be
8679         proven at all loops, the innermost loops or no loops.
8680         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8681         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
8682         (finalize_partitions, distribute_loop): Don't fuse partition of
8683         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8684         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8685         parloop is enabled.
8687 2018-01-23  Martin Liska  <mliska@suse.cz>
8689         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8690         order to ignore the predictor.
8691         (PRED_POLYMORPHIC_CALL): Likewise.
8692         (PRED_RECURSIVE_CALL): Likewise.
8694 2018-01-23  Martin Liska  <mliska@suse.cz>
8696         * tree-profile.c (tree_profiling): Print function header to
8697         aware reader which function we are working on.
8698         * value-prof.c (gimple_find_values_to_profile): Do not print
8699         not interesting value histograms.
8701 2018-01-23  Martin Liska  <mliska@suse.cz>
8703         * profile-count.h (enum profile_quality): Add
8704         profile_uninitialized as the first value. Do not number values
8705         as they are zero based.
8706         (profile_count::verify): Update sanity check.
8707         (profile_probability::verify): Likewise.
8709 2018-01-23  Nathan Sidwell  <nathan@acm.org>
8711         * doc/invoke.texi (ffor-scope): Deprecate.
8713 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8715         PR tree-optimization/83510
8716         * domwalk.c (set_all_edges_as_executable): New function.
8717         (dom_walker::dom_walker): Convert bool param
8718         "skip_unreachable_blocks" to enum reachability.  Move setup of
8719         edge flags to set_all_edges_as_executable and only do it when
8720         reachability is REACHABLE_BLOCKS.
8721         * domwalk.h (enum dom_walker::reachability): New enum.
8722         (dom_walker::dom_walker): Convert bool param
8723         "skip_unreachable_blocks" to enum reachability.
8724         (set_all_edges_as_executable): New decl.
8725         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
8726         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8727         "reachability".
8728         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8729         but converting true to REACHABLE_BLOCKS.
8730         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8731         * tree-vrp.c
8732         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8733         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8734         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8735         REACHABLE_BLOCKS.
8736         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8737         if check_all_array_refs will be called.
8739 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8741         * tree.c (selftest::test_location_wrappers): Add more test
8742         coverage.
8744 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
8746         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8747         (selftest::test_bit_in_range): Likewise.
8749 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
8751         PR testsuite/83888
8752         * doc/sourcebuild.texi (vect_float): Say that the selector
8753         only describes the situation when -funsafe-math-optimizations is on.
8754         (vect_float_strict): Document.
8756 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
8758         PR tree-optimization/83965
8759         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8760         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8761         instead of checking only for a reduction.
8762         (vect_recog_widen_sum_pattern): Likewise.
8764 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8766         * predict.c (probably_never_executed): Only use precise profile info.
8767         (compute_function_frequency): Skip after inlining hack since we now
8768         have quality checking.
8770 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
8772         * profile-count.h (profile_probability::very_unlikely,
8773         profile_probability::unlikely, profile_probability::even): Set
8774         precision to guessed.
8776 2018-01-23  Richard Biener  <rguenther@suse.de>
8778         PR tree-optimization/83963
8779         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8780         Properly terminate dominator walk when crossing the exit edge not
8781         when visiting its source block.
8783 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
8785         PR c++/83918
8786         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8787         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8789 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
8791         PR tree-optimization/83957
8792         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
8793         semicolon after for body surrounded by braces.
8795         PR tree-optimization/83081
8796         * profile-count.h (profile_probability::split): New method.
8797         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8798         Use profile_probability::split.
8799         (do_compare_rtx_and_jump): Fix adjustment of probabilities
8800         when splitting a single conditional jump into 2.
8802 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
8804         PR tree-optimization/69452
8805         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8806         decl.
8808 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8810         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8811         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8812         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8814 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8816         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8817         * config/rl78/rl78.md (movdi): New define_expand.
8818         * config/rl78/rl78.c (rl78_split_movdi): New function.
8820 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
8822         PR target/83862
8823         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8824         no longer used.
8825         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8826         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8827         128-bit to produce an UNSPEC move to get the double word with the
8828         signbit and then a shift directly to do signbit.
8829         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8830         implementation with a new version that just does either a direct
8831         move or a regular move.  Move memory interface to separate insns.
8832         Move insns so they are next to the expander.
8833         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8834         with signbit move.  Split big and little endian case.
8835         (signbit<mode>2_dm_mem_le): Likewise.
8836         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8837         (signbit<mode>2_dm2): Likewise.
8839 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8841         * config/rl78/rl78.md (anddi3): New define_expand.
8843 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8845         * config/rl78/rl78.md (umindi3): New define_expand.
8847 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8849         * config/rl78/rl78.md (smindi3): New define_expand.
8851 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8853         * config/rl78/rl78.md (smaxdi3): New define_expand.
8855 2018-01-22  Carl Love  <cel@us.ibm.com>
8857         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8858         LVX_V1TI): Add macro expansion.
8859         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8860         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8861         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8862         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8863         Change check to determine if the instruction is a byte reversing
8864         entry.  Fix typo in comment.
8865         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8866         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8867         Add def_builtin calls for new builtins.
8868         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8869         Add define_insn expansion.
8871 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8873         * config/rl78/rl78.md (umaxdi3): New define_expand.
8875 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
8877         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8878         for non-QImode registers.
8880 2018-01-22  Richard Biener  <rguenther@suse.de>
8882         PR tree-optimization/83963
8883         * graphite-scop-detection.c (scop_detection::get_sese): Delay
8884         including the loop exit block.
8885         (scop_detection::merge_sese): Likewise.
8886         (scop_detection::add_scop): Do it here instead.
8888 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8890         * doc/sourcebuild.texi (arm_softfloat): Document.
8892 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
8894         PR gcc/77734
8895         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8896         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8897         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8899 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8900             David Edelsohn  <dje.gcc@gmail.com>
8902         PR target/83946
8903         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8904         Change "crset eq" to "crset 2".
8905         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8906         (*call_indirect_aix<mode>_nospec): Likewise.
8907         (*call_value_indirect_aix<mode>_nospec): Likewise.
8908         (*call_indirect_elfv2<mode>_nospec): Likewise.
8909         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8910         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8911         change assembly output from . to $.
8912         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8913         (indirect_jump<mode>_nospec): Change assembly output from . to $.
8914         (*tablejump<mode>_internal1_nospec): Likewise.
8916 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
8918         PR target/80870
8919         * config/sh/sh_optimize_sett_clrt.cc:
8920         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8922 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
8924         PR tree-optimization/83940
8925         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8926         offset_dt to vect_constant_def rather than vect_unknown_def_type.
8927         (vect_check_load_store_mask): Add a mask_dt_out parameter and
8928         use it to pass back the definition type.
8929         (vect_check_store_rhs): Likewise rhs_dt_out.
8930         (vect_build_gather_load_calls): Add a mask_dt argument and use
8931         it instead of a call to vect_is_simple_use.
8932         (vectorizable_store): Update calls to vect_check_load_store_mask
8933         and vect_check_store_rhs.  Use the dt returned by the latter instead
8934         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
8935         instead of calls to vect_is_simple_use.  Pass the scalar rather
8936         than the vector operand to vect_is_simple_use when handling
8937         second and subsequent copies of an rhs value.
8938         (vectorizable_load): Update calls to vect_check_load_store_mask
8939         and vect_build_gather_load_calls.  Use the cached mask_dt and
8940         gs_info.offset_dt instead of calls to vect_is_simple_use.
8942 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
8944         PR middle-end/83945
8945         * tree-emutls.c: Include gimplify.h.
8946         (lower_emutls_2): New function.
8947         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8948         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8949         it before further processing.
8951         PR target/83930
8952         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8953         UINTVAL (trueop1) instead of INTVAL (op1).
8955 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
8957         PR debug/81570
8958         PR debug/83728
8959         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8960         INCOMING_FRAME_SP_OFFSET if not defined.
8961         (scan_trace): Add ENTRY argument.  If true and
8962         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8963         emit a note to adjust the CFA offset.
8964         (create_cfi_notes): Adjust scan_trace callers.
8965         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8966         INCOMING_FRAME_SP_OFFSET in the CIE.
8967         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8968         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8969         Likewise.
8970         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8971         * doc/tm.texi: Regenerated.
8973 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8975         PR rtl-optimization/83147
8976         * lra-constraints.c (remove_inheritance_pseudos): Use
8977         lra_substitute_pseudo_within_insn.
8979 2018-01-19  Tom de Vries  <tom@codesourcery.com>
8980             Cesar Philippidis  <cesar@codesourcery.com>
8982         PR target/83920
8983         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8985 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
8987         PR target/83790
8988         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8989         spaces for function labels.
8991 2018-01-19  Martin Liska  <mliska@suse.cz>
8993         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8994         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8995         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8996         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8997         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8998         (PRED_CONST_RETURN): Change from 69 to 65.
8999         (PRED_NULL_RETURN): Change from 91 to 71.
9000         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
9001         (PRED_LOOP_GUARD): Change from 66 to 73.
9003 2018-01-19  Martin Liska  <mliska@suse.cz>
9005         * predict.c (predict_insn_def): Add new assert.
9006         (struct branch_predictor): Change type to signed integer.
9007         (test_prediction_value_range): Amend test to cover
9008         PROB_UNINITIALIZED.
9009         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
9010         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
9011         (PRED_LOOP_ITERATIONS_MAX): Likewise.
9012         (PRED_LOOP_IV_COMPARE): Likewise.
9013         * predict.h (PROB_UNINITIALIZED): Define new constant.
9015 2018-01-19  Martin Liska  <mliska@suse.cz>
9017         * predict.c (dump_prediction): Add new format for
9018         analyze_brprob.py script which is enabled with -details
9019         suboption.
9020         * profile-count.h (precise_p): New function.
9022 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
9024         PR tree-optimization/83922
9025         * tree-vect-loop.c (vect_verify_full_masking): Return false if
9026         there are no statements that need masking.
9027         (vect_active_double_reduction_p): New function.
9028         (vect_analyze_loop_operations): Use it when handling phis that
9029         are not in the loop header.
9031 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
9033         PR tree-optimization/83914
9034         * tree-vect-loop.c (vectorizable_induction): Don't convert
9035         init_expr or apply the peeling adjustment for inductions
9036         that are nested within the vectorized loop.
9038 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9040         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
9041         instead of NEG.
9043 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
9045         PR sanitizer/81715
9046         PR testsuite/83882
9047         * function.h (gimplify_parameters): Add gimple_seq * argument.
9048         * function.c: Include gimple.h and options.h.
9049         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
9050         for the added local temporaries if needed.
9051         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
9052         if there are any parameter cleanups, wrap whole body into a
9053         try/finally with the cleanups.
9055 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
9057         PR target/82964
9058         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
9059         Use GET_MODE_CLASS for scalar floating point.
9061 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
9063         PR ipa/82256
9064         patch by PaX Team
9065         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
9066         Fix call of call_cgraph_insertion_hooks.
9068 2018-01-18  Martin Sebor  <msebor@redhat.com>
9070         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
9072 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
9074         PR ipa/83619
9075         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
9076         frequencies.
9078 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
9080         PR other/70268
9081         * common.opt: (-ffile-prefix-map): New option.
9082         * opts.c (common_handle_option): Defer it.
9083         * opts-global.c (handle_common_deferred_options): Handle it.
9084         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
9085         * file-prefix-map.h: New file.
9086         (remap_debug_filename, add_debug_prefix_map): ...here.
9087         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
9088         * final.c (debug_prefix_map, add_debug_prefix_map
9089         remap_debug_filename): Move to...
9090         * file-prefix-map.c: New file.
9091         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
9092         generalize, get rid of alloca(), use strrchr() instead of strchr().
9093         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
9094         Implement in terms of add_prefix_map().
9095         (remap_macro_filename, remap_debug_filename): Implement in term of
9096         remap_filename().
9097         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
9098         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
9099         * dbxout.c: Include file-prefix-map.h.
9100         * varasm.c: Likewise.
9101         * vmsdbgout.c: Likewise.
9102         * xcoffout.c: Likewise.
9103         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
9104         * doc/cppopts.texi (-fmacro-prefix-map): Document.
9105         * doc/invoke.texi (-ffile-prefix-map): Document.
9106         (-fdebug-prefix-map): Update description.
9108 2018-01-18  Martin Liska  <mliska@suse.cz>
9110         * config/i386/i386.c (indirect_thunk_name): Document that also
9111         lfence is emitted.
9112         (output_indirect_thunk): Document why both instructions
9113         (pause and lfence) are generated.
9115 2018-01-18  Richard Biener  <rguenther@suse.de>
9117         PR tree-optimization/83887
9118         * graphite-scop-detection.c
9119         (scop_detection::get_nearest_dom_with_single_entry): Remove.
9120         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
9121         (scop_detection::merge_sese): Re-implement with a flood-fill
9122         algorithm that properly finds a SESE region if it exists.
9124 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
9126         PR c/61240
9127         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
9128         pointer_diff optimizations use view_convert instead of convert.
9130 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9132         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9133         Generate different code for -mno-speculate-indirect-jumps.
9134         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9135         (*call_indirect_aix<mode>): Disable for
9136         -mno-speculate-indirect-jumps.
9137         (*call_indirect_aix<mode>_nospec): New define_insn.
9138         (*call_value_indirect_aix<mode>): Disable for
9139         -mno-speculate-indirect-jumps.
9140         (*call_value_indirect_aix<mode>_nospec): New define_insn.
9141         (*sibcall_nonlocal_sysv<mode>): Generate different code for
9142         -mno-speculate-indirect-jumps.
9143         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9145 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
9147         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
9148         long double type, set the flags for noting the default long double
9149         type, even if we don't pass or return a long double type.
9151 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
9153         PR ipa/83051
9154         * ipa-inline.c (flatten_function): Do not overwrite final inlining
9155         failure.
9157 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
9159         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
9160         support for merge[hl].
9161         (fold_mergehl_helper): New helper function.
9162         (tree-vector-builder.h): New #include for tree_vector_builder usage.
9163         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
9164         (altivec_vmrglw_direct): Add xxmrglw insn.
9166 2018-01-17  Andrew Waterman  <andrew@sifive.com>
9168         * config/riscv/riscv.c (riscv_conditional_register_usage): If
9169         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
9171 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
9173         PR lto/83121
9174         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
9175         call the lto_location_cache before reading the
9176         DECL_SOURCE_LOCATION of the types.
9178 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
9179             Richard Sandiford  <richard.sandiford@linaro.org>
9181         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
9182         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
9183         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
9184         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
9185         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
9186         Add declaration.
9187         * config/aarch64/constraints.md (aarch64_movti_operand):
9188         Limit immediates.
9189         * config/aarch64/predicates.md (Uti): Add new constraint.
9191 2018-01-17 Carl Love  <cel@us.ibm.com>
9193         * config/rs6000/vsx.md (define_expand xl_len_r,
9194         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
9195         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
9196         lxvll.
9197         (define_expand, define_insn): Move the shift left from  the
9198         define_insn to the define_expand for lxvl and stxvl instructions.
9199         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
9200         and XL_LEN_R definitions to PURE.
9202 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
9204         * config/i386/i386.c (indirect_thunk_name): Declare regno
9205         as unsigned int.  Compare regno with INVALID_REGNUM.
9206         (output_indirect_thunk): Ditto.
9207         (output_indirect_thunk_function): Ditto.
9208         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
9209         in the call to output_indirect_thunk_function.
9211 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
9213         PR middle-end/83884
9214         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9215         rather than the size of inner_type to determine the stack slot size
9216         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9218 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
9220         PR target/83546
9221         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9222         to PTA_SILVERMONT.
9224 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
9226         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9227         endian Linux systems to optionally enable multilibs for selecting
9228         the long double type if the user configured an explicit type.
9229         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9230         have no long double multilibs if not defined.
9231         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9232         warn if the user used -mabi={ieee,ibm}longdouble and we built
9233         multilibs for long double.
9234         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9235         appropriate multilib option.
9236         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9237         multilib options.
9238         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9239         for building long double multilibs.
9240         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9242 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
9244         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9245         copies.
9247         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9248         64 bits.
9249         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9250         128 bits.
9252         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9253         variables.
9255         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9256         return value.
9258 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
9260         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9261         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9263 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9265         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9266         different rtl trees depending on TARGET_64BIT.
9267         (rs6000_gen_lvx): Likewise.
9269 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
9271         * config/visium/visium.md (nop): Tweak comment.
9272         (hazard_nop): Likewise.
9274 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9276         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9277         -mspeculate-indirect-jumps.
9278         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9279         for -mno-speculate-indirect-jumps.
9280         (*call_indirect_elfv2<mode>_nospec): New define_insn.
9281         (*call_value_indirect_elfv2<mode>): Disable for
9282         -mno-speculate-indirect-jumps.
9283         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9284         (indirect_jump): Emit different RTL for
9285         -mno-speculate-indirect-jumps.
9286         (*indirect_jump<mode>): Disable for
9287         -mno-speculate-indirect-jumps.
9288         (*indirect_jump<mode>_nospec): New define_insn.
9289         (tablejump): Emit different RTL for
9290         -mno-speculate-indirect-jumps.
9291         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9292         (tablejumpsi_nospec): New define_expand.
9293         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9294         (tablejumpdi_nospec): New define_expand.
9295         (*tablejump<mode>_internal1): Disable for
9296         -mno-speculate-indirect-jumps.
9297         (*tablejump<mode>_internal1_nospec): New define_insn.
9298         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9299         option.
9301 2018-01-16  Artyom Skrobov tyomitch@gmail.com
9303         * caller-save.c (insert_save): Drop unnecessary parameter.  All
9304         callers updated.
9306 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9307             Richard Biener  <rguenth@suse.de>
9309         PR libgomp/83590
9310         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9311         return early, inline manually is_gimple_sizepos.  Make sure if we
9312         call gimplify_expr we don't end up with a gimple constant.
9313         * tree.c (variably_modified_type_p): Don't return true for
9314         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
9315         * gimplify.h (is_gimple_sizepos): Remove.
9317 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9319         PR tree-optimization/83857
9320         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9321         vectorizable_live_operation for pure SLP statements.
9322         (vectorizable_live_operation): Handle PHIs.
9324 2018-01-16  Richard Biener  <rguenther@suse.de>
9326         PR tree-optimization/83867
9327         * tree-vect-stmts.c (vect_transform_stmt): Precompute
9328         nested_in_vect_loop_p since the scalar stmt may get invalidated.
9330 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9332         PR c/83844
9333         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9334         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9335         If off is not INTEGER_CST, issue a may not be aligned warning
9336         rather than isn't aligned.  Use isn%'t rather than isn't.
9337         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9338         into MULT_EXPR.
9339         <case MULT_EXPR>: Improve the case when bottom and one of the
9340         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9341         operand, in that case check if the other operand is multiple of
9342         bottom divided by the INTEGER_CST operand.
9344 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9346         PR target/83858
9347         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9348         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9349         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9350         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9351         * config/pa/pa.c (pa_function_arg_advance): Likewise.
9352         (pa_function_arg, pa_arg_partial_bytes): Likewise.
9353         (pa_function_arg_size): New function.
9355 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9357         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9358         in a separate statement.
9360 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
9362         PR tree-optimization/83847
9363         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9364         group gathers and scatters.
9366 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
9368         PR rtl-optimization/86620
9369         * params.def (max-sched-ready-insns): Bump minimum value to 1.
9371         PR rtl-optimization/83213
9372         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9373         to last if both are JUMP_INSNs.
9375         PR tree-optimization/83843
9376         * gimple-ssa-store-merging.c
9377         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9378         store_immediate_info for bswap/nop orig_stores.
9380 2018-01-15  Andrew Waterman  <andrew@sifive.com>
9382         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9383         !TARGET_MUL.
9384         <UDIV>: Increase cost if !TARGET_DIV.
9386 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
9388         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9389         (define_attr "cr_logical_3op"): New.
9390         (cceq_ior_compare): Adjust.
9391         (cceq_ior_compare_complement): Adjust.
9392         (*cceq_rev_compare): Adjust.
9393         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9394         (is_cracked_insn): Adjust.
9395         (insn_must_be_first_in_group): Adjust.
9396         * config/rs6000/40x.md: Adjust.
9397         * config/rs6000/440.md: Adjust.
9398         * config/rs6000/476.md: Adjust.
9399         * config/rs6000/601.md: Adjust.
9400         * config/rs6000/603.md: Adjust.
9401         * config/rs6000/6xx.md: Adjust.
9402         * config/rs6000/7450.md: Adjust.
9403         * config/rs6000/7xx.md: Adjust.
9404         * config/rs6000/8540.md: Adjust.
9405         * config/rs6000/cell.md: Adjust.
9406         * config/rs6000/e300c2c3.md: Adjust.
9407         * config/rs6000/e500mc.md: Adjust.
9408         * config/rs6000/e500mc64.md: Adjust.
9409         * config/rs6000/e5500.md: Adjust.
9410         * config/rs6000/e6500.md: Adjust.
9411         * config/rs6000/mpc.md: Adjust.
9412         * config/rs6000/power4.md: Adjust.
9413         * config/rs6000/power5.md: Adjust.
9414         * config/rs6000/power6.md: Adjust.
9415         * config/rs6000/power7.md: Adjust.
9416         * config/rs6000/power8.md: Adjust.
9417         * config/rs6000/power9.md: Adjust.
9418         * config/rs6000/rs64.md: Adjust.
9419         * config/rs6000/titan.md: Adjust.
9421 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9423         * config/i386/predicates.md (indirect_branch_operand): Rewrite
9424         ix86_indirect_branch_register logic.
9426 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9428         * config/i386/constraints.md (Bs): Update
9429         ix86_indirect_branch_register check.  Don't check
9430         ix86_indirect_branch_register with GOT_memory_operand.
9431         (Bw): Likewise.
9432         * config/i386/predicates.md (GOT_memory_operand): Don't check
9433         ix86_indirect_branch_register here.
9434         (GOT32_symbol_operand): Likewise.
9436 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9438         * config/i386/predicates.md (constant_call_address_operand):
9439         Rewrite ix86_indirect_branch_register logic.
9440         (sibcall_insn_operand): Likewise.
9442 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9444         * config/i386/constraints.md (Bs): Replace
9445         ix86_indirect_branch_thunk_register with
9446         ix86_indirect_branch_register.
9447         (Bw): Likewise.
9448         * config/i386/i386.md (indirect_jump): Likewise.
9449         (tablejump): Likewise.
9450         (*sibcall_memory): Likewise.
9451         (*sibcall_value_memory): Likewise.
9452         Peepholes of indirect call and jump via memory: Likewise.
9453         * config/i386/i386.opt: Likewise.
9454         * config/i386/predicates.md (indirect_branch_operand): Likewise.
9455         (GOT_memory_operand): Likewise.
9456         (call_insn_operand): Likewise.
9457         (sibcall_insn_operand): Likewise.
9458         (GOT32_symbol_operand): Likewise.
9460 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
9462         PR middle-end/83837
9463         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9464         type rather than type addr's type points to.
9465         (expand_omp_atomic_mutex): Likewise.
9466         (expand_omp_atomic): Likewise.
9468 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
9470         PR target/83839
9471         * config/i386/i386.c (output_indirect_thunk_function): Use
9472         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9473         for  __x86_return_thunk.
9475 2018-01-15  Richard Biener  <rguenther@suse.de>
9477         PR middle-end/83850
9478         * expmed.c (extract_bit_field_1): Fix typo.
9480 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9482         PR target/83687
9483         * config/arm/iterators.md (VF): New mode iterator.
9484         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9485         Remove integer-related logic from pattern.
9486         (neon_vabd<mode>_3): Likewise.
9488 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
9490         PR middle-end/82694
9491         * common.opt (fstrict-overflow): No longer an alias.
9492         (fwrapv-pointer): New option.
9493         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9494         also for pointer types based on flag_wrapv_pointer.
9495         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9496         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9497         opts->x_flag_wrapv got set.
9498         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9499         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9500         POINTER_TYPE_OVERFLOW_UNDEFINED.
9501         * match.pd: Likewise in address comparison pattern.
9502         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9504 2018-01-15  Richard Biener  <rguenther@suse.de>
9506         PR lto/83804
9507         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9508         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
9509         Reset type names to their identifier if their TYPE_DECL doesn't
9510         have linkage (and thus is used for ODR and devirt).
9511         (save_debug_info_for_decl): Remove.
9512         (save_debug_info_for_type): Likewise.
9513         (add_tree_to_fld_list): Adjust.
9514         * tree-pretty-print.c (dump_generic_node): Make dumping of
9515         type names more robust.
9517 2018-01-15  Richard Biener  <rguenther@suse.de>
9519         * BASE-VER: Bump to 8.0.1.
9521 2018-01-14  Martin Sebor  <msebor@redhat.com>
9523         PR other/83508
9524         * builtins.c (check_access): Avoid warning when the no-warning bit
9525         is set.
9527 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
9529         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9530         * ira-color (allocno_hard_regs_compare): Likewise.
9532 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
9534         PR target/83013
9535         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9536         Use .pushsection/.popsection.
9538 2018-01-14  Martin Sebor  <msebor@redhat.com>
9540         PR c++/81327
9541         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9543 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
9545         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9546         entry from extra_headers.
9547         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9548         extra_headers, make the list bitwise identical to the i?86-*-* one.
9550 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9552         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9553         -mcmodel=large with -mindirect-branch=thunk,
9554         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9555         -mfunction-return=thunk-extern.
9556         * doc/invoke.texi: Document -mcmodel=large is incompatible with
9557         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9558         -mfunction-return=thunk and -mfunction-return=thunk-extern.
9560 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9562         * config/i386/i386.c (print_reg): Print the name of the full
9563         integer register without '%'.
9564         (ix86_print_operand): Handle 'V'.
9565          * doc/extend.texi: Document 'V' modifier.
9567 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9569         * config/i386/constraints.md (Bs): Disallow memory operand for
9570         -mindirect-branch-register.
9571         (Bw): Likewise.
9572         * config/i386/predicates.md (indirect_branch_operand): Likewise.
9573         (GOT_memory_operand): Likewise.
9574         (call_insn_operand): Likewise.
9575         (sibcall_insn_operand): Likewise.
9576         (GOT32_symbol_operand): Likewise.
9577         * config/i386/i386.md (indirect_jump): Call convert_memory_address
9578         for -mindirect-branch-register.
9579         (tablejump): Likewise.
9580         (*sibcall_memory): Likewise.
9581         (*sibcall_value_memory): Likewise.
9582         Disallow peepholes of indirect call and jump via memory for
9583         -mindirect-branch-register.
9584         (*call_pop): Replace m with Bw.
9585         (*call_value_pop): Likewise.
9586         (*sibcall_pop_memory): Replace m with Bs.
9587         * config/i386/i386.opt (mindirect-branch-register): New option.
9588         * doc/invoke.texi: Document -mindirect-branch-register option.
9590 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9592         * config/i386/i386-protos.h (ix86_output_function_return): New.
9593         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9594         set function_return_type.
9595         (indirect_thunk_name): Add ret_p to indicate thunk for function
9596         return.
9597         (output_indirect_thunk_function): Pass false to
9598         indirect_thunk_name.
9599         (ix86_output_indirect_branch_via_reg): Likewise.
9600         (ix86_output_indirect_branch_via_push): Likewise.
9601         (output_indirect_thunk_function): Create alias for function
9602         return thunk if regno < 0.
9603         (ix86_output_function_return): New function.
9604         (ix86_handle_fndecl_attribute): Handle function_return.
9605         (ix86_attribute_table): Add function_return.
9606         * config/i386/i386.h (machine_function): Add
9607         function_return_type.
9608         * config/i386/i386.md (simple_return_internal): Use
9609         ix86_output_function_return.
9610         (simple_return_internal_long): Likewise.
9611         * config/i386/i386.opt (mfunction-return=): New option.
9612         (indirect_branch): Mention -mfunction-return=.
9613         * doc/extend.texi: Document function_return function attribute.
9614         * doc/invoke.texi: Document -mfunction-return= option.
9616 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
9618         * config/i386/i386-opts.h (indirect_branch): New.
9619         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9620         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9621         with local indirect jump when converting indirect call and jump.
9622         (ix86_set_indirect_branch_type): New.
9623         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9624         (indirectlabelno): New.
9625         (indirect_thunk_needed): Likewise.
9626         (indirect_thunk_bnd_needed): Likewise.
9627         (indirect_thunks_used): Likewise.
9628         (indirect_thunks_bnd_used): Likewise.
9629         (INDIRECT_LABEL): Likewise.
9630         (indirect_thunk_name): Likewise.
9631         (output_indirect_thunk): Likewise.
9632         (output_indirect_thunk_function): Likewise.
9633         (ix86_output_indirect_branch_via_reg): Likewise.
9634         (ix86_output_indirect_branch_via_push): Likewise.
9635         (ix86_output_indirect_branch): Likewise.
9636         (ix86_output_indirect_jmp): Likewise.
9637         (ix86_code_end): Call output_indirect_thunk_function if needed.
9638         (ix86_output_call_insn): Call ix86_output_indirect_branch if
9639         needed.
9640         (ix86_handle_fndecl_attribute): Handle indirect_branch.
9641         (ix86_attribute_table): Add indirect_branch.
9642         * config/i386/i386.h (machine_function): Add indirect_branch_type
9643         and has_local_indirect_jump.
9644         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9645         to true.
9646         (tablejump): Likewise.
9647         (*indirect_jump): Use ix86_output_indirect_jmp.
9648         (*tablejump_1): Likewise.
9649         (simple_return_indirect_internal): Likewise.
9650         * config/i386/i386.opt (mindirect-branch=): New option.
9651         (indirect_branch): New.
9652         (keep): Likewise.
9653         (thunk): Likewise.
9654         (thunk-inline): Likewise.
9655         (thunk-extern): Likewise.
9656         * doc/extend.texi: Document indirect_branch function attribute.
9657         * doc/invoke.texi: Document -mindirect-branch= option.
9659 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
9661         PR ipa/83051
9662         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9664 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
9666         * ipa-inline.c (want_inline_small_function_p): Return false if
9667         inlining has already failed with CIF_FINAL_ERROR.
9668         (update_caller_keys): Call want_inline_small_function_p before
9669         can_inline_edge_p.
9670         (update_callee_keys): Likewise.
9672 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9674         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9675         New function.
9676         (rs6000_quadword_masked_address_p): Likewise.
9677         (quad_aligned_load_p): Likewise.
9678         (quad_aligned_store_p): Likewise.
9679         (const_load_sequence_p): Add comment to describe the outer-most loop.
9680         (mimic_memory_attributes_and_flags): New function.
9681         (rs6000_gen_stvx): Likewise.
9682         (replace_swapped_aligned_store): Likewise.
9683         (rs6000_gen_lvx): Likewise.
9684         (replace_swapped_aligned_load): Likewise.
9685         (replace_swapped_load_constant): Capitalize argument name in
9686         comment describing this function.
9687         (rs6000_analyze_swaps): Add a third pass to search for vector loads
9688         and stores that access quad-word aligned addresses and replace
9689         with stvx or lvx instructions when appropriate.
9690         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9691         New function prototype.
9692         (rs6000_quadword_masked_address_p): Likewise.
9693         (rs6000_gen_lvx): Likewise.
9694         (rs6000_gen_stvx): Likewise.
9695         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9696         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9697         when memory address is aligned.
9698         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9699         this split to select lvx instruction when memory address is aligned.
9700         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9701         instruction when memory address is aligned.
9702         (*vsx_le_perm_load_v16qi): Likewise.
9703         (four unnamed splitters): Modify to select the stvx instruction
9704         when memory is aligned.
9706 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
9708         * predict.c (determine_unlikely_bbs): Handle correctly BBs
9709         which appears in the queue multiple times.
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         * tree-vectorizer.h (vec_lower_bound): New structure.
9716         (_loop_vec_info): Add check_nonzero and lower_bounds.
9717         (LOOP_VINFO_CHECK_NONZERO): New macro.
9718         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9719         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9720         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9721         fields.  Make seg_len the distance travelled, not including the
9722         access size.
9723         (dr_direction_indicator): Declare.
9724         (dr_zero_step_indicator): Likewise.
9725         (dr_known_forward_stride_p): Likewise.
9726         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9727         tree-ssanames.h.
9728         (runtime_alias_check_p): Allow runtime alias checks with
9729         variable strides.
9730         (operator ==): Compare access_size and align.
9731         (prune_runtime_alias_test_list): Rework for new distinction between
9732         the access_size and seg_len.
9733         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
9734         segment lengths.
9735         (get_segment_min_max): New function.
9736         (create_intersect_range_checks): Use it.
9737         (dr_step_indicator): New function.
9738         (dr_direction_indicator): Likewise.
9739         (dr_zero_step_indicator): Likewise.
9740         (dr_known_forward_stride_p): Likewise.
9741         * tree-loop-distribution.c (data_ref_segment_size): Return
9742         DR_STEP * (niters - 1).
9743         (compute_alias_check_pairs): Update call to the dr_with_seg_len
9744         constructor.
9745         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9746         (vect_preserves_scalar_order_p): New function, split out from...
9747         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
9748         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9749         (vect_vfa_access_size): New function.
9750         (vect_vfa_align): Likewise.
9751         (vect_compile_time_alias): Take access_size_a and access_b arguments.
9752         (dump_lower_bound): New function.
9753         (vect_check_lower_bound): Likewise.
9754         (vect_small_gap_p): Likewise.
9755         (vectorizable_with_step_bound_p): Likewise.
9756         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9757         depencies if the vectorization factor is 1.  Convert the checks
9758         for nonzero steps into checks on the bounds of DR_STEP.  Try using
9759         a bunds check for variable steps if the minimum required step is
9760         relatively small. Update calls to the dr_with_seg_len
9761         constructor and to vect_compile_time_alias.
9762         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9763         function.
9764         (vect_loop_versioning): Call it.
9765         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9766         when retrying.
9767         (vect_estimate_min_profitable_iters): Account for any bounds checks.
9769 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9770             Alan Hayward  <alan.hayward@arm.com>
9771             David Sherwood  <david.sherwood@arm.com>
9773         * doc/sourcebuild.texi (vect_scatter_store): Document.
9774         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9775         optabs.
9776         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9777         Document.
9778         * genopinit.c (main): Add supports_vec_scatter_store and
9779         supports_vec_scatter_store_cached to target_optabs.
9780         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9781         IFN_MASK_SCATTER_STORE.
9782         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9783         functions.
9784         * internal-fn.h (internal_store_fn_p): Declare.
9785         (internal_fn_stored_value_index): Likewise.
9786         * internal-fn.c (scatter_store_direct): New macro.
9787         (expand_scatter_store_optab_fn): New function.
9788         (direct_scatter_store_optab_supported_p): New macro.
9789         (internal_store_fn_p): New function.
9790         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9791         IFN_MASK_SCATTER_STORE.
9792         (internal_fn_mask_index): Likewise.
9793         (internal_fn_stored_value_index): New function.
9794         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9795         for scatter stores.
9796         * optabs-query.h (supports_vec_scatter_store_p): Declare.
9797         * optabs-query.c (supports_vec_scatter_store_p): New function.
9798         * tree-vectorizer.h (vect_get_store_rhs): Declare.
9799         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9800         true for scatter stores.
9801         (vect_gather_scatter_fn_p): Handle scatter stores too.
9802         (vect_check_gather_scatter): Consider using scatter stores if
9803         supports_vec_scatter_store_p.
9804         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9805         scatter stores too.
9806         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9807         internal_fn_stored_value_index.
9808         (check_load_store_masking): Handle scatter stores too.
9809         (vect_get_store_rhs): Make public.
9810         (vectorizable_call): Use internal_store_fn_p.
9811         (vectorizable_store): Handle scatter store internal functions.
9812         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9813         when deciding whether the end of the group has been reached.
9814         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9815         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9816         (mask_scatter_store<mode>): New insns.
9818 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9819             Alan Hayward  <alan.hayward@arm.com>
9820             David Sherwood  <david.sherwood@arm.com>
9822         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9823         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9824         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9825         function.
9826         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9827         Use vect_truncate_gather_scatter_offset if we can't treat the
9828         operation as a normal gather load or scatter store.
9829         (get_group_load_store_type): Take the gather_scatter_info
9830         as argument.  Try using a gather load or scatter store for
9831         single-element groups.
9832         (get_load_store_type): Update calls to get_group_load_store_type
9833         and vect_use_strided_gather_scatters_p.
9835 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9836             Alan Hayward  <alan.hayward@arm.com>
9837             David Sherwood  <david.sherwood@arm.com>
9839         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9840         optional tree argument.
9841         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9842         null target hooks.
9843         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9844         but continue to use the current value as a fallback.
9845         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9846         to compare the updates.
9847         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9848         (get_load_store_type): Use it when handling a strided access.
9849         (vect_get_strided_load_store_ops): New function.
9850         (vect_get_data_ptr_increment): Likewise.
9851         (vectorizable_load): Handle strided gather loads.  Always pass
9852         a step to vect_create_data_ref_ptr and bump_vector_ptr.
9854 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9855             Alan Hayward  <alan.hayward@arm.com>
9856             David Sherwood  <david.sherwood@arm.com>
9858         * doc/md.texi (gather_load@var{m}): Document.
9859         (mask_gather_load@var{m}): Likewise.
9860         * genopinit.c (main): Add supports_vec_gather_load and
9861         supports_vec_gather_load_cached to target_optabs.
9862         * optabs-tree.c (init_tree_optimization_optabs): Use
9863         ggc_cleared_alloc to allocate target_optabs.
9864         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9865         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9866         functions.
9867         * internal-fn.h (internal_load_fn_p): Declare.
9868         (internal_gather_scatter_fn_p): Likewise.
9869         (internal_fn_mask_index): Likewise.
9870         (internal_gather_scatter_fn_supported_p): Likewise.
9871         * internal-fn.c (gather_load_direct): New macro.
9872         (expand_gather_load_optab_fn): New function.
9873         (direct_gather_load_optab_supported_p): New macro.
9874         (direct_internal_fn_optab): New function.
9875         (internal_load_fn_p): Likewise.
9876         (internal_gather_scatter_fn_p): Likewise.
9877         (internal_fn_mask_index): Likewise.
9878         (internal_gather_scatter_fn_supported_p): Likewise.
9879         * optabs-query.c (supports_at_least_one_mode_p): New function.
9880         (supports_vec_gather_load_p): Likewise.
9881         * optabs-query.h (supports_vec_gather_load_p): Declare.
9882         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9883         and memory_type field.
9884         (NUM_PATTERNS): Bump to 15.
9885         * tree-vect-data-refs.c: Include internal-fn.h.
9886         (vect_gather_scatter_fn_p): New function.
9887         (vect_describe_gather_scatter_call): Likewise.
9888         (vect_check_gather_scatter): Try using internal functions for
9889         gather loads.  Recognize existing calls to a gather load function.
9890         (vect_analyze_data_refs): Consider using gather loads if
9891         supports_vec_gather_load_p.
9892         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9893         (vect_get_gather_scatter_offset_type): Likewise.
9894         (vect_convert_mask_for_vectype): Likewise.
9895         (vect_add_conversion_to_patterm): Likewise.
9896         (vect_try_gather_scatter_pattern): Likewise.
9897         (vect_recog_gather_scatter_pattern): New pattern recognizer.
9898         (vect_vect_recog_func_ptrs): Add it.
9899         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9900         internal_fn_mask_index and internal_gather_scatter_fn_p.
9901         (check_load_store_masking): Take the gather_scatter_info as an
9902         argument and handle gather loads.
9903         (vect_get_gather_scatter_ops): New function.
9904         (vectorizable_call): Check internal_load_fn_p.
9905         (vectorizable_load): Likewise.  Handle gather load internal
9906         functions.
9907         (vectorizable_store): Update call to check_load_store_masking.
9908         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9909         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9910         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9911         (aarch64_gather_scale_operand_d): New predicates.
9912         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9913         (mask_gather_load<mode>): New insns.
9915 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9916             Alan Hayward  <alan.hayward@arm.com>
9917             David Sherwood  <david.sherwood@arm.com>
9919         * optabs.def (fold_left_plus_optab): New optab.
9920         * doc/md.texi (fold_left_plus_@var{m}): Document.
9921         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9922         * internal-fn.c (fold_left_direct): Define.
9923         (expand_fold_left_optab_fn): Likewise.
9924         (direct_fold_left_optab_supported_p): Likewise.
9925         * fold-const-call.c (fold_const_fold_left): New function.
9926         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9927         * tree-parloops.c (valid_reduction_p): New function.
9928         (gather_scalar_reductions): Use it.
9929         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9930         (vect_finish_replace_stmt): Declare.
9931         * tree-vect-loop.c (fold_left_reduction_fn): New function.
9932         (needs_fold_left_reduction_p): New function, split out from...
9933         (vect_is_simple_reduction): ...here.  Accept reductions that
9934         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9935         (vect_force_simple_reduction): Also store the reduction type in
9936         the assignment's STMT_VINFO_REDUC_TYPE.
9937         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9938         (merge_with_identity): New function.
9939         (vect_expand_fold_left): Likewise.
9940         (vectorize_fold_left_reduction): Likewise.
9941         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
9942         scalar phi in place for it.  Check for target support and reject
9943         cases that would reassociate the operation.  Defer the transform
9944         phase to vectorize_fold_left_reduction.
9945         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9946         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9947         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9949 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9951         * tree-if-conv.c (predicate_mem_writes): Remove redundant
9952         call to ifc_temp_var.
9954 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9955             Alan Hayward  <alan.hayward@arm.com>
9956             David Sherwood  <david.sherwood@arm.com>
9958         * target.def (legitimize_address_displacement): Take the original
9959         offset as a poly_int.
9960         * targhooks.h (default_legitimize_address_displacement): Update
9961         accordingly.
9962         * targhooks.c (default_legitimize_address_displacement): Likewise.
9963         * doc/tm.texi: Regenerate.
9964         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9965         as an argument, moving assert of ad->disp == ad->disp_term to...
9966         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
9967         Try calling targetm.legitimize_address_displacement before expanding
9968         the address rather than afterwards, and adjust for the new interface.
9969         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9970         Match the new hook interface.  Handle SVE addresses.
9971         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9972         new hook interface.
9974 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9976         * Makefile.in (OBJS): Add early-remat.o.
9977         * target.def (select_early_remat_modes): New hook.
9978         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9979         * doc/tm.texi: Regenerate.
9980         * targhooks.h (default_select_early_remat_modes): Declare.
9981         * targhooks.c (default_select_early_remat_modes): New function.
9982         * timevar.def (TV_EARLY_REMAT): New timevar.
9983         * passes.def (pass_early_remat): New pass.
9984         * tree-pass.h (make_pass_early_remat): Declare.
9985         * early-remat.c: New file.
9986         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9987         function.
9988         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9990 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
9991             Alan Hayward  <alan.hayward@arm.com>
9992             David Sherwood  <david.sherwood@arm.com>
9994         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9995         vfm1 with a bound_epilog parameter.
9996         (vect_do_peeling): Update calls accordingly, and move the prologue
9997         call earlier in the function.  Treat the base bound_epilog as 0 for
9998         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
9999         this base when peeling for gaps.
10000         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
10001         with fully-masked loops.
10002         (vect_estimate_min_profitable_iters): Handle the single peeled
10003         iteration in that case.
10005 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10006             Alan Hayward  <alan.hayward@arm.com>
10007             David Sherwood  <david.sherwood@arm.com>
10009         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
10010         single-element interleaving even if the size is not a power of 2.
10011         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
10012         accesses for single-element interleaving if the group size is
10013         not a power of 2.
10015 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10016             Alan Hayward  <alan.hayward@arm.com>
10017             David Sherwood  <david.sherwood@arm.com>
10019         * doc/md.texi (fold_extract_last_@var{m}): Document.
10020         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
10021         * optabs.def (fold_extract_last_optab): New optab.
10022         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
10023         * internal-fn.c (fold_extract_direct): New macro.
10024         (expand_fold_extract_optab_fn): Likewise.
10025         (direct_fold_extract_optab_supported_p): Likewise.
10026         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
10027         * tree-vect-loop.c (vect_model_reduction_cost): Handle
10028         EXTRACT_LAST_REDUCTION.
10029         (get_initial_def_for_reduction): Do not create an initial vector
10030         for EXTRACT_LAST_REDUCTION reductions.
10031         (vectorizable_reduction): Leave the scalar phi in place for
10032         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
10033         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
10034         epilogue code for EXTRACT_LAST_REDUCTION and defer the
10035         transform phase to vectorizable_condition.
10036         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
10037         split out from...
10038         (vect_finish_stmt_generation): ...here.
10039         (vect_finish_replace_stmt): New function.
10040         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
10041         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
10042         pattern.
10043         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
10045 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10046             Alan Hayward  <alan.hayward@arm.com>
10047             David Sherwood  <david.sherwood@arm.com>
10049         * doc/md.texi (extract_last_@var{m}): Document.
10050         * optabs.def (extract_last_optab): New optab.
10051         * internal-fn.def (EXTRACT_LAST): New internal function.
10052         * internal-fn.c (cond_unary_direct): New macro.
10053         (expand_cond_unary_optab_fn): Likewise.
10054         (direct_cond_unary_optab_supported_p): Likewise.
10055         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
10056         loops using EXTRACT_LAST.
10057         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
10058         (extract_last_<mode>): ...this optab.
10059         (vec_extract<mode><Vel>): Update accordingly.
10061 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10062             Alan Hayward  <alan.hayward@arm.com>
10063             David Sherwood  <david.sherwood@arm.com>
10065         * target.def (empty_mask_is_expensive): New hook.
10066         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
10067         * doc/tm.texi: Regenerate.
10068         * targhooks.h (default_empty_mask_is_expensive): Declare.
10069         * targhooks.c (default_empty_mask_is_expensive): New function.
10070         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
10071         if the target says that empty masks are expensive.
10072         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
10073         New function.
10074         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
10076 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10077             Alan Hayward  <alan.hayward@arm.com>
10078             David Sherwood  <david.sherwood@arm.com>
10080         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
10081         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
10082         (vect_use_loop_mask_for_alignment_p): New function.
10083         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
10084         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
10085         niters_skip argument.  Make sure that the first niters_skip elements
10086         of the first iteration are inactive.
10087         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
10088         Update call to vect_set_loop_masks_directly.
10089         (get_misalign_in_elems): New function, split out from...
10090         (vect_gen_prolog_loop_niters): ...here.
10091         (vect_update_init_of_dr): Take a code argument that specifies whether
10092         the adjustment should be added or subtracted.
10093         (vect_update_init_of_drs): Likewise.
10094         (vect_prepare_for_masked_peels): New function.
10095         (vect_do_peeling): Skip prologue peeling if we're using a mask
10096         instead.  Update call to vect_update_inits_of_drs.
10097         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10098         mask_skip_niters.
10099         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
10100         alignment.  Do not include the number of peeled iterations in
10101         the minimum threshold in that case.
10102         (vectorizable_induction): Adjust the start value down by
10103         LOOP_VINFO_MASK_SKIP_NITERS iterations.
10104         (vect_transform_loop): Call vect_prepare_for_masked_peels.
10105         Take the number of skipped iterations into account when calculating
10106         the loop bounds.
10107         * tree-vect-stmts.c (vect_gen_while_not): New function.
10109 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10110             Alan Hayward  <alan.hayward@arm.com>
10111             David Sherwood  <david.sherwood@arm.com>
10113         * doc/sourcebuild.texi (vect_fully_masked): Document.
10114         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
10115         default value to 0.
10116         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
10117         split out from...
10118         (vect_analyze_loop_2): ...here. Don't check the vectorization
10119         factor against the number of loop iterations if the loop is
10120         fully-masked.
10122 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10123             Alan Hayward  <alan.hayward@arm.com>
10124             David Sherwood  <david.sherwood@arm.com>
10126         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
10127         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
10128         (dump_groups): Update accordingly.
10129         (iv_use::mem_type): New member variable.
10130         (address_p): New function.
10131         (record_use): Add a mem_type argument and initialize the new
10132         mem_type field.
10133         (record_group_use): Add a mem_type argument.  Use address_p.
10134         Remove obsolete null checks of base_object.  Update call to record_use.
10135         (find_interesting_uses_op): Update call to record_group_use.
10136         (find_interesting_uses_cond): Likewise.
10137         (find_interesting_uses_address): Likewise.
10138         (get_mem_type_for_internal_fn): New function.
10139         (find_address_like_use): Likewise.
10140         (find_interesting_uses_stmt): Try find_address_like_use before
10141         calling find_interesting_uses_op.
10142         (addr_offset_valid_p): Use the iv mem_type field as the type
10143         of the addressed memory.
10144         (add_autoinc_candidates): Likewise.
10145         (get_address_cost): Likewise.
10146         (split_small_address_groups_p): Use address_p.
10147         (split_address_groups): Likewise.
10148         (add_iv_candidate_for_use): Likewise.
10149         (autoinc_possible_for_pair): Likewise.
10150         (rewrite_groups): Likewise.
10151         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
10152         (determine_group_iv_cost): Update after split of USE_ADDRESS.
10153         (get_alias_ptr_type_for_ptr_address): New function.
10154         (rewrite_use_address): Rewrite address uses in calls that were
10155         identified by find_address_like_use.
10157 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10158             Alan Hayward  <alan.hayward@arm.com>
10159             David Sherwood  <david.sherwood@arm.com>
10161         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
10162         TARGET_MEM_REFs.
10163         * gimple-expr.h (is_gimple_addressable: Likewise.
10164         * gimple-expr.c (is_gimple_address): Likewise.
10165         * internal-fn.c (expand_call_mem_ref): New function.
10166         (expand_mask_load_optab_fn): Use it.
10167         (expand_mask_store_optab_fn): Likewise.
10169 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10170             Alan Hayward  <alan.hayward@arm.com>
10171             David Sherwood  <david.sherwood@arm.com>
10173         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
10174         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
10175         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
10176         (cond_umax@var{mode}): Document.
10177         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
10178         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
10179         (cond_umin_optab, cond_umax_optab): New optabs.
10180         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
10181         (COND_IOR, COND_XOR): New internal functions.
10182         * internal-fn.h (get_conditional_internal_fn): Declare.
10183         * internal-fn.c (cond_binary_direct): New macro.
10184         (expand_cond_binary_optab_fn): Likewise.
10185         (direct_cond_binary_optab_supported_p): Likewise.
10186         (get_conditional_internal_fn): New function.
10187         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
10188         Cope with reduction statements that are vectorized as calls rather
10189         than assignments.
10190         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
10191         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
10192         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
10193         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
10194         (UNSPEC_COND_EOR): New unspecs.
10195         (optab): Add mappings for them.
10196         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
10197         (sve_int_op, sve_fp_op): New int attributes.
10199 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10200             Alan Hayward  <alan.hayward@arm.com>
10201             David Sherwood  <david.sherwood@arm.com>
10203         * optabs.def (while_ult_optab): New optab.
10204         * doc/md.texi (while_ult@var{m}@var{n}): Document.
10205         * internal-fn.def (WHILE_ULT): New internal function.
10206         * internal-fn.h (direct_internal_fn_supported_p): New override
10207         that takes two types as argument.
10208         * internal-fn.c (while_direct): New macro.
10209         (expand_while_optab_fn): New function.
10210         (convert_optab_supported_p): Likewise.
10211         (direct_while_optab_supported_p): New macro.
10212         * wide-int.h (wi::udiv_ceil): New function.
10213         * tree-vectorizer.h (rgroup_masks): New structure.
10214         (vec_loop_masks): New typedef.
10215         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10216         and fully_masked_p.
10217         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10218         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10219         (vect_max_vf): New function.
10220         (slpeel_make_loop_iterate_ntimes): Delete.
10221         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10222         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10223         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10224         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10225         internal-fn.h, stor-layout.h and optabs-query.h.
10226         (vect_set_loop_mask): New function.
10227         (add_preheader_seq): Likewise.
10228         (add_header_seq): Likewise.
10229         (interleave_supported_p): Likewise.
10230         (vect_maybe_permute_loop_masks): Likewise.
10231         (vect_set_loop_masks_directly): Likewise.
10232         (vect_set_loop_condition_masked): Likewise.
10233         (vect_set_loop_condition_unmasked): New function, split out from
10234         slpeel_make_loop_iterate_ntimes.
10235         (slpeel_make_loop_iterate_ntimes): Rename to..
10236         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
10237         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10238         (vect_do_peeling): Update call accordingly.
10239         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10240         loops.
10241         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10242         mask_compare_type, can_fully_mask_p and fully_masked_p.
10243         (release_vec_loop_masks): New function.
10244         (_loop_vec_info): Use it to free the loop masks.
10245         (can_produce_all_loop_masks_p): New function.
10246         (vect_get_max_nscalars_per_iter): Likewise.
10247         (vect_verify_full_masking): Likewise.
10248         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10249         retries, and free the mask rgroups before retrying.  Check loop-wide
10250         reasons for disallowing fully-masked loops.  Make the final decision
10251         about whether use a fully-masked loop or not.
10252         (vect_estimate_min_profitable_iters): Do not assume that peeling
10253         for the number of iterations will be needed for fully-masked loops.
10254         (vectorizable_reduction): Disable fully-masked loops.
10255         (vectorizable_live_operation): Likewise.
10256         (vect_halve_mask_nunits): New function.
10257         (vect_double_mask_nunits): Likewise.
10258         (vect_record_loop_mask): Likewise.
10259         (vect_get_loop_mask): Likewise.
10260         (vect_transform_loop): Handle the case in which the final loop
10261         iteration might handle a partial vector.  Call vect_set_loop_condition
10262         instead of slpeel_make_loop_iterate_ntimes.
10263         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10264         (check_load_store_masking): New function.
10265         (prepare_load_store_mask): Likewise.
10266         (vectorizable_store): Handle fully-masked loops.
10267         (vectorizable_load): Likewise.
10268         (supportable_widening_operation): Use vect_halve_mask_nunits for
10269         booleans.
10270         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10271         (vect_gen_while): New function.
10272         * config/aarch64/aarch64.md (umax<mode>3): New expander.
10273         (aarch64_uqdec<mode>): New insn.
10275 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10276             Alan Hayward  <alan.hayward@arm.com>
10277             David Sherwood  <david.sherwood@arm.com>
10279         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10280         (reduc_xor_scal_optab): New optabs.
10281         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10282         (reduc_xor_scal_@var{m}): Document.
10283         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10284         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10285         internal functions.
10286         * fold-const-call.c (fold_const_call): Handle them.
10287         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10288         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10289         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10290         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10291         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10292         (UNSPEC_XORV): New unspecs.
10293         (optab): Add entries for them.
10294         (BITWISEV): New int iterator.
10295         (bit_reduc_op): New int attributes.
10297 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10298             Alan Hayward  <alan.hayward@arm.com>
10299             David Sherwood  <david.sherwood@arm.com>
10301         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10302         * internal-fn.def (VEC_SHL_INSERT): New internal function.
10303         * optabs.def (vec_shl_insert_optab): New optab.
10304         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10305         (duplicate_and_interleave): Likewise.
10306         * tree-vect-loop.c: Include internal-fn.h.
10307         (neutral_op_for_slp_reduction): New function, split out from
10308         get_initial_defs_for_reduction.
10309         (get_initial_def_for_reduction): Handle option 2 for variable-length
10310         vectors by loading the neutral value into a vector and then shifting
10311         the initial value into element 0.
10312         (get_initial_defs_for_reduction): Replace the code argument with
10313         the neutral value calculated by neutral_op_for_slp_reduction.
10314         Use gimple_build_vector for constant-length vectors.
10315         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10316         but the first group_size elements have a neutral value.
10317         Use duplicate_and_interleave otherwise.
10318         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10319         Update call to get_initial_defs_for_reduction.  Handle SLP
10320         reductions for variable-length vectors by creating one vector
10321         result for each scalar result, with the elements associated
10322         with other scalar results stubbed out with the neutral value.
10323         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10324         Require IFN_VEC_SHL_INSERT for double reductions on
10325         variable-length vectors, or SLP reductions that have
10326         a neutral value.  Require can_duplicate_and_interleave_p
10327         support for variable-length unchained SLP reductions if there
10328         is no neutral value, such as for MIN/MAX reductions.  Also require
10329         the number of vector elements to be a multiple of the number of
10330         SLP statements when doing variable-length unchained SLP reductions.
10331         Update call to vect_create_epilog_for_reduction.
10332         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10333         and remove initial values.
10334         (duplicate_and_interleave): Make public.
10335         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10336         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10338 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10339             Alan Hayward  <alan.hayward@arm.com>
10340             David Sherwood  <david.sherwood@arm.com>
10342         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10343         (can_duplicate_and_interleave_p): New function.
10344         (vect_get_and_check_slp_defs): Take the vector of statements
10345         rather than just the current one.  Remove excess parentheses.
10346         Restriction rejectinon of vect_constant_def and vect_external_def
10347         for variable-length vectors to boolean types, or types for which
10348         can_duplicate_and_interleave_p is false.
10349         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10350         (duplicate_and_interleave): New function.
10351         (vect_get_constant_vectors): Use gimple_build_vector for
10352         constant-length vectors and suitable variable-length constant
10353         vectors.  Use duplicate_and_interleave for other variable-length
10354         vectors.  Don't defer the update when inserting new statements.
10356 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10357             Alan Hayward  <alan.hayward@arm.com>
10358             David Sherwood  <david.sherwood@arm.com>
10360         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10361         min_profitable_iters doesn't go negative.
10363 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10364             Alan Hayward  <alan.hayward@arm.com>
10365             David Sherwood  <david.sherwood@arm.com>
10367         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10368         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10369         * optabs.def (vec_mask_load_lanes_optab): New optab.
10370         (vec_mask_store_lanes_optab): Likewise.
10371         * internal-fn.def (MASK_LOAD_LANES): New internal function.
10372         (MASK_STORE_LANES): Likewise.
10373         * internal-fn.c (mask_load_lanes_direct): New macro.
10374         (mask_store_lanes_direct): Likewise.
10375         (expand_mask_load_optab_fn): Handle masked operations.
10376         (expand_mask_load_lanes_optab_fn): New macro.
10377         (expand_mask_store_optab_fn): Handle masked operations.
10378         (expand_mask_store_lanes_optab_fn): New macro.
10379         (direct_mask_load_lanes_optab_supported_p): Likewise.
10380         (direct_mask_store_lanes_optab_supported_p): Likewise.
10381         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10382         parameter.
10383         (vect_load_lanes_supported): Likewise.
10384         * tree-vect-data-refs.c (strip_conversion): New function.
10385         (can_group_stmts_p): Likewise.
10386         (vect_analyze_data_ref_accesses): Use it instead of checking
10387         for a pair of assignments.
10388         (vect_store_lanes_supported): Take a masked_p parameter.
10389         (vect_load_lanes_supported): Likewise.
10390         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10391         vect_store_lanes_supported and vect_load_lanes_supported.
10392         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10393         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10394         parameter.  Don't allow gaps for masked accesses.
10395         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
10396         and vect_load_lanes_supported.
10397         (get_load_store_type): Take a masked_p parameter and update
10398         call to get_group_load_store_type.
10399         (vectorizable_store): Update call to get_load_store_type.
10400         Handle IFN_MASK_STORE_LANES.
10401         (vectorizable_load): Update call to get_load_store_type.
10402         Handle IFN_MASK_LOAD_LANES.
10404 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10405             Alan Hayward  <alan.hayward@arm.com>
10406             David Sherwood  <david.sherwood@arm.com>
10408         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10409         modes for SVE.
10410         * config/aarch64/aarch64-protos.h
10411         (aarch64_sve_struct_memory_operand_p): Declare.
10412         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10413         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10414         (VPRED, vpred): Handle SVE structure modes.
10415         * config/aarch64/constraints.md (Utx): New constraint.
10416         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10417         (aarch64_sve_struct_nonimmediate_operand): New predicates.
10418         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10419         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10420         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10421         structure modes.  Split into pieces after RA.
10422         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10423         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10424         New patterns.
10425         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10426         SVE structure modes.
10427         (aarch64_classify_address): Likewise.
10428         (sizetochar): Move earlier in file.
10429         (aarch64_print_operand): Handle SVE register lists.
10430         (aarch64_array_mode): New function.
10431         (aarch64_sve_struct_memory_operand_p): Likewise.
10432         (TARGET_ARRAY_MODE): Redefine.
10434 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10435             Alan Hayward  <alan.hayward@arm.com>
10436             David Sherwood  <david.sherwood@arm.com>
10438         * target.def (array_mode): New target hook.
10439         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10440         * doc/tm.texi: Regenerate.
10441         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10442         * hooks.c (hook_optmode_mode_uhwi_none): New function.
10443         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10444         targetm.array_mode.
10445         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
10446         type sizes.
10448 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10449             Alan Hayward  <alan.hayward@arm.com>
10450             David Sherwood  <david.sherwood@arm.com>
10452         * fold-const.c (fold_binary_loc): Check the argument types
10453         rather than the result type when testing for a vector operation.
10455 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10457         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10458         * doc/tm.texi: Regenerate.
10460 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10461             Alan Hayward  <alan.hayward@arm.com>
10462             David Sherwood  <david.sherwood@arm.com>
10464         * doc/invoke.texi (-msve-vector-bits=): Document new option.
10465         (sve): Document new AArch64 extension.
10466         * doc/md.texi (w): Extend the description of the AArch64
10467         constraint to include SVE vectors.
10468         (Upl, Upa): Document new AArch64 predicate constraints.
10469         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10470         enum.
10471         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10472         (msve-vector-bits=): New option.
10473         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10474         SVE when these are disabled.
10475         (sve): New extension.
10476         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10477         modes.  Adjust their number of units based on aarch64_sve_vg.
10478         (MAX_BITSIZE_MODE_ANY_MODE): Define.
10479         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10480         aarch64_addr_query_type.
10481         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10482         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10483         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10484         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10485         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10486         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10487         (aarch64_simd_imm_zero_p): Delete.
10488         (aarch64_check_zero_based_sve_index_immediate): Declare.
10489         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10490         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10491         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10492         (aarch64_sve_float_mul_immediate_p): Likewise.
10493         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10494         rather than an rtx.
10495         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10496         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10497         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10498         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10499         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10500         (aarch64_regmode_natural_size): Likewise.
10501         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10502         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10503         left one place.
10504         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10505         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10506         for VG and the SVE predicate registers.
10507         (V_ALIASES): Add a "z"-prefixed alias.
10508         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10509         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10510         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10511         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10512         (REG_CLASS_NAMES): Add entries for them.
10513         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
10514         and the predicate registers.
10515         (aarch64_sve_vg): Declare.
10516         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10517         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10518         (REGMODE_NATURAL_SIZE): Define.
10519         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10520         SVE macros.
10521         * config/aarch64/aarch64.c: Include cfgrtl.h.
10522         (simd_immediate_info): Add a constructor for series vectors,
10523         and an associated step field.
10524         (aarch64_sve_vg): New variable.
10525         (aarch64_dbx_register_number): Handle VG and the predicate registers.
10526         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10527         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10528         (VEC_ANY_DATA, VEC_STRUCT): New constants.
10529         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10530         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10531         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10532         (aarch64_get_mask_mode): New functions.
10533         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10534         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10535         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
10536         predicate modes and predicate registers.  Explicitly restrict
10537         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
10538         to store a vector mode if it is recognized by
10539         aarch64_classify_vector_mode.
10540         (aarch64_regmode_natural_size): New function.
10541         (aarch64_hard_regno_caller_save_mode): Return the original mode
10542         for predicates.
10543         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10544         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10545         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10546         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10547         functions.
10548         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
10549         does not overlap dest if the function is frame-related.  Handle
10550         SVE constants.
10551         (aarch64_split_add_offset): New function.
10552         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10553         them aarch64_add_offset.
10554         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10555         and update call to aarch64_sub_sp.
10556         (aarch64_add_cfa_expression): New function.
10557         (aarch64_expand_prologue): Pass extra temporary registers to the
10558         functions above.  Handle the case in which we need to emit new
10559         DW_CFA_expressions for registers that were originally saved
10560         relative to the stack pointer, but now have to be expressed
10561         relative to the frame pointer.
10562         (aarch64_output_mi_thunk): Pass extra temporary registers to the
10563         functions above.
10564         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
10565         IP0 and IP1 values for SVE frames.
10566         (aarch64_expand_vec_series): New function.
10567         (aarch64_expand_sve_widened_duplicate): Likewise.
10568         (aarch64_expand_sve_const_vector): Likewise.
10569         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10570         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
10571         into the register, rather than emitting a SET directly.
10572         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10573         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10574         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10575         (offset_9bit_signed_scaled_p): New functions.
10576         (aarch64_replicate_bitmask_imm): New function.
10577         (aarch64_bitmask_imm): Use it.
10578         (aarch64_cannot_force_const_mem): Reject expressions involving
10579         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
10580         (aarch64_classify_index): Handle SVE indices, by requiring
10581         a plain register index with a scale that matches the element size.
10582         (aarch64_classify_address): Handle SVE addresses.  Assert that
10583         the mode of the address is VOIDmode or an integer mode.
10584         Update call to aarch64_classify_symbol.
10585         (aarch64_classify_symbolic_expression): Update call to
10586         aarch64_classify_symbol.
10587         (aarch64_const_vec_all_in_range_p): New function.
10588         (aarch64_print_vector_float_operand): Likewise.
10589         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
10590         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
10591         and the FP immediates 1.0 and 0.5.
10592         (aarch64_print_address_internal): Handle SVE addresses.
10593         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10594         (aarch64_regno_regclass): Handle predicate registers.
10595         (aarch64_secondary_reload): Handle big-endian reloads of SVE
10596         data modes.
10597         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10598         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10599         (aarch64_convert_sve_vector_bits): New function.
10600         (aarch64_override_options): Use it to handle -msve-vector-bits=.
10601         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10602         rather than an rtx.
10603         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10604         Handle SVE vector and predicate modes.  Accept VL-based constants
10605         that need only one temporary register, and VL offsets that require
10606         no temporary registers.
10607         (aarch64_conditional_register_usage): Mark the predicate registers
10608         as fixed if SVE isn't available.
10609         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10610         Return true for SVE vector and predicate modes.
10611         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10612         rather than an unsigned int.  Handle SVE modes.
10613         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
10614         SVE modes.
10615         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10616         if SVE is enabled.
10617         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10618         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10619         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10620         (aarch64_sve_float_mul_immediate_p): New functions.
10621         (aarch64_sve_valid_immediate): New function.
10622         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10623         Explicitly reject structure modes.  Check for INDEX constants.
10624         Handle PTRUE and PFALSE constants.
10625         (aarch64_check_zero_based_sve_index_immediate): New function.
10626         (aarch64_simd_imm_zero_p): Delete.
10627         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10628         vector modes.  Accept constants in the range of CNT[BHWD].
10629         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10630         ask for an Advanced SIMD mode.
10631         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10632         (aarch64_simd_vector_alignment): Handle SVE predicates.
10633         (aarch64_vectorize_preferred_vector_alignment): New function.
10634         (aarch64_simd_vector_alignment_reachable): Use it instead of
10635         the vector size.
10636         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10637         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10638         functions.
10639         (MAX_VECT_LEN): Delete.
10640         (expand_vec_perm_d): Add a vec_flags field.
10641         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10642         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10643         (aarch64_evpc_ext): Don't apply a big-endian lane correction
10644         for SVE modes.
10645         (aarch64_evpc_rev): Rename to...
10646         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
10647         (aarch64_evpc_rev_global): New function.
10648         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10649         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10650         MAX_VECT_LEN.
10651         (aarch64_evpc_sve_tbl): New function.
10652         (aarch64_expand_vec_perm_const_1): Update after rename of
10653         aarch64_evpc_rev.  Handle SVE permutes too, trying
10654         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10655         than aarch64_evpc_tbl.
10656         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10657         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10658         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10659         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10660         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10661         (aarch64_expand_sve_vcond): New functions.
10662         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10663         of aarch64_vector_mode_p.
10664         (aarch64_dwarf_poly_indeterminate_value): New function.
10665         (aarch64_compute_pressure_classes): Likewise.
10666         (aarch64_can_change_mode_class): Likewise.
10667         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10668         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10669         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10670         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10671         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10672         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10673         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10674         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10675         constraints.
10676         (Dn, Dl, Dr): Accept const as well as const_vector.
10677         (Dz): Likewise.  Compare against CONST0_RTX.
10678         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10679         of "vector" where appropriate.
10680         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10681         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10682         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10683         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10684         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10685         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10686         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10687         (v_int_equiv): Extend to SVE modes.
10688         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10689         mode attributes.
10690         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10691         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10692         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10693         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10694         (SVE_COND_FP_CMP): New int iterators.
10695         (perm_hilo): Handle the new unpack unspecs.
10696         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10697         attributes.
10698         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10699         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10700         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10701         (aarch64_equality_operator, aarch64_constant_vector_operand)
10702         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10703         (aarch64_sve_nonimmediate_operand): Likewise.
10704         (aarch64_sve_general_operand): Likewise.
10705         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10706         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10707         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10708         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10709         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10710         (aarch64_sve_float_arith_immediate): Likewise.
10711         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10712         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10713         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10714         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10715         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10716         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10717         (aarch64_sve_float_arith_operand): Likewise.
10718         (aarch64_sve_float_arith_with_sub_operand): Likewise.
10719         (aarch64_sve_float_mul_operand): Likewise.
10720         (aarch64_sve_vec_perm_operand): Likewise.
10721         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10722         (aarch64_mov_operand): Accept const_poly_int and const_vector.
10723         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10724         as well as const_vector.
10725         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10726         in file.  Use CONST0_RTX and CONSTM1_RTX.
10727         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
10728         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10729         Use aarch64_simd_imm_zero.
10730         * config/aarch64/aarch64-sve.md: New file.
10731         * config/aarch64/aarch64.md: Include it.
10732         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10733         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10734         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10735         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10736         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10737         (sve): New attribute.
10738         (enabled): Disable instructions with the sve attribute unless
10739         TARGET_SVE.
10740         (movqi, movhi): Pass CONST_POLY_INT operaneds through
10741         aarch64_expand_mov_immediate.
10742         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10743         CNT[BHSD] immediates.
10744         (movti): Split CONST_POLY_INT moves into two halves.
10745         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10746         Split additions that need a temporary here if the destination
10747         is the stack pointer.
10748         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10749         (*add<mode>3_poly_1): New instruction.
10750         (set_clobber_cc): New expander.
10752 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10754         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10755         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
10756         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10757         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10758         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
10759         Change innermode from fixed_mode_size to machine_mode.
10760         (simplify_subreg): Update call accordingly.  Handle a constant-sized
10761         subreg of a variable-length CONST_VECTOR.
10763 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10764             Alan Hayward  <alan.hayward@arm.com>
10765             David Sherwood  <david.sherwood@arm.com>
10767         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10768         (add_offset_to_base): New function, split out from...
10769         (create_mem_ref): ...here.  When handling a scale other than 1,
10770         check first whether the address is valid without the offset.
10771         Add it into the base if so, leaving the index and scale as-is.
10773 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
10775         PR c++/83778
10776         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10777         fold_for_warn before checking if arg2 is INTEGER_CST.
10779 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
10781         * config/rs6000/predicates.md (load_multiple_operation): Delete.
10782         (store_multiple_operation): Delete.
10783         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10784         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10785         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10786         guarded by TARGET_STRING.
10787         (rs6000_output_load_multiple): Delete.
10788         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10789         OPTION_MASK_STRING / TARGET_STRING handling.
10790         (print_operand) <'N', 'O'>: Add comment that these are unused now.
10791         (const rs6000_opt_masks) <"string">: Change mask to 0.
10792         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10793         (MASK_STRING): Delete.
10794         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10795         parts.  Simplify.
10796         (load_multiple): Delete.
10797         (*ldmsi8): Delete.
10798         (*ldmsi7): Delete.
10799         (*ldmsi6): Delete.
10800         (*ldmsi5): Delete.
10801         (*ldmsi4): Delete.
10802         (*ldmsi3): Delete.
10803         (store_multiple): Delete.
10804         (*stmsi8): Delete.
10805         (*stmsi7): Delete.
10806         (*stmsi6): Delete.
10807         (*stmsi5): Delete.
10808         (*stmsi4): Delete.
10809         (*stmsi3): Delete.
10810         (movmemsi_8reg): Delete.
10811         (corresponding unnamed define_insn): Delete.
10812         (movmemsi_6reg): Delete.
10813         (corresponding unnamed define_insn): Delete.
10814         (movmemsi_4reg): Delete.
10815         (corresponding unnamed define_insn): Delete.
10816         (movmemsi_2reg): Delete.
10817         (corresponding unnamed define_insn): Delete.
10818         (movmemsi_1reg): Delete.
10819         (corresponding unnamed define_insn): Delete.
10820         * config/rs6000/rs6000.opt (mno-string): New.
10821         (mstring): Replace by deprecation warning stub.
10822         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10824 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
10826         * regrename.c (regrename_do_replace): If replacing the same
10827         reg multiple times, try to reuse last created gen_raw_REG.
10829         PR debug/81155
10830         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10831         main to workaround a bug in GDB.
10833 2018-01-12  Tom de Vries  <tom@codesourcery.com>
10835         PR target/83737
10836         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10838 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
10840         PR rtl-optimization/80481
10841         * ira-color.c (get_cap_member): New function.
10842         (allocnos_conflict_by_live_ranges_p): Use it.
10843         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10844         (setup_slot_coalesced_allocno_live_ranges): Ditto.
10846 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
10848         PR target/83628
10849         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10850         (*saddl_se_1): Ditto.
10851         (*ssubsi_1): Ditto.
10852         (*ssubl_se_1): Ditto.
10854 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10856         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10857         rather than wi::to_widest for DR_INITs.
10858         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10859         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10860         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10861         INTEGER_CSTs.
10862         (vect_analyze_group_access_1): Note that here.
10864 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10866         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10867         polynomial type sizes.
10869 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
10871         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10872         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10873         (gimple_add_tmp_var): Likewise.
10875 2018-01-12  Martin Liska  <mliska@suse.cz>
10877         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10878         (gimple_alloc_sizes): Likewise.
10879         (dump_gimple_statistics): Use PRIu64 in printf format.
10880         * gimple.h: Change uint64_t to int.
10882 2018-01-12  Martin Liska  <mliska@suse.cz>
10884         * tree-core.h: Use uint64_t instead of int.
10885         * tree.c (tree_node_counts): Likewise.
10886         (tree_node_sizes): Likewise.
10887         (dump_tree_statistics): Use PRIu64 in printf format.
10889 2018-01-12  Martin Liska  <mliska@suse.cz>
10891         * Makefile.in: As qsort_chk is implemented in vec.c, add
10892         vec.o to linkage of gencfn-macros.
10893         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10894         passing the info to record_node_allocation_statistics.
10895         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10896         and pass the info.
10897         * ggc-common.c (struct ggc_usage): Add operator== and use
10898         it in operator< and compare function.
10899         * mem-stats.h (struct mem_usage): Likewise.
10900         * vec.c (struct vec_usage): Remove operator< and compare
10901         function. Can be simply inherited.
10903 2018-01-12  Martin Jambor  <mjambor@suse.cz>
10905         PR target/81616
10906         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10907         * tree-ssa-math-opts.c: Include domwalk.h.
10908         (convert_mult_to_fma_1): New function.
10909         (fma_transformation_info): New type.
10910         (fma_deferring_state): Likewise.
10911         (cancel_fma_deferring): New function.
10912         (result_of_phi): Likewise.
10913         (last_fma_candidate_feeds_initial_phi): Likewise.
10914         (convert_mult_to_fma): Added deferring logic, split actual
10915         transformation to convert_mult_to_fma_1.
10916         (math_opts_dom_walker): New type.
10917         (math_opts_dom_walker::after_dom_children): New method, body moved
10918         here from pass_optimize_widening_mul::execute, added deferring logic
10919         bits.
10920         (pass_optimize_widening_mul::execute): Moved most of code to
10921         math_opts_dom_walker::after_dom_children.
10922         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10923         * config/i386/i386.c (ix86_option_override_internal): Added
10924         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10926 2018-01-12  Richard Biener  <rguenther@suse.de>
10928         PR debug/83157
10929         * dwarf2out.c (gen_variable_die): Do not reset old_die for
10930         inline instance vars.
10932 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
10934         PR target/81819
10935         * config/rx/rx.c (rx_is_restricted_memory_address):
10936         Handle SUBREG case.
10938 2018-01-12  Richard Biener  <rguenther@suse.de>
10940         PR tree-optimization/80846
10941         * target.def (split_reduction): New target hook.
10942         * targhooks.c (default_split_reduction): New function.
10943         * targhooks.h (default_split_reduction): Declare.
10944         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10945         target requests first reduce vectors by combining low and high
10946         parts.
10947         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10948         (get_vectype_for_scalar_type_and_size): Export.
10949         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10950         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10951         * doc/tm.texi: Regenerate.
10952         * config/i386/i386.c (ix86_split_reduction): Implement
10953         TARGET_VECTORIZE_SPLIT_REDUCTION.
10955 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10957         PR target/83368
10958         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10959         in PIC mode except for TARGET_VXWORKS_RTP.
10960         * config/sparc/sparc.c: Include cfgrtl.h.
10961         (TARGET_INIT_PIC_REG): Define.
10962         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10963         (sparc_pic_register_p): New predicate.
10964         (sparc_legitimate_address_p): Use it.
10965         (sparc_legitimize_pic_address): Likewise.
10966         (sparc_delegitimize_address): Likewise.
10967         (sparc_mode_dependent_address_p): Likewise.
10968         (gen_load_pcrel_sym): Remove 4th parameter.
10969         (load_got_register): Adjust call to above.  Remove obsolete stuff.
10970         (sparc_expand_prologue): Do not call load_got_register here.
10971         (sparc_flat_expand_prologue): Likewise.
10972         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10973         (sparc_use_pseudo_pic_reg): New function.
10974         (sparc_init_pic_reg): Likewise.
10975         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10976         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10978 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
10980         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10981         Add item for branch_cost.
10983 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
10985         PR rtl-optimization/83565
10986         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10987         not extend the result to a larger mode for rotate operations.
10988         (num_sign_bit_copies1): Likewise.
10990 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10992         PR target/40411
10993         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10994         -symbolic.
10995         Use values-Xc.o for -pedantic.
10996         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10998 2018-01-12  Martin Liska  <mliska@suse.cz>
11000         PR ipa/83054
11001         * ipa-devirt.c (final_warning_record::grow_type_warnings):
11002         New function.
11003         (possible_polymorphic_call_targets): Use it.
11004         (ipa_devirt): Likewise.
11006 2018-01-12  Martin Liska  <mliska@suse.cz>
11008         * profile-count.h (enum profile_quality): Use 0 as invalid
11009         enum value of profile_quality.
11011 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
11013         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
11014         -mext-string options.
11016 2018-01-12  Richard Biener  <rguenther@suse.de>
11018         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
11019         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
11020         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
11021         Likewise.
11022         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
11024 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
11026         * configure.ac (--with-long-double-format): Add support for the
11027         configuration option to change the default long double format on
11028         PowerPC systems.
11029         * config.gcc (powerpc*-linux*-*): Likewise.
11030         * configure: Regenerate.
11031         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
11032         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
11033         used without modification.
11035 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11037         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
11038         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
11039         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
11040         MISC_BUILTIN_SPEC_BARRIER.
11041         (rs6000_init_builtins): Likewise.
11042         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
11043         enum value.
11044         (speculation_barrier): New define_insn.
11045         * doc/extend.texi: Document __builtin_speculation_barrier.
11047 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
11049         PR target/83203
11050         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
11051         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
11052         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
11053         iterators.
11054         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
11055         integral modes instead of "ss" and "sd".
11056         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
11057         vectors with 32-bit and 64-bit elements.
11058         (vecdupssescalarmodesuffix): New mode attribute.
11059         (vec_dup<mode>): Use it.
11061 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
11063         PR target/83330
11064         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
11065         frame if argument is passed on stack.
11067 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
11069         PR target/82682
11070         * ree.c (combine_reaching_defs): Optimize also
11071         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
11072         reg2=any_extend(exp); reg1=reg2;, formatting fix.
11074 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
11076         PR middle-end/83189
11077         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
11079 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
11081         PR middle-end/83718
11082         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
11083         after they are computed.
11085 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
11087         PR tree-optimization/83695
11088         * gimple-loop-linterchange.cc
11089         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
11090         reset cached scev information after interchange.
11091         (pass_linterchange::execute): Remove call to scev_reset_htab.
11093 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11095         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
11096         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
11097         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
11098         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
11099         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
11100         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
11101         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
11102         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
11103         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
11104         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
11105         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
11106         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
11107         (V_lane_reg): Likewise.
11108         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
11109         New define_expand.
11110         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
11111         (vfmal_lane_low<mode>_intrinsic,
11112         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
11113         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
11114         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
11115         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
11116         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
11117         vfmsl_lane_high<mode>_intrinsic): New define_insns.
11119 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11121         * config/arm/arm-cpus.in (fp16fml): New feature.
11122         (ALL_SIMD): Add fp16fml.
11123         (armv8.2-a): Add fp16fml as an option.
11124         (armv8.3-a): Likewise.
11125         (armv8.4-a): Add fp16fml as part of fp16.
11126         * config/arm/arm.h (TARGET_FP16FML): Define.
11127         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
11128         when appropriate.
11129         * config/arm/arm-modes.def (V2HF): Define.
11130         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
11131         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
11132         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
11133         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
11134         vfmsl_low, vfmsl_high): New set of builtins.
11135         * config/arm/iterators.md (PLUSMINUS): New code iterator.
11136         (vfml_op): New code attribute.
11137         (VFMLHALVES): New int iterator.
11138         (VFML, VFMLSEL): New mode attributes.
11139         (V_reg): Define mapping for V2HF.
11140         (V_hi, V_lo): New mode attributes.
11141         (VF_constraint): Likewise.
11142         (vfml_half, vfml_half_selector): New int attributes.
11143         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
11144         define_expand.
11145         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
11146         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
11147         New define_insn.
11148         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
11149         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
11150         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
11151         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
11152         documentation.
11153         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
11154         Document new effective target and option set.
11156 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11158         * config/arm/arm-cpus.in (armv8_4): New feature.
11159         (ARMv8_4a): New fgroup.
11160         (armv8.4-a): New arch.
11161         * config/arm/arm-tables.opt: Regenerate.
11162         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
11163         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
11164         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
11165         Add matching rules for -march=armv8.4-a and extensions.
11166         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
11168 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
11170         PR target/81821
11171         * config/rx/rx.md (BW): New mode attribute.
11172         (sync_lock_test_and_setsi): Add mode suffix to insn output.
11174 2018-01-11  Richard Biener  <rguenther@suse.de>
11176         PR tree-optimization/83435
11177         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
11178         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
11179         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
11181 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11182             Alan Hayward  <alan.hayward@arm.com>
11183             David Sherwood  <david.sherwood@arm.com>
11185         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
11186         field.
11187         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
11188         (aarch64_print_address_internal): Use it to check for a zero offset.
11190 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11191             Alan Hayward  <alan.hayward@arm.com>
11192             David Sherwood  <david.sherwood@arm.com>
11194         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
11195         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
11196         Return a poly_int64 rather than a HOST_WIDE_INT.
11197         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
11198         rather than a HOST_WIDE_INT.
11199         * config/aarch64/aarch64.h (aarch64_frame): Protect with
11200         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
11201         hard_fp_offset, frame_size, initial_adjust, callee_offset and
11202         final_offset from HOST_WIDE_INT to poly_int64.
11203         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11204         to_constant when getting the number of units in an Advanced SIMD
11205         mode.
11206         (aarch64_builtin_vectorized_function): Check for a constant number
11207         of units.
11208         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11209         GET_MODE_SIZE.
11210         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11211         attribute instead of GET_MODE_NUNITS.
11212         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11213         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11214         GET_MODE_SIZE for fixed-size registers.
11215         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11216         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11217         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11218         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11219         (aarch64_print_operand, aarch64_print_address_internal)
11220         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11221         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11222         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11223         Handle polynomial GET_MODE_SIZE.
11224         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
11225         wider than SImode without modification.
11226         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11227         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11228         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11229         passing and returning SVE modes.
11230         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11231         rather than GEN_INT.
11232         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11233         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11234         (aarch64_allocate_and_probe_stack_space): Likewise.
11235         (aarch64_layout_frame): Cope with polynomial offsets.
11236         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11237         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
11238         polynomial offsets.
11239         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11240         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11241         poly_int64 rather than a HOST_WIDE_INT.
11242         (aarch64_get_separate_components, aarch64_process_components)
11243         (aarch64_expand_prologue, aarch64_expand_epilogue)
11244         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11245         (aarch64_anchor_offset): New function, split out from...
11246         (aarch64_legitimize_address): ...here.
11247         (aarch64_builtin_vectorization_cost): Handle polynomial
11248         TYPE_VECTOR_SUBPARTS.
11249         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11250         GET_MODE_NUNITS.
11251         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11252         number of elements from the PARALLEL rather than the mode.
11253         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11254         rather than GET_MODE_BITSIZE.
11255         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11256         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11257         (aarch64_expand_vec_perm_const_1): Handle polynomial
11258         d->perm.length () and d->perm elements.
11259         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
11260         Apply to_constant to d->perm elements.
11261         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11262         polynomial CONST_VECTOR_NUNITS.
11263         (aarch64_move_pointer): Take amount as a poly_int64 rather
11264         than an int.
11265         (aarch64_progress_pointer): Avoid temporary variable.
11266         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11267         the mode attribute instead of GET_MODE.
11269 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11270             Alan Hayward  <alan.hayward@arm.com>
11271             David Sherwood  <david.sherwood@arm.com>
11273         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11274         x exists before using it.
11275         (aarch64_add_constant_internal): Rename to...
11276         (aarch64_add_offset_1): ...this.  Replace regnum with separate
11277         src and dest rtxes.  Handle the case in which they're different,
11278         including when the offset is zero.  Replace scratchreg with an rtx.
11279         Use 2 additions if there is no spare register into which we can
11280         move a 16-bit constant.
11281         (aarch64_add_constant): Delete.
11282         (aarch64_add_offset): Replace reg with separate src and dest
11283         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
11284         Use aarch64_add_offset_1.
11285         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11286         an rtx rather than an int.  Take the delta as a poly_int64
11287         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
11288         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11289         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11290         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11291         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11292         and aarch64_add_sp.
11293         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11294         aarch64_add_constant.
11296 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11298         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11299         Use scalar_float_mode.
11301 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11303         * config/aarch64/aarch64-simd.md
11304         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11305         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11306         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11307         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11308         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11309         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11310         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11311         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11312         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11313         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11315 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11317         PR target/83514
11318         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11319         targ_options->x_arm_arch_string is non NULL.
11321 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
11323         * config/aarch64/aarch64.h
11324         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
11326 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
11328         PR target/82096
11329         * expmed.c (emit_store_flag_force): Swap if const op0
11330         and change VOIDmode to mode of op0.
11332 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
11334         PR rtl-optimization/83761
11335         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11336         than bytes to mode_for_size.
11338 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11340         PR middle-end/83189
11341         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11342         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11343         profile.
11345 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11347         PR middle-end/83575
11348         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11349         when in layout mode.
11350         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11351         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11352         partition fixup.
11354 2018-01-10  Michael Collison  <michael.collison@arm.com>
11356         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11357         * config/aarch64/aarch64-option-extension.def: Add
11358         AARCH64_OPT_EXTENSION of 'fp16fml'.
11359         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11360         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11361         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11362         * config/aarch64/constraints.md (Ui7): New constraint.
11363         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11364         (VFMLA_SEL_W): Ditto.
11365         (f16quad): Ditto.
11366         (f16mac1): Ditto.
11367         (VFMLA16_LOW): New int iterator.
11368         (VFMLA16_HIGH): Ditto.
11369         (UNSPEC_FMLAL): New unspec.
11370         (UNSPEC_FMLSL): Ditto.
11371         (UNSPEC_FMLAL2): Ditto.
11372         (UNSPEC_FMLSL2): Ditto.
11373         (f16mac): New code attribute.
11374         * config/aarch64/aarch64-simd-builtins.def
11375         (aarch64_fmlal_lowv2sf): Ditto.
11376         (aarch64_fmlsl_lowv2sf): Ditto.
11377         (aarch64_fmlalq_lowv4sf): Ditto.
11378         (aarch64_fmlslq_lowv4sf): Ditto.
11379         (aarch64_fmlal_highv2sf): Ditto.
11380         (aarch64_fmlsl_highv2sf): Ditto.
11381         (aarch64_fmlalq_highv4sf): Ditto.
11382         (aarch64_fmlslq_highv4sf): Ditto.
11383         (aarch64_fmlal_lane_lowv2sf): Ditto.
11384         (aarch64_fmlsl_lane_lowv2sf): Ditto.
11385         (aarch64_fmlal_laneq_lowv2sf): Ditto.
11386         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11387         (aarch64_fmlalq_lane_lowv4sf): Ditto.
11388         (aarch64_fmlsl_lane_lowv4sf): Ditto.
11389         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11390         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11391         (aarch64_fmlal_lane_highv2sf): Ditto.
11392         (aarch64_fmlsl_lane_highv2sf): Ditto.
11393         (aarch64_fmlal_laneq_highv2sf): Ditto.
11394         (aarch64_fmlsl_laneq_highv2sf): Ditto.
11395         (aarch64_fmlalq_lane_highv4sf): Ditto.
11396         (aarch64_fmlsl_lane_highv4sf): Ditto.
11397         (aarch64_fmlalq_laneq_highv4sf): Ditto.
11398         (aarch64_fmlsl_laneq_highv4sf): Ditto.
11399         * config/aarch64/aarch64-simd.md:
11400         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11401         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11402         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11403         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11404         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11405         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11406         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11407         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11408         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11409         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11410         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11411         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11412         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11413         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11414         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11415         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11416         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11417         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11418         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11419         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11420         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11421         (vfmlsl_low_u32): Ditto.
11422         (vfmlalq_low_u32): Ditto.
11423         (vfmlslq_low_u32): Ditto.
11424         (vfmlal_high_u32): Ditto.
11425         (vfmlsl_high_u32): Ditto.
11426         (vfmlalq_high_u32): Ditto.
11427         (vfmlslq_high_u32): Ditto.
11428         (vfmlal_lane_low_u32): Ditto.
11429         (vfmlsl_lane_low_u32): Ditto.
11430         (vfmlal_laneq_low_u32): Ditto.
11431         (vfmlsl_laneq_low_u32): Ditto.
11432         (vfmlalq_lane_low_u32): Ditto.
11433         (vfmlslq_lane_low_u32): Ditto.
11434         (vfmlalq_laneq_low_u32): Ditto.
11435         (vfmlslq_laneq_low_u32): Ditto.
11436         (vfmlal_lane_high_u32): Ditto.
11437         (vfmlsl_lane_high_u32): Ditto.
11438         (vfmlal_laneq_high_u32): Ditto.
11439         (vfmlsl_laneq_high_u32): Ditto.
11440         (vfmlalq_lane_high_u32): Ditto.
11441         (vfmlslq_lane_high_u32): Ditto.
11442         (vfmlalq_laneq_high_u32): Ditto.
11443         (vfmlslq_laneq_high_u32): Ditto.
11444         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11445         (AARCH64_FL_FOR_ARCH8_4): New.
11446         (AARCH64_ISA_F16FML): New ISA flag.
11447         (TARGET_F16FML): New feature flag for fp16fml.
11448         (doc/invoke.texi): Document new fp16fml option.
11450 2018-01-10  Michael Collison  <michael.collison@arm.com>
11452         * config/aarch64/aarch64-builtins.c:
11453         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11454         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11455         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11456         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11457         (AARCH64_ISA_SHA3): New ISA flag.
11458         (TARGET_SHA3): New feature flag for sha3.
11459         * config/aarch64/iterators.md (sha512_op): New int attribute.
11460         (CRYPTO_SHA512): New int iterator.
11461         (UNSPEC_SHA512H): New unspec.
11462         (UNSPEC_SHA512H2): Ditto.
11463         (UNSPEC_SHA512SU0): Ditto.
11464         (UNSPEC_SHA512SU1): Ditto.
11465         * config/aarch64/aarch64-simd-builtins.def
11466         (aarch64_crypto_sha512hqv2di): New builtin.
11467         (aarch64_crypto_sha512h2qv2di): Ditto.
11468         (aarch64_crypto_sha512su0qv2di): Ditto.
11469         (aarch64_crypto_sha512su1qv2di): Ditto.
11470         (aarch64_eor3qv8hi): Ditto.
11471         (aarch64_rax1qv2di): Ditto.
11472         (aarch64_xarqv2di): Ditto.
11473         (aarch64_bcaxqv8hi): Ditto.
11474         * config/aarch64/aarch64-simd.md:
11475         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11476         (aarch64_crypto_sha512su0qv2di): Ditto.
11477         (aarch64_crypto_sha512su1qv2di): Ditto.
11478         (aarch64_eor3qv8hi): Ditto.
11479         (aarch64_rax1qv2di): Ditto.
11480         (aarch64_xarqv2di): Ditto.
11481         (aarch64_bcaxqv8hi): Ditto.
11482         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11483         (vsha512h2q_u64): Ditto.
11484         (vsha512su0q_u64): Ditto.
11485         (vsha512su1q_u64): Ditto.
11486         (veor3q_u16): Ditto.
11487         (vrax1q_u64): Ditto.
11488         (vxarq_u64): Ditto.
11489         (vbcaxq_u16): Ditto.
11490         * config/arm/types.md (crypto_sha512): New type attribute.
11491         (crypto_sha3): Ditto.
11492         (doc/invoke.texi): Document new sha3 option.
11494 2018-01-10  Michael Collison  <michael.collison@arm.com>
11496         * config/aarch64/aarch64-builtins.c:
11497         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11498         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11499         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11500         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11501         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11502         (AARCH64_ISA_SM4): New ISA flag.
11503         (TARGET_SM4): New feature flag for sm4.
11504         * config/aarch64/aarch64-simd-builtins.def
11505         (aarch64_sm3ss1qv4si): Ditto.
11506         (aarch64_sm3tt1aq4si): Ditto.
11507         (aarch64_sm3tt1bq4si): Ditto.
11508         (aarch64_sm3tt2aq4si): Ditto.
11509         (aarch64_sm3tt2bq4si): Ditto.
11510         (aarch64_sm3partw1qv4si): Ditto.
11511         (aarch64_sm3partw2qv4si): Ditto.
11512         (aarch64_sm4eqv4si): Ditto.
11513         (aarch64_sm4ekeyqv4si): Ditto.
11514         * config/aarch64/aarch64-simd.md:
11515         (aarch64_sm3ss1qv4si): Ditto.
11516         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11517         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11518         (aarch64_sm4eqv4si): Ditto.
11519         (aarch64_sm4ekeyqv4si): Ditto.
11520         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11521         (sm3part_op): Ditto.
11522         (CRYPTO_SM3TT): Ditto.
11523         (CRYPTO_SM3PART): Ditto.
11524         (UNSPEC_SM3SS1): New unspec.
11525         (UNSPEC_SM3TT1A): Ditto.
11526         (UNSPEC_SM3TT1B): Ditto.
11527         (UNSPEC_SM3TT2A): Ditto.
11528         (UNSPEC_SM3TT2B): Ditto.
11529         (UNSPEC_SM3PARTW1): Ditto.
11530         (UNSPEC_SM3PARTW2): Ditto.
11531         (UNSPEC_SM4E): Ditto.
11532         (UNSPEC_SM4EKEY): Ditto.
11533         * config/aarch64/constraints.md (Ui2): New constraint.
11534         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11535         * config/arm/types.md (crypto_sm3): New type attribute.
11536         (crypto_sm4): Ditto.
11537         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11538         (vsm3tt1aq_u32): Ditto.
11539         (vsm3tt1bq_u32): Ditto.
11540         (vsm3tt2aq_u32): Ditto.
11541         (vsm3tt2bq_u32): Ditto.
11542         (vsm3partw1q_u32): Ditto.
11543         (vsm3partw2q_u32): Ditto.
11544         (vsm4eq_u32): Ditto.
11545         (vsm4ekeyq_u32): Ditto.
11546         (doc/invoke.texi): Document new sm4 option.
11548 2018-01-10  Michael Collison  <michael.collison@arm.com>
11550         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11551         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11552         (AARCH64_FL_FOR_ARCH8_4): New.
11553         (AARCH64_FL_V8_4): New flag.
11554         (doc/invoke.texi): Document new armv8.4-a option.
11556 2018-01-10  Michael Collison  <michael.collison@arm.com>
11558         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11559         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11560         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11561         * config/aarch64/aarch64-option-extension.def: Add
11562         AARCH64_OPT_EXTENSION of 'sha2'.
11563         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11564         (crypto): Disable sha2 and aes if crypto disabled.
11565         (crypto): Enable aes and sha2 if enabled.
11566         (simd): Disable sha2 and aes if simd disabled.
11567         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11568         New flags.
11569         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11570         (TARGET_SHA2): New feature flag for sha2.
11571         (TARGET_AES): New feature flag for aes.
11572         * config/aarch64/aarch64-simd.md:
11573         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11574         conditional on TARGET_AES.
11575         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11576         (aarch64_crypto_sha1hsi): Make pattern conditional
11577         on TARGET_SHA2.
11578         (aarch64_crypto_sha1hv4si): Ditto.
11579         (aarch64_be_crypto_sha1hv4si): Ditto.
11580         (aarch64_crypto_sha1su1v4si): Ditto.
11581         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11582         (aarch64_crypto_sha1su0v4si): Ditto.
11583         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11584         (aarch64_crypto_sha256su0v4si): Ditto.
11585         (aarch64_crypto_sha256su1v4si): Ditto.
11586         (doc/invoke.texi): Document new aes and sha2 options.
11588 2018-01-10  Martin Sebor  <msebor@redhat.com>
11590         PR tree-optimization/83781
11591         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11592         as string arrays.
11594 2018-01-11  Martin Sebor  <msebor@gmail.com>
11595             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
11597         PR tree-optimization/83501
11598         PR tree-optimization/81703
11600         * tree-ssa-strlen.c (get_string_cst): Rename...
11601         (get_string_len): ...to this.  Handle global constants.
11602         (handle_char_store): Adjust.
11604 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
11605             Jim Wilson  <jimw@sifive.com>
11607         * config/riscv/riscv-protos.h (riscv_output_return): New.
11608         * config/riscv/riscv.c (struct machine_function): New naked_p field.
11609         (riscv_attribute_table, riscv_output_return),
11610         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11611         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11612         (riscv_compute_frame_info): Only compute frame->mask if not a naked
11613         function.
11614         (riscv_expand_prologue): Add early return for naked function.
11615         (riscv_expand_epilogue): Likewise.
11616         (riscv_function_ok_for_sibcall): Return false for naked function.
11617         (riscv_set_current_function): New.
11618         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11619         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11620         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11621         * doc/extend.texi (RISC-V Function Attributes): New.
11623 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
11625         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11626         check for 128-bit long double before checking TCmode.
11627         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11628         128-bit long doubles before checking TFmode or TCmode.
11629         (FLOAT128_IBM_P): Likewise.
11631 2018-01-10  Martin Sebor  <msebor@redhat.com>
11633         PR tree-optimization/83671
11634         * builtins.c (c_strlen): Unconditionally return zero for the empty
11635         string.
11636         Use -Warray-bounds for warnings.
11637         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11638         for non-constant array indices with COMPONENT_REF, arrays of
11639         arrays, and pointers to arrays.
11640         (gimple_fold_builtin_strlen): Determine and set length range for
11641         non-constant character arrays.
11643 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
11645         PR middle-end/81897
11646         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11647         empty blocks.
11649 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
11651         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11653 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
11655         PR target/83399
11656         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11657         VECTOR_MEM_ALTIVEC_OR_VSX_P.
11658         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11659         indexed_or_indirect_operand predicate.
11660         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11661         (*vsx_le_perm_load_v8hi): Likewise.
11662         (*vsx_le_perm_load_v16qi): Likewise.
11663         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11664         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11665         (*vsx_le_perm_store_v8hi): Likewise.
11666         (*vsx_le_perm_store_v16qi): Likewise.
11667         (eight unnamed splitters): Likewise.
11669 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
11671         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11672         * config/rs6000/emmintrin.h: Likewise.
11673         * config/rs6000/mmintrin.h: Likewise.
11674         * config/rs6000/xmmintrin.h: Likewise.
11676 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
11678         PR c++/43486
11679         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11680         "public_flag".
11681         * tree.c (tree_nop_conversion): Return true for location wrapper
11682         nodes.
11683         (maybe_wrap_with_location): New function.
11684         (selftest::check_strip_nops): New function.
11685         (selftest::test_location_wrappers): New function.
11686         (selftest::tree_c_tests): Call it.
11687         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11688         (maybe_wrap_with_location): New decl.
11689         (EXPR_LOCATION_WRAPPER_P): New macro.
11690         (location_wrapper_p): New inline function.
11691         (tree_strip_any_location_wrapper): New inline function.
11693 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
11695         PR target/83735
11696         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11697         stack_realign_offset for the largest alignment of stack slot
11698         actually used.
11699         (ix86_find_max_used_stack_alignment): New function.
11700         (ix86_finalize_stack_frame_flags): Use it.  Set
11701         max_used_stack_alignment if we don't realign stack.
11702         * config/i386/i386.h (machine_function): Add
11703         max_used_stack_alignment.
11705 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
11707         * config/arm/arm.opt (-mbranch-cost): New option.
11708         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11709         account.
11711 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
11713         PR target/83629
11714         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11715         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11717 2018-01-10  Richard Biener  <rguenther@suse.de>
11719         PR debug/83765
11720         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11721         early out so it also covers the case where we have a non-NULL
11722         origin.
11724 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
11726         PR tree-optimization/83753
11727         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11728         for non-strided grouped accesses if the number of elements is 1.
11730 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
11732         PR target/81616
11733         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11734         * i386.h (TARGET_USE_GATHER): Define.
11735         * x86-tune.def (X86_TUNE_USE_GATHER): New.
11737 2018-01-10  Martin Liska  <mliska@suse.cz>
11739         PR bootstrap/82831
11740         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11741         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11742         partitioning.
11743         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11744         CLEANUP_NO_PARTITIONING is not set.
11746 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
11748         * doc/rtl.texi: Remove documentation of (const ...) wrappers
11749         for vectors, as a partial revert of r254296.
11750         * rtl.h (const_vec_p): Delete.
11751         (const_vec_duplicate_p): Don't test for vector CONSTs.
11752         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11753         * expmed.c (make_tree): Likewise.
11755         Revert:
11756         * common.md (E, F): Use CONSTANT_P instead of checking for
11757         CONST_VECTOR.
11758         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11759         checking for CONST_VECTOR.
11761 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11763         PR middle-end/83575
11764         * predict.c (force_edge_cold): Handle in more sane way edges
11765         with no prediction.
11767 2018-01-09  Carl Love  <cel@us.ibm.com>
11769         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11770         V4SI, V4SF types.
11771         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11772         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11773         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11774         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
11775         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11776         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
11777         * config/rs6000/rs6000-protos.h: Add extern defition for
11778         rs6000_generate_float2_double_code.
11779         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11780         function.
11781         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11782         (float2_v2df): Add define_expand.
11784 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
11786         PR target/83628
11787         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11788         op_mode in the force_to_mode call.
11790 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11792         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11793         instead of checking each element individually.
11794         (aarch64_evpc_uzp): Likewise.
11795         (aarch64_evpc_zip): Likewise.
11796         (aarch64_evpc_ext): Likewise.
11797         (aarch64_evpc_rev): Likewise.
11798         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11799         instead of checking each element individually.  Return true without
11800         generating rtl if
11801         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11802         whether all selected elements come from the same input, instead of
11803         checking each element individually.  Remove calls to gen_rtx_REG,
11804         start_sequence and end_sequence and instead assert that no rtl is
11805         generated.
11807 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11809         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11810         order of HIGH and CONST checks.
11812 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
11814         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11815         if the destination isn't an SSA_NAME.
11817 2018-01-09  Richard Biener  <rguenther@suse.de>
11819         PR tree-optimization/83668
11820         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11821         move prologue...
11822         (canonicalize_loop_form): ... here, renamed from ...
11823         (canonicalize_loop_closed_ssa_form): ... this and amended to
11824         swap successor edges for loop exit blocks to make us use
11825         the RPO order we need for initial schedule generation.
11827 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
11829         PR tree-optimization/64811
11830         * match.pd: When optimizing comparisons with Inf, avoid
11831         introducing or losing exceptions from comparisons with NaN.
11833 2018-01-09  Martin Liska  <mliska@suse.cz>
11835         PR sanitizer/82517
11836         * asan.c (shadow_mem_size): Add gcc_assert.
11838 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
11840         Don't save registers in main().
11842         PR target/83738
11843         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11844         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11845         * config/avr/avr.c (avr_set_current_function): Don't error if
11846         naked, OS_task or OS_main are specified at the same time.
11847         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11848         OS_main.
11849         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11850         attribute.
11851         * common/config/avr/avr-common.c (avr_option_optimization_table):
11852         Switch on -mmain-is-OS_task for optimizing compilations.
11854 2018-01-09  Richard Biener  <rguenther@suse.de>
11856         PR tree-optimization/83572
11857         * graphite.c: Include cfganal.h.
11858         (graphite_transform_loops): Connect infinite loops to exit
11859         and remove fake edges at the end.
11861 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11863         * ipa-inline.c (edge_badness): Revert accidental checkin.
11865 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
11867         PR ipa/80763
11868         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11869         symbols; not inline clones.
11871 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
11873         PR target/83507
11874         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11875         hard registers.  Formatting fixes.
11877         PR preprocessor/83722
11878         * gcc.c (try_generate_repro): Pass
11879         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11880         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11881         do_report_bug.
11883 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
11884             Kito Cheng  <kito.cheng@gmail.com>
11886         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11887         (riscv_leaf_function_p): Delete.
11888         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11890 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11892         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11893         function.
11894         (do_ifelse): New function.
11895         (do_isel): New function.
11896         (do_sub3): New function.
11897         (do_add3): New function.
11898         (do_load_mask_compare): New function.
11899         (do_overlap_load_compare): New function.
11900         (expand_compare_loop): New function.
11901         (expand_block_compare): Call expand_compare_loop() when appropriate.
11902         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11903         option description.
11904         (-mblock-compare-inline-loop-limit): New option.
11906 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11908         PR target/83677
11909         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11910         Reverse order of second and third operands in first alternative.
11911         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11912         of first and second elements in UNSPEC_VPERMR vector.
11913         (altivec_expand_vec_perm_le): Likewise.
11915 2018-01-08  Jeff Law  <law@redhat.com>
11917         PR rtl-optimizatin/81308
11918         * tree-switch-conversion.c (cfg_altered): New file scoped static.
11919         (process_switch): If group_case_labels makes a change, then set
11920         cfg_altered.
11921         (pass_convert_switch::execute): If a switch is converted, then
11922         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
11924         PR rtl-optimization/81308
11925         * recog.c (split_all_insns): Conditionally cleanup the CFG after
11926         splitting insns.
11928 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
11930         PR target/83663 - Revert r255946
11931         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11932         generation for cases where splatting a value is not useful.
11933         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11934         across a vec_duplicate and a paradoxical subreg forming a vector
11935         mode to a vec_concat.
11937 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11939         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11940         -march=armv8.3-a variants.
11941         * config/arm/t-multilib: Likewise.
11942         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
11944 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
11946         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11947         to generate rtl.
11948         (cceq_ior_compare_complement): Give it a name so I can use it, and
11949         change boolean_or_operator predicate to boolean_operator so it can
11950         be used to generate a crand.
11951         (eqne): New code iterator.
11952         (bd/bd_neg): New code_attrs.
11953         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11954         a single define_insn.
11955         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11956         decrement (bdnzt/bdnzf/bdzt/bdzf).
11957         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11958         with the new names of the branch decrement patterns, and added the
11959         names of the branch decrement conditional patterns.
11961 2018-01-08  Richard Biener  <rguenther@suse.de>
11963         PR tree-optimization/83563
11964         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11965         cache.
11967 2018-01-08  Richard Biener  <rguenther@suse.de>
11969         PR middle-end/83713
11970         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11972 2018-01-08  Richard Biener  <rguenther@suse.de>
11974         PR tree-optimization/83685
11975         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11976         references to abnormals.
11978 2018-01-08  Richard Biener  <rguenther@suse.de>
11980         PR lto/83719
11981         * dwarf2out.c (output_indirect_strings): Handle empty
11982         skeleton_debug_str_hash.
11983         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11985 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11987         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11988         (emit_store_direct): Likewise.
11989         (arc_trampoline_adjust_address): Likewise.
11990         (arc_asm_trampoline_template): New function.
11991         (arc_initialize_trampoline): Use asm_trampoline_template.
11992         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11993         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11994         * config/arc/arc.md (flush_icache): Delete pattern.
11996 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
11998         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11999         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
12000         munaligned-access.
12002 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12004         PR target/83681
12005         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
12006         by not USED_FOR_TARGET.
12007         (make_pass_resolve_sw_modes): Likewise.
12009 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12011         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
12012         USED_FOR_TARGET.
12014 2018-01-08  Richard Biener  <rguenther@suse.de>
12016         PR middle-end/83580
12017         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
12019 2018-01-08  Richard Biener  <rguenther@suse.de>
12021         PR middle-end/83517
12022         * match.pd ((t * 2) / 2) -> t): Add missing :c.
12024 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
12026         PR middle-end/81897
12027         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
12028         basic blocks with a small number of successors.
12029         (convert_control_dep_chain_into_preds): Improve handling of
12030         forwarder blocks.
12031         (dump_predicates): Split apart into...
12032         (dump_pred_chain): ...here...
12033         (dump_pred_info): ...and here.
12034         (can_one_predicate_be_invalidated_p): Add debugging printfs.
12035         (can_chain_union_be_invalidated_p): Improve check for invalidation
12036         of paths.
12037         (uninit_uses_cannot_happen): Avoid unnecessary if
12038         convert_control_dep_chain_into_preds yielded nothing.
12040 2018-01-06  Martin Sebor  <msebor@redhat.com>
12042         PR tree-optimization/83640
12043         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
12044         subtracting negative offset from size.
12045         (builtin_access::overlap): Adjust offset bounds of the access to fall
12046         within the size of the object if possible.
12048 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
12050         PR rtl-optimization/83699
12051         * expmed.c (extract_bit_field_1): Restrict the vector usage of
12052         extract_bit_field_as_subreg to cases in which the extracted
12053         value is also a vector.
12055         * lra-constraints.c (process_alt_operands): Test for the equivalence
12056         substitutions when detecting a possible reload cycle.
12058 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
12060         PR debug/83480
12061         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
12062         by default if flag_selective_schedling{,2}.  Formatting fixes.
12064         PR rtl-optimization/83682
12065         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
12066         if it has non-VECTOR_MODE element mode.
12067         (vec_duplicate_p): Likewise.
12069         PR middle-end/83694
12070         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
12071         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
12073 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
12075         PR target/83604
12076         * config/i386/i386-builtin.def
12077         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
12078         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
12079         Require also OPTION_MASK_ISA_AVX512F in addition to
12080         OPTION_MASK_ISA_GFNI.
12081         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
12082         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
12083         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
12084         to OPTION_MASK_ISA_GFNI.
12085         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
12086         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
12087         OPTION_MASK_ISA_AVX512BW.
12088         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
12089         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
12090         addition to OPTION_MASK_ISA_GFNI.
12091         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
12092         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
12093         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
12094         to OPTION_MASK_ISA_GFNI.
12095         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
12096         a requirement for all ISAs rather than any of them with a few
12097         exceptions.
12098         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
12099         processing.
12100         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
12101         bitmasks to be enabled with 3 exceptions, instead of requiring any
12102         enabled ISA with lots of exceptions.
12103         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
12104         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
12105         Change avx512bw in isa attribute to avx512f.
12106         * config/i386/sgxintrin.h: Add license boilerplate.
12107         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
12108         to __AVX512F__ and __AVX512VL to __AVX512VL__.
12109         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
12110         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
12111         defined.
12112         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
12113         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
12114         temporarily sse2 rather than sse if not enabled already.
12116         PR target/83604
12117         * config/i386/sse.md (VI248_VLBW): Rename to ...
12118         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
12119         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
12120         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
12121         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
12122         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
12123         mode iterator instead of VI248_VLBW.
12125 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
12127         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
12128         (record_modified): Skip clobbers; add debug output.
12129         (param_change_prob): Use sreal frequencies.
12131 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
12133         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
12134         punt for user-aligned variables.
12136 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
12138         * tree-chrec.c (chrec_contains_symbols): Return true for
12139         POLY_INT_CST.
12141 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
12143         PR target/82439
12144         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
12145         of (x|y) == x for BICS pattern.
12147 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
12149         PR tree-optimization/83605
12150         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
12151         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
12152         can throw.
12154 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
12156         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
12157         * config/epiphany/rtems.h: New file.
12159 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12160             Uros Bizjak  <ubizjak@gmail.com>
12162         PR target/83554
12163         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
12164         QIreg_operand instead of register_operand predicate.
12165         * config/i386/i386.c (ix86_rop_should_change_byte_p,
12166         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
12167         comments instead of -fmitigate[-_]rop.
12169 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12171         PR bootstrap/81926
12172         * cgraphunit.c (symbol_table::compile): Switch to text_section
12173         before calling assembly_start debug hook.
12174         * run-rtl-passes.c (run_rtl_passes): Likewise.
12175         Include output.h.
12177 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12179         * tree-vrp.c (extract_range_from_binary_expr_1): Check
12180         range_int_cst_p rather than !symbolic_range_p before calling
12181         extract_range_from_multiplicative_op_1.
12183 2018-01-04  Jeff Law  <law@redhat.com>
12185         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
12186         redundant test in assertion.
12188 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12190         * doc/rtl.texi: Document machine_mode wrapper classes.
12192 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12194         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
12195         using tree_to_uhwi.
12197 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12199         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
12200         the VEC_PERM_EXPR fold to fail.
12202 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12204         PR debug/83585
12205         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12206         to switched_sections.
12208 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12210         PR target/83680
12211         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12212         test for d.testing.
12214 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
12216         PR target/83387
12217         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12218         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12220 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12222         PR debug/83666
12223         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12224         is BLKmode and bitpos not zero or mode change is needed.
12226 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
12228         PR target/83675
12229         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12230         TARGET_VIS2.
12232 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
12234         PR target/83628
12235         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12236         instead of MULT rtx.  Update all corresponding splitters.
12237         (*saddl_se): Ditto.
12238         (*ssub<modesuffix>): Ditto.
12239         (*ssubl_se): Ditto.
12240         (*cmp_sadd_di): Update split patterns.
12241         (*cmp_sadd_si): Ditto.
12242         (*cmp_sadd_sidi): Ditto.
12243         (*cmp_ssub_di): Ditto.
12244         (*cmp_ssub_si): Ditto.
12245         (*cmp_ssub_sidi): Ditto.
12246         * config/alpha/predicates.md (const23_operand): New predicate.
12247         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12248         Look for ASHIFT, not MULT inner operand.
12249         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12251 2018-01-04  Martin Liska  <mliska@suse.cz>
12253         PR gcov-profile/83669
12254         * gcov.c (output_intermediate_file): Add version to intermediate
12255         gcov file.
12256         * doc/gcov.texi: Document new field 'version' in intermediate
12257         file format. Fix location of '-k' option of gcov command.
12259 2018-01-04  Martin Liska  <mliska@suse.cz>
12261         PR ipa/82352
12262         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12264 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
12266         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12268 2018-01-03  Martin Sebor  <msebor@redhat.com>
12270         PR tree-optimization/83655
12271         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12272         checking calls with invalid arguments.
12274 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12276         * tree-vect-stmts.c (vect_get_store_rhs): New function.
12277         (vectorizable_mask_load_store): Delete.
12278         (vectorizable_call): Return false for masked loads and stores.
12279         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
12280         instead of gimple_assign_rhs1.
12281         (vectorizable_load): Handle IFN_MASK_LOAD.
12282         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12284 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12286         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12287         split out from..,
12288         (vectorizable_mask_load_store): ...here.
12289         (vectorizable_load): ...and here.
12291 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12293         * tree-vect-stmts.c (vect_build_all_ones_mask)
12294         (vect_build_zero_merge_argument): New functions, split out from...
12295         (vectorizable_load): ...here.
12297 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12299         * tree-vect-stmts.c (vect_check_store_rhs): New function,
12300         split out from...
12301         (vectorizable_mask_load_store): ...here.
12302         (vectorizable_store): ...and here.
12304 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12306         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12307         split out from...
12308         (vectorizable_mask_load_store): ...here.
12310 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12312         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12313         (vect_model_store_cost): Take a vec_load_store_type instead of a
12314         vect_def_type.
12315         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12316         (vect_model_store_cost): Take a vec_load_store_type instead of a
12317         vect_def_type.
12318         (vectorizable_mask_load_store): Update accordingly.
12319         (vectorizable_store): Likewise.
12320         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12322 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12324         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12325         IFN_MASK_LOAD calls here rather than...
12326         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12328 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12329             Alan Hayward  <alan.hayward@arm.com>
12330             David Sherwood  <david.sherwood@arm.com>
12332         * expmed.c (extract_bit_field_1): For vector extracts,
12333         fall back to extract_bit_field_as_subreg if vec_extract
12334         isn't available.
12336 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12337             Alan Hayward  <alan.hayward@arm.com>
12338             David Sherwood  <david.sherwood@arm.com>
12340         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12341         they are variable or constant sized.
12342         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12343         slots for constant-sized data.
12345 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12346             Alan Hayward  <alan.hayward@arm.com>
12347             David Sherwood  <david.sherwood@arm.com>
12349         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12350         handling COND_EXPRs with boolean comparisons, try to find a better
12351         basis for the mask type than the boolean itself.
12353 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12355         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12356         is calculated and how it can be overridden.
12357         * genmodes.c (max_bitsize_mode_any_mode): New variable.
12358         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12359         if defined.
12360         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12361         if nonzero.
12363 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12364             Alan Hayward  <alan.hayward@arm.com>
12365             David Sherwood  <david.sherwood@arm.com>
12367         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12368         Remove the mode argument.
12369         (aarch64_simd_valid_immediate): Remove the mode and inverse
12370         arguments.
12371         * config/aarch64/iterators.md (bitsize): New iterator.
12372         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12373         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12374         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12375         aarch64_simd_valid_immediate.
12376         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12377         (aarch64_reg_or_bic_imm): Likewise.
12378         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12379         with an insn_type enum and msl with a modifier_type enum.
12380         Replace element_width with a scalar_mode.  Change the shift
12381         to unsigned int.  Add constructors for scalar_float_mode and
12382         scalar_int_mode elements.
12383         (aarch64_vect_float_const_representable_p): Delete.
12384         (aarch64_can_const_movi_rtx_p)
12385         (aarch64_simd_scalar_immediate_valid_for_move)
12386         (aarch64_simd_make_constant): Update call to
12387         aarch64_simd_valid_immediate.
12388         (aarch64_advsimd_valid_immediate_hs): New function.
12389         (aarch64_advsimd_valid_immediate): Likewise.
12390         (aarch64_simd_valid_immediate): Remove mode and inverse
12391         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
12392         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12393         and aarch64_float_const_representable_p on the result.
12394         (aarch64_output_simd_mov_immediate): Remove mode argument.
12395         Update call to aarch64_simd_valid_immediate and use of
12396         simd_immediate_info.
12397         (aarch64_output_scalar_simd_mov_immediate): Update call
12398         accordingly.
12400 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12401             Alan Hayward  <alan.hayward@arm.com>
12402             David Sherwood  <david.sherwood@arm.com>
12404         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12405         (mode_nunits): Likewise CONST_MODE_NUNITS.
12406         * machmode.def (ADJUST_NUNITS): Document.
12407         * genmodes.c (mode_data::need_nunits_adj): New field.
12408         (blank_mode): Update accordingly.
12409         (adj_nunits): New variable.
12410         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12411         parameter.
12412         (emit_mode_size_inline): Set need_bytesize_adj for all modes
12413         listed in adj_nunits.
12414         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12415         listed in adj_nunits.  Don't emit case statements for such modes.
12416         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12417         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
12418         nothing if adj_nunits is nonnull.
12419         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12420         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12421         (emit_mode_fbit): Update use of print_maybe_const_decl.
12422         (emit_move_size): Likewise.  Treat the array as non-const
12423         if adj_nunits.
12424         (emit_mode_adjustments): Handle adj_nunits.
12426 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12428         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12429         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12430         (VECTOR_MODES): Use it.
12431         (make_vector_modes): Take the prefix as an argument.
12433 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12434             Alan Hayward  <alan.hayward@arm.com>
12435             David Sherwood  <david.sherwood@arm.com>
12437         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12438         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12439         for MODE_VECTOR_BOOL.
12440         * machmode.def (VECTOR_BOOL_MODE): Document.
12441         * genmodes.c (VECTOR_BOOL_MODE): New macro.
12442         (make_vector_bool_mode): New function.
12443         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12444         MODE_VECTOR_BOOL.
12445         * lto-streamer-in.c (lto_input_mode_table): Likewise.
12446         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12447         Likewise.
12448         * stor-layout.c (int_mode_for_mode): Likewise.
12449         * tree.c (build_vector_type_for_mode): Likewise.
12450         * varasm.c (output_constant_pool_2): Likewise.
12451         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12452         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
12453         for MODE_VECTOR_BOOL.
12454         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12455         of mode class checks.
12456         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12457         instead of a list of mode class checks.
12458         (expand_vector_scalar_condition): Likewise.
12459         (type_for_widest_vector_mode): Handle BImode as an inner mode.
12461 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12462             Alan Hayward  <alan.hayward@arm.com>
12463             David Sherwood  <david.sherwood@arm.com>
12465         * machmode.h (mode_size): Change from unsigned short to
12466         poly_uint16_pod.
12467         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12468         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12469         or if measurement_type is not polynomial.
12470         (fixed_size_mode::includes_p): Check for constant-sized modes.
12471         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12472         return a poly_uint16 rather than an unsigned short.
12473         (emit_mode_size): Change the type of mode_size from unsigned short
12474         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
12475         (emit_mode_adjustments): Cope with polynomial vector sizes.
12476         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12477         for GET_MODE_SIZE.
12478         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12479         for GET_MODE_SIZE.
12480         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12481         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12482         * caller-save.c (setup_save_areas): Likewise.
12483         (replace_reg_with_saved_mem): Likewise.
12484         * calls.c (emit_library_call_value_1): Likewise.
12485         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12486         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12487         (gen_lowpart_for_combine): Likewise.
12488         * convert.c (convert_to_integer_1): Likewise.
12489         * cse.c (equiv_constant, cse_insn): Likewise.
12490         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12491         (cselib_subst_to_values): Likewise.
12492         * dce.c (word_dce_process_block): Likewise.
12493         * df-problems.c (df_word_lr_mark_ref): Likewise.
12494         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12495         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12496         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12497         (rtl_for_decl_location): Likewise.
12498         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12499         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12500         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12501         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12502         (expand_expr_real_1): Likewise.
12503         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12504         (pad_below): Likewise.
12505         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12506         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12507         * ira.c (get_subreg_tracking_sizes): Likewise.
12508         * ira-build.c (ira_create_allocno_objects): Likewise.
12509         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12510         (ira_sort_regnos_for_alter_reg): Likewise.
12511         * ira-costs.c (record_operand_costs): Likewise.
12512         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12513         (resolve_simple_move): Likewise.
12514         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12515         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12516         (lra_constraints): Likewise.
12517         (CONST_POOL_OK_P): Reject variable-sized modes.
12518         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12519         (add_pseudo_to_slot, lra_spill): Likewise.
12520         * omp-low.c (omp_clause_aligned_alignment): Likewise.
12521         * optabs-query.c (get_best_extraction_insn): Likewise.
12522         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12523         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12524         (expand_mult_highpart, valid_multiword_target_p): Likewise.
12525         * recog.c (offsettable_address_addr_space_p): Likewise.
12526         * regcprop.c (maybe_mode_change): Likewise.
12527         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12528         * regrename.c (build_def_use): Likewise.
12529         * regstat.c (dump_reg_info): Likewise.
12530         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12531         (find_reloads, find_reloads_subreg_address): Likewise.
12532         * reload1.c (eliminate_regs_1): Likewise.
12533         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12534         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12535         (simplify_binary_operation_1, simplify_subreg): Likewise.
12536         * targhooks.c (default_function_arg_padding): Likewise.
12537         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12538         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12539         (verify_gimple_assign_ternary): Likewise.
12540         * tree-inline.c (estimate_move_cost): Likewise.
12541         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12542         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12543         (get_address_cost_ainc): Likewise.
12544         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12545         (vect_supportable_dr_alignment): Likewise.
12546         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12547         (vectorizable_reduction): Likewise.
12548         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12549         (vectorizable_operation, vectorizable_load): Likewise.
12550         * tree.c (build_same_sized_truth_vector_type): Likewise.
12551         * valtrack.c (cleanup_auto_inc_dec): Likewise.
12552         * var-tracking.c (emit_note_insn_var_location): Likewise.
12553         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12554         (ADDR_VEC_ALIGN): Likewise.
12556 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12557             Alan Hayward  <alan.hayward@arm.com>
12558             David Sherwood  <david.sherwood@arm.com>
12560         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12561         unsigned short.
12562         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12563         or if measurement_type is polynomial.
12564         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12565         * combine.c (make_extraction): Likewise.
12566         * dse.c (find_shift_sequence): Likewise.
12567         * dwarf2out.c (mem_loc_descriptor): Likewise.
12568         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12569         (extract_bit_field, extract_low_bits): Likewise.
12570         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12571         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12572         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12573         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12574         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12575         * reload.c (find_reloads): Likewise.
12576         * reload1.c (alter_reg): Likewise.
12577         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12578         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12579         * tree-if-conv.c (predicate_mem_writes): Likewise.
12580         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12581         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12582         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12583         * valtrack.c (dead_debug_insert_temp): Likewise.
12584         * varasm.c (mergeable_constant_section): Likewise.
12585         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12587 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12588             Alan Hayward  <alan.hayward@arm.com>
12589             David Sherwood  <david.sherwood@arm.com>
12591         * expr.c (expand_assignment): Cope with polynomial mode sizes
12592         when assigning to a CONCAT.
12594 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12595             Alan Hayward  <alan.hayward@arm.com>
12596             David Sherwood  <david.sherwood@arm.com>
12598         * machmode.h (mode_precision): Change from unsigned short to
12599         poly_uint16_pod.
12600         (mode_to_precision): Return a poly_uint16 rather than an unsigned
12601         short.
12602         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12603         or if measurement_type is not polynomial.
12604         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
12605         in which the mode is already known to be a scalar_int_mode.
12606         * genmodes.c (emit_mode_precision): Change the type of mode_precision
12607         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
12608         initializer.
12609         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12610         for GET_MODE_PRECISION.
12611         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12612         for GET_MODE_PRECISION.
12613         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12614         as polynomial.
12615         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12616         (expand_field_assignment, make_extraction): Likewise.
12617         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12618         (get_last_value): Likewise.
12619         * convert.c (convert_to_integer_1): Likewise.
12620         * cse.c (cse_insn): Likewise.
12621         * expr.c (expand_expr_real_1): Likewise.
12622         * lra-constraints.c (simplify_operand_subreg): Likewise.
12623         * optabs-query.c (can_atomic_load_p): Likewise.
12624         * optabs.c (expand_atomic_load): Likewise.
12625         (expand_atomic_store): Likewise.
12626         * ree.c (combine_reaching_defs): Likewise.
12627         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12628         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12629         * tree.h (type_has_mode_precision_p): Likewise.
12630         * ubsan.c (instrument_si_overflow): Likewise.
12632 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12633             Alan Hayward  <alan.hayward@arm.com>
12634             David Sherwood  <david.sherwood@arm.com>
12636         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12637         polynomial numbers of units.
12638         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12639         (valid_vector_subparts_p): New function.
12640         (build_vector_type): Remove temporary shim and take the number
12641         of units as a poly_uint64 rather than an int.
12642         (build_opaque_vector_type): Take the number of units as a
12643         poly_uint64 rather than an int.
12644         * tree.c (build_vector_from_ctor): Handle polynomial
12645         TYPE_VECTOR_SUBPARTS.
12646         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12647         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12648         (build_vector_from_val): If the number of units is variable,
12649         use build_vec_duplicate_cst for constant operands and
12650         VEC_DUPLICATE_EXPR otherwise.
12651         (make_vector_type): Remove temporary is_constant ().
12652         (build_vector_type, build_opaque_vector_type): Take the number of
12653         units as a poly_uint64 rather than an int.
12654         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12655         VECTOR_CST_NELTS.
12656         * cfgexpand.c (expand_debug_expr): Likewise.
12657         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12658         (store_constructor, expand_expr_real_1): Likewise.
12659         (const_scalar_mask_from_tree): Likewise.
12660         * fold-const-call.c (fold_const_reduction): Likewise.
12661         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12662         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12663         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12664         (fold_relational_const): Likewise.
12665         (native_interpret_vector): Likewise.  Change the size from an
12666         int to an unsigned int.
12667         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12668         TYPE_VECTOR_SUBPARTS.
12669         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12670         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12671         duplicating a non-constant operand into a variable-length vector.
12672         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12673         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12674         * ipa-icf.c (sem_variable::equals): Likewise.
12675         * match.pd: Likewise.
12676         * omp-simd-clone.c (simd_clone_subparts): Likewise.
12677         * print-tree.c (print_node): Likewise.
12678         * stor-layout.c (layout_type): Likewise.
12679         * targhooks.c (default_builtin_vectorization_cost): Likewise.
12680         * tree-cfg.c (verify_gimple_comparison): Likewise.
12681         (verify_gimple_assign_binary): Likewise.
12682         (verify_gimple_assign_ternary): Likewise.
12683         (verify_gimple_assign_single): Likewise.
12684         * tree-pretty-print.c (dump_generic_node): Likewise.
12685         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12686         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12687         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12688         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12689         (vect_shift_permute_load_chain): Likewise.
12690         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12691         (expand_vector_condition, optimize_vector_constructor): Likewise.
12692         (lower_vec_perm, get_compute_type): Likewise.
12693         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12694         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12695         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12696         (vect_recog_mask_conversion_pattern): Likewise.
12697         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12698         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12699         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12700         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12701         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12702         (vectorizable_shift, vectorizable_operation, vectorizable_store)
12703         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12704         (supportable_widening_operation): Likewise.
12705         (supportable_narrowing_operation): Likewise.
12706         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12707         Likewise.
12708         * varasm.c (output_constant): Likewise.
12710 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12711             Alan Hayward  <alan.hayward@arm.com>
12712             David Sherwood  <david.sherwood@arm.com>
12714         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12715         so that both the length == 3 and length != 3 cases set up their
12716         own permute vectors.  Add comments explaining why we know the
12717         number of elements is constant.
12718         (vect_permute_load_chain): Likewise.
12720 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12721             Alan Hayward  <alan.hayward@arm.com>
12722             David Sherwood  <david.sherwood@arm.com>
12724         * machmode.h (mode_nunits): Change from unsigned char to
12725         poly_uint16_pod.
12726         (ONLY_FIXED_SIZE_MODES): New macro.
12727         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12728         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12729         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12730         New typedefs.
12731         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12732         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12733         or if measurement_type is not polynomial.
12734         * genmodes.c (ZERO_COEFFS): New macro.
12735         (emit_mode_nunits_inline): Make mode_nunits_inline return a
12736         poly_uint16.
12737         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12738         Use ZERO_COEFFS when emitting initializers.
12739         * data-streamer.h (bp_pack_poly_value): New function.
12740         (bp_unpack_poly_value): Likewise.
12741         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12742         for GET_MODE_NUNITS.
12743         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12744         for GET_MODE_NUNITS.
12745         * tree.c (make_vector_type): Remove temporary shim and make
12746         the real function take the number of units as a poly_uint64
12747         rather than an int.
12748         (build_vector_type_for_mode): Handle polynomial nunits.
12749         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12750         * emit-rtl.c (const_vec_series_p_1): Likewise.
12751         (gen_rtx_CONST_VECTOR): Likewise.
12752         * fold-const.c (test_vec_duplicate_folding): Likewise.
12753         * genrecog.c (validate_pattern): Likewise.
12754         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12755         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12756         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12757         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12758         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12759         * rtlanal.c (subreg_get_info): Likewise.
12760         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12761         (vect_grouped_load_supported): Likewise.
12762         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12763         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12764         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12765         (simplify_const_unary_operation, simplify_binary_operation_1)
12766         (simplify_const_binary_operation, simplify_ternary_operation)
12767         (test_vector_ops_duplicate, test_vector_ops): Likewise.
12768         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12769         instead of CONST_VECTOR_NUNITS.
12770         * varasm.c (output_constant_pool_2): Likewise.
12771         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12772         explicit-encoded elements in the XVEC for variable-length vectors.
12774 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12776         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12778 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12779             Alan Hayward  <alan.hayward@arm.com>
12780             David Sherwood  <david.sherwood@arm.com>
12782         * coretypes.h (fixed_size_mode): Declare.
12783         (fixed_size_mode_pod): New typedef.
12784         * builtins.h (target_builtins::x_apply_args_mode)
12785         (target_builtins::x_apply_result_mode): Change type to
12786         fixed_size_mode_pod.
12787         * builtins.c (apply_args_size, apply_result_size, result_vector)
12788         (expand_builtin_apply_args_1, expand_builtin_apply)
12789         (expand_builtin_return): Update accordingly.
12791 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12793         * cse.c (hash_rtx_cb): Hash only the encoded elements.
12794         * cselib.c (cselib_hash_rtx): Likewise.
12795         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12796         CONST_VECTOR encoding.
12798 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12799             Jeff Law  <law@redhat.com>
12801         PR target/83641
12802         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12803         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12804         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12805         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12807         PR target/83641
12808         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12809         explicitly probe *sp in a noreturn function if there were any callee
12810         register saves or frame pointer is needed.
12812 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12814         PR debug/83621
12815         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12816         BLKmode for ternary, binary or unary expressions.
12818         PR debug/83645
12819         * var-tracking.c (delete_vta_debug_insn): New inline function.
12820         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12821         insns from get_insns () to NULL instead of each bb separately.
12822         Use delete_vta_debug_insn.  No longer static.
12823         (vt_debug_insns_local, variable_tracking_main_1): Adjust
12824         delete_vta_debug_insns callers.
12825         * rtl.h (delete_vta_debug_insns): Declare.
12826         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12827         instead of variable_tracking_main.
12829 2018-01-03  Martin Sebor  <msebor@redhat.com>
12831         PR tree-optimization/83603
12832         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12833         arguments past the endof the argument list in functions declared
12834         without a prototype.
12835         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12836         Avoid checking when arguments are null.
12838 2018-01-03  Martin Sebor  <msebor@redhat.com>
12840         PR c/83559
12841         * doc/extend.texi (attribute const): Fix a typo.
12842         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12843         issuing -Wsuggest-attribute for void functions.
12845 2018-01-03  Martin Sebor  <msebor@redhat.com>
12847         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12848         offset_int::from instead of wide_int::to_shwi.
12849         (maybe_diag_overlap): Remove assertion.
12850         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12851         * gimple-ssa-sprintf.c (format_directive): Same.
12852         (parse_directive): Same.
12853         (sprintf_dom_walker::compute_format_length): Same.
12854         (try_substitute_return_value): Same.
12856 2018-01-03  Jeff Law  <law@redhat.com>
12858         PR middle-end/83654
12859         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12860         non-constant residual for zero at runtime and avoid probing in
12861         that case.  Reorganize code for trailing problem to mirror handling
12862         of the residual.
12864 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12866         PR tree-optimization/83501
12867         * tree-ssa-strlen.c (get_string_cst): New.
12868         (handle_char_store): Call get_string_cst.
12870 2018-01-03  Martin Liska  <mliska@suse.cz>
12872         PR tree-optimization/83593
12873         * tree-ssa-strlen.c: Include tree-cfg.h.
12874         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12875         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12876         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12877         to false.
12878         (strlen_dom_walker::before_dom_children): Call
12879         gimple_purge_dead_eh_edges. Dump tranformation with details
12880         dump flags.
12881         (strlen_dom_walker::before_dom_children): Update call by adding
12882         new argument cleanup_eh.
12883         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12885 2018-01-03  Martin Liska  <mliska@suse.cz>
12887         PR ipa/83549
12888         * cif-code.def (VARIADIC_THUNK): New enum value.
12889         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12890         thunks.
12892 2018-01-03  Jan Beulich  <jbeulich@suse.com>
12894         * sse.md (mov<mode>_internal): Tighten condition for when to use
12895         vmovdqu<ssescalarsize> for TI and OI modes.
12897 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12899         Update copyright years.
12901 2018-01-03  Martin Liska  <mliska@suse.cz>
12903         PR ipa/83594
12904         * ipa-visibility.c (function_and_variable_visibility): Skip
12905         functions with noipa attribure.
12907 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
12909         * gcc.c (process_command): Update copyright notice dates.
12910         * gcov-dump.c (print_version): Ditto.
12911         * gcov.c (print_version): Ditto.
12912         * gcov-tool.c (print_version): Ditto.
12913         * gengtype.c (create_file): Ditto.
12914         * doc/cpp.texi: Bump @copying's copyright year.
12915         * doc/cppinternals.texi: Ditto.
12916         * doc/gcc.texi: Ditto.
12917         * doc/gccint.texi: Ditto.
12918         * doc/gcov.texi: Ditto.
12919         * doc/install.texi: Ditto.
12920         * doc/invoke.texi: Ditto.
12922 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12924         * vector-builder.h (vector_builder::m_full_nelts): Change from
12925         unsigned int to poly_uint64.
12926         (vector_builder::full_nelts): Update prototype accordingly.
12927         (vector_builder::new_vector): Likewise.
12928         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12929         (vector_builder::operator ==): Likewise.
12930         (vector_builder::finalize): Likewise.
12931         * int-vector-builder.h (int_vector_builder::int_vector_builder):
12932         Take the number of elements as a poly_uint64 rather than an
12933         unsigned int.
12934         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12935         from unsigned int to poly_uint64.
12936         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12937         (vec_perm_indices::new_vector): Likewise.
12938         (vec_perm_indices::length): Likewise.
12939         (vec_perm_indices::nelts_per_input): Likewise.
12940         (vec_perm_indices::input_nelts): Likewise.
12941         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12942         number of elements per input as a poly_uint64 rather than an
12943         unsigned int.  Use the original encoding for variable-length
12944         vectors, rather than clamping each individual element.
12945         For the second and subsequent elements in each pattern,
12946         clamp the step and base before clamping their sum.
12947         (vec_perm_indices::series_p): Handle polynomial element counts.
12948         (vec_perm_indices::all_in_range_p): Likewise.
12949         (vec_perm_indices_to_tree): Likewise.
12950         (vec_perm_indices_to_rtx): Likewise.
12951         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12952         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12953         (tree_vector_builder::new_binary_operation): Handle polynomial
12954         element counts.  Return false if we need to know the number
12955         of elements at compile time.
12956         * fold-const.c (fold_vec_perm): Punt if the number of elements
12957         isn't known at compile time.
12959 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12961         * vec-perm-indices.h (vec_perm_builder): Change element type
12962         from HOST_WIDE_INT to poly_int64.
12963         (vec_perm_indices::element_type): Update accordingly.
12964         (vec_perm_indices::clamp): Handle polynomial element_types.
12965         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12966         (vec_perm_indices::all_in_range_p): Likewise.
12967         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12968         than shwi trees.
12969         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12970         polynomial vec_perm_indices element types.
12971         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12972         * fold-const.c (fold_vec_perm): Likewise.
12973         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12974         * tree-vect-generic.c (lower_vec_perm): Likewise.
12975         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12976         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12977         element type to HOST_WIDE_INT.
12979 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12980             Alan Hayward  <alan.hayward@arm.com>
12981             David Sherwood  <david.sherwood@arm.com>
12983         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12984         rather than an int.  Use plus_constant.
12985         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12986         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12988 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
12989             Alan Hayward  <alan.hayward@arm.com>
12990             David Sherwood  <david.sherwood@arm.com>
12992         * calls.c (emit_call_1, expand_call): Change struct_value_size from
12993         a HOST_WIDE_INT to a poly_int64.
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         * calls.c (load_register_parameters): Cope with polynomial
13000         mode sizes.  Require a constant size for BLKmode parameters
13001         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
13002         forces a parameter to be padded at the lsb end in order to
13003         fill a complete number of words, require the parameter size
13004         to be ordered wrt UNITS_PER_WORD.
13006 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13007             Alan Hayward  <alan.hayward@arm.com>
13008             David Sherwood  <david.sherwood@arm.com>
13010         * reload1.c (spill_stack_slot_width): Change element type
13011         from unsigned int to poly_uint64_pod.
13012         (alter_reg): Treat mode sizes as polynomial.
13014 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13015             Alan Hayward  <alan.hayward@arm.com>
13016             David Sherwood  <david.sherwood@arm.com>
13018         * reload.c (complex_word_subreg_p): New function.
13019         (reload_inner_reg_of_subreg, push_reload): Use it.
13021 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13022             Alan Hayward  <alan.hayward@arm.com>
13023             David Sherwood  <david.sherwood@arm.com>
13025         * lra-constraints.c (process_alt_operands): Reject matched
13026         operands whose sizes aren't ordered.
13027         (match_reload): Refer to this check here.
13029 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13030             Alan Hayward  <alan.hayward@arm.com>
13031             David Sherwood  <david.sherwood@arm.com>
13033         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
13034         that the mode size is in the set {1, 2, 4, 8, 16}.
13036 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13037             Alan Hayward  <alan.hayward@arm.com>
13038             David Sherwood  <david.sherwood@arm.com>
13040         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
13041         Use plus_constant instead of gen_rtx_PLUS.
13043 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13044             Alan Hayward  <alan.hayward@arm.com>
13045             David Sherwood  <david.sherwood@arm.com>
13047         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
13048         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
13049         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
13050         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
13051         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
13052         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
13053         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
13054         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
13055         * config/i386/i386.c (ix86_push_rounding): ...this new function.
13056         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
13057         a poly_int64.
13058         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
13059         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
13060         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
13061         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
13062         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
13063         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
13064         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
13065         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
13066         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
13067         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
13068         function.
13069         * expr.c (emit_move_resolve_push): Treat the input and result
13070         of PUSH_ROUNDING as a poly_int64.
13071         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
13072         (emit_push_insn): Likewise.
13073         * lra-eliminations.c (mark_not_eliminable): Likewise.
13074         * recog.c (push_operand): Likewise.
13075         * reload1.c (elimination_effects): Likewise.
13076         * rtlanal.c (nonzero_bits1): Likewise.
13077         * calls.c (store_one_arg): Likewise.  Require the padding to be
13078         known at compile time.
13080 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13081             Alan Hayward  <alan.hayward@arm.com>
13082             David Sherwood  <david.sherwood@arm.com>
13084         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
13085         Use plus_constant instead of gen_rtx_PLUS.
13087 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13088             Alan Hayward  <alan.hayward@arm.com>
13089             David Sherwood  <david.sherwood@arm.com>
13091         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
13092         rather than an int.
13094 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13095             Alan Hayward  <alan.hayward@arm.com>
13096             David Sherwood  <david.sherwood@arm.com>
13098         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
13099         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
13100         via stack temporaries.  Treat the mode size as polynomial too.
13102 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13103             Alan Hayward  <alan.hayward@arm.com>
13104             David Sherwood  <david.sherwood@arm.com>
13106         * expr.c (expand_expr_real_2): When handling conversions involving
13107         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
13108         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
13109         as a poly_uint64 too.
13111 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13112             Alan Hayward  <alan.hayward@arm.com>
13113             David Sherwood  <david.sherwood@arm.com>
13115         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
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         * combine.c (can_change_dest_mode): Handle polynomial
13122         REGMODE_NATURAL_SIZE.
13123         * expmed.c (store_bit_field_1): Likewise.
13124         * expr.c (store_constructor): Likewise.
13125         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
13126         and polynomial REGMODE_NATURAL_SIZE.
13127         (gen_lowpart_common): Likewise.
13128         * reginfo.c (record_subregs_of_mode): Likewise.
13129         * rtlanal.c (read_modify_subreg_p): Likewise.
13131 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13132             Alan Hayward  <alan.hayward@arm.com>
13133             David Sherwood  <david.sherwood@arm.com>
13135         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
13136         numbers of elements.
13138 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13139             Alan Hayward  <alan.hayward@arm.com>
13140             David Sherwood  <david.sherwood@arm.com>
13142         * match.pd: Cope with polynomial numbers of vector elements.
13144 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13145             Alan Hayward  <alan.hayward@arm.com>
13146             David Sherwood  <david.sherwood@arm.com>
13148         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
13149         in a POINTER_PLUS_EXPR.
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         * omp-simd-clone.c (simd_clone_subparts): New function.
13156         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
13157         (ipa_simd_modify_function_body): Likewise.
13159 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13160             Alan Hayward  <alan.hayward@arm.com>
13161             David Sherwood  <david.sherwood@arm.com>
13163         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
13164         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
13165         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
13166         (expand_vector_condition, vector_element): Likewise.
13167         (subparts_gt): New function.
13168         (get_compute_type): Use subparts_gt.
13169         (count_type_subparts): Delete.
13170         (expand_vector_operations_1): Use subparts_gt instead of
13171         count_type_subparts.
13173 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13174             Alan Hayward  <alan.hayward@arm.com>
13175             David Sherwood  <david.sherwood@arm.com>
13177         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
13178         (vect_compile_time_alias): ...this new function.  Do the calculation
13179         on poly_ints rather than trees.
13180         (vect_prune_runtime_alias_test_list): Update call accordingly.
13182 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13183             Alan Hayward  <alan.hayward@arm.com>
13184             David Sherwood  <david.sherwood@arm.com>
13186         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
13187         numbers of units.
13188         (vect_schedule_slp_instance): Likewise.
13190 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13191             Alan Hayward  <alan.hayward@arm.com>
13192             David Sherwood  <david.sherwood@arm.com>
13194         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
13195         constant and extern definitions for variable-length vectors.
13196         (vect_get_constant_vectors): Note that the number of units
13197         is known to be constant.
13199 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13200             Alan Hayward  <alan.hayward@arm.com>
13201             David Sherwood  <david.sherwood@arm.com>
13203         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13204         of units as polynomial.  Choose between WIDE and NARROW based
13205         on multiple_p.
13207 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13208             Alan Hayward  <alan.hayward@arm.com>
13209             David Sherwood  <david.sherwood@arm.com>
13211         * tree-vect-stmts.c (simd_clone_subparts): New function.
13212         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13214 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13215             Alan Hayward  <alan.hayward@arm.com>
13216             David Sherwood  <david.sherwood@arm.com>
13218         * tree-vect-stmts.c (vectorizable_call): Treat the number of
13219         vectors as polynomial.  Use build_index_vector for
13220         IFN_GOMP_SIMD_LANE.
13222 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13223             Alan Hayward  <alan.hayward@arm.com>
13224             David Sherwood  <david.sherwood@arm.com>
13226         * tree-vect-stmts.c (get_load_store_type): Treat the number of
13227         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13228         for variable-length vectors.
13229         (vectorizable_mask_load_store): Treat the number of units as
13230         polynomial, asserting that it is constant if the condition has
13231         already been enforced.
13232         (vectorizable_store, vectorizable_load): Likewise.
13234 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13235             Alan Hayward  <alan.hayward@arm.com>
13236             David Sherwood  <david.sherwood@arm.com>
13238         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13239         of units as polynomial.  Punt if we can't tell at compile time
13240         which vector contains the final result.
13242 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13243             Alan Hayward  <alan.hayward@arm.com>
13244             David Sherwood  <david.sherwood@arm.com>
13246         * tree-vect-loop.c (vectorizable_induction): Treat the number
13247         of units as polynomial.  Punt on SLP inductions.  Use an integer
13248         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
13249         cast of such a series for variable-length floating-point
13250         reductions.
13252 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13253             Alan Hayward  <alan.hayward@arm.com>
13254             David Sherwood  <david.sherwood@arm.com>
13256         * tree.h (build_index_vector): Declare.
13257         * tree.c (build_index_vector): New function.
13258         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13259         of units as polynomial, forcibly converting it to a constant if
13260         vectorizable_reduction has already enforced the condition.
13261         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
13262         to create a {1,2,3,...} vector.
13263         (vectorizable_reduction): Treat the number of units as polynomial.
13264         Choose vectype_in based on the largest scalar element size rather
13265         than the smallest number of units.  Enforce the restrictions
13266         relied on above.
13268 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13269             Alan Hayward  <alan.hayward@arm.com>
13270             David Sherwood  <david.sherwood@arm.com>
13272         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13273         number of units as polynomial.
13275 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13276             Alan Hayward  <alan.hayward@arm.com>
13277             David Sherwood  <david.sherwood@arm.com>
13279         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13280         * target.def (autovectorize_vector_sizes): Return the vector sizes
13281         by pointer, using vector_sizes rather than a bitmask.
13282         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13283         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13284         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13285         Likewise.
13286         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13287         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13288         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13289         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13290         * omp-general.c (omp_max_vf): Likewise.
13291         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13292         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13293         * tree-vect-loop.c (vect_analyze_loop): Likewise.
13294         * tree-vect-slp.c (vect_slp_bb): Likewise.
13295         * doc/tm.texi: Regenerate.
13296         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13297         to a poly_uint64.
13298         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13299         the vector size as a poly_uint64 rather than an unsigned int.
13300         (current_vector_size): Change from an unsigned int to a poly_uint64.
13301         (get_vectype_for_scalar_type): Update accordingly.
13302         * tree.h (build_truth_vector_type): Take the size and number of
13303         units as a poly_uint64 rather than an unsigned int.
13304         (build_vector_type): Add a temporary overload that takes
13305         the number of units as a poly_uint64 rather than an unsigned int.
13306         * tree.c (make_vector_type): Likewise.
13307         (build_truth_vector_type): Take the number of units as a poly_uint64
13308         rather than an unsigned int.
13310 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13311             Alan Hayward  <alan.hayward@arm.com>
13312             David Sherwood  <david.sherwood@arm.com>
13314         * target.def (get_mask_mode): Take the number of units and length
13315         as poly_uint64s rather than unsigned ints.
13316         * targhooks.h (default_get_mask_mode): Update accordingly.
13317         * targhooks.c (default_get_mask_mode): Likewise.
13318         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13319         * doc/tm.texi: Regenerate.
13321 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13322             Alan Hayward  <alan.hayward@arm.com>
13323             David Sherwood  <david.sherwood@arm.com>
13325         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13326         * omp-general.c (omp_max_vf): Likewise.
13327         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13328         (expand_omp_simd): Handle polynomial safelen.
13329         * omp-low.c (omplow_simd_context): Add a default constructor.
13330         (omplow_simd_context::max_vf): Change from int to poly_uint64.
13331         (lower_rec_simd_input_clauses): Update accordingly.
13332         (lower_rec_input_clauses): Likewise.
13334 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13335             Alan Hayward  <alan.hayward@arm.com>
13336             David Sherwood  <david.sherwood@arm.com>
13338         * tree-vectorizer.h (vect_nunits_for_cost): New function.
13339         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13340         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13341         (vect_analyze_slp_cost): Likewise.
13342         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13343         (vect_model_load_cost): Likewise.
13345 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13346             Alan Hayward  <alan.hayward@arm.com>
13347             David Sherwood  <david.sherwood@arm.com>
13349         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13350         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13351         from an unsigned int * to a poly_uint64_pod *.
13352         (calculate_unrolling_factor): New function.
13353         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
13355 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13356             Alan Hayward  <alan.hayward@arm.com>
13357             David Sherwood  <david.sherwood@arm.com>
13359         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13360         from an unsigned int to a poly_uint64.
13361         (_loop_vec_info::slp_unrolling_factor): Likewise.
13362         (_loop_vec_info::vectorization_factor): Change from an int
13363         to a poly_uint64.
13364         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13365         (vect_get_num_vectors): New function.
13366         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13367         (vect_get_num_copies): Use vect_get_num_vectors.
13368         (vect_analyze_data_ref_dependences): Change max_vf from an int *
13369         to an unsigned int *.
13370         (vect_analyze_data_refs): Change min_vf from an int * to a
13371         poly_uint64 *.
13372         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13373         than an unsigned HOST_WIDE_INT.
13374         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13375         (vect_analyze_data_ref_dependence): Change max_vf from an int *
13376         to an unsigned int *.
13377         (vect_analyze_data_ref_dependences): Likewise.
13378         (vect_compute_data_ref_alignment): Handle polynomial vf.
13379         (vect_enhance_data_refs_alignment): Likewise.
13380         (vect_prune_runtime_alias_test_list): Likewise.
13381         (vect_shift_permute_load_chain): Likewise.
13382         (vect_supportable_dr_alignment): Likewise.
13383         (dependence_distance_ge_vf): Take the vectorization factor as a
13384         poly_uint64 rather than an unsigned HOST_WIDE_INT.
13385         (vect_analyze_data_refs): Change min_vf from an int * to a
13386         poly_uint64 *.
13387         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13388         vfm1 as a poly_uint64 rather than an int.  Make the same change
13389         for the returned bound_scalar.
13390         (vect_gen_vector_loop_niters): Handle polynomial vf.
13391         (vect_do_peeling): Likewise.  Update call to
13392         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13393         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13394         be constant.
13395         * tree-vect-loop.c (vect_determine_vectorization_factor)
13396         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13397         (vect_get_known_peeling_cost): Likewise.
13398         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13399         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13400         (vect_transform_loop): Likewise.  Use the lowest possible VF when
13401         updating the upper bounds of the loop.
13402         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
13403         rather than an int.
13404         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13405         polynomial unroll factors.
13406         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13407         (vect_make_slp_decision): Likewise.
13408         (vect_supported_load_permutation_p): Likewise, and polynomial
13409         vf too.
13410         (vect_analyze_slp_cost): Handle polynomial vf.
13411         (vect_slp_analyze_node_operations): Likewise.
13412         (vect_slp_analyze_bb_1): Likewise.
13413         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13414         than an unsigned HOST_WIDE_INT.
13415         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13416         (vectorizable_load): Handle polynomial vf.
13417         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13418         a poly_uint64.
13419         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13421 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13422             Alan Hayward  <alan.hayward@arm.com>
13423             David Sherwood  <david.sherwood@arm.com>
13425         * match.pd: Handle bit operations involving three constants
13426         and try to fold one pair.
13428 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13430         * tree-vect-loop-manip.c: Include gimple-fold.h.
13431         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13432         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
13433         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13434         Add a path that uses a step of VF instead of 1, but disable it
13435         for now.
13436         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13437         and niters_no_overflow parameters.  Update calls to
13438         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13439         Create a new SSA name if the latter choses to use a ste other
13440         than zero, and return it via niters_vector_mult_vf_var.
13441         * tree-vect-loop.c (vect_transform_loop): Update calls to
13442         vect_do_peeling, vect_gen_vector_loop_niters and
13443         slpeel_make_loop_iterate_ntimes.
13444         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13445         (vect_gen_vector_loop_niters): Update declarations after above changes.
13447 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
13449         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13450         128-bit round to integer instructions.
13451         (ceil<mode>2): Likewise.
13452         (btrunc<mode>2): Likewise.
13453         (round<mode>2): Likewise.
13455 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13457         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13458         unaligned VSX load/store on P8/P9.
13459         (expand_block_clear): Allow the use of unaligned VSX
13460         load/store on P8/P9.
13462 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13464         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13465         New function.
13466         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13467         swap associated with both a load and a store.
13469 2018-01-02  Andrew Waterman  <andrew@sifive.com>
13471         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13472         * config/riscv/riscv.md (clear_cache): Use it.
13474 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
13476         * web.c: Remove out-of-date comment.
13478 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13480         * expr.c (fixup_args_size_notes): Check that any existing
13481         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13482         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13483         (emit_single_push_insn): ...here.
13485 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13487         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13488         (const_vector_encoded_nelts): New function.
13489         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13490         (const_vector_int_elt, const_vector_elt): Declare.
13491         * emit-rtl.c (const_vector_int_elt_1): New function.
13492         (const_vector_elt): Likewise.
13493         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13494         of CONST_VECTOR_ELT.
13496 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13498         * expr.c: Include rtx-vector-builder.h.
13499         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13500         directly on the tree encoding.
13501         (const_vector_from_tree): Likewise.
13502         * optabs.c: Include rtx-vector-builder.h.
13503         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13504         sequence of "u" values.
13505         * vec-perm-indices.c: Include rtx-vector-builder.h.
13506         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13507         directly on the vec_perm_indices encoding.
13509 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13511         * doc/rtl.texi (const_vector): Describe new encoding scheme.
13512         * Makefile.in (OBJS): Add rtx-vector-builder.o.
13513         * rtx-vector-builder.h: New file.
13514         * rtx-vector-builder.c: Likewise.
13515         * rtl.h (rtx_def::u2): Add a const_vector field.
13516         (CONST_VECTOR_NPATTERNS): New macro.
13517         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13518         (CONST_VECTOR_DUPLICATE_P): Likewise.
13519         (CONST_VECTOR_STEPPED_P): Likewise.
13520         (CONST_VECTOR_ENCODED_ELT): Likewise.
13521         (const_vec_duplicate_p): Check for a duplicated vector encoding.
13522         (unwrap_const_vec_duplicate): Likewise.
13523         (const_vec_series_p): Check for a non-duplicated vector encoding.
13524         Say that the function only returns true for integer vectors.
13525         * emit-rtl.c: Include rtx-vector-builder.h.
13526         (gen_const_vec_duplicate_1): Delete.
13527         (gen_const_vector): Call gen_const_vec_duplicate instead of
13528         gen_const_vec_duplicate_1.
13529         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13530         (gen_const_vec_duplicate): Use rtx_vector_builder.
13531         (gen_const_vec_series): Likewise.
13532         (gen_rtx_CONST_VECTOR): Likewise.
13533         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13534         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13535         Build a new vector rather than modifying a CONST_VECTOR in-place.
13536         (handle_special_swappables): Update call accordingly.
13537         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13538         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13539         Build a new vector rather than modifying a CONST_VECTOR in-place.
13540         (handle_special_swappables): Update call accordingly.
13542 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13544         * simplify-rtx.c (simplify_const_binary_operation): Use
13545         CONST_VECTOR_ELT instead of XVECEXP.
13547 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13549         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13550         the selector elements to be different from the data elements
13551         if the selector is a VECTOR_CST.
13552         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13553         ssizetype for the selector.
13555 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13557         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13558         before testing each element individually.
13559         * tree-vect-generic.c (lower_vec_perm): Likewise.
13561 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13563         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13564         * selftest-run-tests.c (selftest::run_tests): Call it.
13565         * vector-builder.h (vector_builder::operator ==): New function.
13566         (vector_builder::operator !=): Likewise.
13567         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13568         (vec_perm_indices::all_from_input_p): New function.
13569         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13570         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13571         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13572         instead of reading the VECTOR_CST directly.  Detect whether both
13573         vector inputs are the same before constructing the vec_perm_indices,
13574         and update the number of inputs argument accordingly.  Use the
13575         utility functions added above.  Only construct sel2 if we need to.
13577 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13579         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13580         the broadcast of the low byte.
13581         (expand_mult_highpart): Use an explicit encoding for the permutes.
13582         * optabs-query.c (can_mult_highpart_p): Likewise.
13583         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13584         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13585         (vectorizable_bswap): Likewise.
13586         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13587         explicit encoding for the power-of-2 permutes.
13588         (vect_permute_store_chain): Likewise.
13589         (vect_grouped_load_supported): Likewise.
13590         (vect_permute_load_chain): Likewise.
13592 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13594         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13595         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13596         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13597         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13598         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13599         (vect_gen_perm_mask_any): Likewise.
13601 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13603         * int-vector-builder.h: New file.
13604         * vec-perm-indices.h: Include int-vector-builder.h.
13605         (vec_perm_indices): Redefine as an int_vector_builder.
13606         (auto_vec_perm_indices): Delete.
13607         (vec_perm_builder): Redefine as a stand-alone class.
13608         (vec_perm_indices::vec_perm_indices): New function.
13609         (vec_perm_indices::clamp): Likewise.
13610         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13611         (vec_perm_indices::new_vector): New function.
13612         (vec_perm_indices::new_expanded_vector): Update for new
13613         vec_perm_indices class.
13614         (vec_perm_indices::rotate_inputs): New function.
13615         (vec_perm_indices::all_in_range_p): Operate directly on the
13616         encoded form, without computing elided elements.
13617         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13618         encoding.  Update for new vec_perm_indices class.
13619         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13620         the given vec_perm_builder.
13621         (expand_vec_perm_var): Update vec_perm_builder constructor.
13622         (expand_mult_highpart): Use vec_perm_builder instead of
13623         auto_vec_perm_indices.
13624         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13625         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
13626         or double series encoding as appropriate.
13627         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13628         vec_perm_indices instead of auto_vec_perm_indices.
13629         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13630         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13631         (vect_permute_store_chain): Likewise.
13632         (vect_grouped_load_supported): Likewise.
13633         (vect_permute_load_chain): Likewise.
13634         (vect_shift_permute_load_chain): Likewise.
13635         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13636         (vect_transform_slp_perm_load): Likewise.
13637         (vect_schedule_slp_instance): Likewise.
13638         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13639         (vectorizable_mask_load_store): Likewise.
13640         (vectorizable_bswap): Likewise.
13641         (vectorizable_store): Likewise.
13642         (vectorizable_load): Likewise.
13643         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13644         vec_perm_indices instead of auto_vec_perm_indices.  Use
13645         tree_to_vec_perm_builder to read the vector from a tree.
13646         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13647         vec_perm_builder instead of a vec_perm_indices.
13648         (have_whole_vector_shift): Use vec_perm_builder and
13649         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
13650         truncation to calc_vec_perm_mask_for_shift.
13651         (vect_create_epilog_for_reduction): Likewise.
13652         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13653         from auto_vec_perm_indices to vec_perm_indices.
13654         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13655         instead of changing individual elements.
13656         (aarch64_vectorize_vec_perm_const): Use new_vector to install
13657         the vector in d.perm.
13658         * config/arm/arm.c (expand_vec_perm_d::perm): Change
13659         from auto_vec_perm_indices to vec_perm_indices.
13660         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13661         instead of changing individual elements.
13662         (arm_vectorize_vec_perm_const): Use new_vector to install
13663         the vector in d.perm.
13664         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13665         Update vec_perm_builder constructor.
13666         (rs6000_expand_interleave): Likewise.
13667         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13668         (rs6000_expand_interleave): Likewise.
13670 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13672         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13673         to qimode could truncate the indices.
13674         * optabs.c (expand_vec_perm_var): Likewise.
13676 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13678         * Makefile.in (OBJS): Add vec-perm-indices.o.
13679         * vec-perm-indices.h: New file.
13680         * vec-perm-indices.c: Likewise.
13681         * target.h (vec_perm_indices): Replace with a forward class
13682         declaration.
13683         (auto_vec_perm_indices): Move to vec-perm-indices.h.
13684         * optabs.h: Include vec-perm-indices.h.
13685         (expand_vec_perm): Delete.
13686         (selector_fits_mode_p, expand_vec_perm_var): Declare.
13687         (expand_vec_perm_const): Declare.
13688         * target.def (vec_perm_const_ok): Replace with...
13689         (vec_perm_const): ...this new hook.
13690         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13691         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13692         * doc/tm.texi: Regenerate.
13693         * optabs.def (vec_perm_const): Delete.
13694         * doc/md.texi (vec_perm_const): Likewise.
13695         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13696         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13697         expand_vec_perm for constant permutation vectors.  Assert that
13698         the mode of variable permutation vectors is the integer equivalent
13699         of the mode that is being permuted.
13700         * optabs-query.h (selector_fits_mode_p): Declare.
13701         * optabs-query.c: Include vec-perm-indices.h.
13702         (selector_fits_mode_p): New function.
13703         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13704         is defined, instead of checking whether the vec_perm_const_optab
13705         exists.  Use targetm.vectorize.vec_perm_const instead of
13706         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
13707         fit in the vector mode before using a variable permute.
13708         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13709         vec_perm_indices instead of an rtx.
13710         (expand_vec_perm): Replace with...
13711         (expand_vec_perm_const): ...this new function.  Take the selector
13712         as a vec_perm_indices rather than an rtx.  Also take the mode of
13713         the selector.  Update call to shift_amt_for_vec_perm_mask.
13714         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13715         Use vec_perm_indices::new_expanded_vector to expand the original
13716         selector into bytes.  Check whether the indices fit in the vector
13717         mode before using a variable permute.
13718         (expand_vec_perm_var): Make global.
13719         (expand_mult_highpart): Use expand_vec_perm_const.
13720         * fold-const.c: Includes vec-perm-indices.h.
13721         * tree-ssa-forwprop.c: Likewise.
13722         * tree-vect-data-refs.c: Likewise.
13723         * tree-vect-generic.c: Likewise.
13724         * tree-vect-loop.c: Likewise.
13725         * tree-vect-slp.c: Likewise.
13726         * tree-vect-stmts.c: Likewise.
13727         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13728         Delete.
13729         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13730         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13731         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13732         (aarch64_vectorize_vec_perm_const): ...this new function.
13733         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13734         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13735         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13736         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13737         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13738         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13739         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13740         into...
13741         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
13742         check for NEON modes.
13743         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13744         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13745         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13746         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13747         into...
13748         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
13749         the old VEC_PERM_CONST conditions.
13750         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13751         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13752         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13753         (ia64_vectorize_vec_perm_const_ok): Merge into...
13754         (ia64_vectorize_vec_perm_const): ...this new function.
13755         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13756         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13757         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13758         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13759         * config/mips/mips.c (mips_expand_vec_perm_const)
13760         (mips_vectorize_vec_perm_const_ok): Merge into...
13761         (mips_vectorize_vec_perm_const): ...this new function.
13762         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13763         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13764         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13765         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13766         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13767         (rs6000_expand_vec_perm_const): Delete.
13768         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13769         Delete.
13770         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13771         (altivec_expand_vec_perm_const_le): Take each operand individually.
13772         Operate on constant selectors rather than rtxes.
13773         (altivec_expand_vec_perm_const): Likewise.  Update call to
13774         altivec_expand_vec_perm_const_le.
13775         (rs6000_expand_vec_perm_const): Delete.
13776         (rs6000_vectorize_vec_perm_const_ok): Delete.
13777         (rs6000_vectorize_vec_perm_const): New function.
13778         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13779         an element count and rtx array.
13780         (rs6000_expand_extract_even): Update call accordingly.
13781         (rs6000_expand_interleave): Likewise.
13782         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13783         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13784         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13785         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13786         (rs6000_expand_vec_perm_const): Delete.
13787         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13788         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13789         (altivec_expand_vec_perm_const_le): Take each operand individually.
13790         Operate on constant selectors rather than rtxes.
13791         (altivec_expand_vec_perm_const): Likewise.  Update call to
13792         altivec_expand_vec_perm_const_le.
13793         (rs6000_expand_vec_perm_const): Delete.
13794         (rs6000_vectorize_vec_perm_const_ok): Delete.
13795         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
13796         reference to the SPE evmerge intructions.
13797         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13798         an element count and rtx array.
13799         (rs6000_expand_extract_even): Update call accordingly.
13800         (rs6000_expand_interleave): Likewise.
13801         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13802         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13803         new function.
13804         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13806 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13808         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13809         vector mode and that that mode matches the mode of the data
13810         being permuted.
13811         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13812         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
13813         directly using expand_vec_perm_1 when forcing selectors into
13814         registers.
13815         (expand_vec_perm_var): New function, split out from expand_vec_perm.
13817 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13819         * optabs-query.h (can_vec_perm_p): Delete.
13820         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13821         * optabs-query.c (can_vec_perm_p): Split into...
13822         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13823         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13824         particular selector is valid.
13825         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13826         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13827         (vect_grouped_load_supported): Likewise.
13828         (vect_shift_permute_load_chain): Likewise.
13829         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13830         (vect_transform_slp_perm_load): Likewise.
13831         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13832         (vectorizable_bswap): Likewise.
13833         (vect_gen_perm_mask_checked): Likewise.
13834         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
13835         implementations of variable permutation vectors into account
13836         when deciding which selector to use.
13837         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13838         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13839         with a false third argument.
13840         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13841         to test whether the constant selector is valid and can_vec_perm_var_p
13842         to test whether a variable selector is valid.
13844 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13846         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13847         * optabs-query.c (can_vec_perm_p): Likewise.
13848         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13849         instead of vec_perm_indices.
13850         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13851         (vect_gen_perm_mask_checked): Likewise,
13852         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13853         (vect_gen_perm_mask_checked): Likewise,
13855 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
13857         * optabs-query.h (qimode_for_vec_perm): Declare.
13858         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13859         (qimode_for_vec_perm): ...this new function.
13860         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13862 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13864         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13865         does not have a conditional at the top.
13867 2018-01-02  Richard Biener  <rguenther@suse.de>
13869         * ipa-inline.c (big_speedup_p): Fix expression.
13871 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13873         PR target/81616
13874         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13875         for generic 4->6.
13877 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
13879         PR target/81616
13880         Generic tuning.
13881         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13882         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13883         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13884         cond_taken_branch_cost 3->4.
13886 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
13888         PR tree-optimization/83581
13889         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13890         TODO_cleanup_cfg if any changes have been made.
13892         PR middle-end/83608
13893         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13894         convert_modes if target mode has the right side, but different mode
13895         class.
13897         PR middle-end/83609
13898         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13899         last argument when extracting from CONCAT.  If either from_real or
13900         from_imag is NULL, use expansion through memory.  If result is not
13901         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13902         the parts directly to inner mode, if even that fails, use expansion
13903         through memory.
13905         PR middle-end/83623
13906         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13907         check for bswap in mode rather than HImode and use that in expand_unop
13908         too.
13910 Copyright (C) 2018 Free Software Foundation, Inc.
13912 Copying and distribution of this file, with or without modification,
13913 are permitted in any medium without royalty provided the copyright
13914 notice and this notice are preserved.