[patch AArch64] Do not perform a vector splat for vector initialisation if it is...
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
2
3         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
4         generation for cases where splatting a value is not useful.
5         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
6         across a vec_duplicate and a paradoxical subreg forming a vector
7         mode to a vec_concat.
8
9 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
10
11         * combine.c (simplify_set): Do not transform subregs to zero_extends
12         if the destination is not a scalar int mode.
13
14 2017-12-21  Eric Botcazou  <ebotcazou@adacore.com>
15
16         PR c++/82872
17         * convert.c (convert_to_integer_1) <POINTER_TYPE>: Do not return the
18         shared zero if the input has overflowed.
19
20 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21
22         * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
23         support for Cortex-A55 and Cortex-A75.
24
25 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26
27         * common/config/arm/arm-common.c (compare_opt_names): Add function
28         comment.  Use strcmp instead of manual loop.
29
30 2017-12-21  Martin Liska  <mliska@suse.cz>
31
32         PR gcov-profile/83509
33         * gcov-dump.c (dump_gcov_file): Do not read info about
34         support_unexecuted_blocks for gcda files.
35
36 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
37
38         PR rtl-optimization/82973
39         * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
40         (valid_for_const_vector_p): ... this.
41         * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
42         (valid_for_const_vector_p): ... this.  Adjust function comment.
43         (gen_vec_duplicate): Adjust caller.
44         * optabs.c (expand_vector_broadcast): Likewise.
45         * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
46         CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
47         constant.
48         (simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
49         instead of GET_CODE == CONST_FIXED.
50         (simplify_subreg): Use CONST_FIXED_P macro instead of
51         GET_CODE == CONST_FIXED.
52
53         PR target/83488
54         * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
55         -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
56         -mclzero and -mmwaitx entries from isa_opts to isa_opts2.
57         (ix86_option_override_internal): Adjust for
58         OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
59         and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
60         (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
61         (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
62         Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
63         and OPTION_MASK_ISA_CLZERO builtins.  Use def_builtin instead of
64         def_builtin2 for CET builtins.
65         (ix86_expand_builtin): Remove bdesc_special_args2 handling.  Fix
66         up formatting in IX86_BUILTIN_RDPID code.
67         * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
68         section to SPECIAL_ARGS and from ARGS2 section to ARGS.
69         * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
70         ix86_isa_flags2 to ix86_isa_flags.
71         (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
72         ix86_isa_flags2.
73         * config/i386/i386-c.c (ix86_target_macros_internal): Check for
74         OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
75         Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
76         of isa_flag2.
77         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
78         Or in OPTION_MASK_ISA_AVX512F_SET.
79         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
80         OPTION_MASK_ISA_AVX512VBMI2_UNSET.
81         (ix86_handle_option): Adjust for
82         OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
83         and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
84
85 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
86             Alan Hayward  <alan.hayward@arm.com>
87             David Sherwood  <david.sherwood@arm.com>
88
89         * tree-data-ref.h (prune_runtime_alias_test_list): Take the
90         factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
91         * tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
92         Track polynomial offsets.
93
94 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
95             Alan Hayward  <alan.hayward@arm.com>
96             David Sherwood  <david.sherwood@arm.com>
97
98         * tree-vect-data-refs.c (vect_compute_data_ref_alignment):
99         Treat drb->init as a poly_int.  Fail if its misalignment wrt
100         vector_alignment isn't known.
101
102 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
103             Alan Hayward  <alan.hayward@arm.com>
104             David Sherwood  <david.sherwood@arm.com>
105
106         * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
107         field.
108         (LOOP_VINFO_VERSIONING_THRESHOLD): New macro
109         (vect_loop_versioning): Take the loop versioning threshold as a
110         separate parameter.
111         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
112         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
113         versioning_threshold.
114         (vect_analyze_loop_2): Compute the loop versioning threshold
115         whenever loop versioning is needed, and store it in the new
116         field rather than combining it with the cost model threshold.
117         (vect_transform_loop): Update call to vect_loop_versioning.
118         Try to combine the loop versioning and cost thresholds here.
119
120 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
121             Alan Hayward  <alan.hayward@arm.com>
122             David Sherwood  <david.sherwood@arm.com>
123
124         * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
125         poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
126         * tree-loop-distribution.c (classify_builtin_st): Update accordingly.
127         * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
128         an unsigned HOST_WIDE_INT to a poly_uint64_pod.
129         (group_compare_offset): Update accordingly.
130         (split_small_address_groups_p): Likewise.
131         (record_use): Take addr_offset as a poly_uint64 rather than
132         an unsigned HOST_WIDE_INT.
133         (strip_offset): Return the offset as a poly_uint64 rather than
134         an unsigned HOST_WIDE_INT.
135         (record_group_use, split_address_groups): Track polynomial offsets.
136         (add_iv_candidate_for_use): Likewise.
137         (addr_offset_valid_p): Take the offset as a poly_int64 rather
138         than a HOST_WIDE_INT.
139         (strip_offset_1): Return the offset as a poly_int64 rather than
140         a HOST_WIDE_INT.
141
142 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
143             Alan Hayward  <alan.hayward@arm.com>
144             David Sherwood  <david.sherwood@arm.com>
145
146         * tree.h (get_binfo_at_offset): Take the offset as a poly_int64
147         rather than a HOST_WIDE_INT.
148         * tree.c (get_binfo_at_offset): Likewise.
149
150 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
151             Alan Hayward  <alan.hayward@arm.com>
152             David Sherwood  <david.sherwood@arm.com>
153
154         * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
155         rather than a HOST_WIDE_INT.
156         * tree-sra.c (build_ref_for_offset): Likewise.
157
158 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
159             Alan Hayward  <alan.hayward@arm.com>
160             David Sherwood  <david.sherwood@arm.com>
161
162         * fold-const.h (mem_ref_offset): Return a poly_offset_int rather
163         than an offset_int.
164         * tree.c (mem_ref_offset): Likewise.
165         (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
166         * builtins.c (get_object_alignment_2): Likewise.
167         * expr.c (get_inner_reference, expand_expr_real_1): Likewise.
168         * gimple-fold.c (get_base_constructor): Likewise.
169         * gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
170         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
171         Likewise.
172         * ipa-polymorphic-call.c
173         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
174         * ipa-prop.c (compute_complex_assign_jump_func): Likewise.
175         (get_ancestor_addr_info): Likewise.
176         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
177         * match.pd: Likewise.
178         * tree-data-ref.c (dr_analyze_innermost): Likewise.
179         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
180         * tree-eh.c (tree_could_trap_p): Likewise.
181         * tree-object-size.c (addr_object_size): Likewise.
182         * tree-ssa-address.c (copy_ref_info): Likewise.
183         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
184         (indirect_refs_may_alias_p): Likewise.
185         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
186         * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
187         (non_rewritable_mem_ref_base): Likewise.
188         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
189         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
190         * varasm.c (decode_addr_const): Likewise.
191
192 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
193             Alan Hayward  <alan.hayward@arm.com>
194             David Sherwood  <david.sherwood@arm.com>
195
196         * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
197         offsets for MEM_REFs.
198
199 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
200             Alan Hayward  <alan.hayward@arm.com>
201             David Sherwood  <david.sherwood@arm.com>
202
203         * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
204         as a poly_uint64 rather than an unsigned int.
205         * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
206
207 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
208             Alan Hayward  <alan.hayward@arm.com>
209             David Sherwood  <david.sherwood@arm.com>
210
211         * varasm.c (addr_const::offset): Change from HOST_WIDE_INT
212         to poly_int64.
213         (decode_addr_const): Update accordingly.
214
215 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
216             Alan Hayward  <alan.hayward@arm.com>
217             David Sherwood  <david.sherwood@arm.com>
218
219         * tree.h (bit_field_size, bit_field_offset): New functions.
220         * hsa-gen.c (gen_hsa_addr): Use them.
221         * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
222         (simplify_vector_constructor): Likewise.
223         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
224         * tree-cfg.c (verify_expr): Require the sizes and offsets of a
225         BIT_FIELD_REF to be poly_uint64s rather than uhwis.
226         * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
227         tree_fits_uhwi_p.
228
229 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
230             Alan Hayward  <alan.hayward@arm.com>
231             David Sherwood  <david.sherwood@arm.com>
232
233         * expr.h (emit_group_load, emit_group_load_into_temps)
234         (emit_group_store): Take the size as a poly_int64 rather than an int.
235         * expr.c (emit_group_load_1, emit_group_load): Likewise.
236         (emit_group_load_into_temp, emit_group_store): Likewise.
237
238 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
239             Alan Hayward  <alan.hayward@arm.com>
240             David Sherwood  <david.sherwood@arm.com>
241
242         * ira-int.h (ira_spilled_reg_stack_slot::width): Change from
243         an unsigned int to a poly_uint64.
244         * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
245         sizes as poly_uint64s rather than unsigned ints.
246         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
247         Likewise.
248
249 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
250             Alan Hayward  <alan.hayward@arm.com>
251             David Sherwood  <david.sherwood@arm.com>
252
253         * lra-constraints.c (emit_inc): Change inc_amount from an int
254         to a poly_int64.
255
256 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
257             Alan Hayward  <alan.hayward@arm.com>
258             David Sherwood  <david.sherwood@arm.com>
259
260         * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
261         to a poly_uint64.
262         (add_stack_var, stack_var_cmp, partition_stack_vars)
263         (dump_stack_var_partition): Update accordingly.
264         (alloc_stack_frame_space): Take the size as a poly_int64 rather
265         than a HOST_WIDE_INT.
266         (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
267         (defer_stack_allocation, estimated_stack_frame_size): Likewise.
268         (account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
269         rather than a HOST_WIDE_INT.
270
271 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
272             Alan Hayward  <alan.hayward@arm.com>
273             David Sherwood  <david.sherwood@arm.com>
274
275         * target.def (return_pops_args): Treat both the input and output
276         sizes as poly_int64s rather than HOST_WIDE_INTS.
277         * targhooks.h (default_return_pops_args): Update accordingly.
278         * targhooks.c (default_return_pops_args): Likewise.
279         * doc/tm.texi: Regenerate.
280         * emit-rtl.h (incoming_args): Change pops_args, size and
281         outgoing_args_size from int to poly_int64_pod.
282         * function.h (expr_status): Change x_pending_stack_adjust and
283         x_stack_pointer_delta from int to poly_int64.
284         (args_size::constant): Change from HOST_WIDE_INT to poly_int64.
285         (ARGS_SIZE_RTX): Update accordingly.
286         * calls.c (highest_outgoing_arg_in_use): Change from int to
287         unsigned int.
288         (stack_usage_watermark, stored_args_watermark): New variables.
289         (stack_region_maybe_used_p, mark_stack_region_used): New functions.
290         (emit_call_1): Change the stack_size and rounded_stack_size
291         parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
292         as a poly_int64.
293         (save_fixed_argument_area): Check stack_usage_watermark.
294         (initialize_argument_information): Change old_pending_adj from
295         a HOST_WIDE_INT * to a poly_int64_pod *.
296         (compute_argument_block_size): Return the size as a poly_int64
297         rather than an int.
298         (finalize_must_preallocate): Track polynomial argument sizes.
299         (compute_argument_addresses): Likewise.
300         (internal_arg_pointer_based_exp): Track polynomial offsets.
301         (mem_overlaps_already_clobbered_arg_p): Rename to...
302         (mem_might_overlap_already_clobbered_arg_p): ...this and take the
303         size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
304         Check stored_args_used_watermark.
305         (load_register_parameters): Update accordingly.
306         (check_sibcall_argument_overlap_1): Likewise.
307         (combine_pending_stack_adjustment_and_call): Take the unadjusted
308         args size as a poly_int64 rather than an int.  Return a bool
309         indicating whether the optimization was possible and return
310         the new adjustment by reference.
311         (check_sibcall_argument_overlap): Track polynomail argument sizes.
312         Update stored_args_watermark.
313         (can_implement_as_sibling_call_p): Handle polynomial argument sizes.
314         (expand_call): Likewise.  Maintain stack_usage_watermark and
315         stored_args_watermark.  Update calls to
316         combine_pending_stack_adjustment_and_call.
317         (emit_library_call_value_1): Handle polynomial argument sizes.
318         Call stack_region_maybe_used_p and mark_stack_region_used.
319         Maintain stack_usage_watermark.
320         (store_one_arg): Likewise.  Update call to
321         mem_overlaps_already_clobbered_arg_p.
322         * config/arm/arm.c (arm_output_function_prologue): Add a cast to
323         HOST_WIDE_INT.
324         * config/avr/avr.c (avr_outgoing_args_size): Likewise.
325         * config/microblaze/microblaze.c (microblaze_function_prologue):
326         Likewise.
327         * config/cr16/cr16.c (cr16_return_pops_args): Update for new
328         TARGET_RETURN_POPS_ARGS interface.
329         (cr16_compute_frame, cr16_initial_elimination_offset): Add casts
330         to HOST_WIDE_INT.
331         * config/ft32/ft32.c (ft32_compute_frame): Likewise.
332         * config/i386/i386.c (ix86_return_pops_args): Update for new
333         TARGET_RETURN_POPS_ARGS interface.
334         (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
335         * config/moxie/moxie.c (moxie_compute_frame): Likewise.
336         * config/m68k/m68k.c (m68k_return_pops_args): Update for new
337         TARGET_RETURN_POPS_ARGS interface.
338         * config/vax/vax.c (vax_return_pops_args): Likewise.
339         * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
340         (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
341         * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
342         * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
343         * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
344         * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
345         * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
346         * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
347         * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
348         * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
349         and x_stack_pointer_delta from int to poly_int64.
350         * dojump.c (do_pending_stack_adjust): Update accordingly.
351         * explow.c (allocate_dynamic_stack_space): Handle polynomial
352         stack_pointer_deltas.
353         * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
354         (pad_to_arg_alignment): Track polynomial offsets.
355         (assign_parm_find_stack_rtl): Likewise.
356         (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
357         * toplev.c (output_stack_usage): Update reference to
358         current_function_pushed_stack_size.
359
360 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
361             Alan Hayward  <alan.hayward@arm.com>
362             David Sherwood  <david.sherwood@arm.com>
363
364         * function.c (in_arg_offset, var_offset, dynamic_offset)
365         (out_arg_offset, cfa_offset): Change from int to poly_int64.
366         (instantiate_new_reg): Return the new offset as a poly_int64_pod
367         rather than a HOST_WIDE_INT.
368         (instantiate_virtual_regs_in_rtx): Track polynomial offsets.
369         (instantiate_virtual_regs_in_insn): Likewise.
370
371 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
372             Alan Hayward  <alan.hayward@arm.com>
373             David Sherwood  <david.sherwood@arm.com>
374
375         * rtl.h (get_args_size, add_args_size_note): New functions.
376         (find_args_size_adjust): Return a poly_int64 rather than a
377         HOST_WIDE_INT.
378         (fixup_args_size_notes): Likewise.  Make the same change to the
379         end_args_size parameter.
380         * rtlanal.c (get_args_size, add_args_size_note): New functions.
381         * builtins.c (expand_builtin_trap): Use add_args_size_note.
382         * calls.c (emit_call_1): Likewise.
383         * explow.c (adjust_stack_1): Likewise.
384         * cfgcleanup.c (old_insns_match_p): Update use of
385         find_args_size_adjust.
386         * combine.c (distribute_notes): Track polynomial arg sizes.
387         * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
388         end_true_args_size, beg_delay_args_size and end_delay_args_size
389         from HOST_WIDE_INT to poly_int64.
390         (add_cfi_args_size): Take the args_size as a poly_int64 rather
391         than a HOST_WIDE_INT.
392         (notice_args_size, notice_eh_throw, maybe_record_trace_start)
393         (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
394         polynomial arg sizes.
395         * emit-rtl.c (try_split): Use get_args_size.
396         * recog.c (peep2_attempt): Likewise.
397         * reload1.c (reload_as_needed): Likewise.
398         * expr.c (find_args_size_adjust): Return the adjustment as a
399         poly_int64 rather than a HOST_WIDE_INT.
400         (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
401         to a poly_int64 and change the return type in the same way.
402         (emit_single_push_insn): Track polynomial arg sizes.
403
404 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
405             Alan Hayward  <alan.hayward@arm.com>
406             David Sherwood  <david.sherwood@arm.com>
407
408         * expr.h (push_block, emit_push_insn): Change the "extra" parameter
409         from HOST_WIDE_INT to poly_int64.
410         * expr.c (push_block, emit_push_insn): Likewise.
411
412 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
413             Alan Hayward  <alan.hayward@arm.com>
414             David Sherwood  <david.sherwood@arm.com>
415
416         * function.h (frame_space): Change start and length from HOST_WIDE_INT
417         to poly_int64.
418         (get_frame_size): Return the size as a poly_int64 rather than a
419         HOST_WIDE_INT.
420         (frame_offset_overflow): Take the offset as a poly_int64 rather
421         than a HOST_WIDE_INT.
422         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
423         (assign_stack_temp): Likewise for the size.
424         * function.c (get_frame_size): Return a poly_int64 rather than
425         a HOST_WIDE_INT.
426         (frame_offset_overflow): Take the offset as a poly_int64 rather
427         than a HOST_WIDE_INT.
428         (try_fit_stack_local): Take the start, length and size as poly_int64s
429         rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
430         rather than a HOST_WIDE_INT.
431         (add_frame_space): Take the start and end as poly_int64s rather than
432         HOST_WIDE_INTs.
433         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
434         (assign_stack_temp): Likewise for the size.
435         (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
436         to poly_int64.
437         (find_temp_slot_from_address): Handle polynomial offsets.
438         (combine_temp_slots): Likewise.
439         * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
440         to poly_int64.
441         * cfgexpand.c (alloc_stack_frame_space): Return the offset as a
442         poly_int64 rather than a HOST_WIDE_INT.
443         (expand_one_stack_var_at): Take the offset as a poly_int64 rather
444         than a HOST_WIDE_INT.
445         (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
446         polynomial frame offsets.
447         * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
448         as a poly_int64 rather than an int.
449         * config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
450         * config/v850/v850-protos.h (compute_frame_size): Likewise.
451         * config/v850/v850.c (compute_frame_size): Likewise.
452         * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
453         * config/xtensa/xtensa.c (compute_frame_size): Likewise.
454         * config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
455         * config/pa/pa.c (pa_compute_frame_size): Likewise.
456         * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
457         rather than a HOST_WIDE_INT.
458         * explow.c (get_dynamic_stack_base): Likewise.
459         * final.c (final_start_function): Use the constant lower bound
460         of the frame size for -Wframe-larger-than.
461         * ira.c (do_reload): Adjust for new get_frame_size return type.
462         * lra.c (lra): Likewise.
463         * reload1.c (reload): Likewise.
464         * config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
465         * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
466         * rtlanal.c (get_initial_register_offset): Return the offset as
467         a poly_int64 rather than a HOST_WIDE_INT.
468
469 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
470             Alan Hayward  <alan.hayward@arm.com>
471             David Sherwood  <david.sherwood@arm.com>
472
473         * reload1.c (elim_table): Change initial_offset, offset and
474         previous_offset from HOST_WIDE_INT to poly_int64_pod.
475         (offsets_at): Change the target array's element type from
476         HOST_WIDE_INT to poly_int64_pod.
477         (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
478         (elimination_costs_in_insn, update_eliminable_offsets)
479         (verify_initial_elim_offsets, set_offsets_for_label)
480         (init_eliminable_invariants): Update after above changes.
481
482 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
483             Alan Hayward  <alan.hayward@arm.com>
484             David Sherwood  <david.sherwood@arm.com>
485
486         * reload.h (reload::inc): Change from an int to a poly_int64_pod.
487         * reload.c (combine_reloads, debug_reload_to_stream): Likewise.
488         (decomposition): Change start and end from HOST_WIDE_INT
489         to poly_int64_pod.
490         (decompose, immune_p): Update accordingly.
491         (find_inc_amount): Return a poly_int64 rather than an int.
492         * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
493         rather than an int.
494
495 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
496             Alan Hayward  <alan.hayward@arm.com>
497             David Sherwood  <david.sherwood@arm.com>
498
499         * tree.h (get_inner_reference): Return the bitsize and bitpos
500         as poly_int64_pods rather than HOST_WIDE_INT.
501         * fold-const.h (ptr_difference_const): Return the pointer difference
502         as a poly_int64_pod rather than a HOST_WIDE_INT.
503         * expr.c (get_inner_reference): Return the bitsize and bitpos
504         as poly_int64_pods rather than HOST_WIDE_INT.
505         (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
506         offsets and sizes.
507         * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
508         rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
509         (optimize_bit_field_compare): Update call to get_inner_reference.
510         (decode_field_reference): Likewise.
511         (fold_unary_loc): Track polynomial offsets and sizes.
512         (split_address_to_core_and_offset): Return the bitpos as a
513         poly_int64_pod rather than a HOST_WIDE_INT.
514         (ptr_difference_const): Likewise for the pointer difference.
515         * asan.c (instrument_derefs): Track polynomial offsets and sizes.
516         * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
517         * dbxout.c (dbxout_expand_expr): Likewise.
518         * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
519         (loc_list_from_tree_1, fortran_common): Likewise.
520         * gimple-laddress.c (pass_laddress::execute): Likewise.
521         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
522         * gimplify.c (gimplify_scan_omp_clauses): Likewise.
523         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
524         * tree-affine.c (tree_to_aff_combination): Likewise.
525         (get_inner_reference_aff): Likewise.
526         * tree-data-ref.c (split_constant_offset_1): Likewise.
527         (dr_analyze_innermost): Likewise.
528         * tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
529         * tree-sra.c (ipa_sra_check_caller): Likewise.
530         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
531         * ubsan.c (maybe_instrument_pointer_overflow): Likewise.
532         (instrument_bool_enum_load, instrument_object_size): Likewise.
533         * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
534         to get_inner_reference.
535         * hsa-gen.c (gen_hsa_addr): Likewise.
536         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
537         * tsan.c (instrument_expr): Likewise.
538         * match.pd: Update call to ptr_difference_const.
539
540 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
541             Alan Hayward  <alan.hayward@arm.com>
542             David Sherwood  <david.sherwood@arm.com>
543
544         * fold-const.c (fold_comparison): Track sizes and offsets as
545         poly_int64s rather than HOST_WIDE_INTs when folding address
546         comparisons.
547
548 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
549             Alan Hayward  <alan.hayward@arm.com>
550             David Sherwood  <david.sherwood@arm.com>
551
552         * expr.h (get_bit_range): Return the bitstart and bitend as
553         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
554         as a poly_int64 rather than a HOST_WIDE_INT.
555         * expr.c (get_bit_range): Likewise.
556         (expand_assignment): Update call accordingly.
557         * fold-const.c (optimize_bit_field_compare): Likewise.
558
559 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
560             Alan Hayward  <alan.hayward@arm.com>
561             David Sherwood  <david.sherwood@arm.com>
562
563         * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
564         (aarch64_legitimate_address_p): Use it instead of an rtx code,
565         as an optional final parameter.
566         * config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
567         (aarch64_legitimate_address_p): Likewise.
568         (aarch64_print_address_internal): Take an aarch64_addr_query_type
569         instead of an rtx code.
570         (aarch64_address_valid_for_prefetch_p): Update calls accordingly.
571         (aarch64_legitimate_address_hook_p): Likewise.
572         (aarch64_print_ldpstp_address): Likewise.
573         (aarch64_print_operand_address): Likewise.
574         (aarch64_address_cost): Likewise.
575         * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
576         * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
577         (aarch64_mem_pair_lanes_operand): Likewise.
578
579 2017-12-20  Richard Biener  <rguenther@suse.de>
580
581         * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
582         update_stmt_if_modified.
583
584 2017-12-20  Wilco Dijkstra  <wdijkstr@arm.com>
585
586         PR tree-optimization/83491
587         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
588         before walking uses.  Improve coding style and comments.
589
590 2017-12-20  Tom de Vries  <tom@codesourcery.com>
591
592         * gimple-fold.c (fold_internal_goacc_dim): Simplify.
593
594 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
595
596         PR ipa/83506
597         * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
598         todo_flags_finish.
599         (pass_ipa_free_fn_summary): Add small_p private data member,
600         initialize to false in the ctor.
601         (pass_ipa_free_fn_summary::clone,
602         pass_ipa_free_fn_summary::set_pass_param,
603         pass_ipa_free_fn_summary::gate): New methods.
604         (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
605         | TODO_dump_symtab if small_p.
606         * passes.def: Add true parm for the existing pass_ipa_free_fn_summary
607         entry and add another instance of the pass with false parm after
608         ipa-pure-const.
609         * ipa-pure-const.c (pass_ipa_pure_const): Don't call
610         ipa_free_fn_summary here.
611
612 2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
613
614         * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
615
616 2017-12-20  Martin Sebor  <msebor@redhat.com>
617
618         PR testsuite/83131
619         * builtins.c (expand_builtin_strlen): Use get_callee_fndecl.
620         (expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
621         (expand_builtin_strncmp): Same.
622
623 2017-12-20  Alexandre Oliva <aoliva@redhat.com>
624
625         PR bootstrap/83396
626         * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
627         allowed debug stmts before labels.
628         (expand_gimple_basic_block): Likewise.
629         * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise.
630         * gimple-iterator.h (gsi_after_labels): Likewise.
631         * tree-cfgcleanup (remove_forwarder_block): Likewise, but
632         rename reused variable, and simplify using gsi_move_before.
633         * tree-ssa-tail-merge.c (find_duplicate): Likewise.
634         * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise.
635         (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise.
636         (gimple_verify_flow_info, gimple_block_label): Likewise.
637         (make_blocks): Move debug markers after adjacent labels.
638         * cfgrtl.c (skip_insns_after_block): Revert SFN changes that
639         allowed debug insns outside blocks.
640         * df-scan.c (df_insn_delete): Likewise.
641         * lra-constraints.c (update_ebb_live_info): Likewise.
642         * var-tracking.c (get_first_insn, vt_emit_notes): Likewise.
643         (vt_initialize, delete_vta_debug_insns): Likewise.
644         (reemit_marker_as_note): Drop BB parm.  Adjust callers.
645
646 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
647             Alan Hayward  <alan.hayward@arm.com>
648             David Sherwood  <david.sherwood@arm.com>
649
650         * poly-int-types.h (round_down_to_byte_boundary): New macro.
651         (round_up_to_byte_boundary): Likewise.
652         * expr.h (get_bit_range): Add temporary shim.
653         * gimple-ssa-store-merging.c (store_operand_info): Change the
654         bitsize, bitpos, bitregion_start and bitregion_end fields from
655         unsigned HOST_WIDE_INT to poly_uint64.
656         (merged_store_group): Likewise load_align_base.
657         (compatible_load_p, compatible_load_p): Update accordingly.
658         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
659         (split_group, imm_store_chain_info::output_merged_store): Likewise.
660         (mem_valid_for_store_merging): Return the bitsize, bitpos,
661         bitregion_start and bitregion_end as poly_uint64s rather than
662         unsigned HOST_WIDE_INTs.  Track polynomial offsets internally.
663         (handled_load): Take the bitsize, bitpos,
664         bitregion_start and bitregion_end as poly_uint64s rather than
665         unsigned HOST_WIDE_INTs.
666         (pass_store_merging::process_store): Update call to
667         mem_valid_for_store_merging.
668
669 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
670             Alan Hayward  <alan.hayward@arm.com>
671             David Sherwood  <david.sherwood@arm.com>
672
673         * builtins.c (get_object_alignment_2): Track polynomial offsets
674         and sizes.  Update the alignment handling.
675
676 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
677             Alan Hayward  <alan.hayward@arm.com>
678             David Sherwood  <david.sherwood@arm.com>
679
680         * tree.h (get_inner_reference): Add a version that returns the
681         offset and size as poly_int64_pods rather than HOST_WIDE_INTs.
682         * cfgexpand.c (expand_debug_expr): Track polynomial offsets.  Simply
683         the case in which bitpos is not associated with the first byte.
684
685 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
686             Alan Hayward  <alan.hayward@arm.com>
687             David Sherwood  <david.sherwood@arm.com>
688
689         * tree-affine.h (get_inner_reference_aff): Return the size as a
690         poly_widest_int.
691         * tree-affine.c (get_inner_reference_aff): Likewise.
692         * tree-data-ref.c (dr_may_alias_p): Update accordingly.
693         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
694
695 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
696             Alan Hayward  <alan.hayward@arm.com>
697             David Sherwood  <david.sherwood@arm.com>
698
699         * fold-const.c (pointer_may_wrap_p): Take the offset as a
700         HOST_WIDE_INT rather than a poly_int64.
701
702 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
703             Alan Hayward  <alan.hayward@arm.com>
704             David Sherwood  <david.sherwood@arm.com>
705
706         * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from
707         HOST_WIDE_INT to poly_int64_pod.
708         (perform_symbolic_merge): Update accordingly.
709         (bswap_replace): Likewise.
710
711 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
712             Alan Hayward  <alan.hayward@arm.com>
713             David Sherwood  <david.sherwood@arm.com>
714
715         * tree-affine.h (aff_tree::offset): Change from widest_int
716         to poly_widest_int.
717         (wide_int_ext_for_comb): Delete.
718         (aff_combination_const, aff_comb_cannot_overlap_p): Take the
719         constants as poly_widest_int rather than widest_int.
720         (aff_combination_constant_multiple_p): Return the multiplier
721         as a poly_widest_int.
722         (aff_combination_zero_p, aff_combination_singleton_var_p): Handle
723         polynomial offsets.
724         * tree-affine.c (wide_int_ext_for_comb): Make original widest_int
725         version static and add an overload for poly_widest_int.
726         (aff_combination_const, aff_combination_add_cst)
727         (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take
728         the constants as poly_widest_int rather than widest_int.
729         (tree_to_aff_combination): Generalize INTEGER_CST case to
730         poly_int_tree_p.
731         (aff_combination_to_tree): Track offsets as poly_widest_ints.
732         (aff_combination_add_product, aff_combination_mult): Handle
733         polynomial offsets.
734         (aff_combination_constant_multiple_p): Return the multiplier
735         as a poly_widest_int.
736         * tree-predcom.c (determine_offset): Return the offset as a
737         poly_widest_int.
738         (split_data_refs_to_components, suitable_component_p): Update
739         accordingly.
740         (valid_initializer_p): Update call to
741         aff_combination_constant_multiple_p.
742         * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets.
743         * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step
744         as a poly_int64 rather than a HOST_WIDE_INT.
745         (get_address_cost): Handle polynomial offsets.
746         (iv_elimination_compare_lt): Likewise.
747         (rewrite_use_nonlinear_expr): Likewise.
748
749 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
750             Alan Hayward  <alan.hayward@arm.com>
751             David Sherwood  <david.sherwood@arm.com>
752
753         * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset
754         as a poly_int64_pod rather than a HOST_WIDE_INT.
755         (get_addr_base_and_unit_offset): Likewise.
756         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
757         (get_addr_base_and_unit_offset): Likewise.
758         * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT
759         to poly_int64 in example.
760         * fold-const.c (fold_binary_loc): Update call to
761         get_addr_base_and_unit_offset.
762         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
763         (maybe_canonicalize_mem_ref_addr): Likewise.
764         (gimple_fold_stmt_to_constant_1): Likewise.
765         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
766         Likewise.
767         * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
768         * match.pd: Likewise.
769         * omp-low.c (lower_omp_target): Likewise.
770         * tree-sra.c (build_ref_for_offset): Likewise.
771         (build_debug_ref_for_model): Likewise.
772         * tree-ssa-address.c (maybe_fold_tmr): Likewise.
773         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise.
774         * tree-ssa-ccp.c (optimize_memcpy): Likewise.
775         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
776         (constant_pointer_difference): Likewise.
777         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
778         * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise.
779         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
780         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
781         (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise.
782         (set_ssa_val_to): Likewise.
783         * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr)
784         (maybe_diag_stxncpy_trunc): Likewise.
785         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
786         * tree.c (build_simple_mem_ref_loc): Likewise.
787         (array_at_struct_end_p): Likewise.
788
789 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
790             Alan Hayward  <alan.hayward@arm.com>
791             David Sherwood  <david.sherwood@arm.com>
792
793         * tree-dfa.h (get_ref_base_and_extent): Return the base, size and
794         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
795         (get_ref_base_and_extent_hwi): Declare.
796         * tree-dfa.c (get_ref_base_and_extent): Return the base, size and
797         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
798         (get_ref_base_and_extent_hwi): New function.
799         * cfgexpand.c (expand_debug_expr): Update call to
800         get_ref_base_and_extent.
801         * dwarf2out.c (add_var_loc_to_decl): Likewise.
802         * gimple-fold.c (get_base_constructor): Return the offset as a
803         poly_int64_pod rather than a HOST_WIDE_INT.
804         (fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
805         * ipa-polymorphic-call.c
806         (ipa_polymorphic_call_context::set_by_invariant)
807         (extr_type_from_vtbl_ptr_store): Track polynomial offsets.
808         (ipa_polymorphic_call_context::ipa_polymorphic_call_context)
809         (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
810         rather than get_ref_base_and_extent.
811         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
812         * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
813         (get_ancestor_addr_info, determine_locally_known_aggregate_parts):
814         Likewise.
815         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
816         call to get_ref_base_and_extent.
817         * tree-sra.c (create_access, get_access_for_expr): Likewise.
818         * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
819         (stmt_kills_ref_p): Likewise.
820         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
821         * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
822         Likewise.
823         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
824         Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
825         when calling native_encode_expr.
826         * tree-ssa-structalias.c (get_constraint_for_component_ref): Update
827         call to get_ref_base_and_extent.
828         (do_structure_copy): Use get_ref_base_and_extent_hwi rather than
829         get_ref_base_and_extent.
830         * var-tracking.c (track_expr_p): Likewise.
831
832 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
833             Alan Hayward  <alan.hayward@arm.com>
834             David Sherwood  <david.sherwood@arm.com>
835
836         * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
837         HOST_WIDE_INT to poly_int64_pod.
838         * ipa-param-manipulation.c (ipa_modify_call_arguments): Track
839         polynomail parameter offsets.
840
841 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
842             Alan Hayward  <alan.hayward@arm.com>
843             David Sherwood  <david.sherwood@arm.com>
844
845         * gengtype.c (main): Handle poly_int64_pod.
846         * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
847         (dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
848         (dw_cfa_location::offset, dw_cfa_location::base_offset): Change
849         from HOST_WIDE_INT to poly_int64_pod.
850         * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
851         (copy_cfa): New function.
852         (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
853         (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
854         (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
855         (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
856         (initial_return_save): Treat offsets as poly_ints.
857         (def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
858         offset is nonconstant.
859         (reg_save): Take the offset as a poly_int64.  Fall back to
860         DW_CFA_expression for nonconstant offsets.
861         (queue_reg_save): Take the offset as a poly_int64.
862         * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
863
864 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
865             Alan Hayward  <alan.hayward@arm.com>
866             David Sherwood  <david.sherwood@arm.com>
867
868         * rtl.h (operand_subword, operand_subword_force): Take the offset
869         as a poly_uint64 an unsigned int.
870         * emit-rtl.c (operand_subword, operand_subword_force): Likewise.
871
872 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
873             Alan Hayward  <alan.hayward@arm.com>
874             David Sherwood  <david.sherwood@arm.com>
875
876         * doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
877         'p' format code.  Use INT_LIST rather than SUBREG as the example of
878         a code with an XINT and an XEXP.  Remove the implication that
879         accessing an rtx field using XINT is expected to work.
880         * rtl.def (SUBREG): Change format from "ei" to "ep".
881         * rtl.h (rtunion::rt_subreg): New field.
882         (XCSUBREG): New macro.
883         (SUBREG_BYTE): Use it.
884         (subreg_shape): Change offset from an unsigned int to a poly_uint16.
885         Update constructor accordingly.
886         (subreg_shape::operator ==): Update accordingly.
887         (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
888         than an unsigned int.
889         (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
890         a poly_uint64 rather than an unsigned int.
891         (subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
892         than an unsigned int.
893         (subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
894         (subreg_size_highpart_offset): Return a poly_uint64 rather than
895         an unsigned int.  Take the sizes as poly_uint64s.
896         (subreg_offset_from_lsb): Return a poly_uint64 rather than
897         an unsigned int.  Take the shift as a poly_uint64 rather than
898         an unsigned int.
899         (subreg_regno_offset, subreg_offset_representable_p): Take the offset
900         as a poly_uint64 rather than an unsigned int.
901         (simplify_subreg_regno): Likewise.
902         (byte_lowpart_offset): Return the memory offset as a poly_int64
903         rather than an int.
904         (subreg_memory_offset): Likewise.  Take the subreg offset as a
905         poly_uint64 rather than an unsigned int.
906         (simplify_subreg, simplify_gen_subreg, subreg_get_info)
907         (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
908         poly_uint64 rather than an unsigned int.
909         * rtl.c (rtx_format): Describe 'p' in comment.
910         (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
911         * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
912         offset as a poly_uint64 rather than an unsigned int.
913         (byte_lowpart_offset): Return the memory offset as a poly_int64
914         rather than an int.
915         (subreg_memory_offset): Likewise.  Take the subreg offset as a
916         poly_uint64 rather than an unsigned int.
917         (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
918         mode sizes as poly_uint64s rather than unsigned ints.  Return a
919         poly_uint64 rather than an unsigned int.
920         (subreg_lowpart_p): Treat subreg offsets as poly_ints.
921         (copy_insn_1): Handle 'p'.
922         * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
923         (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
924         an unsigned int.  Return the shift in the same way.
925         (subreg_lsb): Return the shift as a poly_uint64 rather than an
926         unsigned int.
927         (subreg_size_offset_from_lsb): Take the sizes and shift as
928         poly_uint64s rather than unsigned ints.  Return the offset as
929         a poly_uint64.
930         (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
931         (simplify_subreg_regno): Take the offset as a poly_uint64 rather than
932         an unsigned int.
933         * rtlhash.c (add_rtx): Handle 'p'.
934         * genemit.c (gen_exp): Likewise.
935         * gengenrtl.c (type_from_format, gendef): Likewise.
936         * gensupport.c (subst_pattern_match, get_alternatives_number)
937         (collect_insn_data, alter_predicate_for_insn, alter_constraints)
938         (subst_dup): Likewise.
939         * gengtype.c (adjust_field_rtx_def): Likewise.
940         * genrecog.c (find_operand, find_matching_operand, validate_pattern)
941         (match_pattern_2): Likewise.
942         (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
943         (rtx_test::subreg_field): New function.
944         (operator ==, safe_to_hoist_p, transition_parameter_type)
945         (print_nonbool_test, print_test): Handle SUBREG_FIELD.
946         * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
947         * genpeep.c (match_rtx): Likewise.
948         * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
949         (rtx_writer::print_rtx_operand): Handle 'p'.
950         (print_value): Handle SUBREG.
951         * read-rtl.c (apply_int_iterator): Likewise.
952         (rtx_reader::read_rtx_operand): Handle 'p'.
953         * alias.c (rtx_equal_for_memref_p): Likewise.
954         * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
955         * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
956         as poly_ints.
957         * calls.c (expand_call): Likewise.
958         * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
959         (make_extraction, gen_lowpart_for_combine): Likewise.
960         * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
961         Likewise.
962         * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
963         rather than an unsigned int.  Treat subreg offsets as poly_ints.
964         (exp_equiv_p): Handle 'p'.
965         (hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
966         (equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
967         * dse.c (find_shift_sequence): Likewise.
968         * dwarf2out.c (rtl_for_decl_location): Likewise.
969         * expmed.c (extract_low_bits): Likewise.
970         * expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
971         (expand_expr_real_2): Likewise.
972         * final.c (alter_subreg): Likewise.
973         (leaf_renumber_regs_insn): Handle 'p'.
974         * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
975         Treat subreg offsets as poly_ints.
976         * fwprop.c (forward_propagate_and_simplify): Likewise.
977         * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
978         * ira.c (get_subreg_tracking_sizes): Likewise.
979         * ira-conflicts.c (go_through_subreg): Likewise.
980         * ira-lives.c (process_single_reg_class_operands): Likewise.
981         * jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
982         * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
983         as a poly_uint64 rather than an unsigned int.
984         (simplify_gen_subreg_concatn, resolve_simple_move): Treat
985         subreg offsets as poly_ints.
986         * lra-constraints.c (operands_match_p): Handle 'p'.
987         (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
988         * lra-spills.c (assign_mem_slot): Likewise.
989         * postreload.c (move2add_valid_value_p): Likewise.
990         * recog.c (general_operand, indirect_operand): Likewise.
991         * regcprop.c (copy_value, maybe_mode_change): Likewise.
992         (copyprop_hardreg_forward_1): Likewise.
993         * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
994         (record_subregs_of_mode): Likewise.
995         * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
996         * reload.c (operands_match_p): Handle 'p'.
997         (find_reloads_subreg_address): Treat subreg offsets as poly_ints.
998         * reload1.c (alter_reg, choose_reload_regs): Likewise.
999         (compute_reload_subreg_offset): Likewise, and return an poly_int64.
1000         * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
1001         (test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
1002         (simplify_const_poly_int_tests<N>::run): Likewise.
1003         (simplify_subreg, simplify_gen_subreg): Take the subreg offset as
1004         a poly_uint64 rather than an unsigned int.
1005         * valtrack.c (debug_lowpart_subreg): Likewise.
1006         * var-tracking.c (var_lowpart): Likewise.
1007         (loc_cmp): Handle 'p'.
1008
1009 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1010             Alan Hayward  <alan.hayward@arm.com>
1011             David Sherwood  <david.sherwood@arm.com>
1012
1013         * ira.c (get_subreg_tracking_sizes): New function.
1014         (init_live_subregs): Take an integer size rather than a register.
1015         (build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
1016         to init_live_subregs.
1017
1018 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1019             Alan Hayward  <alan.hayward@arm.com>
1020             David Sherwood  <david.sherwood@arm.com>
1021
1022         * expr.c (store_constructor_field): Change bitsize from a
1023         unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
1024         HOST_WIDE_INT to a poly_int64.
1025         (store_constructor): Change size from a HOST_WIDE_INT to
1026         a poly_int64.
1027         (store_field): Likewise bitsize and bitpos.
1028
1029 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1030             Alan Hayward  <alan.hayward@arm.com>
1031             David Sherwood  <david.sherwood@arm.com>
1032
1033         * expmed.h (store_bit_field): Change bitregion_start and
1034         bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
1035         * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
1036         (store_bit_field_1, store_integral_bit_field, store_bit_field)
1037         (store_fixed_bit_field, store_split_bit_field): Likewise.
1038         * expr.c (store_constructor_field, store_field): Likewise.
1039         (optimize_bitfield_assignment_op): Likewise.  Make the same change
1040         to bitsize and bitpos.
1041         * machmode.h (bit_field_mode_iterator): Change m_bitregion_start
1042         and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
1043         same change in the constructor arguments.
1044         (get_best_mode): Change bitregion_start and bitregion_end from
1045         unsigned HOST_WIDE_INT to poly_uint64.
1046         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
1047         Change bitregion_start and bitregion_end from HOST_WIDE_INT to
1048         poly_int64.
1049         (bit_field_mode_iterator::next_mode): Update for new types
1050         of m_bitregion_start and m_bitregion_end.
1051         (get_best_mode): Change bitregion_start and bitregion_end from
1052         unsigned HOST_WIDE_INT to poly_uint64.
1053
1054 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1055             Alan Hayward  <alan.hayward@arm.com>
1056             David Sherwood  <david.sherwood@arm.com>
1057
1058         * rtl.h (simplify_gen_subreg): Add a temporary overload that
1059         accepts poly_uint64 offsets.
1060         * expmed.h (extract_bit_field): Take bitsize and bitnum as
1061         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1062         * expmed.c (lowpart_bit_field_p): Likewise.
1063         (extract_bit_field_as_subreg): New function, split out from...
1064         (extract_bit_field_1): ...here.  Take bitsize and bitnum as
1065         poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
1066         extractions, check that BITSIZE matches the size of the extracted
1067         value and that BITNUM is an exact multiple of that size.
1068         If all else fails, try forcing the value into memory if
1069         BITNUM is variable, and adjusting the address so that the
1070         offset is constant.  Split the part that can only handle constant
1071         bitsize and bitnum out into...
1072         (extract_integral_bit_field): ...this new function.
1073         (extract_bit_field): Take bitsize and bitnum as poly_uint64s
1074         rather than unsigned HOST_WIDE_INTs.
1075
1076 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1077             Alan Hayward  <alan.hayward@arm.com>
1078             David Sherwood  <david.sherwood@arm.com>
1079
1080         * expmed.h (store_bit_field): Take bitsize and bitnum as
1081         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1082         * expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
1083         that returns the byte size.
1084         (store_bit_field_1): Take bitsize and bitnum as
1085         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
1086         to simple_mem_bitfield_p.  Split the part that can only handle
1087         constant bitsize and bitnum out into...
1088         (store_integral_bit_field): ...this new function.
1089         (store_bit_field): Take bitsize and bitnum as poly_uint64s rather
1090         than unsigned HOST_WIDE_INTs.
1091         (extract_bit_field_1): Update call to simple_mem_bitfield_p.
1092
1093 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1094             Alan Hayward  <alan.hayward@arm.com>
1095             David Sherwood  <david.sherwood@arm.com>
1096
1097         * lra-int.h (lra_reg): Change offset from int to poly_int64.
1098         (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
1099         to poly_int64.
1100         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1101         update_sp_offset from a HOST_WIDE_INT to a poly_int64.
1102         (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
1103         offset as a poly_int64 rather than an int.
1104         * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
1105         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
1106         * lra-constraints.c (equiv_address_substitution): Track offsets
1107         as poly_int64s.
1108         (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
1109         (curr_insn_transform): Handle the new form of sp_offset.
1110         * lra-eliminations.c (lra_elim_table): Change previous_offset
1111         and offset from HOST_WIDE_INT to poly_int64.
1112         (print_elim_table, update_reg_eliminate): Update accordingly.
1113         (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
1114         (get_elimination): Update accordingly.
1115         (form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
1116         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1117         update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
1118         poly_int64 offsets generally.
1119         (curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
1120         (mark_not_eliminable, init_elimination): Update accordingly.
1121         (remove_reg_equal_offset_note): Return a bool and pass the new
1122         offset back by pointer as a poly_int64.
1123         * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
1124         rather than a HOST_WIDE_INT.
1125         (do_remat): Track offsets poly_int64s.
1126         * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
1127
1128 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1129             Alan Hayward  <alan.hayward@arm.com>
1130             David Sherwood  <david.sherwood@arm.com>
1131
1132         * rtl.h (mem_attrs): Add a default constructor.  Change size and
1133         offset from HOST_WIDE_INT to poly_int64.
1134         * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
1135         (adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
1136         (widen_memory_access): Take the sizes and offsets as poly_int64s
1137         rather than HOST_WIDE_INTs.
1138         * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
1139         (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
1140         and ints.
1141         (adjust_offset_for_component_ref): Change the offset from a
1142         HOST_WIDE_INT to a poly_int64.
1143         (nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
1144         * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
1145         * dce.c (find_call_stack_args): Likewise.
1146         * dse.c (record_store): Likewise.
1147         * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
1148         * print-rtl.c (rtx_writer::print_rtx): Likewise.
1149         * read-rtl-function.c (test_loading_mem): Likewise.
1150         * rtlanal.c (may_trap_p_1): Likewise.
1151         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
1152         * var-tracking.c (int_mem_offset, track_expr_p): Likewise.
1153         * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
1154         (mem_attrs::mem_attrs): New function.
1155         (set_mem_attributes_minus_bitpos): Change bitpos from a
1156         HOST_WIDE_INT to poly_int64.
1157         (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
1158         (clear_mem_offset, clear_mem_size, change_address)
1159         (get_spill_slot_decl, set_mem_attrs_for_spill): Directly
1160         initialize mem_attrs.
1161         (set_mem_offset, set_mem_size, adjust_address_1)
1162         (adjust_automodify_address_1, offset_address, widen_memory_access):
1163         Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
1164
1165 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1166             Alan Hayward  <alan.hayward@arm.com>
1167             David Sherwood  <david.sherwood@arm.com>
1168
1169         * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
1170         as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
1171         rather than 0 to represent an unknown size.  Assert that the size
1172         is known when the mode isn't BLKmode.
1173         (may_trap_p_1): Use -1 for unknown sizes.
1174         (rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
1175
1176 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1177             Alan Hayward  <alan.hayward@arm.com>
1178             David Sherwood  <david.sherwood@arm.com>
1179
1180         * dse.c (store_info): Change offset and width from HOST_WIDE_INT
1181         to poly_int64.  Update commentary for positions_needed.large.
1182         (read_info_type): Change offset and width from HOST_WIDE_INT
1183         to poly_int64.
1184         (set_usage_bits): Likewise.
1185         (canon_address): Return the offset as a poly_int64 rather than
1186         a HOST_WIDE_INT.  Use strip_offset_and_add.
1187         (set_all_positions_unneeded, any_positions_needed_p): Use
1188         positions_needed.large to track stores with non-constant widths.
1189         (all_positions_needed_p): Likewise.  Take the offset and width
1190         as poly_int64s rather than ints.  Assert that rhs is nonnull.
1191         (record_store): Cope with non-constant offsets and widths.
1192         Nullify the rhs of an earlier store if we can't tell which bytes
1193         of it are needed.
1194         (find_shift_sequence): Take the access_size and shift as poly_int64s
1195         rather than ints.
1196         (get_stored_val): Take the read_offset and read_width as poly_int64s
1197         rather than HOST_WIDE_INTs.
1198         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
1199         non-constant offsets and widths.
1200
1201 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1202             Alan Hayward  <alan.hayward@arm.com>
1203             David Sherwood  <david.sherwood@arm.com>
1204
1205         * inchash.h (inchash::hash::add_poly_int): New function.
1206         * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
1207         Use poly_int64 rather than HOST_WIDE_INT.
1208         (ao_ref::max_size_known_p): New function.
1209         * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
1210         rather than HOST_WIDE_INT.
1211         * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
1212         to temporaries until its interface is adjusted to match.
1213         (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
1214         (aliasing_component_refs_p, decl_refs_may_alias_p)
1215         (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
1216         the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
1217         (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
1218         ao_ref fields.
1219         * alias.c (ao_ref_from_mem): Likewise.
1220         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1221         * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
1222         (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
1223         (maybe_trim_complex_store, maybe_trim_constructor_store)
1224         (live_bytes_read, dse_classify_store): Likewise.
1225         * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
1226         (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
1227         (fully_constant_vn_reference_p, valueize_refs_1): Likewise.
1228         (vn_reference_lookup_3): Likewise.
1229         * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
1230
1231 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1232             Alan Hayward  <alan.hayward@arm.com>
1233             David Sherwood  <david.sherwood@arm.com>
1234
1235         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
1236         (indirect_refs_may_alias_p): Use ranges_may_overlap_p
1237         instead of ranges_overlap_p.
1238
1239 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1240             Alan Hayward  <alan.hayward@arm.com>
1241             David Sherwood  <david.sherwood@arm.com>
1242
1243         * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
1244         sizes as poly_int64s rather than HOST_WIDE_INTs.
1245
1246 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1247             Alan Hayward  <alan.hayward@arm.com>
1248             David Sherwood  <david.sherwood@arm.com>
1249
1250         * gimple-fold.h (fold_ctor_reference): Take the offset and size
1251         as poly_uint64 rather than unsigned HOST_WIDE_INT.
1252         * gimple-fold.c (fold_ctor_reference): Likewise.
1253
1254 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1255             Alan Hayward  <alan.hayward@arm.com>
1256             David Sherwood  <david.sherwood@arm.com>
1257
1258         * target.def (dwarf_poly_indeterminate_value): New hook.
1259         * targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
1260         * targhooks.c (default_dwarf_poly_indeterminate_value): New function.
1261         * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
1262         * doc/tm.texi: Regenerate.
1263         * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
1264         offset as a poly_int64.
1265         * dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
1266         offset as a poly_int64.
1267         (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
1268         Take the offset as a poly_int64.
1269         (build_cfa_loc): Likewise.  Use loc_descr_plus_const.
1270         (frame_pointer_fb_offset): Change to a poly_int64.
1271         (int_loc_descriptor): Take the offset as a poly_int64.  Use
1272         targetm.dwarf_poly_indeterminate_value for polynomial offsets.
1273         (based_loc_descr): Take the offset as a poly_int64.
1274         Use strip_offset_and_add to handle (plus X (const)).
1275         Use new_reg_loc_descr instead of an open-coded version of the
1276         previous implementation.
1277         (mem_loc_descriptor): Handle CONST_POLY_INT.
1278         (compute_frame_pointer_to_fb_displacement): Take the offset as a
1279         poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
1280
1281 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1282             Alan Hayward  <alan.hayward@arm.com>
1283             David Sherwood  <david.sherwood@arm.com>
1284
1285         * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
1286         (gen_rtx_REG_offset): Take the offset as a poly_int64.
1287         * inchash.h (inchash::hash::add_poly_hwi): New function.
1288         * gengtype.c (main): Register poly_int64.
1289         * emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
1290         offset as a poly_int.
1291         (reg_attr_hasher::equal): Use must_eq to compare offsets.
1292         (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
1293         offset as a poly_int64.
1294         (set_reg_attrs_from_value): Treat the offset as a poly_int64.
1295         * print-rtl.c (print_poly_int): New function.
1296         (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
1297         a poly_int.
1298         * var-tracking.c (track_offset_p, get_tracked_reg_offset): New
1299         functions.
1300         (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
1301         (same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
1302         (vt_get_decl_and_offset): Return the offset as a poly_int64.
1303         Enforce track_offset_p for parts of a PARALLEL.
1304         (vt_add_function_parameter): Use const_offset for the final
1305         offset to track.  Use get_tracked_reg_offset for the parts
1306         of a PARALLEL.
1307
1308 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1309             Alan Hayward  <alan.hayward@arm.com>
1310             David Sherwood  <david.sherwood@arm.com>
1311
1312         * target.def (truly_noop_truncation): Take poly_uint64s instead of
1313         unsigned ints.  Change default to hook_bool_puint64_puint64_true.
1314         * doc/tm.texi: Regenerate.
1315         * hooks.h (hook_bool_uint_uint_true): Delete.
1316         (hook_bool_puint64_puint64_true): Declare.
1317         * hooks.c (hook_bool_uint_uint_true): Delete.
1318         (hook_bool_puint64_puint64_true): New function.
1319         * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
1320         instead of unsigned ints.
1321         * config/spu/spu.c (spu_truly_noop_truncation): Likewise.
1322         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
1323
1324 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1325             Alan Hayward  <alan.hayward@arm.com>
1326             David Sherwood  <david.sherwood@arm.com>
1327
1328         * optabs.h (expand_operand): Add an int_value field.
1329         (create_expand_operand): Add an int_value parameter and use it
1330         to initialize the new expand_operand field.
1331         (create_integer_operand): Replace with a declaration of a function
1332         that accepts poly_int64s.  Move the implementation to...
1333         * optabs.c (create_integer_operand): ...here.
1334         (maybe_legitimize_operand): For EXPAND_INTEGER, check whether
1335         the mode preserves the value of int_value, instead of calling
1336         const_int_operand on the rtx.  Use gen_int_mode to generate
1337         the new rtx.
1338
1339 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1340             Alan Hayward  <alan.hayward@arm.com>
1341             David Sherwood  <david.sherwood@arm.com>
1342
1343         * dumpfile.h (dump_dec): Declare.
1344         * dumpfile.c (dump_dec): New function.
1345         * pretty-print.h (pp_wide_integer): Turn into a function and
1346         declare a poly_int version.
1347         * pretty-print.c (pp_wide_integer): New function for poly_ints.
1348
1349 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1350             Alan Hayward  <alan.hayward@arm.com>
1351             David Sherwood  <david.sherwood@arm.com>
1352
1353         * doc/generic.texi (POLY_INT_CST): Document.
1354         * tree.def (POLY_INT_CST): New tree code.
1355         * treestruct.def (TS_POLY_INT_CST): New tree layout.
1356         * tree-core.h (tree_poly_int_cst): New struct.
1357         (tree_node): Add a poly_int_cst field.
1358         * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
1359         (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
1360         instead of a wide_int_ref.
1361         (build_int_cst, build_int_cst_type): Take a poly_int64 instead
1362         of a HOST_WIDE_INT.
1363         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1364         instead of an unsigned HOST_WIDE_INT.
1365         (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
1366         (ptrdiff_tree_p): Declare.
1367         (tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
1368         extern inline implementations if the target doesn't use POLY_INT_CST.
1369         (poly_int_tree_p): New function.
1370         (wi::unextended_tree): New class.
1371         (wi::int_traits <unextended_tree>): New override.
1372         (wi::extended_tree): Add a default constructor.
1373         (wi::extended_tree::get_tree): New function.
1374         (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
1375         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
1376         (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
1377         (wi::tree_to_poly_wide_ref): New typedefs.
1378         (wi::ints_for): Provide overloads for extended_tree and
1379         unextended_tree.
1380         (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
1381         (wi::to_wide): New functions.
1382         (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
1383         * tree.c (poly_int_cst_hasher): New struct.
1384         (poly_int_cst_hash_table): New variable.
1385         (tree_node_structure_for_code, tree_code_size, simple_cst_equal)
1386         (valid_constant_size_p, add_expr, drop_tree_overflow): Handle
1387         POLY_INT_CST.
1388         (initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
1389         (init_ttree): Initialize poly_int_cst_hash_table.
1390         (build_int_cst, build_int_cst_type, build_invariant_address): Take
1391         a poly_int64 instead of a HOST_WIDE_INT.
1392         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1393         instead of an unsigned HOST_WIDE_INT.
1394         (wide_int_to_tree): Rename to...
1395         (wide_int_to_tree_1): ...this.
1396         (build_new_poly_int_cst, build_poly_int_cst): New functions.
1397         (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
1398         (wide_int_to_tree): New function that takes a poly_wide_int_ref.
1399         (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
1400         (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
1401         * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
1402         TS_POLY_INT_CST.
1403         * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
1404         (streamer_read_tree_body): Likewise.
1405         * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
1406         (streamer_write_tree_body): Likewise.
1407         * tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
1408         * asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
1409         * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
1410         * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
1411         * gimple-expr.h (is_gimple_constant): Likewise.
1412         * gimplify.c (maybe_with_size_expr): Likewise.
1413         * print-tree.c (print_node): Likewise.
1414         * tree-data-ref.c (data_ref_compare_tree): Likewise.
1415         * tree-pretty-print.c (dump_generic_node): Likewise.
1416         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
1417         * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
1418         * tree-vrp.c (compare_values_warnv): Likewise.
1419         * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
1420         (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
1421         (force_expr_to_var_cost): Likewise.
1422         * tree-ssa-loop.c (for_each_index): Likewise.
1423         * fold-const.h (build_invariant_address, size_int_kind): Take a
1424         poly_int64 instead of a HOST_WIDE_INT.
1425         * fold-const.c (fold_negate_expr_1, const_binop, const_unop)
1426         (fold_convert_const, multiple_of_p, fold_negate_const): Handle
1427         POLY_INT_CST.
1428         (size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
1429         (int_const_binop_2): New function, split out from...
1430         (int_const_binop_1): ...here.  Handle POLY_INT_CST.
1431         (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
1432         * expmed.c (make_tree): Handle CONST_POLY_INT_P.
1433         * gimple-ssa-strength-reduction.c (slsr_process_add)
1434         (slsr_process_mul): Check for INTEGER_CSTs before using them
1435         as candidates.
1436         * stor-layout.c (bits_from_bytes): New function.
1437         (bit_from_pos): Use it.
1438         (layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
1439         by BITS_PER_UNIT to get the TYPE_SIZE.
1440         * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
1441         MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
1442
1443 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1444             Alan Hayward  <alan.hayward@arm.com>
1445             David Sherwood  <david.sherwood@arm.com>
1446
1447         * doc/rtl.texi (const_poly_int): Document.  Also document the
1448         rtl sharing behavior.
1449         * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
1450         * rtl.h (const_poly_int_def): New struct.
1451         (rtx_def::u): Add a cpi field.
1452         (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
1453         (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
1454         (wi::rtx_to_poly_wide_ref): New typedef
1455         (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
1456         (poly_int_rtx_p): New functions.
1457         (trunc_int_for_mode): Declare a poly_int64 version.
1458         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1459         (immed_wide_int_const): Take a poly_wide_int_ref rather than
1460         a wide_int_ref.
1461         (strip_offset): Declare.
1462         (strip_offset_and_add): New function.
1463         * rtl.def (CONST_POLY_INT): New rtx code.
1464         * rtl.c (rtx_size): Handle CONST_POLY_INT.
1465         (shared_const_p): Use poly_int_rtx_p.
1466         * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
1467         HOST_WIDE_INT.
1468         (gen_int_shift_amount): Likewise.
1469         * emit-rtl.c (const_poly_int_hasher): New class.
1470         (const_poly_int_htab): New variable.
1471         (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
1472         (const_poly_int_hasher::hash): New function.
1473         (const_poly_int_hasher::equal): Likewise.
1474         (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
1475         (immed_wide_int_const): Rename to...
1476         (immed_wide_int_const_1): ...this and make static.
1477         (immed_wide_int_const): New function, taking a poly_wide_int_ref
1478         instead of a wide_int_ref.
1479         (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
1480         (gen_lowpart_common): Handle CONST_POLY_INT.
1481         * cse.c (hash_rtx_cb, equiv_constant): Likewise.
1482         * cselib.c (cselib_hash_rtx): Likewise.
1483         * dwarf2out.c (const_ok_for_output_1): Likewise.
1484         * expr.c (convert_modes): Likewise.
1485         * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
1486         * rtlhash.c (add_rtx): Likewise.
1487         * explow.c (trunc_int_for_mode): Add a poly_int64 version.
1488         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1489         Handle existing CONST_POLY_INT rtxes.
1490         * expmed.h (expand_shift): Take a poly_int64 instead of a
1491         HOST_WIDE_INT.
1492         * expmed.c (expand_shift): Likewise.
1493         * rtlanal.c (strip_offset): New function.
1494         (commutative_operand_precedence): Give CONST_POLY_INT the same
1495         precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
1496         and CONST_INT.
1497         * rtl-tests.c (const_poly_int_tests): New struct.
1498         (rtl_tests_c_tests): Use it.
1499         * simplify-rtx.c (simplify_const_unary_operation): Handle
1500         CONST_POLY_INT.
1501         (simplify_const_binary_operation): Likewise.
1502         (simplify_binary_operation_1): Fold additions of symbolic constants
1503         and CONST_POLY_INTs.
1504         (simplify_subreg): Handle extensions and truncations of
1505         CONST_POLY_INTs.
1506         (simplify_const_poly_int_tests): New struct.
1507         (simplify_rtx_c_tests): Use it.
1508         * wide-int.h (storage_ref): Add default constructor.
1509         (wide_int_ref_storage): Likewise.
1510         (trailing_wide_ints): Use GTY((user)).
1511         (trailing_wide_ints::operator[]): Add a const version.
1512         (trailing_wide_ints::get_precision): New function.
1513         (trailing_wide_ints::extra_size): Likewise.
1514
1515 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1516             Alan Hayward  <alan.hayward@arm.com>
1517             David Sherwood  <david.sherwood@arm.com>
1518
1519         * emit-rtl.h (gen_int_shift_amount): Declare.
1520         * emit-rtl.c (gen_int_shift_amount): New function.
1521         * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
1522         instead of GEN_INT.
1523         * calls.c (shift_return_value): Likewise.
1524         * cse.c (fold_rtx): Likewise.
1525         * dse.c (find_shift_sequence): Likewise.
1526         * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
1527         (expand_shift, expand_smod_pow2): Likewise.
1528         * lower-subreg.c (shift_cost): Likewise.
1529         * optabs.c (expand_superword_shift, expand_doubleword_mult)
1530         (expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
1531         (expand_vec_perm_var): Likewise.
1532         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1533         (simplify_binary_operation_1): Likewise.
1534         * combine.c (try_combine, find_split_point, force_int_to_mode)
1535         (simplify_shift_const_1, simplify_shift_const): Likewise.
1536         (change_zero_ext): Likewise.  Use simplify_gen_binary.
1537
1538 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1539
1540         * poly-int.h (multiple_p): Fix handling of two non-poly_ints.
1541
1542 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1543
1544         * doc/invoke.texi (ARM Options): Document accepted extension options
1545         for -march=armv8.3-a.
1546
1547 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
1548
1549         PR target/83105
1550         * config.gcc (arm*-*-linux*): When configured with --with-float=hard
1551         or --with-float=softfp, set the default CPU to arm10e.
1552
1553 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
1554
1555         * config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
1556         * config/visium/predicates.md (const_shift_operand): Likewise.
1557         * config/visium/visium.c (visium_legitimize_address): Fix oversight.
1558         (visium_legitimize_reload_address): Likewise.
1559
1560 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1561
1562         PR target/82975
1563         * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
1564
1565 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
1566
1567         PR c++/83490
1568         * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
1569
1570 2017-12-20  Julia Koval  <julia.koval@intel.com>
1571
1572         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
1573         OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
1574         (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
1575         * config.gcc: Include vpclmulqdqintrin.h.
1576         * config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
1577         * config/i386/driver-i386.c (host_detect_local_cpu): Handle
1578         -mvpclmulqdq.
1579         * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
1580         __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
1581         * config/i386/i386-c.c (__VPCLMULQDQ__): New.
1582         * config/i386/i386.c (isa2_opts): Add -mcx16.
1583         (isa_opts): Add -mpclmulqdq, remove -mcx16.
1584         (ix86_option_override_internal): Move mcx16 to flags2.
1585         (ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
1586         (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
1587         * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
1588         * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
1589         * config/i386/immintrin.h: Include vpclmulqdqintrin.h.
1590         * config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
1591         * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
1592         _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
1593         * doc/invoke.texi: Add -mvpclmulqdq.
1594
1595 2017-12-20  Tom de Vries  <tom@codesourcery.com>
1596
1597         PR middle-end/83423
1598         * config/i386/i386.c (ix86_static_chain): Move DECL_STATIC_CHAIN test ...
1599         * calls.c (rtx_for_static_chain): ... here.  New function.
1600         * calls.h (rtx_for_static_chain): Declare.
1601         * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
1602         instead of targetm.calls.static_chain.
1603         * df-scan.c (df_get_entry_block_def_set): Same.
1604
1605 2017-12-19  Tom de Vries  <tom@codesourcery.com>
1606
1607         PR tree-optimization/83493
1608         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
1609         and lb.
1610
1611 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1612
1613         * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
1614         inform with hardcoded english plural handling.
1615
1616 2017-12-18  Jeff Law  <law@redhat.com>
1617
1618         PR tree-optimization/83477
1619         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
1620         a non-virtual PHI, always push a new range.
1621
1622 2017-12-19  Martin Sebor  <msebor@redhat.com>
1623
1624         PR middle-end/77608
1625         * builtins.c (compute_objsize): Handle non-constant offsets.
1626
1627 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1628
1629         PR tree-optimization/83444
1630         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
1631         character load case, if get_stridx on MEM_REF's operand doesn't
1632         look usable, retry with get_addr_stridx.
1633
1634 2017-12-19  Alexandre Oliva <aoliva@redhat.com>
1635
1636         PR debug/83422
1637         * var-tracking.c (vt_debug_insns_local): Do not drop markers.
1638         (variable_tracking_main_1): Keep markers even when VTA fails.
1639
1640         PR bootstrap/83396
1641         * cfgexpand.c (expand_gimple_basic_block): Expand label first,
1642         even if there are markers before it.
1643         * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
1644
1645 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1646
1647         * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
1648         typical order conditions.
1649         * sel-sched.c (extract_new_fences_from): Likewise.
1650         * config/visium/constraints.md (J, K, L): Likewise.
1651         * config/visium/predicates.md (const_shift_operand): Likewise.
1652         * config/visium/visium.c (visium_legitimize_address,
1653         visium_legitimize_reload_address): Likewise.
1654         * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
1655         * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
1656         * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
1657         * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
1658         SET_DUMP_DETAIL): Likewise.
1659         * config/avr/predicates.md (const_8_16_24_operand): Likewise.
1660         * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
1661         avr_is_casesi_sequence, avr_casei_sequence_check_operands,
1662         avr_set_core_architecture, avr_set_current_function,
1663         avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
1664         output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
1665         avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
1666         avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
1667         avr_map_decompose, avr_fold_builtin): Likewise.
1668         * config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
1669         * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
1670         * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
1671         * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
1672         * config/m32c/m32c.c (m32c_conditional_register_usage,
1673         m32c_address_cost): Likewise.
1674         * config/m32c/predicates.md (shiftcount_operand,
1675         longshiftcount_operand): Likewise.
1676         * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
1677         * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
1678         can_use_cdx_ldstw): Likewise.
1679         * config/nios2/nios2.h (CDX_REG_P): Likewise.
1680         * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
1681         Likewise.
1682         * config/cr16/cr16.md (*mov<mode>_double): Likewise.
1683         * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
1684         * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
1685         * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
1686         * config/vax/vax.c (adjacent_operands_p): Likewise.
1687         * config/ft32/constraints.md (L, b, KA): Likewise.
1688         * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
1689         Likewise.
1690         * cfgexpand.c (expand_stack_alignment): Likewise.
1691         * gcse.c (insert_expr_in_table): Likewise.
1692         * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
1693         * cgraphunit.c (cgraph_node::expand): Likewise.
1694         * ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
1695         * emit-rtl.c (add_insn): Likewise.
1696         * input.c (dump_location_info): Likewise.
1697         * passes.c (NEXT_PASS): Likewise.
1698         * read-rtl-function.c (parse_note_insn_name,
1699         function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
1700         Likewise.
1701         * sched-rgn.c (sched_rgn_init): Likewise.
1702         * diagnostic-show-locus.c (layout::show_ruler): Likewise.
1703         * combine.c (find_split_point, simplify_if_then_else, force_to_mode,
1704         if_then_else_cond, simplify_shift_const_1, simplify_comparison): Likewise.
1705         * explow.c (eliminate_constant_term): Likewise.
1706         * final.c (leaf_renumber_regs_insn): Likewise.
1707         * cfgrtl.c (print_rtl_with_bb): Likewise.
1708         * genhooks.c (emit_init_macros): Likewise.
1709         * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
1710         * tree-data-ref.c (conflict_fn): Likewise.
1711         * selftest.c (assert_streq): Likewise.
1712         * expr.c (store_constructor_field, expand_expr_real_1): Likewise.
1713         * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
1714         fold_binary_loc, multiple_of_p): Likewise.
1715         * reload.c (push_reload, find_equiv_reg): Likewise.
1716         * et-forest.c (et_nca, et_below): Likewise.
1717         * dbxout.c (dbxout_symbol_location): Likewise.
1718         * reorg.c (relax_delay_slots): Likewise.
1719         * dojump.c (do_compare_rtx_and_jump): Likewise.
1720         * gengtype-parse.c (type): Likewise.
1721         * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
1722         simplify_const_relational_operation): Likewise.
1723         * reload1.c (do_output_reload): Likewise.
1724         * dumpfile.c (get_dump_file_info_by_switch): Likewise.
1725         * gengtype.c (type_for_name): Likewise.
1726         * gimple-ssa-sprintf.c (format_directive): Likewise.
1727
1728 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1729
1730         PR target/82975
1731         * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
1732         accessing it.  Adjust comment.
1733
1734 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1735
1736         PR middle-end/81914
1737         * predict.c (zero_one_minusone): New function.
1738         (apply_return_prediction): Avoid return prediction for functions
1739         returning only -1, 0 and 1 values, unless they only return -1 and 0
1740         or 0 and 1.
1741
1742 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
1743
1744         * config/arc/arc.c (legitimate_scaled_address_p): Clean
1745         fall-through warning.
1746         (arc_compute_frame_size): Remove unused variables.
1747         (arc_print_operand): Fix fprintif format.
1748         (arc_can_follow_jump): Clean fall-through warning.
1749
1750 2017-12-19  Marek Polacek  <polacek@redhat.com>
1751
1752         PR c++/83489
1753         * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
1754         on an error node.                                                    
1755
1756 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
1757
1758         * config/arc/arc.c (overriderregs): New variable.
1759         (arc_override_options): Track fixed/call saved/call options.
1760         (arc_conditional_register_usage): Check against overrideregs
1761         variable whenever we change register properties.
1762
1763 2017-12-19  Nathan Sidwell  <nathan@acm.org>
1764
1765         * opts.c (finish_options): Don't prefix dump_base_name if it
1766         already contains directories.
1767
1768 2017-12-19  Martin Liska  <mliska@suse.cz>
1769
1770         PR rtl-optimization/82675
1771         * loop-unroll.c (unroll_loop_constant_iterations): Allocate one
1772         more element in sbitmap.
1773
1774 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
1775
1776         * gimplify.c (gimplify_expr): Use error_operand_p.
1777
1778 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1779
1780         PR target/83387
1781         * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
1782         multilib.
1783
1784 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
1785
1786         * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
1787         the jump is to a label.
1788
1789 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1790
1791         PR tree-optimization/83444
1792         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
1793         character loads.
1794
1795         PR ipa/82801
1796         PR ipa/83346
1797         * ipa-inline.c (flatten_remove_node_hook): New function.
1798         (ipa_inline): Keep only nodes with flatten attribute at the end of
1799         the array in the order from ipa_reverse_postorder, only walk that
1800         portion of array for flattening, if there is more than one such
1801         node, temporarily register a removal hook and ignore removed nodes.
1802
1803         PR tree-optimization/80631
1804         * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
1805         induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
1806         IFN_REDUC_MAX or IFN_REDUC_MIN.
1807
1808 2017-12-18  Jeff Law  <law@redhat.com>
1809
1810         * tree-ssa-dom.c (record_equivalences_from_phis): Do not
1811         record symbolic equivalences from backedges in the CFG.
1812
1813         Revert
1814         2017-11-19  Jeff Law  <law@redhat.com>
1815
1816         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
1817         of degenerates resulting from ignoring an edge.
1818
1819 2017-12-18  Martin Sebor  <msebor@redhat.com>
1820
1821         PR middle-end/83373
1822         PR tree-optimization/78450
1823         * tree-ssa-strlen.c (maybe_set_strlen_range): New function.
1824         (handle_builtin_strlen): Call it.
1825
1826 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
1827
1828         PR rtl-optimization/83424
1829         * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
1830
1831 2017-12-18  Marek Polacek  <polacek@redhat.com>
1832
1833         PR middle-end/83463
1834         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
1835         Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
1836         values.
1837
1838 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1839
1840         * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
1841         (umaddsidi4, umaddsidi_split): Likewise.
1842
1843 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1844
1845         * config/arc/arc.c (arc_legitimate_constant_p): Always check all
1846         constants.
1847
1848 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
1849
1850         PR target/83420
1851         * config/s390/s390.c (s390_option_override): Avoid strncpy.
1852
1853 2017-12-18  Richard Biener  <rguenther@suse.de>
1854
1855         PR tree-optimization/81877
1856         * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
1857         (outermost_indep_loop): Adjust.
1858         (ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
1859         (can_sm_ref_p): Adjust.
1860
1861 2017-12-18  Richard Biener  <rguenther@suse.de>
1862
1863         PR middle-end/77291
1864         * tree.c (array_at_struct_end_p): Return true if the underlying
1865         object has space for at least one element in excess of what
1866         the array domain specifies.
1867
1868 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1869
1870         * doc/extend.texi (x86 Function Attributes): Reformat nocf_check
1871         example to avoid overfull hbox.
1872         * doc/invoke.texi (Option Summary): Add missing @gol.
1873         (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid 
1874         overfull hbox.
1875         
1876 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1877             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1878
1879         * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
1880         to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
1881         (AArch64 Options): Document -mverbose-cost-dump.
1882         (ARM Options): Likewise, plus -mflip-thumb.
1883
1884 2017-12-17  Martin Sebor  <msebor@redhat.com>
1885
1886         PR bootstrap/83446
1887         * gimple-ssa-warn-restrict.c
1888         (builtin_memref::offset_out_of_bounds): Correct the handling of
1889         anti-ranges.
1890
1891 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1892
1893         * doc/invoke.texi (ARC Options): Add missing -mlra entry.
1894
1895 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
1896
1897         * config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
1898
1899 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
1900
1901         * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
1902         latencies.
1903
1904 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
1905
1906         * doc/invoke.texi: Fix some typos.
1907
1908 2017-12-16  Martin Sebor  <msebor@redhat.com>
1909
1910         PR tree-optimization/78918
1911         * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
1912         * builtins.c (check_sizes): Rename...
1913         (check_access): ...to this.  Rename function arguments for clarity.
1914         (check_memop_sizes): Adjust names.
1915         (expand_builtin_memchr, expand_builtin_memcpy): Same.
1916         (expand_builtin_memmove, expand_builtin_mempcpy): Same.
1917         (expand_builtin_strcat, expand_builtin_stpncpy): Same.
1918         (check_strncat_sizes, expand_builtin_strncat): Same.
1919         (expand_builtin_strncpy, expand_builtin_memset): Same.
1920         (expand_builtin_bzero, expand_builtin_memcmp): Same.
1921         (expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
1922         (maybe_emit_sprintf_chk_warning): Same.
1923         (expand_builtin_strcpy): Adjust.
1924         (expand_builtin_stpcpy): Same.
1925         (expand_builtin_with_bounds): Detect out-of-bounds accesses
1926         in pointer-checking forms of memcpy, memmove, and mempcpy.
1927         (gcall_to_tree_minimal, max_object_size): Define new functions.
1928         * builtins.h (max_object_size): Declare.
1929         * calls.c (alloc_max_size): Call max_object_size instead of
1930         hardcoding ssizetype limit.
1931         (get_size_range): Handle new argument.
1932         * calls.h (get_size_range): Add a new argument.
1933         * cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
1934         * doc/invoke.texi (-Wrestrict): Adjust, add example.
1935         * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
1936         operations.
1937         (gimple_fold_builtin_memory_chk): Same.
1938         (gimple_fold_builtin_stxcpy_chk): New function.
1939         * gimple-ssa-warn-restrict.c: New source.
1940         * gimple-ssa-warn-restrict.h: New header.
1941         * gimple.c (gimple_build_call_from_tree): Propagate location.
1942         * passes.def (pass_warn_restrict): Add new pass.
1943         * tree-pass.h (make_pass_warn_restrict): Declare.
1944         * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
1945         operations.
1946         (handle_builtin_strcat): Same.
1947         (strlen_optimize_stmt): Rename...
1948         (strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
1949         stpncpy, strncpy, and their checking forms.
1950
1951 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
1952
1953         PR rtl-optimization/82849
1954         * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
1955         and get_max_loop_iterations_int.
1956
1957 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1958             Alan Hayward  <alan.hayward@arm.com>
1959             David Sherwood  <david.sherwood@arm.com>
1960
1961         * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
1962         (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
1963         size as a poly_uint64.
1964         (mode_for_vector, mode_for_int_vector): Take the number of vector
1965         elements as a poly_uint64.
1966         * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
1967         size as a poly_uint64.
1968         (mode_for_vector, mode_for_int_vector): Take the number of vector
1969         elements as a poly_uint64.
1970
1971 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1972             Alan Hayward  <alan.hayward@arm.com>
1973             David Sherwood  <david.sherwood@arm.com>
1974
1975         * machmode.h (MACRO_MODE): New macro.
1976         * addresses.h (base_reg_class, ok_for_base_p_1): Use it.
1977         * targhooks.c (default_libcall_value, default_secondary_reload)
1978         (default_memory_move_cost, default_register_move_cost)
1979         (default_class_max_nregs): Likewise.
1980
1981 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1982             Alan Hayward  <alan.hayward@arm.com>
1983             David Sherwood  <david.sherwood@arm.com>
1984
1985         * doc/sourcebuild.texi: Document IN_TARGET_CODE.
1986         * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
1987         target C file.
1988         * genautomata.c (main): Likewise.
1989         * genconditions.c (write_header): Likewise.
1990         * genemit.c (main): Likewise.
1991         * genextract.c (print_header): Likewise.
1992         * genopinit.c (main): Likewise.
1993         * genoutput.c (output_prologue): Likewise.
1994         * genpeep.c (main): Likewise.
1995         * genpreds.c (write_insn_preds_c): Likewise.
1996         * genrecog.c (writer_header): Likewise.
1997         * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
1998         * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
1999         * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
2000         * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
2001         * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
2002         * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
2003         * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
2004         * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
2005         * config/arc/arc.c (IN_TARGET_CODE): Likewise.
2006         * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
2007         * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
2008         * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
2009         * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
2010         * config/arm/arm.c (IN_TARGET_CODE): Likewise.
2011         * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
2012         * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
2013         * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
2014         * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
2015         * config/avr/avr.c (IN_TARGET_CODE): Likewise.
2016         * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
2017         * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
2018         * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
2019         * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
2020         * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
2021         * config/cris/cris.c (IN_TARGET_CODE): Likewise.
2022         * config/darwin.c (IN_TARGET_CODE): Likewise.
2023         * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
2024         * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
2025         * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
2026         * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
2027         * config/frv/frv.c (IN_TARGET_CODE): Likewise.
2028         * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
2029         * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
2030         * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
2031         * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
2032         * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
2033         * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
2034         * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
2035         * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
2036         * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
2037         * config/i386/i386.c (IN_TARGET_CODE): Likewise.
2038         * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
2039         * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
2040         * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
2041         * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
2042         * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
2043         * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
2044         * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
2045         * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
2046         * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
2047         * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
2048         * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
2049         * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
2050         * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
2051         * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
2052         * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
2053         * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
2054         * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
2055         * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
2056         * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
2057         * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
2058         * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
2059         * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
2060         * config/mips/mips.c (IN_TARGET_CODE): Likewise.
2061         * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
2062         * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
2063         * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
2064         * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
2065         * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
2066         * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
2067         * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
2068         * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
2069         * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
2070         * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
2071         * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
2072         * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
2073         * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
2074         * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
2075         * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
2076         * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
2077         * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
2078         * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
2079         * config/pa/pa.c (IN_TARGET_CODE): Likewise.
2080         * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
2081         * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
2082         * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
2083         * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2084         * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
2085         * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
2086         * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
2087         * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
2088         * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
2089         * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
2090         * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
2091         * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
2092         * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
2093         * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
2094         * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2095         * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
2096         * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
2097         * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
2098         * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
2099         * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
2100         * config/rx/rx.c (IN_TARGET_CODE): Likewise.
2101         * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
2102         * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
2103         * config/s390/s390.c (IN_TARGET_CODE): Likewise.
2104         * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
2105         * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
2106         * config/sh/sh.c (IN_TARGET_CODE): Likewise.
2107         * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
2108         * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
2109         * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
2110         * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
2111         * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
2112         * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
2113         * config/spu/spu.c (IN_TARGET_CODE): Likewise.
2114         * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
2115         * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
2116         * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
2117         * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
2118         * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
2119         * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
2120         * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
2121         * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
2122         * config/v850/v850.c (IN_TARGET_CODE): Likewise.
2123         * config/vax/vax.c (IN_TARGET_CODE): Likewise.
2124         * config/visium/visium.c (IN_TARGET_CODE): Likewise.
2125         * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
2126         * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
2127         * config/vms/vms.c (IN_TARGET_CODE): Likewise.
2128         * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
2129
2130 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2131             Alan Hayward  <alan.hayward@arm.com>
2132             David Sherwood  <david.sherwood@arm.com>
2133
2134         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
2135         checks for MEM_REF.
2136
2137 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2138             Alan Hayward  <alan.hayward@arm.com>
2139             David Sherwood  <david.sherwood@arm.com>
2140
2141         * doc/generic.texi (VEC_SERIES_EXPR): Document.
2142         * doc/md.texi (vec_series@var{m}): Document.
2143         * tree.def (VEC_SERIES_EXPR): New tree code.
2144         * tree.h (build_vec_series): Declare.
2145         * tree.c (build_vec_series): New function.
2146         * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
2147         * tree-pretty-print.c (dump_generic_node): Likewise.
2148         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
2149         * tree-inline.c (estimate_operator_cost): Likewise.
2150         * expr.c (expand_expr_real_2): Likewise.
2151         * optabs-tree.c (optab_for_tree_code): Likewise.
2152         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
2153         * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
2154         * expmed.c (make_tree): Handle VEC_SERIES.
2155         * optabs.def (vec_series_optab): New optab.
2156         * optabs.h (expand_vec_series_expr): Declare.
2157         * optabs.c (expand_vec_series_expr): New function.
2158         * tree-vect-generic.c (expand_vector_operations_1): Check that
2159         the operands also have vector type.
2160
2161 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2162             Alan Hayward  <alan.hawyard@arm.com>
2163             David Sherwood  <david.sherwood@arm.com>
2164
2165         * doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
2166         (VEC_COND_EXPR): Add missing @tindex.
2167         * doc/md.texi (vec_duplicate@var{m}): Document.
2168         * tree.def (VEC_DUPLICATE_EXPR): New tree codes.
2169         * tree.c (build_vector_from_val): Add stubbed-out handling of
2170         variable-length vectors, using VEC_DUPLICATE_EXPR.
2171         (uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
2172         * cfgexpand.c (expand_debug_expr): Likewise.
2173         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2174         * tree-inline.c (estimate_operator_cost): Likewise.
2175         * tree-pretty-print.c (dump_generic_node): Likewise.
2176         * tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
2177         * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
2178         (test_vec_duplicate_folding): New function.
2179         (fold_const_c_tests): Call it.
2180         * optabs.def (vec_duplicate_optab): New optab.
2181         * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
2182         * optabs.h (expand_vector_broadcast): Declare.
2183         * optabs.c (expand_vector_broadcast): Make non-static.  Try using
2184         vec_duplicate_optab.
2185         * expr.c (store_constructor): Try using vec_duplicate_optab for
2186         uniform vectors.
2187         (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
2188
2189 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
2190
2191         PR target/83358
2192         * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
2193         div/mod latencies a bit.
2194
2195 2017-12-15  Jeff Law  <law@redhat.com>
2196
2197         PR tree-optimization/36550
2198         * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
2199         (mark_threaded_blocks): Rewrite code to avoid block copying when
2200         optimizing for size.  Don't pessimize blocks which will be
2201         copied, but all the statements will be dead.
2202
2203 2017-12-15  Alexandre Oliva <aoliva@redhat.com>
2204
2205         PR tree-optimization/81165
2206         * tree-ssa-threadupdate.c (uses_in_bb): New.
2207         (estimate_threading_killed_stmts): New.
2208         * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
2209         * tree-ssa-threadedge.c 
2210         (record_temporary_equivalences_from_stmts_at_dest): Expand limit
2211         when its hit.
2212
2213 2017-12-15  Jeff Law  <law@redhat.com>
2214
2215         PR tree-optimization/83410
2216         * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
2217         threads when parallelizing loops.
2218
2219 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
2220
2221         * tree-core.h (struct attribute_spec): Swap affects_type_identity and
2222         handler fields.
2223         * config/alpha/alpha.c (vms_attribute_table): Swap
2224         affects_type_identity and handler fields, adjust comments.
2225         * config/mips/mips.c (mips_attribute_table): Likewise.
2226         * config/visium/visium.c (visium_attribute_table): Likewise.
2227         * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
2228         * config/microblaze/microblaze.c (microblaze_attribute_table):
2229         Likewise.
2230         * config/spu/spu.c (spu_attribute_table): Likewise.
2231         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2232         * config/arc/arc.c (arc_attribute_table): Likewise.
2233         * config/m68k/m68k.c (m68k_attribute_table): Likewise.
2234         * config/v850/v850.c (v850_handle_interrupt_attribute,
2235         v850_handle_data_area_attribute): Formatting fixes.
2236         (v850_attribute_table): Swap affects_type_identity and handler
2237         fields, adjust comments.
2238         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2239         * config/arm/arm.c (arm_attribute_table): Likewise.
2240         * config/avr/avr.c (avr_attribute_table): Likewise.
2241         * config/s390/s390.c (s390_attribute_table): Likewise.
2242         * config/sh/sh.c (sh_attribute_table): Likewise.
2243         * config/i386/i386.c (ix86_handle_cconv_attribute,
2244         ix86_handle_callee_pop_aggregate_return): Formatting fixes.
2245         (ix86_attribute_table): Swap affects_type_identity and handler
2246         fields, adjust comments.
2247         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2248         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2249         * config/m32c/m32c.c (m32c_attribute_table): Likewise.
2250         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
2251         * config/ia64/ia64.c (ia64_attribute_table): Likewise.
2252         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2253         * config/rx/rx.c (rx_attribute_table): Likewise.
2254         * config/cr16/cr16.c (cr16_attribute_table): Likewise.
2255         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2256         * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
2257         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
2258         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2259         * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
2260         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2261         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2262         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2263         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2264         * doc/plugins.texi (user_attr): Likewise.  Add NULL for
2265         exclude.
2266         * attribs.c (empty_attribute_table): Swap affects_type_identity and
2267         handler fields.
2268         (register_scoped_attributes, decl_attributes): Formatting fixes.
2269
2270         PR tree-optimization/83269
2271         * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
2272         subtraction in arg0's type if type is signed and arg0 is unsigned.
2273         Formatting fix.
2274
2275         PR sanitizer/81281
2276         * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
2277         convert? on @0 instead of convert.  Check type of @1, not @0.
2278         ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
2279         convert? on @0 instead of convert.  Check type of @1, not @0.
2280         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
2281         only optimize if either both @1 and @2 types are narrower
2282         precision, or both are wider or equal precision, and in the former
2283         case only if both have undefined overflow.
2284
2285 2017-12-15  Richard Biener  <rguenther@suse.de>
2286
2287         PR lto/83388
2288         * internal-fn.def (IFN_NOP): Add.
2289         * internal-fn.c (expand_NOP): Do nothing.
2290         * lto-streamer-in.c (input_function): Instead of removing
2291         sanitizer calls replace them with IFN_NOP calls.
2292
2293 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
2294             Alan Hayward  <alan.hayward@arm.com>
2295             David Sherwood  <david.sherwood@arm.com>
2296
2297         * dse.c (store_info, read_info_type): Replace begin and end with
2298         offset and width.
2299         (print_range): New function.
2300         (set_all_positions_unneeded, any_positions_needed_p)
2301         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
2302         accordingly.
2303         (record_store): Likewise.  Optimize the case in which all positions
2304         are unneeded.
2305         (get_stored_val): Replace read_begin and read_end with read_offset
2306         and read_width.
2307         (replace_read): Update call accordingly.
2308
2309 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
2310
2311         * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
2312         (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
2313         (loop_cand::loop_cand): Initialize above members.
2314         (loop_cand::supported_operations): Delete.
2315         (loop_cand::can_interchange_p): Inline above function.
2316         (loop_cand::classify_simple_reduction): Record number of constant
2317         initialized simple reductions.
2318         (should_interchange_loops): New parameters.  Check stmt cost of loops
2319         to be interchange.
2320         (tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
2321         Update call to should_interchange_loops.
2322         (should_interchange_loop_nest): Update call to
2323         should_interchange_loops.
2324
2325 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
2326
2327         PR target/66488
2328         * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
2329         * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
2330         * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
2331
2332 2017-12-15  Julia Koval  <julia.koval@intel.com>
2333
2334         * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
2335         __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
2336         * config/i386/sse.md (vaesenclast_<mode>): New pattern.
2337         * config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
2338         _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
2339
2340 2017-12-15  Julia Koval  <julia.koval@intel.com>
2341
2342         * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
2343         __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
2344         * config/i386/sse.md (vaesenc_<mode>): New pattern.
2345         * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
2346         _mm_aesenc_epi128): New intrinsics.
2347
2348 2017-12-15  Julia Koval  <julia.koval@intel.com>
2349
2350         * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
2351         __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
2352         * config/i386/sse.md (vaesdeclast_<mode>): New pattern.
2353         * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
2354         _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
2355
2356 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2357
2358         * gimple-ssa-strength-reduction.c (analyze_increments):
2359         Distinguish replacement costs for constant strides from those for
2360         unknown strides.
2361
2362 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2363
2364         * var-tracking.c (variable_tracking_main_1): Formatting fix.
2365
2366 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2367
2368         * doc/invoke.texi: Document -Wcast-function-type.
2369         * recog.h (stored_funcptr): Change signature.
2370         * tree-dump.c (dump_node): Avoid warning.
2371         * typed-splay-tree.h (typed_splay_tree): Avoid warning.
2372
2373 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
2374
2375         PR middle_end/79538
2376         * gimple-fold.c (get_range_strlen): Add the handling of non-member 
2377         array.
2378
2379 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
2380
2381         PR tree-optimization/83312
2382         * domwalk.h (dom_walker::dom_walker): Fix typo in comment.
2383         * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
2384         "val" param, and to cope with arbitrary basic blocks.
2385         (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
2386         handle NULL_TREE for "val", dropping "bb" param.
2387         (find_taken_edge_switch_expr): Make "switch_stmt" param const and
2388         drop "bb" param.  Handle NULL_TREE for "val".
2389         (find_case_label_for_value): Make "switch_stmt" param const.
2390         * tree-vrp.c (class check_array_bounds_dom_walker): New subclass
2391         of dom_walker.
2392         (vrp_prop::check_all_array_refs): Reimplement as...
2393         (check_array_bounds_dom_walker::before_dom_children): ...this new
2394         vfunc.  Replace linear search through BB block list, excluding
2395         those with non-executable in-edges via dominator walk.
2396
2397 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2398
2399         * config/arm/arm.opt (mverbose-cost-dump): New option.
2400         * config/arm/arm.c (arm_rtx_costs): Use it.
2401
2402 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
2403
2404         PR bootstrap/83396
2405         * reload1.c (emit_input_reload_insns): Skip debug markers.
2406
2407 2017-12-14  Alexandre Oliva <aoliva@redhat.com>
2408
2409         * config/i386/i386.c (rest_of_insert_endbranch): Use call loc
2410         for its nop_endbr.
2411
2412         PR bootstrap/83396
2413         * config/arc/arc.c (hwloop_optimize): Skip debug insns.
2414         * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
2415         * config/sh/sh.c: Skip debug insns besides notes.
2416         * config/sh/sh.md: Likewise.
2417         * config/sh/sh_treg_combine.cc: Likewise.
2418         * config/sh/sync.md: Likewise.
2419
2420 2017-12-14  Tom de Vries  <tom@codesourcery.com>
2421
2422         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
2423         Add item for weak_undefined.
2424
2425 2017-12-14  Richard Biener  <rguenther@suse.de>
2426
2427         PR tree-optimization/67842
2428         * sese.h (bb_in_region): Remove #if 0'ed code.
2429
2430 2017-12-14  Richard Biener  <rguenther@suse.de>
2431
2432         PR tree-optimization/83326
2433         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
2434         may_be_zero parameter and handle it by not marking the first
2435         peeled copy as not exiting the loop.
2436         (try_peel_loop): Likewise.
2437         (canonicalize_loop_induction_variables): Use number_of_iterations_exit
2438         to handle the case of constant or zero iterations and perform
2439         loop header copying on-the-fly.
2440
2441 2017-12-14  Richard Biener  <rguenther@suse.de>
2442
2443         PR tree-optimization/83418
2444         * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
2445         Instead of asserting we don't get unfolded comparisons deal with
2446         them.
2447
2448 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2449
2450         PR bootstrap/83396
2451         * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
2452         basic blocks.  Assert debug bind insns don't appear outside of bbs,
2453         don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
2454         bb.  Simplify.
2455
2456         PR tree-optimization/83198
2457         * gimple-ssa-sprintf.c (format_floating): Set type solely based on
2458         dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
2459         value if arg is a REAL_CST with incompatible type.
2460
2461 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
2462             Bin Cheng  <bin.cheng@arm.com>
2463
2464         PR target/81228
2465         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
2466         to CCFPEmode.
2467         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
2468         LTGT.
2469
2470 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2471
2472         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
2473         cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
2474
2475 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
2476             Alan Hayward  <alan.hayward@arm.com>
2477             David Sherwood  <david.sherwood@arm.com>
2478
2479         * poly-int.h: New file.
2480         * poly-int-types.h: Likewise.
2481         * coretypes.h: Include them.
2482         (POLY_INT_CONVERSION): Define.
2483         * target.def (estimated_poly_value): New hook.
2484         * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
2485         * doc/tm.texi: Regenerate.
2486         * doc/poly-int.texi: New file.
2487         * doc/gccint.texi: Include it.
2488         * doc/rtl.texi: Describe restrictions on subreg modes.
2489         * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
2490         * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
2491         (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
2492         * targhooks.h (default_estimated_poly_value): Declare.
2493         * targhooks.c (default_estimated_poly_value): New function.
2494         * target.h (estimated_poly_value): Likewise.
2495         * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
2496         (wi::unary_traits): Delete.
2497         (wi::binary_traits::signed_shift_result_type): Define for
2498         offset_int << HOST_WIDE_INT, etc.
2499         (generic_wide_int::operator <<=): Define for all types and use
2500         wi::lshift instead of <<.
2501         (wi::hwi_with_prec): Add a default constructor.
2502         (wi::ints_for): New class.
2503         (operator <<): Define for all wide-int types.
2504         (operator /): New function.
2505         (operator %): Likewise.
2506         * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
2507         (ASSERT_MAYBE_NE_AT): New macros.
2508
2509 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
2510             Dominik Vogt  <vogt@linux.vnet.ibm.com>
2511
2512         PR middle-end/78468
2513         * emit-rtl.c (init_emit): Remove ??? comment.
2514         * explow.c (get_dynamic_stack_size): Take known alignment of stack
2515         pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
2516         * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
2517         alignment of 3 virtual registers to BITS_PER_WORD.
2518
2519         * config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
2520
2521 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
2522
2523         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
2524         * config/rs6000/rs6000.c (cpu_supports_info): Use it.
2525
2526 2017-12-13  Alexandre Oliva <aoliva@redhat.com>
2527
2528         PR bootstrap/83396
2529         * reload1.c (eliminate_regs_in_insn): Skip debug markers.
2530
2531 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
2532
2533         * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
2534         with the exception of debug begin stmt markers appear before
2535         labels.
2536
2537         PR bootstrap/83396
2538         * final.c (rest_of_handle_final): Call variable_tracking_main only
2539         if !flag_var_tracking.
2540
2541 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2542             Jakub Jelinek  <jakub@redhat.com>
2543
2544         PR bootstrap/83396
2545         PR debug/83391
2546         * tree-cfgcleanup.c (remove_forwarder_block): Keep after
2547         labels debug stmts that can only appear after labels.
2548
2549 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
2550
2551         PR rtl-optimization/82398
2552         * sel-sched.c (sel_rank_for_schedule): Fix check for zero
2553         EXPR_USEFULNESS in priority comparison.
2554
2555 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
2556
2557         PR rtl-optimization/83393
2558         * combine.c (move_deaths): If reg_stat points to a too new insn in
2559         last_death, do not use it: find the proper insn instead.
2560
2561 2017-12-12  Jeff Law  <law@redhat.com>
2562
2563         PR tree-optimization/83298
2564         PR tree-optimization/83362
2565         PR tree-optimization/83383
2566         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
2567         push_value_range a public interface.  Add new argument to
2568         record_ranges_from_stmt.
2569         * gimple-ssa-evrp-analyze.c
2570         (evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
2571         Update comments.  Handle recording temporary equivalences.
2572         * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
2573         new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
2574         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
2575         * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
2576         gimple-ssa-evrp-analyze.h.
2577         (record_temporary_equivalences_from_phis): Add new argument.  When
2578         the PHI arg is an SSA_NAME, set the result's range to the range
2579         of the PHI arg.
2580         (record_temporary_equivalences_from_stmts_at_dest): Record ranges
2581         from statements too.
2582         (thread_through_normal_block): Accept new argument, evrp_range_analyzer.
2583         Pass it down to children as needed.
2584         (thread_outgoing_edges): Likewise.
2585         (thread_across_edge): Likewise.   Push/pop range state as needed.
2586         * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
2587
2588 2017-12-12  Julia Koval  <julia.koval@intel.com>
2589
2590         * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
2591         (PTA_CANNONLAKE): Remove PTA_CLWB.
2592
2593 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2594
2595         PR target/83332
2596         * config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
2597         (vcondv2div2df): Likewise.
2598         (vconduv2dfv2di): Likewise.
2599
2600 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2601
2602         * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
2603         BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
2604         BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
2605         ATTR_MATHFN_FPROUNDING_ERRNO.
2606
2607 2017-12-12  Richard Biener  <rguenther@suse.de>
2608
2609         PR tree-optimization/83385
2610         * graphite-scop-detection.c (get_order, order): Remove.
2611         (bb_to_rpo): New global.
2612         (cmp_pbbs): Adjust.
2613         (build_scops): Sort pbbs in RPO order.
2614
2615 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
2616
2617         * combine.c (simplify_set): Do not transform subregs to zero_extends
2618         if the destination mode is a vector mode.
2619
2620 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2621
2622         PR tree-optimization/83359
2623         * tree-cfg.h (fold_loop_internal_call): Declare.
2624         * tree-vectorizer.c (fold_loop_internal_call): Moved to ...
2625         * tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
2626         (find_loop_dist_alias): New function.
2627         (move_sese_region_to_fn): If any dloop->orig_loop_num value is
2628         updated, also adjust any corresponding LOOP_DIST_ALIAS internal
2629         calls.
2630
2631         PR tree-optimization/80631
2632         * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
2633         (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
2634         arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
2635         hardcoding zero as the value if COND_EXPR is never true.  For
2636         INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
2637         INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
2638         hardcoding MAX_EXPR as the reduction operation.
2639         (is_nonwrapping_integer_induction): Allow negative step.
2640         (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
2641         vect_create_epilog_for_reduction, if no value is suitable, don't
2642         use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
2643
2644 2017-12-12  Richard Biener  <rguenther@suse.de>
2645
2646         PR tree-optimization/81889
2647         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
2648         range info from the non-wrapping IV instead of just the range
2649         of the type.
2650
2651 2017-12-12  Julia Koval  <julia.koval@intel.com>
2652
2653         * config.gcc: Add vaesintrin.h.
2654         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
2655         New type.
2656         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
2657         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
2658         New builtins.
2659         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
2660         * config/i386/immintrin.h: Include vaesintrin.h.
2661         * config/i386/sse.md (vaesdec_<mode>): New pattern.
2662         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
2663         _mm_aesdec_epi128): New intrinsics.
2664
2665 2017-12-12  Julia Koval  <julia.koval@intel.com>
2666
2667         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
2668         OPTION_MASK_ISA_VAES_UNSET): New.
2669         (ix86_handle_option): Handle -mvaes.
2670         * config/i386/cpuid.h: Define bit_VAES.
2671         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
2672         * config/i386/i386-c.c (__VAES__): New.
2673         * config/i386/i386.c (ix86_target_string): Add -mvaes.
2674         (ix86_valid_target_attribute_inner_p): Ditto.
2675         * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
2676         * config/i386/i386.opt: Add -mvaes.
2677         * doc/invoke.texi: Ditto.
2678
2679 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
2680
2681         * debug.h (gcc_debug_hooks): Add inline_entry.
2682         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2683         * debug.c (do_nothing_debug_hooks): Likewise.
2684         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2685         * dwarf2out.c (dwarf2_debug_hooks): Likewise.
2686         (dwarf2_lineno_debug_hooks): Likewise.
2687
2688         * common.opt (gstatement-frontiers): New, setting
2689         debug_nonbind_markers_p.
2690         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
2691         * toplev.c (process_options): Autodetect value for debug statement
2692         frontiers option.
2693         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
2694         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
2695
2696         * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
2697         markers.  Integrate source bind into debug stmt expand loop.
2698         (pass_expand::execute): Check debug marker limit.  Avoid deep
2699         TER and expand debug locations for debug bind insns only.
2700         * cse.c (insn_live_p): Keep nonbind markers and debug bindings
2701         followed by them.
2702         * df-scan.c (df_insn_delete): Accept out-of-block debug insn.
2703         * final.c (reemit_insn_block_notes): Take current block from
2704         nonbind markers.  Declare note where it's first set.
2705         (final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
2706         begin stmt markers if enabled.
2707         (notice_source_line): Handle nonbind markers.  Fail if their
2708         location is unknown or that of builtins.
2709         (rest_of_handle_final): Convert begin stmt markers to notes if
2710         var-tracking didn't run.
2711         (rest_of_clean_state): Skip begin stmt markers.
2712         * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
2713         markers.
2714         * function.c (allocate_struct_function): Set begin_stmt_markers.
2715         * function.h (struct function): Add debug_marker_count counter
2716         and debug_nonbind_markers flag.
2717         * gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
2718         * gimple-low.c (lower_function_body): Adjust
2719         debug_nonbind_markers.
2720         (lower_stmt): Drop or skip gimple debug stmts.
2721         (lower_try_catch): Skip debug stmts.
2722         * gimple.c (gimple_build_debug_begin_stmt): New.
2723         (gimple_copy): Increment debug_marker_count if copying one.
2724         * gimple.h (gimple_build_debug_begin_stmt): Declare.
2725         * gimplify.c (rexpr_location): New.
2726         (rexpr_has_location): New.
2727         (warn_switch_unreachable_r): Handle gimple debug stmts.
2728         (shortcut_cond_r): Call expr_location.
2729         (find_goto): New.
2730         (find_goto_label): New.
2731         (shortcut_cond_expr): Call expr_has_location, expr_location, and
2732         find_goto_label.
2733         (gimplify_cond_expr): Call find_goto_label, expr_has_location, and
2734         expr_location.
2735         (gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
2736         * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
2737         (LANG_HOOKS_INITIALIZER): ... this.
2738         * langhooks.h (struct lang_hooks): Add emits_begin_stmt.
2739         * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
2740         debug insns.
2741         (update_ebb_live_info): Skip debug insn markers.
2742         * lra.c (debug_insn_static_data): Rename to...
2743         (debug_bind_static_data): ... this.
2744         (debug_marker_static_data): New.
2745         (lra_set_insn_recog_data): Select one of the above depending
2746         on debug insn kind.
2747         (lra_update_isn_regno_info): Don't assume debug insns have
2748         freqs.
2749         (push_insns): Skip debug insns.
2750         * lto-streamer-in.c (input_function): Drop debug stmts
2751         depending on active options.  Adjust debug_nonbind_markers.
2752         * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
2753         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
2754         begin stmt marker notes.
2755         (print_insn): Likewise.
2756         * recog.c (extract_insn): Recognize rtl for debug markers.
2757         * rtl.def (DEBUG_MARKER): New.
2758         * tree-inline.c: Include params.h.
2759         (remap_gimple_stmt): Handle nonbind markers.
2760         (maybe_move_debug_stmts_to_successors): Likewise.
2761         (copy_debug_stmt): Likewise.
2762         * tree-iterator.c (append_to_statement_list_1): Append begin stmt
2763         markers regardless of no side effects.
2764         (tsi_link_before): Don't update container's side effects when adding
2765         a begin stmt marker.
2766         (tsi_link_after): Likewise.
2767         (expr_first): Skip begin stmt markers.
2768         (expr_last): Likewise.
2769         * tree-pretty-print (dump_generic_node): Handle begin stmt markers.
2770         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
2771         Disregard nonbind markers.
2772         * tree.c (make_node_stat): Don't set side effects for begin stmt
2773         markers.
2774         (build1_stat): Likewise.
2775         * tree.def (DEBUG_BEGIN_STMT): New.
2776         * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
2777         * var-tracking.c (delete_debug_insns): Renamed to...
2778         (delete_vta_debug_insns): ... this.
2779         (reemit_marker_as_note): New.
2780         (vt_initialize): Reemit markers.
2781         (delete_vta_debug_insns): Likewise.
2782         (vt_debug_insns_local): Reemit or delete markers.
2783         (variable_tracking_main_1): Likewise.
2784         * doc/generic.texi (DEBUG_BEGIN_STMT): Document.
2785         * doc/gimple.texi (gimple_debug_begin_stmt_p): New.
2786         (gimple_debug_nonbind_marker_p): New.
2787         (gimple_build_debug_bind): Adjust.
2788         (gimple_build_debug_begin_stmt): New.
2789         * doc/invoke.texi (max-debug-marker-count): New param.
2790         * doc/rtl.texi (debug_implicit_ptr, entry_value): New.
2791         (debug_parameter_ref, debug_marker): New.
2792         (NOTE_INSN_BEGIN_STMT): New.
2793         (DEBUG_INSN): Describe begin stmt markers.
2794
2795         * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
2796         without debug insns, we wouldn't, but clean up debug insns
2797         after a control flow insn nevertheless.
2798
2799         * cfgcleanup.c (delete_unreachable_blocks): Use alternate
2800         block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
2801         * cfgexpand.c (label_rtx_for_bb): Skip debug insns.
2802         * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
2803         (rtl_tidy_fallthru_edge): Likewise.
2804         (rtl_verify_fallthru): Likewise.
2805         (rtl_verify_bb_layout): Likewise.
2806         (skip_insns_after_block): Likewise.
2807         (duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
2808         * dwarf2out.c: Include print-rtl.h.
2809         (dwarf2out_next_real_insn): New.
2810         (dwarf2out_var_location): Call it.  Disregard begin stmt markers.
2811         Dump debug binds in asm comments.
2812         * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
2813         * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
2814         callers to use gsi_start_nondebug_bb instead.
2815         (gsi_after_labels): Skip gimple debug stmts.
2816         (gsi_start_nondebug): New.
2817         * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
2818         (proper_loop_form_for_interchange): Adjust.
2819         * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
2820         * gimple.h (gimple_seq_last_nondebug_stmt): New.
2821         * gimplify.c (last_stmt_in_scope): Skip debug stmts.
2822         (collect_fallthrough_labels): Likewise.
2823         (should_warn_for_implicit_fallthrough): Likewise.
2824         (warn_implicit_fallthrough_r): Likewise.
2825         (expand_FALLTHROUGH_r): Likewise.
2826         * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
2827         (graphite_copy_stmts_from_block): Skip nonbind markers.
2828         * haifa-sched.c (sched_extend_bb): Skip debug insns.
2829         * ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
2830         * jump.c (clean_barriers): Skip debug insns.
2831         * omp-expand.c (expand_parallel_call): Skip debug insns.
2832         (expand_task_call): Likewise.
2833         (remove_exit_barrier): Likewise.
2834         (expand_omp_taskreg): Likewise.
2835         (expand_omp_for_init_counts): Likewise.
2836         (expand_omp_for_generic): Likewise.
2837         (expand_omp_for_static_nochunk): Likewise.
2838         (expand_omp_for_static_chunk): Likewise.
2839         (expand_omp_simd): Likewise.
2840         (expand_omp_taskloop_for_outer): Likewise.
2841         (expand_omp_taskloop_for_inner): Likewise.
2842         (expand_oacc_for): Likewise.
2843         (expand_omp_sections): Likewise.
2844         (expand_omp_single): Likewise.
2845         (expand_omp_synch): Likewise.
2846         (expand_omp_atomic_load): Likewise.
2847         (expand_omp_atomic_store): Likewise.
2848         (expand_omp_atomic_fetch_op): Likewise.
2849         (expand_omp_atomic_pipeline): Likewise.
2850         (expand_omp_atomic_mutex): Likewise.
2851         (expand_omp_target): Likewise.
2852         (grid_expand_omp_for_loop): Likewise.
2853         (grid_expand_target_grid_body): Likewise.
2854         (build_omp_regions_1): Likewise.
2855         * omp-low.c (check_combined_parallel): Skip debug stmts.
2856         * postreload.c (fixup_debug_insns): Skip nonbind debug insns.
2857         * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
2858         * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
2859         test.
2860         * tree-cfg.c (make_blobs_1): Skip debug stmts.
2861         (make_edges): Likewise.
2862         (cleanup_dead_labels): Likewise.
2863         (gimple_can_merge_blocks_p): Likewise.
2864         (stmt_starts_bb_p): Likewise.
2865         (gimple_block_label): Likewise.
2866         (gimple_redirect_edge_and_branch): Likewise.
2867         * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
2868         of debug stmts.
2869         (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
2870         TDF_SLIM.
2871         * tree-pretty-print (print_declaration): Omit initializer in slim
2872         dumps.
2873         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
2874         markers.
2875         (eliminate_unnecessary_stmts): Stabilize block removal order.
2876         * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
2877         * var-tracking.c (get_first_insn): New.
2878         (vt_emit_notes): Call it.
2879         (vt_initialize): Walk any insns before the first BB.
2880         (delete_debug_insns): Likewise.
2881
2882         * gimple.h (enum gimple_debug_subcode): Add
2883         GIMPLE_DEBUG_BEGIN_STMT.
2884         (gimple_debug_begin_stmt_p): New.
2885         (gimple_debug_nonbind_marker_p): New.
2886         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
2887         (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
2888         (MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
2889         * insn-notes.def (BEGIN_STMT): New.
2890         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
2891         (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
2892         (MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
2893         (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
2894         (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
2895         (INSN_DEBUG_MARKER_KIND): New.
2896         (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
2897         (INSN_VAR_LOCATION): Check for VAR_LOCATION.
2898         (INSN_VAR_LOCATION_PTR): New.
2899         * cfgexpand.c (expand_debug_locations): Handle debug bind insns
2900         only.
2901         (expand_gimple_basic_block): Likewise.  Emit debug temps for TER
2902         deps only if debug bind insns are enabled.
2903         (pass_expand::execute): Avoid deep TER and expand
2904         debug locations for debug bind insns only.
2905         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
2906         debug stmts special handling down to debug bind stmts.
2907         * combine.c (try_combine): Narrow debug insns special handling
2908         down to debug bind insns.
2909         * cse.c (delete_trivially_dead_insns): Handle debug bindings.
2910         Narrow debug insns preexisting special handling down to debug
2911         bind insns.
2912         * dce.c (rest_of_handle_ud_dce): Narrow debug insns special
2913         handling down to debug bind insns.
2914         * function.c (instantiate_virtual_regs): Skip debug markers,
2915         adjust handling of debug binds.
2916         * gimple-ssa-backprop.c (backprop::prepare_change): Try debug
2917         temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
2918         * haifa-sched.c (schedule_insn): Narrow special handling of debug
2919         insns to debug bind insns.
2920         * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
2921         special handling of debug stmts to debug bind stmts.
2922         * ipa-split.c (split_function): Likewise.
2923         * ira.c (combine_and_move_insns): Adjust debug bind insns only.
2924         * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
2925         debug insns.
2926         * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
2927         * regrename.c (build_def_use): Likewise.
2928         * regcprop.c (copyprop_hardreg_forward_1): Likewise.
2929         (pass_cprop_hardreg): Narrow special casing of debug insns to
2930         debug bind insns.
2931         * regstat.c (regstat_init_n_sets_and_refs): Likewise.
2932         * reload1.c (reload): Likewise.
2933         * sese.c (sese_insert_phis_for_liveouts): Narrow special
2934         casing of debug stmts to debug bind stmts.
2935         * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
2936         * ssa-iterators.h (num_imm_uses): Likewise.
2937         * tree-cfg.c (gimple_merge_blocks): Narrow special casing of
2938         debug stmts to debug bind stmts.
2939         * tree-inline.c (tree_function_versioning): Narrow special casing
2940         of debug stmts to debug bind stmts.
2941         * tree-loop-distribution.c (generate_loops_for_partition):
2942         Narrow special casing of debug stmts to debug bind stmts.
2943         * tree-sra.c (analyze_access_subtree): Narrow special casing
2944         of debug stmts to debug bind stmts.
2945         * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
2946         stmts to debug bind stmts.
2947         * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
2948         casing of debug stmts to debug bind stmts.
2949         * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
2950         * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
2951         casing of debug stmts to debug bind stmts.
2952         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
2953         Likewise.
2954         * tree-ssa.c (flush_pending_stmts): Narrow special casing of
2955         debug stmts to debug bind stmts.
2956         (gimple_replace_ssa_lhs): Likewise.
2957         (insert_debug_temp_for_var_def): Likewise.
2958         (insert_debug_temps_for_defs): Likewise.
2959         (reset_debug_uses): Likewise.
2960         * tree-ssanames.c (release_ssa_name_fn): Likewise.
2961         * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
2962         (adjust_debug_stmts): Likewise.
2963         (adjust_phi_and_debug_stmts): Likewise.
2964         (vect_do_peeling): Likewise.
2965         * tree-vect-loop.c (vect_transform_loop): Likewise.
2966         * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
2967         * var-tracking.c (adjust_mems): Narrow special casing of debug
2968         insns to debug bind insns.
2969         (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
2970         (compute_bb_dataflow, vt_find_locations): Likewise.
2971         (vt_expand_loc, emit_notes_for_changes): Likewise.
2972         (vt_init_cfa_base): Likewise.
2973         (vt_emit_notes): Likewise.
2974         (vt_initialize): Likewise.
2975         (vt_finalize): Likewise.
2976
2977         * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
2978         (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
2979         (next_nonnote_nondebug_insn_bb): New.
2980         (prev_nonnote_nondebug_insn_bb): New.
2981         (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
2982         * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
2983         (prev_nonnote_nondebug_insn_bb): Declare.
2984         (next_nonnote_nondebug_insn_bb): Declare.
2985         * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
2986         * cfgrtl.c (get_last_bb_insn): Likewise.
2987         * lra.c (push_insns): Likewise.
2988
2989 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
2990
2991         PR c/82050
2992         * selftest-run-tests.c (selftest::run_tests): Move start/finish code
2993         to...
2994         * selftest.c (selftest::test_runner::test_runner): New ctor.
2995         (selftest::test_runner::~test_runner): New dtor.
2996         * selftest.h (class selftest::test_runner): New class.
2997
2998 2017-12-11  Carl Love  <cel@us.ibm.com>
2999
3000         * config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
3001         vec_extract_fp32_from_shortl]): Add #defines.
3002         * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
3003         * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
3004         ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
3005         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
3006         ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
3007         ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
3008         * doc/extend.texi: Add documentation for the added builtins.
3009
3010 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
3011
3012         PR rtl-optimization/80693
3013         PR rtl-optimization/81019
3014         PR rtl-optimization/81020
3015         * combine.c (distribute_notes): Reset any REG_UNUSED REGs that
3016         are not mentioned in i3.  Place the REG_UNUSED note on i2,
3017         possibly modified to REG_DEAD, if it did not originate in i3.
3018
3019 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3020
3021         * recog.c (store_data_bypass_p_1): New function.
3022         (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
3023         store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
3024
3025 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
3026
3027         PR rtl-optimization/83361
3028         * ifcvt.c (if_convert): Call fixup_partitions.
3029
3030 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
3031
3032         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
3033         early folding of splat_u{8,16,32}.
3034
3035 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3036
3037         * config/aarch64/aarch64.c (aarch64_print_operand): Don't start
3038         output_operand_lossage first argument with capital letter.
3039         (aarch64_override_options): Don't start error and sorry first argument
3040         with capital letter.
3041
3042 2017-12-11  Andi Kleen  <ak@linux.intel.com>
3043
3044         PR gcov-profile/83355
3045         * auto-profile.c (string_table::get_index_by_decl): Don't
3046         recurse when abstract origin points to itself.
3047
3048 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
3049
3050         PR tree-optimization/83320
3051         * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
3052         (prune_datarefs_not_in_loop): Ditto.
3053
3054 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
3055
3056         * doc/install.texi (Specific): Tweak link to mkssoftware.com.
3057
3058 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
3059
3060         PR tree-optimization/83337
3061         * gimple-loop-interchange.cc (compute_access_stride): Handle
3062         bitfield DRs properly.
3063
3064 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
3065
3066         PR tree-optimization/83338
3067         * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
3068         vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
3069         vector of unsigned integers to vector of signed integers.
3070
3071 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
3072
3073         PR rtl-optimization/83317
3074         * lra-constraints.c (process_address_1): Add insn code check.
3075
3076 2017-12-08  Michael Matz  <matz@suse.de>
3077
3078         Fix PR tree-optimization/83323
3079         * gimple-loop-jam (unroll_jam_possible_p): Correct test for
3080         head-controlled loops and loop BBs.
3081         * common.opt (funroll-and-jam): Remove, instead ...
3082         (floop-unroll-and-jam): ... reuse this option.
3083         * opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
3084         * doc/invoke.texi (-funroll-and-jam): Move docu to ...
3085         (-floop-unroll-and-jam): ... this option.
3086
3087 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3088
3089         * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
3090         a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
3091         * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
3092
3093 2017-12-08  Richard Biener  <rguenther@suse.de>
3094
3095         PR middle-end/81782
3096         * tree-ssa-uninit.c (warn_uninitialized_vars): Properly
3097         handle accesses outside of zero-sized vars.
3098
3099 2017-12-08  Martin Jambor  <mjambor@suse.cz>
3100
3101         PR tree-optimization/83141
3102         * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
3103         test for MEM_REFs implicitely changing types with padding.  Remove
3104         inline keyword.
3105         (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
3106
3107 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3108
3109         * config/arc/arc.c (arc_attribute_table): Add exclusions to
3110         the comment.
3111         * config/avr/avr.c (avr_attribute_table): Likewise.
3112         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
3113         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
3114         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
3115         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
3116         of struct attribute_spec.
3117         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
3118
3119 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
3120
3121         PR target/82960
3122         * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
3123
3124 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
3125
3126         PR middle-end/83609
3127         * profile-count.c (profile_count::from_gcov_type): Move from
3128         profile-count.h; handle overflow.
3129         * profile-count.h (profile_count::from_gcov_type): Move offline.
3130
3131 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
3132
3133         PR rtl-optimization/83304
3134         * combine.c (move_deaths): If we do not know where a register died,
3135         search for it.
3136
3137 2017-12-08  Richard Biener  <rguenther@suse.de>
3138
3139         * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
3140         Provide -fopt-info-loop feedback when we interchange in a nest.
3141
3142 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3143
3144         * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
3145         for armv6 ARM CPU IDs.
3146
3147 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3148
3149         * common/config/arm/arm-common.c: Include <algorithm>.
3150         (INCLUDE_VECTOR): Define.
3151         (compare_opt_names): New function.
3152         (arm_rewrite_selected_arch): Only strip out extensions that can be
3153         expressed through -mfpu.  Sort the remaining extensions
3154         alphabetically.
3155
3156 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3157
3158         * config/arm/arm.h (arm_asm_auto_mfpu): Declare.
3159         (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
3160         (ASM_CPU_SPEC): Use it if -mfpu is set to auto.
3161         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
3162
3163 2017-06-08  Tristan Gingold  <gindold@adacore.com>
3164
3165         PR ada/81470
3166         * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
3167         .cfi_personality or .cfi_lsda if the eh data format is dwarf2.
3168
3169 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3170
3171         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
3172         of struct attribute_spec.
3173
3174 2017-12-08  Julia Koval  <julia.koval@intel.com>
3175
3176         * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
3177         _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
3178         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
3179         _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
3180         _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
3181         _mm_maskz_dpwssds_epi32): Ditto.
3182
3183 2017-12-08  Richard Biener  <rguenther@suse.de>
3184
3185         PR tree-optimization/81303
3186         * tree-vect-stmts.c (vect_is_simple_cond): For invariant
3187         conditions try to create a comparison vector type matching
3188         the data vector type.
3189         (vectorizable_condition): Adjust.
3190         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
3191         Leave invariant conditions alone in case we can vectorize those.
3192
3193 2017-12-08  Julia Koval  <julia.koval@intel.com>
3194
3195         * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
3196         _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
3197         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
3198         _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
3199         _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
3200
3201 2017-12-08  Julia Koval  <julia.koval@intel.com>
3202
3203         * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
3204         _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
3205         * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
3206         _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
3207         _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
3208         _mm_maskz_dpbusds_epi32): New intrinsics.
3209
3210 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3211
3212         * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
3213         operand.
3214         (ld<bh>io_signed): Likewise.
3215         (st<bhw>io): Likewise.
3216         * config/nios2/predicates.md (ldstio_memory_operand): Allow
3217         SMALL_INT12 constant integer operand.
3218
3219 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3220
3221         * config/nios2/nios2.c (nios2_symbolic_constant_allowed):
3222         Rename to...
3223         (nios2_large_constant_allowed): ...this.  Adjust uses.
3224         (nios2_plus_symbolic_constant_p): Rename to...
3225         (nios2_plus_large_constant_p): ...this.  Adjust uses.
3226         (nios2_legitimate_address_p): Correct CONST_INT handling.
3227         (nios2_symbolic_memory_operand_p): Rename to...
3228         (nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
3229         (nios2_large_constant_p): Check for large constant integers too.
3230         (nios2_split_large_constant): Handle constant integers.
3231         (nios2_split_symbolic_memory_operand): Rename to...
3232         (nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
3233         (nios2_legitimize_constant_address): Handle constant integers.
3234         (r0rel_constant_p): Handle small constant integers.
3235         (nios2_print_operand_address): Handle r0-relative integer addresses.
3236         * config/nios2/nios2-protos.h: Adjust for renamed functions.
3237         * config/nios2/nios2.md: Adjust for renamed functions.
3238
3239 2017-12-07  Andrew Waterman  <andrew@sifive.com>
3240
3241         * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
3242         (TARGET_HAVE_SRODATA_SECTION): New define.
3243         (riscv_select_section): New function.
3244
3245 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
3246             Alexander Monakov  <amonakov@ispras.ru>
3247             Jakub Jelinek  <jakub@redhat.com>
3248
3249         PR target/81906
3250         * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
3251
3252 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3253
3254         * config/aarch64/aarch64.c (aarch64_print_address_internal): Return
3255         a bool success value.  Don't call output_operand_lossage here.
3256         (aarch64_print_ldpstp_address): Return a bool success value.
3257         (aarch64_print_operand_address): Call output_addr_const if
3258         aarch64_print_address_internal fails.
3259         (aarch64_print_operand): Don't assert that the mode is 16 bytes for
3260         'y'; call output_operand_lossage instead.  Call output_operand_lossage
3261         if aarch64_print_ldpstp_address fails.
3262
3263 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3264
3265         * tree-vector-builder.h
3266         (tree_vector_builder::binary_encoded_nelts): Declare.
3267         * tree-vector-builder.c
3268         (tree_vector_builder::binary_encoded_nelts): New function.
3269         * fold-const.c (negate_expr_p): Likewise.
3270         (operand_equal_p, fold_checksum_tree): Likewise.
3271         * tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
3272         * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
3273         (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
3274         (uniform_vector_p): Likewise.
3275         * varasm.c (const_hash_1, compare_constant): Likewise.
3276         * tree-ssa-ccp.c: Include tree-vector-builder.h.
3277         (valid_lattice_transition): Operate directly on the VECTOR_CST
3278         encoding.
3279         * ipa-icf.c: Include tree-vector-builder.h.
3280         (sem_variable::equals): Operate directly on the VECTOR_CST encoding.
3281         * print-tree.c (print_node): Print encoding of VECTOR_CSTs.
3282
3283 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3284
3285         * tree.c (build_vector): Delete.
3286         * tree.h (build_vector): Make static and move into the self-testing
3287         block.
3288
3289 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3290
3291         * vector-builder.h (vector_builder::derived): New const overload.
3292         (vector_builder::elt): New function.
3293         * tree-vector-builder.h (tree_vector_builder::type): New function.
3294         (tree_vector_builder::apply_step): Declare.
3295         * tree-vector-builder.c (tree_vector_builder::apply_step): New
3296         function.
3297         * gimple-fold.h (tree_vector_builder): Declare.
3298         (gimple_build_vector): Take a tree_vector_builder instead of a
3299         type and vector of elements.
3300         * gimple-fold.c (gimple_build_vector): Likewise.
3301         * tree-vect-loop.c (get_initial_def_for_reduction): Update call
3302         accordingly.
3303         (get_initial_defs_for_reduction): Likewise.
3304         (vectorizable_induction): Likewise.
3305
3306 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3307
3308         * tree-vector-builder.h
3309         (tree_vector_builder::new_binary_operation): Declare.
3310         * tree-vector-builder.c
3311         (tree_vector_builder::new_binary_operation): New function.
3312         * fold-const.c (fold_relational_const): Use it.
3313         (const_binop): Likewise.  Check that both input vectors have
3314         the same number of elements, thus excluding things like WIDEN_SUM.
3315         Check whether it is possible to operate directly on the encodings
3316         of stepped inputs.
3317
3318 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3319
3320         * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
3321         new_unary_operation, operating only on the encoded elements.
3322         (const_unop): Likewise.
3323         (exact_inverse): Likewise.
3324         (distributes_over_addition_p): New function.
3325         (const_binop): Use tree_vector_builder and new_unary_operation
3326         for combinations of VECTOR_CST and INTEGER_CST.  Operate only
3327         on the encoded elements unless the encoding is strided and the
3328         operation does not distribute over addition.
3329         (fold_convert_const):  Use tree_vector_builder and
3330         new_unary_operation.  Operate only on the encoded elements
3331         for truncating integer conversions, or for non-stepped encodings.
3332
3333 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3334
3335         * config/sparc/sparc.c: Include tree-vector-builder.h.
3336         (sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
3337         * expmed.c: Include tree-vector-builder.h.
3338         (make_tree): Use tree_vector_builder instead of build_vector.
3339         * fold-const.c: Include tree-vector-builder.h.
3340         (const_binop): Use tree_vector_builder instead of build_vector.
3341         (const_unop): Likewise.
3342         (native_interpret_vector): Likewise.
3343         (fold_vec_perm): Likewise.
3344         (fold_ternary_loc): Likewise.
3345         * gimple-fold.c: Include tree-vector-builder.h.
3346         (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
3347         of build_vector.
3348         * tree-ssa-forwprop.c: Include tree-vector-builder.h.
3349         (simplify_vector_constructor): Use tree_vector_builder instead
3350         of build_vector.
3351         * tree-vect-generic.c: Include tree-vector-builder.h.
3352         (add_rshift): Use tree_vector_builder instead of build_vector.
3353         (expand_vector_divmod): Likewise.
3354         (optimize_vector_constructor): Likewise.
3355         * tree-vect-loop.c: Include tree-vector-builder.h.
3356         (vect_create_epilog_for_reduction): Use tree_vector_builder instead
3357         of build_vector.  Explicitly use a stepped encoding for
3358         { 1, 2, 3, ... }.
3359         * tree-vect-slp.c: Include tree-vector-builder.h.
3360         (vect_get_constant_vectors): Use tree_vector_builder instead
3361         of build_vector.
3362         (vect_transform_slp_perm_load): Likewise.
3363         (vect_schedule_slp_instance): Likewise.
3364         * tree-vect-stmts.c: Include tree-vector-builder.h.
3365         (vectorizable_bswap): Use tree_vector_builder instead of build_vector.
3366         (vect_gen_perm_mask_any): Likewise.
3367         (vectorizable_call): Likewise.  Explicitly use a stepped encoding.
3368         * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
3369         of build_vector.
3370         (build_vector_from_val): Likewise.  Explicitly use a duplicate
3371         encoding.
3372
3373 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
3374
3375         * doc/generic.texi (VECTOR_CST): Describe new representation of
3376         vector constants.
3377         * vector-builder.h: New file.
3378         * tree-vector-builder.h: Likewise.
3379         * tree-vector-builder.c: Likewise.
3380         * Makefile.in (OBJS): Add tree-vector-builder.o.
3381         * tree.def (VECTOR_CST): Update comment to refer to generic.texi.
3382         * tree-core.h (tree_base): Add a vector_cst field to the u union.
3383         (tree_vector): Change the number of elements to
3384         vector_cst_encoded_nelts.
3385         * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
3386         (VECTOR_CST_ELTS): Delete.
3387         (VECTOR_CST_ELT): Redefine using vector_cst_elt.
3388         (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
3389         (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
3390         (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
3391         (VECTOR_CST_ENCODED_ELT): Likewise.
3392         (vector_cst_encoded_nelts): New function.
3393         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3394         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3395         (vector_cst_int_elt, vector_cst_elt): Declare.
3396         * tree.c: Include tree-vector-builder.h.
3397         (tree_code_size): Abort if passed VECTOR_CST.
3398         (tree_size): Update for new VECTOR_CST layout.
3399         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3400         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3401         (build_vector): Use tree_vector_builder.
3402         (vector_cst_int_elt, vector_cst_elt): New functions.
3403         (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
3404         encoded elements and then create the vector in the canonical form.
3405         (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
3406         (check_vector_cst_stepped, test_vector_cst_patterns): New functions.
3407         (tree_c_tests): Call test_vector_cst_patterns.
3408         * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
3409         VECTOR_CST fields.
3410         (hash_tree): Likewise.
3411         * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
3412         (streamer_write_tree_header): Likewise.
3413         * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
3414         (streamer_alloc_tree): Likewise.  Update call to make_vector.
3415         * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
3416
3417 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3418
3419         * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
3420         (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
3421         * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
3422
3423 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
3424             Richard Biener  <rguenther@suse.de>
3425
3426         PR tree-optimization/81303
3427         * Makefile.in (gimple-loop-interchange.o): New object file.
3428         * common.opt (floop-interchange): Reuse the option from graphite.
3429         * doc/invoke.texi (-floop-interchange): Ditto.  New document for
3430         -floop-interchange and mention it for -O3.
3431         * opts.c (default_options_table): Enable -floop-interchange at -O3.
3432         * gimple-loop-interchange.cc: New file.
3433         * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
3434         (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
3435         * passes.def (pass_linterchange): New pass.
3436         * timevar.def (TV_LINTERCHANGE): New time var.
3437         * tree-pass.h (make_pass_linterchange): New declaration.
3438         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
3439         interchange.  Record IV before/after increment in new parameters.
3440         * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
3441         * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
3442         path check into...
3443         (check_reduction_path): ...New function here.
3444         * tree-vectorizer.h (check_reduction_path): New declaration.
3445
3446 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
3447
3448         PR target/83252
3449         PR rtl-optimization/80818
3450         * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
3451         always early clobbered.
3452         * lra-lives.c (process_bb_lives): Check input hard regs for early
3453         clobbered non-operand hard reg.
3454
3455 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
3456
3457         PR middle-end/83164
3458         * tree-cfg.c (verify_gimple_assign_binary): Don't require
3459         types_compatible_p, just that TYPE_MODE is the same.
3460
3461 2017-12-07  Martin Sebor  <msebor@redhat.com>
3462
3463         PR c/81544
3464         * attribs.c (empty_attribute_table): Initialize new member of
3465         struct attribute_spec.
3466         (decl_attributes): Add argument.  Handle mutually exclusive
3467         combinations of attributes.
3468         (selftests::test_attribute_exclusions): New function.
3469         (selftests::attribute_c_tests): Ditto.
3470         * attribs.h (decl_attributes): Add default argument.
3471         * selftest.h (attribute_c_tests): Declare.
3472         * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
3473         * tree-core.h (attribute_spec::exclusions, exclude): New type and
3474         member.
3475         * doc/extend.texi (Common Function Attributes): Update const and pure.
3476         * config/alpha/alpha.c (vms_attribute_table): Initialize new member
3477         of struct attribute_spec.
3478         * config/arc/arc.c (arc_attribute_table): Same.
3479         * config/arm/arm.c (arm_attribute_table): Same.
3480         * config/avr/avr.c ( avr_attribute_table): Same.
3481         * config/bfin/bfin.c (bfin_attribute_table): Same.
3482         * config/cr16/cr16.c (cr16_attribute_table): Same.
3483         * config/epiphany/epiphany.c (epiphany_attribute_table): Same.
3484         * config/h8300/h8300.c (h8300_attribute_table): Same.
3485         * config/i386/i386.c (ix86_attribute_table): Same.
3486         * config/ia64/ia64.c (ia64_attribute_table): Same.
3487         * config/m32c/m32c.c (m32c_attribute_table): Same.
3488         * config/m32r/m32r.c (m32r_attribute_table): Same.
3489         * config/m68k/m68k.c (m68k_attribute_table): Same.
3490         * config/mcore/mcore.c (mcore_attribute_table): Same.
3491         * config/microblaze/microblaze.c (microblaze_attribute_table): Same.
3492         * config/mips/mips.c (mips_attribute_table): Same.
3493         * config/msp430/msp430.c (msp430_attribute_table): Same.
3494         * config/nds32/nds32.c (nds32_attribute_table): Same.
3495         * config/nvptx/nvptx.c (nvptx_attribute_table): Same.
3496         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
3497         * config/rl78/rl78.c (rl78__attribute_table): Same.
3498         * config/rs6000/rs6000.c (rs6000_attribute_table): Same.
3499         * onfig/rx/rx.c (rx_attribute_table): Same.
3500         * config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
3501         * config/sh/sh.c (sh_attribute_table): Same.
3502         * config/sparc/sparc.c (sparc_attribute_table): Same.
3503         * config/spu/spu.c (spu_attribute_table): Same.
3504         * config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
3505         * config/v850/v850.c (v850_attribute_table): Same.
3506         * config/visium/visium.c (visium_attribute_table): Same.
3507
3508 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
3509
3510         PR target/82641
3511         * config/arm/arm.c (INCLUDE_STRING): Define.
3512         (arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
3513         (arm_declare_function_name): Conservatively emit .arch, .arch_extensions
3514         and .fpu.
3515
3516 2017-12-07  Michael Matz  <matz@suse.de>
3517
3518         Add unroll and jam pass
3519
3520         * gimple-loop-jam.c: New file.
3521         * Makefile.in (OBJS): Add gimple-loop-jam.o.
3522         * common.opt (funroll-and-jam): New option.
3523         * opts.c (default_options_table): Add unroll-and-jam at -O3.
3524         * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
3525         (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
3526         * passes.def: Add pass_loop_jam.
3527         * timevar.def (TV_LOOP_JAM): Add.
3528         * tree-pass.h (make_pass_loop_jam): Declare.
3529         * cfgloop.c (flow_loop_tree_node_add): Add AT argument.
3530         * cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
3531         * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
3532         to flow_loop_tree_node_add.
3533         (duplicate_subloops, copy_loops_to): Append to sibling list.
3534         * cfgloopmanip.h: (duplicate_loop): Adjust declaration.
3535         * doc/invoke.texi (-funroll-and-jam): Document new option.
3536         (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
3537
3538 2017-12-07  Richard Biener  <rguenther@suse.de>
3539
3540         PR tree-optimization/83296
3541         PR tree-optimization/67769
3542         * tree-ssa-phiopt.c (conditional_replacement): Do not reset
3543         flow sensitive info in an unrelated BB.
3544         (value_replacement): Use reset_flow_sensitive_info.
3545         (minmax_replacement): Reset flow sensitive info on the def
3546         we move.  Do not reset flow sensitive info in the whole BB
3547         we move the stmt to.
3548         (abs_replacement): Likewise.
3549
3550 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3551
3552         PR target/43871
3553         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3554         rs6000_cpu to the given -mcpu=, or to the default processor.
3555
3556 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3557
3558         * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
3559         * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
3560         instead of rs6000_cpu_attr.
3561         (rs6000_adjust_cost): Ditto.
3562         (is_microcoded_insn): Ditto.
3563         (rs6000_adjust_priority): Ditto.
3564         (rs6000_issue_rate): Ditto.
3565         (rs6000_use_sched_lookahead): Ditto.
3566         (rs6000_use_sched_lookahead_guard): Ditto.
3567         (rs6000_sched_reorder): Ditto.
3568         (force_new_group): Ditto.
3569         * config/rs6000/rs6000.md (cpu attribute): Ditto.
3570         (group_ending_nop): Ditto.
3571
3572 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3573
3574         * config/rs6000/rs6000.opt (rs6000_tune): New variable.
3575         * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
3576         rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
3577         (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
3578         appropriate.
3579         (rs6000_reassociation_width): Ditto.
3580         (rs6000_emit_epilogue): Ditto.
3581         (rs6000_adjust_cost): Ditto.
3582         (is_microcoded_insn): Ditto.
3583         (is_cracked_insn): Ditto.
3584         (rs6000_adjust_priority): Ditto.
3585         (rs6000_sched_reorder): Ditto.
3586         (rs6000_sched_reorder2): Ditto.
3587         (insn_must_be_first_in_group): Ditto.
3588         (insn_must_be_last_in_group): Ditto.
3589         (rs6000_register_move_cost): Ditto.
3590         * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
3591         rs6000_cpu.
3592
3593 2017-12-07  Julia Koval  <julia.koval@intel.com>
3594
3595         * config.gcc: Add vaesintrin.h.
3596         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
3597         New type.
3598         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
3599         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
3600         New builtins.
3601         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
3602         * config/i386/immintrin.h: Include vaesintrin.h.
3603         * config/i386/sse.md (vaesdec_<mode>): New pattern.
3604         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
3605         _mm_aesdec_epi128): New intrinsics.
3606
3607 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
3608
3609         * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
3610         * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
3611         c-family/c-spellcheck.cc.
3612         (best_macro_match::best_macro_match): Likewise.
3613         * spellcheck-tree.h
3614         (struct edit_distance_traits<cpp_hashnode *>): Move to
3615         c-family/c-spellcheck.h.
3616         (class best_macro_match): Likewise.
3617
3618 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
3619
3620         PR tree-optimization/83293
3621         * gimple-ssa-strength-reduction.c (insert_initializers): Use
3622         GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
3623         might insert into empty bb.
3624
3625         PR sanitizer/81281
3626         * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
3627         simplify for plus with :c added, and pointer_plus without that.
3628         ((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
3629         with undefined overflow and the conversion is not widening,
3630         perform negation in utype and only convert to type afterwards.
3631         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
3632         simplify for plus with :c added, and pointer_plus without that.
3633         If type is integral with undefined overflow and the conversion is
3634         not widening, perform minus in utype and only convert to type
3635         afterwards.  Move the last pointer_diff_expr simplify into the
3636         two outermost ifs.
3637
3638 2017-12-06  Martin Sebor  <msebor@redhat.com>
3639
3640         PR tree-optimization/82646
3641         * builtins.c (maybe_emit_chk_warning): Use size as the bound for
3642         strncpy, not maxlen.
3643
3644 2017-12-06  Martin Sebor  <msebor@redhat.com>
3645
3646         * doc/invoke.texi (-Wstringop-truncation): Mention attribute
3647         nonstring.
3648
3649         PR tree-optimization/83075
3650         * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
3651         strncat/strncpy don't change length of source string.
3652
3653 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
3654
3655         Revert
3656         2017-11-29  Martin Aberg  <maberg@gaisler.com>
3657
3658         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
3659         to prevent b2bst errata sequence.
3660         (sqrtdf2_fix): Likewise.
3661
3662 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
3663
3664         PR tree-optimization/81945
3665         * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
3666         * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
3667         to dest_cfun has orig_loop_num set, either remap it to the new
3668         loop number if the loop got moved too, or clear it.
3669
3670 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
3671
3672         * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
3673         to reservation.
3674         (thunderx2t99_nothing): New insn reservation.
3675         (thunderx2t99_mrs): New insn reservation.
3676         (thunderx2t99_multiple): New insn reservation.
3677         (thunderx2t99_alu_basi): Add bfx to reservation.
3678         (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
3679
3680 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3681
3682         PR target/82248
3683         * config/arm/arm.md (probe_stack) : Use the 'o' constraint.
3684
3685 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
3686
3687         * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
3688         tree-ssa-pre.c::remove_dead_inserted_code.
3689         * tree-ssa-dce.h: New file.
3690         * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
3691         (remove_dead_inserted_code): Move and rename to function
3692         tree-ssa-dce.c::simple_dce_from_worklist.
3693         (pass_pre::execute): Update use.
3694
3695 2017-12-05  Richard Biener  <rguenther@suse.de>
3696
3697         PR tree-optimization/83277
3698         * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
3699         to code-gen liveout vars.
3700
3701 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
3702
3703         * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
3704         (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
3705         (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
3706         split condition.
3707
3708 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
3709
3710         * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
3711         function.
3712         (TARGET_ASAN_SHADOW_OFFSET): New macro definition.
3713         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
3714         ASAN is enabled.
3715
3716 2017-12-05  Richard Biener  <rguenther@suse.de>
3717
3718         * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
3719         * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
3720         (pass_data_cse_sincos): Use TV_TREE_SINCOS.
3721         (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
3722
3723 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3724
3725         * dbxout.c (dbxout_block): Grow buf to 30 bytes.
3726
3727 2017-12-05  Martin Liska  <mliska@suse.cz>
3728             Jakub Jelinek  <jakub@redhat.com>
3729
3730         * doc/invoke.texi: Document the options.
3731         * flag-types.h (enum sanitize_code): Add
3732         SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
3733         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
3734         of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
3735         * opts.c: Define new sanitizer options.
3736         * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
3737         (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
3738
3739 2017-12-05  Julia Koval  <julia.koval@intel.com>
3740
3741         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
3742         OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
3743         (ix86_handle_option): Handle -mavx512vnni.
3744         * config/i386/cpuid.h (bit_AVX512VNNI): New bit.
3745         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
3746         * config/i386/i386-c (__AVX512VNNI__): New.
3747         * config/i386/i386.c (ix86_target_string): Handle new option.
3748         (ix86_valid_target_attribute_inner_p): Handle new option.
3749         * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
3750         * config/i386/i386.opt (mavx512vnni): New option.
3751
3752 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3753
3754         PR target/81616
3755         * athlon.md: Disable for generic.
3756         * haswell.md: Enable for generic.
3757         * i386.c (ix86_sched_init_global): Add core hooks for generic.
3758         * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
3759         to 4.
3760         (ix86_adjust_cost): Move generic to haswell path.
3761
3762 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
3763
3764         * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
3765         instead of MEM_P in a couple more places.  Fix formatting issues.
3766
3767 2017-12-04  Jim Wilson  <jimw@sifive.com>
3768
3769         * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
3770         instead of GP_REG_LAST-1.
3771         (riscv_adjust_libcall_cfi_prologue): Likewise.
3772         (riscv_adjust_libcall_cri_epilogue): Likewise.
3773         * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
3774         comment.
3775
3776 2017-12-04  Luis Machado  <luis.machado@linaro.org>
3777
3778         * ipa-pure-const.c (check_decl): Add missing newline.
3779         (state_from_flags): Likewise.
3780
3781 2017-12-04  Jeff Law  <law@redhat.com>
3782
3783         PR tree-optimizatin/78496
3784         * gimple-ssa-evrp-analyze.h
3785         (evrp_range_analyzer::get_vr_values): Simplify.
3786         * gimple-ssa-evrp-analyze.c: Corresponding changes.
3787         * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
3788         and gimple-ssa-evrp-analyze.h.
3789         (dom_opt_dom_walker class): Add evrp_range_analyzer member.
3790         (simplify_stmt_for_jump_threading): Copy a blob of code from
3791         tree-vrp.c to use ranges to simplify statements.
3792         (dom_opt_dom_walker::before_dom_children): Call
3793         evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
3794         (dom_opt_dom_walker::after_dom_children): Similarly for
3795         evrp_range_analyzer::leave.
3796         (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
3797         conditionals.
3798
3799         * gimple-ssa-evrp-analyze.c
3800         (evrp_range_analyzer::extract_range_from_stmt):  Always use
3801         vr_values::update_value_range so preexisting range info is
3802         medged with new range info, even if the new range is VR_VARYING.
3803
3804 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3805
3806         * combine.c: Adjust comment.
3807         (use_crosses_set_p): Delete.
3808         (can_combine_p): Use modified_between_p instead of use_crosses_set_p.
3809         (try_combine): Ditto.
3810
3811 2017-12-04  Richard Biener  <rguenther@suse.de>
3812
3813         PR tree-optimization/83255
3814         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
3815         Re-add zero-iteration check.
3816
3817 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3818
3819         PR rtl-optimization/83245
3820         * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
3821         hard registers as earlyclobber, also if not in an asm.
3822
3823 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3824
3825         PR bootstrap/83265
3826         Revert
3827         2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3828
3829         PR target/43871
3830         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3831         rs6000_cpu based on cpu_index, not tune_index.
3832
3833 2017-12-04  Richard Biener  <rguenther@suse.de>
3834
3835         PR tree-optimization/83238
3836         * graphite-scop-detection.c (scop_detection::merge_sese): Make
3837         code match comment, rejecting invalid SESE regions.
3838
3839 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
3840
3841         * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
3842         require base operand is a REG_POINTER prior to reload on targets
3843         with non-equivalent space registers.
3844
3845 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3846
3847         * ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
3848         (update_specialized_profile): Fix updating of counts.
3849         (perhaps_add_new_callers): Likewise.
3850
3851 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3852
3853         PR target/81616
3854         * x86-tune.def: Remove obsolette FIXMEs.
3855         (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
3856         (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
3857         X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
3858         Enable for generic.
3859         (X86_TUNE_PAD_RETURNS): Disable for generic.
3860
3861 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
3862
3863         PR tree-optimization/83170
3864         PR tree-optimization/83241
3865         * gimple-ssa-store-merging.c
3866         (imm_store_chain_info::try_coalesce_bswap): Update vuse field from
3867         gimple_vuse (ins_stmt) in case it has changed.
3868         (imm_store_chain_info::output_merged_store): Likewise.
3869
3870         * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
3871         POINTER_DIFF_EXPR.
3872
3873         PR c++/81212
3874         * tree-cfg.c (pass_warn_function_return::execute): Handle
3875         __builtin_ubsan_handle_missing_return like __builtin_unreachable
3876         with BUILTINS_LOCATION.
3877
3878         PR target/78643
3879         PR target/80583
3880         * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
3881         is BLKmode for vector field with vector raw mode, use TYPE_MODE
3882         instead of DECL_MODE.
3883
3884         * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
3885         last argument to rtx pointer.
3886         * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
3887         with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
3888         or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
3889         depending on the chosen ISAs.
3890         * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
3891         *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
3892         *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
3893         callers.
3894         * config/i386/sse.md (mov<mode>_internal): Likewise.
3895         * config/i386/mmx.md (*mov<mode>_internal): Likewise.
3896
3897 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3898
3899         * doc/invoke.texi (-dp): Say that instruction cost is printed as well.
3900
3901 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3902
3903         * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
3904         parameters from prototype.
3905         * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
3906         parameters.  Don't print a comment.
3907         (emit_fusion_gpr_load): Adjust.
3908         (emit_fusion_load_store): Adjust.
3909         * config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
3910         * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
3911         comment on the second line.
3912
3913 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3914
3915         PR target/43871
3916         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3917         rs6000_cpu based on cpu_index, not tune_index.
3918
3919 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3920
3921         * final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
3922         which_alternative instead of which_alternative + 1.
3923         (output_asm_insn): Print an extra tab if the template is short.
3924
3925 2017-12-01  Jim Wilson  <jimw@sifive.com>
3926
3927         * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
3928         comment.
3929         * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
3930         * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
3931         reference.
3932         * doc/tm.texi: Regenerate.
3933
3934 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
3935
3936         PR target/81959
3937         * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
3938         whether we can allocate pseudos before trying to fix an address.
3939         * config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
3940         memory address is indexed or indirect.
3941         (floatuns_<mode>si2_hw2): Likewise.
3942
3943 2017-12-01  Jason Merrill  <jason@redhat.com>
3944
3945         * Makefile.in (TAGS): Add c-family/*.cc.
3946
3947 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
3948
3949         * config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
3950         (call_value_insn): Likewise.
3951         (sibcall_insn): Likewise.
3952         (sibcall_value_insn): Likewise.
3953         (movsi_aarch64): Likewise.
3954         (movdi_aarch64): Likewise.
3955         (add_losym_): Likewise.
3956         (ldr_got_small_): Likewise.
3957         (ldr_got_small_sidi): Likewise.
3958         (ldr_got_small_28k_): Likewise.
3959         (ldr_got_small_28k_sidi): Likewise.
3960         * config/aarch64/aarch64.c (aarch64_print_address_internal):
3961         Move output_addr_const to symbolic case. Add error check.
3962
3963 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3964
3965         * config/s390/predicates.md (plus16_Q_operand): New predicate.
3966         * config/s390/s390.md: Disable MVC merging peephole if it would
3967         disable operand forwarding.
3968         (new peephole2): Split MVCs if it would turn them into up to 2
3969         forwardable MVCs.
3970
3971 2017-12-01  Richard Biener  <rguenther@suse.de>
3972
3973         PR tree-optimization/83232
3974         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
3975         detection of same access. Instead of breaking the group here
3976         do not consider the duplicate.  Add comment explaining real fix.
3977
3978 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
3979
3980         * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
3981
3982 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
3983
3984         * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
3985
3986 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
3987
3988         * function.h (struct function): Remove cilk_frame_decl,
3989         is_cilk_function and calls_cilk_spawn fields.
3990         * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
3991         field.
3992         * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
3993         cilk_elemental field.
3994         * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
3995         * target.def: Adjust comment.
3996         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
3997         Don't test cilk_elemental.
3998
3999         PR tree-optimization/83233
4000         * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
4001         bswap_stat name for the struct.
4002
4003         PR c/79153
4004         * tree.h (SWITCH_BREAK_LABEL_P): Define.
4005         * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
4006         starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
4007         SWITCH_BREAK_LABEL_P set on the label.
4008         (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
4009         added for default case if it was missing and not all cases covered.
4010         Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
4011         switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
4012         set on the label.
4013         * tree-chrec.c (evolution_function_is_univariate_p): Add return true;
4014         to avoid -Wimplicit-fallthrough warning.
4015         * config/i386/i386.c (ix86_expand_special_args_builtin): Add
4016         FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
4017
4018         PR tree-optimization/83221
4019         * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
4020         down by 16.
4021         (init_reassoc): Formatting fix.
4022
4023         PR sanitizer/81275
4024         * tree-cfg.c (group_case_labels_stmt): Don't optimize away
4025         C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
4026         is diagnosed.
4027
4028         PR sanitizer/83219
4029         * tree-cfg.c: Include asan.h.
4030         (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
4031
4032 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4033
4034         * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
4035
4036 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4037
4038         * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
4039         vpcmpeqd instruction.
4040
4041 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4042
4043         * config/i386/i386.c (standard_sse_constant_opcode): Fix
4044         registers type for 128bit mode.
4045
4046 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4047
4048         * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
4049         of ;;.
4050         * gengtype-state.c (read_state_pair): Likewise.
4051         * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
4052         * sel-sched-dump.c (dump_insn_rtx_1): Likewise.
4053         * ipa-cp.c (intersect_aggregates_with_edge): Likewise.
4054         * ifcvt.c (noce_try_store_flag_constants): Likewise.
4055         * tree-ssa-ccp.c (ccp_finalize): Likewise.
4056         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
4057         * builtins.c (fold_builtin_3): Likewise.
4058         * graphite-scop-detection.c
4059         (scop_detection::stmt_has_simple_data_refs_p): Likewise.
4060         * hsa-gen.c (hsa_function_representation::hsa_function_representation):
4061         Likewise.
4062
4063 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
4064
4065         PR sanitizer/81697
4066         * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
4067         parameter. Return true if ignore_decl_rtl_set_p is true and other
4068         conditions are satisfied.
4069         * asan.h (asan_protect_global): Add new parameter.
4070         * varasm.c (categorize_decl_for_section): Pass true as second parameter
4071         to asan_protect_global calls.
4072
4073 2017-11-30  Jim Wilson  <jimw@sifive.com>
4074
4075         * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
4076         -mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
4077         -mstrict-align, add info on default value.  Delete redundant lines for
4078         -mabi.  Add missing -mexplicit-relocs docs.
4079
4080 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4081
4082         * config/arc/arc.md (trap): New pattern.
4083
4084 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4085
4086         * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
4087         instruction to end into a delay slot.
4088         * config/arc/arc.md (cond_delay_insn): Check if the instruction
4089         can be placed into a delay slot against reg_note.
4090
4091 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4092
4093         * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
4094         labels number of usages.
4095
4096 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4097
4098         * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
4099         function.
4100         (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
4101
4102 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4103
4104         PR target/83210
4105         * internal-fn.c (expand_mul_overflow): Optimize unsigned
4106         multiplication by power of 2 constant into two shifts + comparison.
4107
4108 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
4109
4110         PR target/81616
4111         * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
4112
4113 2017-11-30  Richard Biener  <rguenther@suse.de>
4114
4115         PR tree-optimization/83202
4116         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
4117         allow_peel argument and guard peeling.
4118         (canonicalize_loop_induction_variables): Likewise.
4119         (canonicalize_induction_variables): Pass false.
4120         (tree_unroll_loops_completely_1): Pass unroll_outer to disallow
4121         peeling from cunrolli.
4122
4123 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4124
4125         * combine.c (try_combine): Print a message to dump file whenever
4126         I0, I1, or I2 cannot be combined into I3.
4127
4128 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4129
4130         PR rtl-optimization/83156
4131         PR rtl-optimization/82621
4132         * combine.c (try_combine): Don't split an I2 if one of the dests is
4133         set again before I3.  Allow unused dests.
4134
4135 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4136
4137         * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
4138
4139 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
4140
4141         PR rtl-optimization/80818
4142         * lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
4143         recursively.  Use insn code for clobber.
4144         (lra_set_insn_recog_data): Pass the new arg to
4145         collect_non_operand_hard_regs.
4146         (add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
4147         code for clobber.
4148         (lra_update_insn_regno_info): Pass insn to
4149         add_regs_to_insn_regno_info.
4150
4151 2017-11-29  Jim Wilson  <jimw@sifive.com>
4152             Andrew Waterman  <andrew@sifive.com>
4153
4154         * config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
4155         (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
4156         SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
4157         use SINGLE_SHIFT_COST.
4158         * config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
4159         (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
4160
4161 2017-11-29  Julia Koval  <julia.koval@intel.com>
4162
4163         * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
4164         _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
4165         _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
4166         _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
4167         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
4168         _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
4169         _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
4170         _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
4171         _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
4172         _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
4173         _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
4174         * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
4175         __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
4176         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
4177         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
4178         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
4179         __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
4180         __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
4181         __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
4182         __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
4183         __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
4184         __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
4185         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
4186         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
4187         __builtin_ia32_vpshldv_v2di_mask,
4188         __builtin_ia32_vpshldv_v2di_maskz): New builtins.
4189         * config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
4190         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
4191
4192 2017-11-29  Julia Koval  <julia.koval@intel.com>
4193
4194         * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
4195         _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
4196         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
4197         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
4198         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
4199         _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
4200         _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
4201         _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
4202         _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
4203         _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
4204         _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
4205         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
4206         V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
4207         V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
4208         V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
4209         V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
4210         V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
4211         V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
4212         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4213         * config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
4214         vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
4215
4216 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4217
4218         * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
4219         movsi_pic_gotdata_op instruction as a load for the UT699 errata
4220         workaround.
4221
4222 2017-11-29  Martin Aberg  <maberg@gaisler.com>
4223
4224         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4225         to prevent b2bst errata sequence.
4226         (sqrtdf2_fix): Likewise.
4227
4228 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4229
4230         * config/sparc/sparc.c (fpop_reg_depend_p): New function.
4231         (div_sqrt_insn_p): New function.
4232         (sparc_do_work_around_errata): Insert NOP instructions to
4233         prevent sequences that could trigger the TN-0013 errata for
4234         certain LEON3 processors.
4235         (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
4236         (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
4237         * config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
4238         (in_branch_delay): Prevent div and sqrt in delay slot if
4239         fix_lost_divsqrt.
4240         * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
4241
4242 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4243
4244         * config/sparc/sparc.c (atomic_insn_p): New function.
4245         (sparc_do_work_around_errata): Insert NOP instructions to
4246         prevent sequences that could trigger the TN-0010 errata for
4247         UT700.
4248         * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
4249         instruction referable in atomic_insns_p.
4250
4251 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4252
4253         * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
4254         (atomic_compare_and_swap_leon3_1): Likewise.
4255         (ldstub): Likewise.
4256
4257 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4258
4259         * config/sparc/sparc.c (fpop_insn_p): New function.
4260         (sparc_do_work_around_errata): Insert NOP instructions to
4261         prevent sequences that could trigger the TN-0012 errata for
4262         GR712RC.
4263         (pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
4264         * config/sparc/sparc.md (fix_gr712rc): New attribute.
4265         (in_branch_annul_delay): Prevent floating-point instructions
4266         in delay slot of annulled integer branch.
4267
4268 2017-11-29  Richard Biener  <rguenther@suse.de>
4269
4270         PR tree-optimization/83202
4271         * tree-vect-slp.c (scalar_stmts_set_t): New typedef.
4272         (bst_fail): Use it.
4273         (vect_analyze_slp_cost_1): Add visited set, do not account SLP
4274         nodes vectorized to the same stmts multiple times.
4275         (vect_analyze_slp_cost): Allocate a visited set and pass it down.
4276         (vect_analyze_slp_instance): Adjust.
4277         (scalar_stmts_to_slp_tree_map_t): New typedef.
4278         (vect_schedule_slp_instance): Add a map recording the SLP node
4279         representing the vectorized stmts for a set of scalar stmts.
4280         Avoid code-generating redundancies.
4281         (vect_schedule_slp): Allocate map and pass it down.
4282
4283 2017-11-29  Nathan Sidwell  <nathan@acm.org>
4284
4285         PR c++/83187
4286         * tree.c (build_complex_type): Fix canonicalization.  Only fill in
4287         type if it is new.
4288
4289 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
4290
4291         * config/aarch64/aarch64.c (aarch64_print_operand): Add new
4292         cases for printing LDP/STP memory addresses.
4293         (aarch64_print_address_internal): Renamed from
4294         aarch64_print_operand_address, added parameter, add Pmode check.
4295         (aarch64_print_ldpstp_address): New function for LDP/STP addresses.
4296         (aarch64_print_operand_address): Indirect to
4297         aarch64_print_address_internal.
4298         * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
4299         'y' operand output specifier.
4300
4301 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
4302
4303         PR middle-end/83185
4304         * tree.c (build_simple_mem_ref_loc): Handle
4305         get_addr_base_and_unit_offset returning a MEM_REF.
4306
4307         PR middle-end/80929
4308         * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
4309
4310         PR target/80819
4311         * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
4312         alternative.
4313
4314 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
4315
4316         * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
4317         m_x_offset.
4318         (layout::move_to_column): Likewise.
4319
4320 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4321
4322         PR sanitizer/81275
4323         * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
4324         is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
4325
4326 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4327             Martin Jambor  <mjambor@suse.cz>
4328
4329         PR ipa/82808
4330         * tree.h (expr_type_first_operand_type_p): Declare
4331         * tree.c (expr_type_first_operand_type_p): New function.
4332         * ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
4333         (ipa_value_from_jfunc): Adjust declaration.
4334         * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
4335         Use it as result type for arithmetics, unless it is NULL in which case
4336         be more conservative.
4337         (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
4338         ipa_get_jf_pass_through_result.
4339         (propagate_vals_across_pass_through): Likewise.
4340         (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
4341         is to propagate_vals_across_pass_through.
4342         (propagate_constants_across_call): Pass PARM_TYPE to
4343         propagate_scalar_across_jump_function.
4344         (find_more_scalar_values_for_callers_subset): Pass parameter type to
4345         ipa_value_from_jfunc.
4346         (cgraph_edge_brings_all_scalars_for_node): Likewise.
4347         * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
4348         to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
4349         * ipa-prop.c (try_make_edge_direct_simple_call): New parameter
4350         target_type, pass it to ipa_value_from_jfunc.
4351         (update_indirect_edges_after_inlining): Pass parameter type to
4352         try_make_edge_direct_simple_call.
4353
4354 2017-11-28  Jeff Law  <law@redhat.com>
4355
4356         * gimple-ssa-evrp-analyze.c
4357         (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
4358         refine ranges if scev_initialized_p returns true.
4359         * vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
4360
4361 2017-11-28  Julia Koval  <julia.koval@intel.com>
4362
4363         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
4364         _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
4365         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
4366         _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
4367         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
4368         _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
4369         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
4370         _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
4371         _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
4372         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
4373         _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
4374         * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
4375         __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
4376         __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
4377         __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
4378         __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
4379         __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
4380         __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
4381         __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
4382         __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
4383         __builtin_ia32_vpshrd_v2di_mask): New builtins.
4384         * config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
4385
4386 2017-11-28  Julia Koval  <julia.koval@intel.com>
4387
4388         * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
4389         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
4390         _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
4391         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
4392         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
4393         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
4394         _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
4395         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
4396         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
4397         _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
4398         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
4399         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
4400         V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
4401         V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
4402         V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
4403         V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
4404         V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
4405         V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
4406         V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
4407         V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
4408         * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
4409         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
4410         __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
4411         __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
4412         __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
4413         __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
4414         __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
4415         __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
4416         __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
4417         __builtin_ia32_vpshld_v2di_mask): New builtins.
4418         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4419         * config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
4420
4421 2017-11-28  Richard Biener  <rguenther@suse.de>
4422
4423         PR tree-optimization/80776
4424         * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
4425         Declare.
4426         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
4427         New function.
4428         (evrp_range_analyzer::record_ranges_from_incoming_edges):
4429         If the incoming edge is an effective fallthru because the other
4430         edge only reaches a __builtin_unreachable () then record ranges
4431         derived from the controlling condition in SSA info.
4432         (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
4433         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4434
4435 2017-11-28  Olivier Hainque  <hainque@adacore.com>
4436
4437         * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
4438         on mingw build hosts.
4439
4440 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4441
4442         PR debug/81307
4443         * dbxout.c (dbx_block_with_cold_children): Fix function comment.
4444
4445 2017-11-28  Richard Biener  <rguenther@suse.de>
4446
4447         PR middle-end/83141
4448         * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
4449         copies generated from memcpy use a character array as reference
4450         type.
4451
4452 2017-11-28  Julia Koval  <julia.koval@intel.com>
4453             Sebastian Peryt  <sebastian.peryt@intel.com>
4454
4455         * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
4456         c-family/c-cilkplus.o, c-family/array-notation-common.o,
4457         cilk-common.o, cilk.h, cilk-common.c): Remove.
4458         * builtin-types.def
4459         (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
4460         * builtins.c (is_builtin_name): Remove cilkplus condition.
4461         (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
4462         * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
4463         cilk-builtins.def, cilkplus.def): Remove.
4464         * cif-code.def (CILK_SPAWN): Remove.
4465         * cilk-builtins.def: Delete.
4466         * cilk-common.c: Ditto.
4467         * cilk.h: Ditto.
4468         * cilkplus.def: Ditto.
4469         * config/darwin.h (fcilkplus): Delete.
4470         * cppbuiltin.c: Ditto.
4471         * doc/extend.texi: Remove cilkplus doc.
4472         * doc/generic.texi: Ditto.
4473         * doc/invoke.texi: Ditto.
4474         * doc/passes.texi: Ditto.
4475         * gcc.c (fcilkplus): Remove.
4476         * gengtype.c (cilk.h): Remove.
4477         * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
4478         support.
4479         * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
4480         Remove.
4481         * gimplify.c (gimplify_return_expr, maybe_fold_stmt,
4482         gimplify_call_expr,
4483         is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
4484         gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
4485         cilkplus conditions.
4486         * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
4487         inline_read_section): Ditto.
4488         * ipa-inline-analysis.c (cilk.h): Remove.
4489         * ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
4490         * lto-wrapper.c (merge_and_complain, append_compiler_options,
4491         append_linker_options): Remove condition for fcilkplus.
4492         * lto/lto-lang.c (cilk.h): Remove.
4493         (lto_init): Remove condition for fcilkplus.
4494         * omp-expand.c (expand_cilk_for_call): Delete.
4495         (expand_omp_taskreg, expand_omp_for_static_chunk,
4496         expand_omp_for): Remove cilkplus
4497         conditions.
4498         (expand_cilk_for): Delete.
4499         * omp-general.c (omp_extract_for_data): Remove cilkplus support.
4500         * omp-low.c (scan_sharing_clauses, create_omp_child_function,
4501         execute_lower_omp, diagnose_sb_0): Ditto.
4502         * omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
4503         * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4504         * tree-nested.c: Ditto.
4505         * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
4506         (dump_generic_node): Ditto.
4507         * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4508         * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
4509         Delete.
4510         * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
4511
4512 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4513
4514         * config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
4515         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
4516         for vector mode and !TARGET_SIMD.
4517
4518 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4519
4520         * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
4521         Adjust comment.
4522         * tree.h (SWITCH_LABELS): Remove.
4523         * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
4524         assert SWITCH_BODY is non-NULL.
4525         * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
4526         handling.
4527         * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
4528
4529         PR tree-optimization/80788
4530         * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
4531         has TREE_OVERFLOW set, call drop_tree_overflow.
4532
4533 2017-11-28  Richard Biener  <rguenther@suse.de>
4534
4535         PR tree-optimization/83158
4536         * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
4537
4538 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
4539
4540         PR 81288/target
4541         * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
4542         TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
4543
4544 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
4545
4546         * config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
4547         LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
4548
4549 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
4550
4551         PR middle_end/82333
4552         * varasm.c (compare_constant): Take the mode of the constants into
4553         account when comparing floating point constants.
4554
4555 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
4556
4557         * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
4558         from explicit instantiation of debug_helper.
4559         * vec.h (DEFINE_DEBUG_VEC): Ditto.
4560
4561 2017-11-27  Richard Biener  <rguenther@suse.de>
4562
4563         * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
4564         refactor a bit.
4565
4566 2017-11-27  Richard Biener  <rguenther@suse.de>
4567
4568         * tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
4569         (type_hash_canon): Also clear int_cst_hash_table entry for
4570         TYPE_MIN/MAX_VALUE.
4571         (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
4572
4573 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
4574
4575         * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4576         * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4577         * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4578
4579 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4580
4581         * hash-map.h (gt_cleare_cache): Avoid UB.
4582
4583 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
4584
4585         * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
4586         * loop-unroll.c (decide_unroll_constant_iterations): Implement it.
4587         (decide_unroll_runtime_iterations): Likewise.
4588         (decide_unroll_stupid): Likewise.
4589
4590 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4591
4592         PR target/83109
4593         * config/i386/i386.md: Add a loop with incssp.
4594
4595 2017-11-27  Martin Jambor  <mjambor@suse.cz>
4596
4597         PR tree-optimization/81248
4598         * tree-sra.c (splice_param_accesses): Remove size check.
4599         (decide_one_param_reduction): Fix size check.
4600         * gimple-pretty-print.c (dump_profile): Silence warning.
4601         * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
4602
4603 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
4604
4605         PR debug/81307
4606         * dbxout.c (lastlineno): New variable.
4607         (dbx_debug_hooks): Use dbxout_switch_text_section as
4608         switch_text_section debug hook.
4609         (dbxout_function_end): Switch to current_function_section
4610         rather than function_section.  If crtl->has_bb_partition,
4611         output just one N_FUN, depending on in_cold_section_p.
4612         (dbxout_source_line): Remember last lineno in lastlineno.
4613         (dbxout_switch_text_section): New function.
4614         (dbxout_function_decl): Adjust dbxout_block caller.
4615         (dbx_block_with_cold_children): New function.
4616         (dbxout_block): Return true if any LBRAC/RBRAC have been
4617         emitted.  Use dbx_block_with_cold_children at depth == 0
4618         in second partition.  Add PARENT_BLOCKNUM argument, pass
4619         it optionally adjusted to children.  Output LBRAC/RBRAC
4620         around recursive call only if the block is in the current
4621         partition, if not and anything was output, emit empty
4622         range LBRAC/RBRAC.
4623         * final.c (final_scan_insn): Compute cold_function_name
4624         before calling switch_text_section debug hook.  Call
4625         that hook even if dwarf2out_do_frame if not emitting
4626         dwarf debug info.
4627
4628         PR target/83100
4629         * varasm.c (bss_initializer_p): Return true for DECL_COMMON
4630         TREE_READONLY decls.
4631
4632 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4633
4634         PR rtl-optimization/82488
4635         * expr.c (fixup_args_size_notes): Avoid signed integer overflow.
4636
4637 2017-11-26  Julia Koval  <julia.koval@intel.com>
4638
4639         * config/i386/i386.c (processor_target_table): Add skylake_cost for
4640         skylake-avx512.
4641         * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
4642         skylake_cost): New.
4643
4644 2017-11-26  Julia Koval  <julia.koval@intel.com>
4645
4646         * config/i386/driver-i386.c (host_detect_local_cpu):
4647         Detect skylake-avx512.
4648
4649 2017-11-26  Julia Koval  <julia.koval@intel.com>
4650
4651         * config.gcc: Add -march=cannonlake.
4652         * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
4653         * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
4654         * config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
4655         (PTA_CANNONLAKE): New.
4656         (processor_target_table): Add cannonlake.
4657         (ix86_option_override_internal): Ditto.
4658         (fold_builtin_cpu): Ditto.
4659         (get_builtin_code_for_version): Handle cannonlake.
4660         (M_INTEL_COREI7_CANNONLAKE): New.
4661         * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
4662         * doc/invoke.texi: Add -march=cannonlake.
4663
4664 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
4665
4666         * plugin.c (add_new_plugin): Use platform-specific library extensions.
4667         (try_init_one_plugin): Alternative implementation for MinGW.
4668         * Makefile.in (plugin_implib): New.
4669         (gengtype-lex.c): Fix broken AIX workaround.
4670         * configure: Regenerate.
4671         * doc/plugins.texi: Document support for MinGW.
4672
4673 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
4674
4675         PR rtl-optimization/81553
4676         * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
4677         to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
4678         is a shift where C1 has different mode than the whole shift, use C1's
4679         mode for MULT rather than the shift's mode.
4680
4681         PR target/82848
4682         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
4683         builtins not enabled in the currently selected ISA.
4684
4685 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
4686
4687         PR tree-optimization/71026
4688         * tree-ssa-math-opts (is_division_by_square, is_square_of): New.
4689         (insert_reciprocals): Change to insert reciprocals before a division
4690         by a square and to insert the square of a reciprocal.
4691         (execute_cse_reciprocals_1): Change to consider division by a square.
4692         (register_division_in): Add importance parameter.
4693
4694 2017-11-24  Richard Biener  <rguenther@suse.de>
4695
4696         PR tree-optimization/82402
4697         * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
4698         set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
4699
4700 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
4701
4702         * match.pd (0-ptr): New transformation.
4703
4704 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
4705
4706         PR bootstrap/83015
4707         * ipa-inline.c (inline_small_functions): Set current badnes correctly
4708         when skipping checking.
4709
4710 2017-11-24  Richard Biener  <rguenther@suse.de>
4711
4712         PR tree-optimization/83128
4713         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
4714         (vn_reference_lookup_3): Likewise.
4715
4716 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
4717
4718         PR sanitizer/83014
4719         * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
4720         instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
4721         tree_to_uhwi twice.
4722
4723         * tree-object-size.c (pass_through_call): Use gimple_call_return_flags
4724         ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
4725         check for the latter with gimple_call_builtin_p.  Do not handle
4726         BUILT_IN_STPNCPY_CHK which is not a pass through call.
4727
4728 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
4729
4730         * config/arm/arm_neon.h: Fix pragma GCC push_options before
4731         vdot_u32.
4732
4733 2017-11-23  Julia Koval  <julia.koval@intel.com>
4734
4735         * config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
4736         _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
4737         _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
4738         _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
4739         _mm512_maskz_expandloadu_epi16): New intrinsics.
4740         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
4741         _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
4742         _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
4743         _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
4744         _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
4745         _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
4746         _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
4747         _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
4748         _mm256_maskz_expandloadu_epi8): New intrinsics.
4749         * config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
4750         V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
4751         V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
4752         V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
4753         * config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
4754         * config/i386/sse.md (VI248_VLBW): New iterator.
4755         (expand<mode>_mask, expand<mode>_maskz): New patterns.
4756
4757 2017-11-23  Julia Koval  <julia.koval@intel.com>
4758
4759         * config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
4760         * config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
4761         _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
4762         _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
4763         _mm512_mask_compressstoreu_epi16): New.
4764         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
4765         _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
4766         _mm_mask_compress_epi16, _mm_maskz_compress_epi16,
4767         _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
4768         _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
4769         _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
4770         _mm256_mask_compressstoreu_epi8): New.
4771         * config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
4772         VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
4773         VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
4774         VOID_FTYPE_PV8HI_V8HI_UQI): New types.
4775         * config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
4776         __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
4777         __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
4778         __builtin_ia32_compresshi128_mask,
4779         __builtin_ia32_compressstoreuqi512_mask,
4780         __builtin_ia32_compressstoreuhi512_mask,
4781         __builtin_ia32_compressstoreuqi256_mask,
4782         __builtin_ia32_compressstoreuqi128_mask,
4783         __builtin_ia32_compressstoreuhi256_mask,
4784         __builtin_ia32_compressstoreuhi128_mask): New builtins.
4785         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
4786         array for flags2.
4787         (ix86_expand_special_args_builtin): Handle new types.
4788         (s4fma_expand): Handle new builtin array.
4789         * config/i386/immintrin.h: Include new headers.
4790         * config/i386/sse.md (VI12_AVX512VLBW): New iterator.
4791         (compress<mode>_mask, compressstore<mode>_mask): New patterns.
4792
4793 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4794
4795         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
4796         fixes.  Declare temp and g variables at the top in order to avoid
4797         {} in most of the cases.
4798
4799 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
4800
4801         * match.pd (ptr-0): New transformation.
4802
4803 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4804
4805         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
4806         (struct addr_mode_cost_table): New.
4807         (struct tune_params): Add field addr_mode_costs.
4808         * config/arm/arm.c (generic_addr_mode_costs): New.
4809         (arm_slowmul_tune): Initialise addr_mode_costs field.
4810         (arm_fastmul_tune): Likewise.
4811         (arm_strongarm_tune): Likewise.
4812         (arm_xscale_tune): Likewise.
4813         (arm_9e_tune): Likewise.
4814         (arm_marvell_pj4_tune): Likewise.
4815         (arm_v6t2_tune): Likewise.
4816         (arm_cortex_tune): Likewise.
4817         (arm_cortex_a8_tune): Likewise.
4818         (arm_cortex_a7_tune): Likewise.
4819         (arm_cortex_a15_tune): Likewise.
4820         (arm_cortex_a35_tune): Likewise.
4821         (arm_cortex_a53_tune): Likewise.
4822         (arm_cortex_a57_tune): Likewise.
4823         (arm_exynosm1_tune): Likewise.
4824         (arm_xgene1_tune): Likewise.
4825         (arm_cortex_a5_tune): Likewise.
4826         (arm_cortex_a9_tune): Likewise.
4827         (arm_cortex_a12_tune): Likewise.
4828         (arm_cortex_a73_tune): Likewise.
4829         (arm_v7m_tune): Likewise.
4830         (arm_cortex_m7_tune): Likewise.
4831         (arm_v6m_tune): Likewise.
4832         (arm_fa726te_tune): Likewise.
4833         (arm_mem_costs): Use table lookup to calculate cost of addressing mode.
4834
4835 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4836
4837         * config/arm/arm.c (arm_mem_costs): New function.
4838         (arm_rtx_costs_internal): Use arm_mem_costs.
4839
4840 2017-11-23  Mark Wielaard  <mark@klomp.org>
4841
4842         * dwarf2out.c (init_sections_and_labels): Use generation to create
4843         unique ranges_section_label and ranges_base_label. Return generation.
4844         (output_rnglists): Add generation argument. Use generation to create
4845         unique ranges labels.
4846         (dwarf2out_finish): Get generation from init_sections_and_labels
4847         and pass generation to output_rnglists.
4848
4849 2017-11-23  Mike Stump  <mikestump@comcast.net>
4850             Eric Botcazou  <ebotcazou@adacore.com>
4851
4852         * doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
4853         * cfgloop.h (struct loop): Add unroll field.
4854         * function.h (struct function): Add has_unroll bitfield.
4855         * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
4856         (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
4857         * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
4858         (pass_rtl_unroll_loops::gate): Likewise.
4859         * loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
4860         for which loop->unroll==1.
4861         (decide_unroll_constant_iterations): Use note for consistency and
4862         take loop->unroll into account.  Return early if loop->unroll is set.
4863         Fix thinko in existing test.
4864         (decide_unroll_runtime_iterations): Use note for consistency and
4865         take loop->unroll into account.
4866         (decide_unroll_stupid): Likewise.
4867         * lto-streamer-in.c (input_cfg): Read loop->unroll.
4868         * lto-streamer-out.c (output_cfg): Write loop->unroll.
4869         * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
4870         New case.
4871         (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
4872         (print_loop): Print loop->unroll if set.
4873         * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
4874         * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
4875         * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
4876         New case.
4877         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
4878         loop->unroll is set and smaller than the trip count.  Otherwise bypass
4879         entirely the heuristics if loop->unroll is set.  Remove dead note.
4880         Fix off-by-one bug in other note.
4881         (try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
4882         (tree_unroll_loops_completely_1): Force unrolling if loop->unroll
4883         is greater than 1.
4884         (tree_unroll_loops_completely): Make static.
4885         (pass_complete_unroll::execute): Use correct type for variable.
4886         (pass_complete_unrolli::execute): Fix formatting.
4887         * tree.def (ANNOTATE_EXPR): Add 3rd operand.
4888
4889 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4890
4891         * config/i386/i386.h (TARGET_PREFER_AVX256): Also
4892         enable when TARGET_PREFER_AVX128 is set.
4893
4894 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4895
4896         * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
4897         frequency.
4898         * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
4899         (cgraph_edge::maybe_hot_p): Use sreal frequencies.
4900
4901 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4902
4903         * ipa-fnsummary.c (record_modified_bb_info): Use sreal
4904         frequencies. Fix estimation of aggregate parameters.
4905
4906 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4907
4908         * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
4909         when inlining.
4910
4911 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4912
4913         * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
4914
4915 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4916
4917         * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
4918         macro.
4919
4920 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
4921
4922         PR target/83111
4923         * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
4924         sibcall_value_pcrel_fdpic): Use local variable instead of
4925         operands[3].
4926         (calli_tbr_rel): Add missing operand 2.
4927         (call_valuei_tbr_rel): Add missing operand 3.
4928
4929 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4930
4931         PR middle-end/82253
4932         * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
4933         bitpos/bitsize covering the whole destination, use store_expr only if
4934         the complex mode is the same.  Otherwise, use expand_normal and if
4935         it returns CONCAT, subreg each part separately instead of trying to
4936         subreg the whole result.
4937
4938 2017-11-23  Richard Biener  <rguenther@suse.de>
4939
4940         PR tree-optimization/23094
4941         * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
4942         come here from walking over backedges in the first iteration.
4943         (vn_reference_lookup_3): Skip clobbers that store the same value.
4944
4945 2017-11-23  Richard Biener  <rguenther@suse.de>
4946
4947         PR tree-optimization/81403
4948         * tree-ssa-pre.c (get_representative_for): Add parameter specifying
4949         a block we need a leader relative to.
4950         (phi_translate_1): For nary processing require a leader from
4951         get_representative_for given we run expression simplification
4952         using match-and-simplify.  Remove previous fix.
4953
4954 2017-11-22  Jeff Law  <law@redhat.com>
4955
4956         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
4957         Use new method allocate_value_range rather than accessing the
4958         vrp_value_range_pool data member directly.
4959         * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
4960         to use extract_range_from_stmt method to avoid need for
4961         extract_range_from_assignment method.
4962         (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
4963         method rather than setting values_propgated data member directly.
4964         * vr-values.h (class vr_values): Privatize vrp_value_range_pool,
4965         and values propagated data members and extract_range_from_assignment
4966         method.  Reorder private data members to conform to standards.
4967         Add new methods set_lattice_propagation_complete and
4968         allocate_value_range.
4969
4970 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
4971
4972         PR rtl-optimization/83030
4973         * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
4974         for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
4975         (Insns): Delete entry for REG_CROSSING_JUMP in register notes.
4976         * bb-reorder.c (update_crossing_jump_flags): Do not test whether the
4977         CROSSING_JUMP_P flag is already set before setting it.
4978         * cfgrtl.c (fixup_partition_crossing): Likewise.
4979         * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
4980         insn as useless.
4981
4982 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
4983
4984         * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
4985         Handle the case where both arguments are using gen_const_vec_series.
4986
4987 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
4988
4989         PR c++/62170
4990         * pretty-print.c (pp_format): Move quoting implementation to
4991         pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
4992         to pass address of "quote" local.
4993         (pp_begin_quote): New function.
4994         (pp_end_quote): New function.
4995         * pretty-print.h (printer_fn): Convert penultimate param from bool
4996         to bool *.
4997         (pp_begin_quote): New decl.
4998         (pp_end_quote): New decl.
4999         * tree-diagnostic.c (default_tree_printer): Convert penultimate
5000         param from bool to bool *.
5001         * tree-diagnostic.h (default_tree_printer): Likewise.
5002
5003 2017-11-22  Jeff Law  <law@redhat.com>
5004
5005         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
5006         Initialize vr_values.
5007         (evrp_range_analyzer::try_find_new_range): Call methods attached to
5008         vr_values via vr_values class instance rather than delegators.
5009         (evrp_range_analyzer::record_ranges_from_phis): Likewise.
5010         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
5011         (evrp_range_analyzer::push_value_range): Likewise.
5012         (evrp_range_analyzer::pop_value_range): Likewise.
5013         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
5014         most delegators.  Those remaining are exposed as public interfaces.
5015         Make vr_values a pointer and private.
5016         (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
5017         vr_values.
5018         (evrp_range_analyzer::get_vr_value): New method.
5019         * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
5020         (evrp_folder::evrp_folder): New ctor to initialize vr_values.
5021         (class evrp_dom_walker): Attach evrp_folder class, initialize
5022         it in the ctor.  Remove temporary delegators.
5023         (evrp_dom_walker::before_dom_children): Call methods in attached
5024         evrp_range_analyzer class via class instance pointer.  Use
5025         free value_range_constant_singleton to remove need for
5026         op_with_constant_singleton_value delegator method.  Do not
5027         create a vrp_prop class instance for every call!  Narrow
5028         scope of a couple variables.
5029         (evrp_dom_walker::cleanup): Call methods in attached
5030         evrp_range_analyzer class via class instance pointer.
5031         * vr-values.h (class vr_values): Privatize many methods and
5032         data members.
5033
5034 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5035
5036         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
5037         * cfgexpand.c (expand_debug_expr): Remove handling for them.
5038         * expr.c (expand_expr_real_2): Likewise.
5039         * fold-const.c (const_unop): Likewise.
5040         * optabs-tree.c (optab_for_tree_code): Likewise.
5041         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
5042         * tree-inline.c (estimate_operator_cost): Likewise.
5043         * tree-pretty-print.c (dump_generic_node): Likewise.
5044         (op_code_prio): Likewise.
5045         (op_symbol_code): Likewise.
5046         * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
5047         (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
5048         * internal-fn.c (direct_internal_fn_optab): New function.
5049         (direct_internal_fn_array, direct_internal_fn_supported_p
5050         (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
5051         * fold-const-call.c (fold_const_reduction): New function.
5052         (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
5053         CFN_REDUC_MIN.
5054         * tree-vect-loop.c: Include internal-fn.h.
5055         (reduction_code_for_scalar_code): Rename to...
5056         (reduction_fn_for_scalar_code): ...this and return an internal
5057         function.
5058         (vect_model_reduction_cost): Take an internal_fn rather than
5059         a tree_code.
5060         (vect_create_epilog_for_reduction): Likewise.  Build calls rather
5061         than assignments.
5062         (vectorizable_reduction): Use internal functions rather than tree
5063         codes for the reduction operation.  Update calls to the functions
5064         above.
5065         * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
5066         Use calls to internal functions rather than REDUC tree codes.
5067         * config/aarch64/aarch64-simd.md: Update comment accordingly.
5068
5069 2017-11-22  Olivier Hainque  <hainque@adacore.com>
5070
5071         * config/vxworks.c (vxworks_override_options): Pick default
5072         dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
5073         * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
5074         DWARF_GNAT_ENCODINGS_DEFAULT.
5075         * config/vxworksae.h: Likewise.
5076
5077 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
5078
5079         PR tree-optimization/83104
5080         * vr-values.c (simplify_stmt_using_ranges): Check integral argument,
5081         not result.
5082
5083 2017-11-22  Marek Polacek  <polacek@redhat.com>
5084             H.J. Lu  <hongjiu.lu@intel.com>
5085             Jason Merrill  <jason@redhat.com>
5086
5087         PR c++/60336
5088         PR middle-end/67239
5089         PR target/68355
5090         * calls.c (initialize_argument_information): Call
5091         warn_parameter_passing_abi target hook.
5092         (store_one_arg): Use 0 for empty record size.  Don't push 0 size
5093         argument onto stack.
5094         (must_pass_in_stack_var_size_or_pad): Return false for empty types.
5095         * common.opt: Update -fabi-version description.
5096         * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
5097         (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
5098         int_size_in_bytes.
5099         (ix86_is_empty_record): New function.
5100         (ix86_warn_parameter_passing_abi): New function.
5101         (TARGET_EMPTY_RECORD_P): Redefine.
5102         (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
5103         * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
5104         * doc/tm.texi: Regenerated.
5105         * doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
5106         TARGET_WARN_PARAMETER_PASSING_ABI): Add.
5107         * dwarf2out.c (get_ultimate_context): Move to tree.c.
5108         * explow.c (hard_function_value): Call arg_int_size_in_bytes
5109         instead of int_size_in_bytes.
5110         * expr.c (copy_blkmode_to_reg): Likewise.
5111         * function.c (aggregate_value_p): Return 0 for empty types.
5112         (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
5113         target hook.
5114         (locate_and_pad_parm): Call arg size_in_bytes instead
5115         size_in_bytes.
5116         * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
5117         * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
5118         * target.def (empty_record_p, warn_parameter_passing_abi): New target
5119         hooks.
5120         * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
5121         (std_gimplify_va_arg_expr): Skip empty records.  Call
5122         arg_size_in_bytes instead size_in_bytes.
5123         * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
5124         * tree-core.h (tree_type_common): Add empty_flag.
5125         (tree_decl_common): Update comments.
5126         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
5127         DECL_PADDING_P.
5128         (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5129         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
5130         DECL_PADDING_P.
5131         (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5132         * tree.c (default_is_empty_type): New function.
5133         (default_is_empty_record): New function.
5134         (arg_int_size_in_bytes): New function.
5135         (arg_size_in_bytes): New function.
5136         (get_ultimate_context): New function.
5137         * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
5138         TRANSLATION_UNIT_WARN_EMPTY_P.
5139         (default_is_empty_record, arg_int_size_in_bytes,
5140         arg_size_in_bytes, get_ultimate_context): Declare.
5141
5142 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5143
5144         * config/arm/arm.c (cmse_clear_registers): New function.
5145         (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
5146         code by call to cmse_clear_registers.
5147         (cmse_nonsecure_entry_clear_before_return): Likewise.
5148
5149 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
5150
5151         * config/arm/arm_neon.h (vdot_u32, vdotq_u32)
5152         (vdot_s32, vdotq_s32): New.
5153         (vdot_lane_u32, vdotq_lane_u32): New.
5154         (vdot_lane_s32, vdotq_lane_s32): New.
5155
5156
5157 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5158
5159         PR middle-end/82547
5160         * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
5161         for unsigned values with fewer HWIs than the precision.
5162         (test_overflow): New function.
5163         (wide_int_cc_tests): Call it.
5164
5165 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5166
5167         * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
5168         has the same mode class as Pmode.
5169
5170 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5171
5172         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
5173         padding_bits_to_clear_ptr.
5174         (cmse_nonsecure_entry_clear_before_return): Likewise.
5175
5176 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5177
5178         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
5179         auto_sbitap instead of integer bitfield to control register needing
5180         clearing.
5181
5182 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5183
5184         PR tree-optimization/83044
5185         * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
5186         INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
5187         that need the upper bound.  Subtract offset from
5188         get_addr_base_and_unit_offset only if positive and subtract it
5189         before division by eltsize rather than after it.
5190
5191         PR debug/83084
5192         * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
5193         debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
5194         (dead_debug_insert_temp): Likewise, but also ignore even non-volatile
5195         asm.
5196
5197         PR middle-end/82875
5198         * optabs.c (expand_doubleword_mult, expand_binop): Before calling
5199         expand_binop with *mul_widen_optab, make sure at least one of the
5200         operands doesn't have VOIDmode.
5201
5202         PR debug/83034
5203         * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
5204
5205         PR rtl-optimization/82044
5206         PR tree-optimization/82042
5207         * dse.c (record_store): Check for overflow.
5208         (check_mem_read_rtx): Properly check for overflow if width == -1, call
5209         add_wild_read instead of clear_rhs_from_active_local_stores on
5210         overflow and log it into dump_file.
5211
5212 2017-11-22  Richard Biener  <rguenther@suse.de>
5213
5214         * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
5215         fake edges to exit when looking for a place to insert.
5216         * tree-ssa-pre.c (clear_expression_ids): Inline into callers
5217         and remove.
5218         (insert_into_preds_of_block): Commit edge insertion immediately,
5219         assert that doesn't require new BBs.
5220         (fini_pre): Release expressions.
5221         (pass_pre::execute): Shuffle things around a bit, if the fn
5222         is too large do not compute AVAIL either as this is really the
5223         quadratic bit.
5224
5225 2017-11-22  Richard Biener  <rguenther@suse.de>
5226
5227         PR tree-optimization/83089
5228         * tree-if-conv.c (pass_if_conversion::execute): If anything
5229         changed reset SCEV and free the number of iteration estimates.
5230
5231 2017-11-21  Martin Sebor  <msebor@redhat.com>
5232
5233         PR tree-optimization/82945
5234         * calls.h (warn_nonstring_bound): Remove unused function.
5235
5236 2017-11-21  Martin Sebor  <msebor@redhat.com>
5237
5238         PR tree-optimization/82945
5239         * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
5240         * calls.h (maybe_warn_nonstring_arg): Declare new function.
5241         * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
5242         functions.
5243         (initialize_argument_information): Call maybe_warn_nonstring_arg.
5244         * calls.h (get_attr_nonstring_decl): Declare new function.
5245         * doc/extend.texi (attribute nonstring): Update.
5246         * gimple-fold.c (gimple_fold_builtin_strncpy): Call
5247         get_attr_nonstring_decl and handle it.
5248         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
5249         detection of nul-termination.
5250         (strlen_to_stridx): Change to a pointer.
5251         (handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
5252         (pass_strlen::execute): Same.
5253
5254 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5255
5256         * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
5257         for the new option -mprefer-vector-width=[none|128|256|512].
5258         * config/i386/i386.c (ix86_target_string): remove old style options
5259         -mprefer-avx256 and make -mprefer-avx128 as alias.
5260         (ix86_option_override_internal):  Apply defaults for the
5261         -mprefer-vector-width=[128|256] option.
5262         * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
5263         Implement macros to work with -mprefer-vector-width=.
5264         * config/i386/i386.opt: Implemented option
5265         -mprefer-vector-width=[none|128|256|512].
5266         * doc/invoke.texi: Documentation for
5267         -mprefer-vector-width=[none|128|256|512].
5268
5269 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
5270
5271         * config/rs6000/ppc-asm.h (f50, vs50): Fix values.
5272
5273 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
5274
5275         * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
5276
5277 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
5278
5279         * doc/generic.texi: Document POINTER_DIFF_EXPR, update
5280         POINTER_PLUS_EXPR.
5281         * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
5282         * expr.c (expand_expr_real_2): Likewise.
5283         * fold-const.c (const_binop, fold_addr_of_array_ref_difference,
5284         fold_binary_loc): Likewise.
5285         * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
5286         P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
5287         (A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
5288         MINUS_EXPR transformations.
5289         * optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
5290         * tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
5291         * tree-inline.c (estimate_operator_cost): Likewise.
5292         * tree-pretty-print.c (dump_generic_node, op_code_prio,
5293         op_symbol_code): Likewise.
5294         * tree-vect-stmts.c (vectorizable_operation): Likewise.
5295         * vr-values.c (extract_range_from_binary_expr): Likewise.
5296         * varasm.c (initializer_constant_valid_p_1): Likewise.
5297         * tree.def: New tree code POINTER_DIFF_EXPR.
5298
5299 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
5300
5301         * config/i386/i386.md (*bswap<mode>2_movbe): Add
5302         integer suffix to movbe mnemonic.
5303         (*bswaphi2_movbe): Ditto.
5304         (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
5305
5306 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5307
5308         PR c++/83045
5309         * tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
5310         Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
5311         Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
5312
5313 2017-11-21  Martin Liska  <mliska@suse.cz>
5314
5315         * tree-inline.c (expand_call_inline): Remove not needed
5316         xstrdup_for_dump.
5317
5318 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
5319             Jakub Jelinek  <jakub@redhat.com>
5320
5321         PR target/82880
5322         * config/mips/frame-header-opt.c (mips_register_frame_header_opt):
5323         Remove static keyword from f variable.
5324
5325 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5326
5327         PR tree-optimization/83086
5328         * gimple-ssa-store-merging.c
5329         (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
5330         rather than n.base_addr.
5331
5332 2017-11-21  Martin Liska  <mliska@suse.cz>
5333
5334         PR rtl-optimization/82044
5335         PR tree-optimization/82042
5336         * dse.c (check_mem_read_rtx): Check for overflow.
5337
5338 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5339
5340         * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
5341         typo in comment.
5342
5343 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5344
5345         * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
5346         and its corresponding call arg location note.
5347
5348 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5349             Andrew Burgess  <andrew.burgess@embecosm.com>
5350
5351         * config/arc/arc-protos.h (arc_compute_frame_size): Delete
5352         declaration.
5353         (arc_return_slot_offset): Likewise.
5354         (arc_eh_return_address_location): New declaration.
5355         * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
5356         (MUST_SAVE_REGISTER): Add exception handler case.
5357         (MUST_SAVE_RETURN_ADDR): Likewise.
5358         (arc_frame_pointer_required): Likewise.
5359         (arc_frame_pointer_needed): New function.
5360         (arc_compute_frame_size): Changed.
5361         (arc_expand_prologue): Likewise.
5362         (arc_expand_epilogue): Likewise.
5363         (arc_initial_elimination_offset): Likewise.
5364         (arc_return_slot_offset): Delete.
5365         (arc_eh_return_address_location): New function.
5366         (arc_builtin_setjmp_frame_value): Likewise.
5367         * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
5368         (EH_RETURN_STACKADJ_RTX): Define.
5369         (EH_RETURN_HANDLER_RTX): Likewise.
5370         * config/arc/arc.md (eh_return): Delete.
5371
5372 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5373
5374         * print-tree.h (debug_vec_tree): Remove prototype.
5375         * gdbinit.in (pvt): Remove macro.
5376
5377 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5378
5379         PR tree-optimization/83047
5380         * gimple-ssa-store-merging.c
5381         (imm_store_chain_info::output_merged_store): If the loads with the
5382         same vuse are in different basic blocks, for load_gsi pick a load
5383         location that is dominated by the other loads.
5384
5385         PR c++/83059
5386         * config/i386/i386.c (ix86_memmodel_check): Start
5387         -Winvalid-memory-model diagnostics with lowercase letter.
5388
5389         PR debug/82718
5390         * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
5391         set in_cold_section_p to the partition containing loc_list->first.
5392         When seeing loc_list->last_before_switch node, update secname and
5393         perform range_across_switch second partition handling only after that.
5394
5395         PR debug/82933
5396         * run-rtl-passes.c: Include debug.h.
5397         (run_rtl_passes): Call debug_hooks->assembly_start.
5398         * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
5399         multiple times.
5400
5401         PR target/82981
5402         * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
5403         OPTAB_DIRECT in calls to expand_simple_binop.
5404
5405 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5406
5407         PR c/81404
5408         * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
5409
5410 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5411
5412         PR c++/72786
5413         * spellcheck.h (best_match::blithely_get_best_candidate): New
5414         accessor.
5415
5416 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5417
5418         * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
5419         with lower case letter.
5420
5421 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
5422
5423         * config/i386/i386.md (bswaphi2): New expander.
5424         (*bswaphi2_movbe): New insn pattern.
5425         (bswaphi -> rorhi pepehole2): New peephole pattern.
5426
5427 2017-11-20  Jeff Law  <law@redhat.com>
5428
5429         * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
5430         * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
5431         * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
5432         * gimple-ssa-evrp.c: Remove bits moved into new files.  Include
5433         gimple-ssa-evrp-analyze.h.
5434
5435         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
5436         set BB_VISITED here.
5437         (evrp_range_analyzer::enter): Set BB_VISITED here instead.
5438
5439 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5440
5441         * tree-predcom.c: Add general comment on Store-Store chains.
5442         (split_data_refs_to_components): Postpone clearing eliminate_store_p
5443         flag in component.
5444         (get_chain_last_ref_at): Rename into...
5445         (get_chain_last_write_at): ...this.
5446         (get_chain_last_write_before_load): New function.
5447         (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
5448         CT_STORE_STORE when write reference is added.
5449         (determine_roots_comp): Support load ref in CT_STORE_STORE chains.
5450         (is_inv_store_elimination_chain): Update get_chain_last_write_at call.
5451         (initialize_root_vars_store_elim_1): Ditto.
5452         (initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
5453         definition is created.
5454         (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
5455         chain by replacing it with dominant stored value.
5456
5457 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5458
5459         * tree-predcom.c (add_ref_to_chain): Remove check on distance.
5460
5461 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
5462
5463         * vr-values.c (extract_range_from_binary_expr): Use a full range
5464         for VR_VARYING.
5465
5466 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5467
5468         * config/arm/arm.md (R4_REGNUM): Define constant.
5469         (nonsecure_call_internal): Remove r4 clobber.
5470         (nonsecure_call_value_internal): Likewise.
5471         * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
5472         clobber and resequence match_operands.
5473         (nonsecure_call_value_reg_thumb1_v5): Likewise.
5474         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
5475         (nonsecure_call_value_reg_thumb2): Likewise.
5476
5477 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5478
5479         PR tree-optimization/78821
5480         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
5481         if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
5482         to the address of the base rather than the base itself.
5483         (find_bswap_or_nop_1): Just use pointer comparison for vuse check.
5484         (find_bswap_or_nop_finalize): New function.
5485         (find_bswap_or_nop): Use it.
5486         (bswap_replace): Return a tree rather than bool, change first
5487         argument from gimple * to gimple_stmt_iterator, allow inserting
5488         into an empty sequence, allow ins_stmt to be NULL - then emit
5489         all stmts into gsi.  Fix up MEM_REF address gimplification.
5490         (pass_optimize_bswap::execute): Adjust bswap_replace caller.
5491         (struct store_immediate_info): Add N and INS_STMT non-static
5492         data members.
5493         (store_immediate_info::store_immediate_info): Initialize them
5494         from newly added ctor args.
5495         (merged_store_group::apply_stores): Formatting fixes.  Sort by
5496         bitpos at the end.
5497         (stmts_may_clobber_ref_p): For stores call also
5498         refs_anti_dependent_p.
5499         (gather_bswap_load_refs): New function.
5500         (imm_store_chain_info::try_coalesce_bswap): New method.
5501         (imm_store_chain_info::coalesce_immediate_stores): Use it.
5502         (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
5503         (imm_store_chain_info::output_merged_store): Fail if number of
5504         new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
5505         and NOP_EXPR rhs_code.
5506         (pass_store_merging::process_store): Compute n and ins_stmt, if
5507         ins_stmt is non-NULL and the store rhs is otherwise invalid, use
5508         LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
5509         ctor.
5510         (pass_store_merging::execute): Calculate dominators.
5511
5512         * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
5513         BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
5514         CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
5515         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5516         find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
5517         class pass_optimize_bswap, bswap_replace,
5518         pass_optimize_bswap::execute): Moved to ...
5519         * gimple-ssa-store-merging.c: ... this file.
5520         Include optabs-tree.h.
5521         (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
5522         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5523         find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
5524         anonymous namespace, remove static keywords.
5525         (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
5526         (pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
5527
5528 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
5529
5530         PR bootstrap/83062
5531         * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
5532
5533 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
5534
5535         * vec.h (debug_helper): New function.
5536         (DEFINE_DEBUG_VEC): New macro.
5537         * hash-set.h (debug_helper): New function.
5538         (DEFINE_DEBUG_HASH_SET): New macro.
5539         * cfg.c (debug_slim (edge)): New function.
5540         Call DEFINE_DEBUG_VEC for edges.
5541         Call DEFINE_DEBUG_HASH_SET for edges.
5542         * cfghooks.c (debug_slim (basic_block)): New function.
5543         Call DEFINE_DEBUG_VEC for basic blocks.
5544         Call DEFINE_DEBUG_HASH_SET for basic blocks.
5545         * print-tree.c (debug_slim): New function to handle trees.
5546         Call DEFINE_DEBUG_VEC for trees.
5547         Call DEFINE_DEBUG_HASH_SET for trees.
5548         (debug (vec<tree, va_gc>) &): Remove.
5549         (debug (<vec<tree, va_gc>) *): Remove.
5550         * print-rtl.c (debug_slim): New function to handle const_rtx.
5551         Call DEFINE_DEBUG_VEC for rtx_def.
5552         Call DEFINE_DEBUG_VEC for rtx_insn.
5553         Call DEFINE_DEBUG_HASH_SET for rtx_def.
5554         Call DEFINE_DEBUG_HASH_SET for rtx_insn.
5555         * sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
5556         (debug (vec<rtx_insn *> *ptr): Remove.
5557         (debug_insn_vector): Remove.
5558         * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
5559
5560 2017-11-20  Tom de Vries  <tom@codesourcery.com>
5561
5562         PR rtl-optimization/82020
5563         * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
5564         IF_THEN_ELSE condition.
5565
5566 2017-11-19  Jeff Law  <law@redhat.com>
5567
5568         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
5569         of degenerates resulting from ignoring an edge.
5570
5571 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5572
5573         PR ipa/81360
5574         * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
5575
5576 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5577
5578         PR ipa/83001
5579         * profile-count.c (profile_count::to_sreal_scale): Fix return value
5580         for uninitialied counts.
5581
5582 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5583
5584         PR ipa/60243
5585         * tree-inline.c (estimate_num_insns): Set to 1 at least.
5586
5587 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5588
5589         PR target/82713
5590         * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
5591
5592 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5593
5594         * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
5595         "do while (0)".
5596
5597 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5598
5599         * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
5600         "do {} while (0)".
5601
5602 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5603
5604         * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
5605         macro body.
5606
5607 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5608
5609         * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
5610         "do {} while (0)".
5611         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
5612
5613 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5614
5615         * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
5616         "do {} while (0)".
5617         * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
5618         semicolon after MCORE_EXPORT_NAME call.
5619
5620 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5621
5622         PR target/82961
5623         * vmsdbgout.c (vmsdbgout_early_finish): New function.
5624         (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
5625
5626 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
5627
5628         * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
5629         (cgraph_edge::clone): Cleanup updating of profile.
5630         * ipa-cp.c (update_profiling_info): Likewise.
5631         * ipa-inline-transform.c (inline_transform): Likewise.
5632         * ipa-inline.c (inline_small_functions): Add missing space to dump.
5633         * ipa-split.c (execute_split_functions): Do not split when function
5634         is cold.
5635         * predict.c (estimate_bb_frequencies): Cleanup updating of profile.
5636         * profile-count.c (profile_count::dump): Add global0.
5637         (profile_count::to_cgraph_frequency): Do not ICE when entry is
5638         undefined.
5639         (profile_count::to_sreal_scale): Likewise.
5640         (profile_count::adjust_for_ipa_scaling): Fix typo in comment.
5641         (profile_count::combine_with_ipa_count): New function.
5642         * profile-count.h (profile_guessed_global0adjusted): New.
5643         (profile_count::adjusted_zero): New.
5644         (profile_count::global0adjusted): New.
5645         (profile_count::combine_with_ipa_count): New.
5646         * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
5647         correct profile of return block of split functions.
5648         (copy_cfg_body): Remove unused profile_count.
5649         (copy_body): Likewise.
5650         (expand_call_inline): Update.
5651         (tree_function_versioning): Update.
5652
5653 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
5654
5655         * hash-set.h (hash_set::empty): New.
5656         * tree-ssa-threadbackward.h: Delete.
5657         * tree-ssa-threadbackward.c (class thread_jumps): New.
5658         Move max_threaded_paths into class.
5659         (fsm_find_thread_path): Remove arguments that are now in class.
5660         (profitable_jump_thread_path): Rename to...
5661         (thread_jumps::profitable_jump_thread_path): ...this.
5662         (convert_and_register_jump_thread_path): Rename to...
5663         (thread_jumps::convert_and_register_current_path): ...this.
5664         (check_subpath_and_update_thread_path): Rename to...
5665         (thread_jumps::check_subpath_and_update_thread_path): ...this.
5666         (register_jump_thread_path_if_profitable): Rename to...
5667         (thread_jumps::register_jump_thread_path_if_profitable): ...this.
5668         (handle_phi): Rename to...
5669         (thread_jumps::handle_phi): ...this.
5670         (handle_assignment): Rename to...
5671         (thread_jumps::handle_assignment): ...this.
5672         (fsm_find_control_statement_thread_paths): Rename to...
5673         (thread_jumps::fsm_find_control_statement_thread_paths): ...this.
5674         (find_jump_threads_backwards): Rename to...
5675         (thread_jumps::find_jump_threads_backwards): ...this.
5676         Initialize path local data.
5677         (pass_thread_jumps::execute): Call find_jump_threads_backwards
5678         from within thread_jumps class.
5679         (pass_early_thread_jumps::execute): Same.
5680
5681 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5682
5683         * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
5684
5685 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
5686
5687         * config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
5688         to canonical location.
5689
5690 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
5691
5692         PR target/81356
5693         * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
5694         Remove.
5695         (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
5696
5697 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
5698
5699         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
5700         rcrt1.o%s/grcrt1.o%s for -static-pie.
5701
5702 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5703
5704         * i386.c (ix86_multiplication_cost, ix86_division_cost,
5705         ix86_shift_rotate_cost): Break out from ...
5706         (ix86_rtx_costs): ... here.
5707         (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
5708         vector operations.
5709
5710 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5711
5712         * predict.c (determine_unlikely_bbs): Set cgraph node count to 0
5713         when entry block was promoted unlikely.
5714         (estimate_bb_frequencies): Increase frequency scale.
5715         * profile-count.h (profile_count): Export precision info.
5716
5717 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5718
5719         * tree-tailcall.c (eliminate_tail_call): Be more careful about not
5720         disturbin profile of entry block.
5721
5722 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5723
5724         * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
5725         roundoff errors.
5726
5727 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5728
5729         * ipa-cp.c (update_profiling_info): Handle conversion to local profile.
5730         * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
5731
5732 2017-11-17  Jeff Law  <law@redhat.com>
5733
5734         * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
5735         from evrp_dom_walker class.  Various methods moved into new class.
5736         (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
5737         (evrp_range_analyzer::enter): New method.
5738         (evrp_range_analyzer::leave): New method.
5739         (evrp_dom_walker): Remove delegators no longer needed by this class.
5740         Replace vr_values data member with evrp_range_analyzer
5741
5742         * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
5743         method extracted from evrp_dom_walker::before_dom_children.
5744         (evrp_dom_walker::record_ranges_from_stmt): Likewise.
5745         (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
5746
5747         * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
5748         Add private copy constructor and move assignment operators.
5749         Privatize methods and class data where trivially possible.
5750         (evrp_dom_walker::cleanup): New function, extracted from
5751         execute_early_vrp.  Simplify access to class data.
5752
5753         * vr-values.h (get_output_for_vrp): Prototype.
5754         * vr-values.c (get_output_for_vrp): New function extracted from
5755         vrp_visit_assignment_or_call and extract_range_from_stmt.
5756         (vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
5757
5758 2017-11-17  Luis Machado  <luis.machado@linaro.org>
5759
5760         * config/aarch64/aarch64.c
5761         (qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
5762         (qdf24xx_tunings) <autoprefetcher_model>: Set to
5763         tune_params::AUTOPREFETCHER_WEAK.
5764
5765 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
5766
5767         PR target/82641
5768         * config/arm/arm.c (arm_valid_target_attribute_rec):
5769         Parse "arch=" and "+<ext>".
5770         (arm_valid_target_attribute_tree): Re-init global options.
5771         (arm_option_override): Make non-static.
5772         (arm_options_perform_arch_sanity_checks): Make errors fatal.
5773         * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
5774         (__ARM_FEATURE_CRC32): Support undef.
5775         * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
5776         * doc/extend.texi (ARM Function Attributes): Add pragma and target.
5777
5778 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
5779
5780         * gdbinit.in (break-on-diagnostic): New command.
5781
5782 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5783
5784         * config/i386/i386.c (ix86_expand_epilogue): Change simple
5785         return to indirect jump for EH return if control-flow
5786         protection is enabled. Change explicit 'false' argument in
5787         pro_epilogue_adjust_stack with a value of
5788         flag_cf_protection.
5789         * config/i386/i386.md (simple_return_indirect_internal):
5790         Remove SImode restriction to support 64-bit.
5791
5792 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5793
5794         * combine.c (added_notes_insn): New.
5795         (try_combine): Handle added_notes_insn like added_links_insn.
5796         Rewrite return value code.
5797         (distribute_notes): Set added_notes_insn to the earliest insn we added
5798         a note to.
5799
5800 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5801
5802         PR rtl-optimization/82621
5803         * combine.c (try_combine): Do not split PARALLELs of two SETs if the
5804         dest of one of those SETs is unused.
5805
5806 2017-11-17  Richard Biener  <rguenther@suse.de>
5807
5808         PR fortran/83017
5809         * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
5810         * tree-pretty-print.c (dump_generic_node): Handle
5811         annot_expr_parallel_kind.
5812         * tree-cfg.c (replace_loop_annotate_in_block): Likewise.
5813         * gimplify.c (gimple_boolify): Likewise.
5814
5815 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5816
5817         * config.gcc (extra_headers): Add cet.h for x86 targets.
5818         * config/i386/cet.h: New file.
5819         * doc/install.texi: Add --enable-cet/--disable-cet.
5820
5821 2017-11-17  Richard Biener  <rguenther@suse.de>
5822
5823         PR tree-optimization/83017
5824         * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
5825         (gen_parallel_loop): Properly count iterations.
5826         (parallelize_loops): Handle loop->can_be_parallel independent
5827         of flag_loop_parallelize_all.  Make static profitability test match
5828         the runtime one.
5829         * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
5830         * invoke.texi (parloops-min-per-thread): Document.
5831
5832 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
5833
5834         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
5835         upstreaming review comments.
5836
5837 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
5838
5839         * expr.c (copy_blkmode_to_reg): Fix bitsize for targets
5840         with fast unaligned access.
5841         * doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
5842
5843 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5844
5845         * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
5846         to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
5847
5848 2017-11-17  Richard Biener  <rguenther@suse.de>
5849
5850         * tree-ssa-pre.c (phi_translate_1): Remove redundant constant
5851         folding of references.
5852
5853 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
5854
5855         PR middle-end/78809
5856         * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
5857         of replacing call to strncmp with corresponding call to strcmp when
5858         meeting conditions.
5859
5860 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5861
5862         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
5863         option prefer-avx256 for skylake-avx512 configuration.
5864         * config/i386/i386.c (ix86_option_override_internal): Ditto.
5865         (get_builtin_code_for_version): Ditto.
5866
5867 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5868             Monk Chiang  <sh.chiang04@gmail.com>
5869
5870         * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
5871         (FIXED_REGISTERS): Reserve more register numbers.
5872         (CALL_USED_REGISTERS): Likewise.
5873         (REG_ALLOC_ORDER): Likewise.
5874         (REG_CLASS_CONTENTS): Likewise.
5875         (REGISTER_NAMES): Likewise.
5876
5877 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5878             Kito Cheng  <kito.cheng@gmail.com>
5879
5880         * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
5881         V2SI.
5882         * config/nds32/iterators.md: Add vector mode iterators and attributes.
5883
5884 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
5885
5886         * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
5887         parameter list for vec_splats.
5888
5889 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
5890
5891         * doc/invoke.texi (-std=c17): Refer to 2018 expected publication
5892         date of C17.
5893         (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
5894
5895 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
5896
5897         PR bootstrap/82856
5898         * doc/install.texi: Document incompatibility of Perl >=5.6.26
5899         with the required version of automake 1.11.6.
5900
5901 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
5902
5903         * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
5904         for it.
5905         (DU_C2_3_power9): Correct reservation combinations.
5906         (FP_DIV_power9, VEC_DIV_power9): New.
5907         (power9-alu): Split out rotate/shift...
5908         (power9-rot): ...to here, correct dispatch resource.
5909         (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
5910         resource.
5911         (power9-fp): Correct latency.
5912         (power9-sdiv): Add div/sqrt resource.
5913         (power9-ddiv): Correct latency, add div/sqrt resource.
5914         (power9-sqrt, power9-dsqrt): Add div/sqrt resource.
5915         (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
5916         resource.
5917         (power9-qpdiv, power9-qpmul): Adjust resource usage.
5918
5919 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
5920
5921         * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
5922         switch statement mapping KF built-ins to TF built-ins if we don't
5923         have the proper ISA 3.0 assembler support.
5924
5925 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5926
5927         * tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
5928         (lower_emutls_function_body): Do not compute it.
5929
5930 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5931
5932         * ipa-split.c (split_bb_info): Turn time to sreal.
5933         (split_point): Likewise.
5934         (dump_split_point): Likewise.
5935         (fine_split_points): Likewise.
5936         (execute_split_functions): Only zero split_bbs; turn time to sreals.
5937
5938 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5939
5940         * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
5941         in sreal.
5942
5943 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5944
5945         * predict.c (combine_predictions_for_bb): Preserve zero predicted
5946         edges.
5947         (expensive_function_p): Remove useless assert.
5948         (determine_unlikely_bbs): Propagate also forward; determine cold blocks
5949
5950 2017-11-16  Martin Sebor  <msebor@redhat.com>
5951
5952         PR tree-optimization/82588
5953         PR tree-optimization/82583
5954         * tree-vrp.c (check_array_ref): Handle flexible array members,
5955         string literals, and inner indices.
5956         (search_for_addr_array): Add detail to diagnostics.
5957
5958 2017-11-16  Nathan Sidwell  <nathan@acm.org>
5959
5960         PR c++/82836
5961         PR c++/82737
5962         * tree.h (COPY_DECL_RTL): Rename parms for clarity.
5963         (SET_DECL_ASSEMBLER_NAME): Forward to
5964         overwrite_decl_assembler_name.
5965         (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
5966         (overwrite_decl_assembler_name): Declare.
5967         * tree.c (overwrite_decl_assembler_name): New.
5968         * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
5969         (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
5970         (LANG_HOOKS_INITIALIZER): Add it.
5971         * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
5972         * langhooks.c (lhd_set_decl_assembler_name): Use
5973         SET_DECL_ASSEMBLER_NAME.
5974         (lhd_overwrite_decl_assembler_name): Default implementation.
5975
5976 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5977             Jackson Woodruff  <jackson.woodruff@arm.com>
5978
5979         PR tree-optimization/71026
5980         * match.pd: Canonicalize constant multiplies in division.
5981
5982 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5983
5984         * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
5985         * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
5986         Remove OPT_fomit_frame_pointer entry.
5987         * common/config/arc/arc-common.c: Likewise.
5988         * common/config/arm/arm-common.c: Likewise.
5989         * common/config/avr/avr-common.c: Likewise.
5990         * common/config/c6x/c6x-common.c: Likewise.
5991         * common/config/cr16/cr16-common.c: Likewise.
5992         * common/config/cris/cris-common.c: Likewise.
5993         * common/config/epiphany/epiphany-common.c: Likewise.
5994         * common/config/fr30/fr30-common.c: Likewise.
5995         * common/config/frv/frv-common.c: Likewise.
5996         * common/config/ia64/ia64-common.c: Likewise.
5997         * common/config/iq2000/iq2000-common.c: Likewise.
5998         * common/config/lm32/lm32-common.c: Likewise.
5999         * common/config/m32r/m32r-common.c: Likewise.
6000         * common/config/mcore/mcore-common.c: Likewise.
6001         * common/config/microblaze/microblaze-common.c: Likewise.
6002         * common/config/mips/mips-common.c: Likewise.
6003         * common/config/mmix/mmix-common.c: Likewise.
6004         * common/config/mn10300/mn10300-common.c: Likewise.
6005         * common/config/nios2/nios2-common.c: Likewise.
6006         * common/config/pa/pa-common.c: Likewise.
6007         * common/config/pdp11/pdp11-common.c: Likewise.
6008         * common/config/powerpcspe/powerpcspe-common.c: Likewise.
6009         * common/config/riscv/riscv-common.c: Likewise.
6010         * common/config/rs6000/rs6000-common.c: Likewise.
6011         * common/config/rx/rx-common.c: Likewise.
6012         * common/config/s390/s390-common.c: Likewise.
6013         * common/config/sh/sh-common.c: Likewise.
6014         * common/config/sparc/sparc-common.c: Likewise.
6015         * common/config/tilegx/tilegx-common.c: Likewise.
6016         * common/config/tilepro/tilepro-common.c: Likewise.
6017         * common/config/v850/v850-common.c: Likewise.
6018         * common/config/visium/visium-common.c: Likewise.
6019         * common/config/xstormy16/xstormy16-common.c: Likewise.
6020         * common/config/xtensa/xtensa-common.c: Likewise.
6021         * invoke.texi (-fomit-frame-pointer): Update documentation.
6022
6023 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6024
6025         * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
6026
6027 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6028
6029         * cfg.c (scale_bbs_frequencies_int,
6030         cale_bbs_frequencies_gcov_type): Remove.
6031         * cfg.h (scale_bbs_frequencies_int,
6032         cale_bbs_frequencies_gcov_type): Remove.
6033
6034 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6035
6036         * tree-ssa-loop-manip.c
6037         (scale_dominated_blocks_in_loop): Update to profile counts.
6038         (tree_transform_and_unroll_loop): Likewise.
6039
6040 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6041
6042         * tree-vect-loop-manip.c (vect_do_peeling): Do not use
6043         scale_bbs_frequencies_int.
6044
6045 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6046
6047         * final.c (compute_alignments): Use counts rather than frequencies.
6048
6049 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6050
6051         * cfgloopanal.c: Include sreal.h
6052         (average_num_loop_insns): Use counts and sreal for accounting.
6053
6054 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6055
6056         * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
6057         manipulation.
6058
6059 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6060             Kito Cheng  <kito.cheng@gmail.com>
6061
6062         * config/nds32/constraints.md: Provide more constraints.
6063         * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
6064         REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
6065         support constraints usage.
6066
6067 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6068
6069         * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
6070
6071 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6072             Kito Cheng  <kito.cheng@gmail.com>
6073
6074         * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
6075         * config/nds32/nds32.opt: Refine the layout.
6076         * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
6077         TARGET_EXT_STRING): Support new options.
6078         * config/nds32/nds32.h: Likewise.
6079         * config/nds32/nds32.md: Likewise.
6080         * config/nds32/nds32-predicates.c: Likewise.
6081         * config/nds32/constraints.md: Likewise.
6082         * common/config/nds32/nds32-common.c: Likewise.
6083
6084 2017-11-16  Julia Koval  <julia.koval@intel.com>
6085
6086         PR target/82983
6087         * config/i386/gfniintrin.h: Add sse check.
6088         * config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
6089
6090 2017-11-16  Julia Koval  <julia.koval@intel.com>
6091
6092         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
6093         OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
6094         (ix86_handle_option): Handle -mavx512vbmi2.
6095         * config/i386/cpuid.h: Add bit_AVX512VBMI2.
6096         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
6097         * config/i386/i386-c.c (__AVX512VBMI2__): New.
6098         * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
6099         (ix86_valid_target_attribute_inner_p): Ditto.
6100         * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
6101         * config/i386/i386.opt (mavx512vbmi2): New option.
6102         * doc/invoke.texi: Add new option.
6103
6104 2017-11-16  Julia Koval  <julia.koval@intel.com>
6105
6106         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
6107         _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
6108         _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
6109         _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
6110         _mm512_gf2p8mul_epi8): New intrinsics.
6111         * config/i386/i386-builtin-types.def
6112         (V64QI_FTYPE_V64QI_V64QI): New type.
6113         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
6114         __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
6115         __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
6116         __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
6117         * config/i386/sse.md (vgf2p8mulb_*): New pattern.
6118         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
6119
6120 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
6121
6122         * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
6123         explicitly as a stream of bytes.
6124
6125 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6126
6127         * config/rs6000/altivec.h (vec_xst_be): New #define.
6128         * config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
6129         and externalize from *altivec_vperm_<mode>_internal.
6130         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
6131         instantiation.
6132         (XL_BE_V8HI): Likewise.
6133         (XL_BE_V4SI): Likewise.
6134         (XL_BE_V4SI): Likewise.
6135         (XL_BE_V2DI): Likewise.
6136         (XL_BE_V4SF): Likewise.
6137         (XL_BE_V2DF): Likewise.
6138         (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
6139         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
6140         all array entries with these keys: VSX_BUILTIN_VEC_XL,
6141         VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
6142         VSX_BUILTIN_VEC_XST_BE.
6143         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
6144         (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
6145         built-ins.
6146         (altivec_init_builtins): Replace conditional calls to def_builtin
6147         for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
6148         __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
6149         with unconditional calls.  Remove calls to def_builtin for
6150         __builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
6151         __builtin_vec_xst_be.
6152         * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
6153         to define_expand, and add alternate RTL generation for P8.
6154         (*vsx_ld_elemrev_v8hi_internal): New define_insn based on
6155         vsx_ld_elemrev_v8hi.
6156         (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
6157         add alternate RTL generation for P8.
6158         (*vsx_ld_elemrev_v16qi_internal): New define_insn based on
6159         vsx_ld_elemrev_v16qi.
6160         (vsx_st_elemrev_v8hi): Convert define_insn
6161         to define_expand, and add alternate RTL generation for P8.
6162         (*vsx_st_elemrev_v8hi_internal): New define_insn based on
6163         vsx_st_elemrev_v8hi.
6164         (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
6165         add alternate RTL generation for P8.
6166         (*vsx_st_elemrev_v16qi_internal): New define_insn based on
6167         vsx_st_elemrev_v16qi.
6168
6169 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
6170
6171         PR target/82990
6172         * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
6173         TARGET_AVX512ER check.
6174         (ix86_option_override_internal): Set MASK_VZEROUPPER if
6175         neither -mzeroupper nor -mno-zeroupper is used and
6176         TARGET_EMIT_VZEROUPPER is set.
6177         * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
6178         * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
6179
6180 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
6181
6182         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
6183         folding of vector compares.
6184         (fold_build_vec_cmp): New helper function.
6185         (fold_compare_helper): New helper function.
6186         (builtin_function_type): Add compare builtins to the list of functions
6187         having unsigned arguments.  Cosmetic updates to comment indentation.
6188         * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
6189         the not+eq combination.
6190
6191 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6192
6193         PR tree-optimization/82726
6194         PR tree-optimization/70754
6195         * tree-predcom.c (order_drefs_by_pos): New function.
6196         (combine_chains): Move code setting has_max_use_after to...
6197         (try_combine_chains): ...here.  New parameter.  Sort combined chains
6198         according to position information.
6199         (tree_predictive_commoning_loop): Update call to above function.
6200         (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
6201
6202 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6203
6204         PR tree-optimization/82726
6205         Revert
6206         2017-01-23  Bin Cheng  <bin.cheng@arm.com>
6207
6208         PR tree-optimization/70754
6209         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
6210         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
6211         combined stmt before it if not NULL.
6212         (combine_chains): Process refs reversely and compute dominance point
6213         for root ref.
6214
6215         Revert
6216         2017-02-23  Bin Cheng  <bin.cheng@arm.com>
6217
6218         PR tree-optimization/79663
6219         * tree-predcom.c (combine_chains): Process refs in reverse order
6220         only for ZERO length chains, and add explaining comment.
6221
6222 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6223
6224         * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
6225         * config/arm/arm-tables.opt (armv8.3-a): Regenerated.
6226         * doc/invoke.texi (ARM Options): Add armv8.3-a.
6227
6228 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6229
6230         * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
6231
6232 2017-11-15  Martin Liska  <mliska@suse.cz>
6233
6234         * tree-cfg.c (pass_warn_function_return::execute):
6235         Compare warn_return_type for greater than zero.
6236
6237 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
6238
6239         PR target/82941
6240         PR target/82942
6241         * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
6242         to return true on Xeon and not on Xeon Phi.
6243         (ix86_check_avx256_register): Changed to ...
6244         (ix86_check_avx_upper_register): ... this. Add extra check for
6245         VALID_AVX512F_REG_OR_XI_MODE.
6246         (ix86_avx_u128_mode_needed): Changed
6247         ix86_check_avx256_register to ix86_check_avx_upper_register.
6248         (ix86_check_avx256_stores): Changed to ...
6249         (ix86_check_avx_upper_stores): ... this. Changed
6250         ix86_check_avx256_register to ix86_check_avx_upper_register.
6251         (ix86_avx_u128_mode_after): Changed
6252         avx_reg256_found to avx_upper_reg_found. Changed
6253         ix86_check_avx256_stores to ix86_check_avx_upper_stores.
6254         (ix86_avx_u128_mode_entry): Changed
6255         ix86_check_avx256_register to ix86_check_avx_upper_register.
6256         (ix86_avx_u128_mode_exit): Ditto.
6257         * config/i386/i386.h: (host_detect_local_cpu): New define.
6258
6259 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
6260
6261         * config/arm/xgene1.md (xgene1): Split into automatons
6262         xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
6263         (xgene1_f_load): Adjust reservations and/or types.
6264         (xgene1_f_store): Likewise.
6265         (xgene1_load_pair): Likewise.
6266         (xgene1_store_pair): Likewise.
6267         (xgene1_fp_load1): Likewise.
6268         (xgene1_load1): Likewise.
6269         (xgene1_store1): Likewise.
6270         (xgene1_move): Likewise.
6271         (xgene1_alu): Likewise.
6272         (xgene1_simd): Likewise.
6273         (xgene1_bfm): Likewise.
6274         (xgene1_neon_load1): Likewise.
6275         (xgene1_neon_store1): Likewise.
6276         (xgene1_neon_logic): Likewise.
6277         (xgene1_neon_st1): Likewise.
6278         (xgene1_neon_ld1r): Likewise.
6279         (xgene1_alu_cond): Added.
6280         (xgene1_shift_reg): Likwise.
6281         (xgene1_bfx): Likewise.
6282         (xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
6283
6284 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
6285
6286         PR target/82981
6287         * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
6288         ssa-iterators.h.
6289         (can_widen_mult_without_libcall): New function.
6290         (expand_mul_overflow): If only checking unsigned mul overflow,
6291         not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
6292         Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
6293         no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
6294         (expand_DIVMOD): Formatting fix.
6295         * expmed.h (expand_mult): Add NO_LIBCALL argument.
6296         * expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
6297         than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
6298
6299         PR tree-optimization/82977
6300         * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
6301         constructed temporary to strlen_to_stridx.put.
6302
6303 2017-11-15  Martin Liska  <mliska@suse.cz>
6304
6305         * configure.ac: Remove -fkeep-inline-functions from coverage_flags.
6306         * configure: Regenerate.
6307
6308 2017-11-15  Martin Liska  <mliska@suse.cz>
6309
6310         PR target/82927
6311         * config/sh/sh-mem.cc: Use proper probability for
6312         REG_BR_PROB_NOTE.
6313
6314 2017-11-14  Jeff Law  <law@redhat.com>
6315
6316         * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
6317         the red zone for stack_clash_protection_final_dynamic_probe targets
6318         when the total dynamic stack size is zero bytes.
6319
6320         * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
6321         blocks is post order.
6322
6323 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
6324
6325         * dumpfile.h (TDF_COMPARE_DEBUG): New.
6326         * final.c (rest_of_clean_state): Set it for the
6327         -fcompare-debug dump.
6328         * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
6329         class when TDF_COMPARE_DEBUG is set.
6330
6331         * dwarf2out.c (gen_producer_string): Discard
6332         OPT_fcompare_debug.
6333
6334 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
6335
6336         PR c/81156
6337         * doc/extend.texi (Other Builtins): Document __builtin_tgmath.
6338         * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
6339         (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
6340         (__TGMATH_REAL_2_3): Remove macros.
6341         (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
6342         (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
6343         __builtin_tgmath.
6344         (frexp, ldexp, nexttoward, scalbn, scalbln): Define using
6345         __TGMATH_REAL_2.
6346         (remquo): Define using __TGMATH_REAL_3.
6347
6348 2017-11-14  Jeff Law  <law@redhat.com>
6349
6350         * vr-values.c: New file with contents extracted from tree-vrp.c.
6351         * Makefile.in (OBJS): Add vr-values.o
6352         * tree-vrp.h (set_value_range_to_nonnull): Prototype.
6353         (set_value_range, set_and_canonicalize_value_range): Likewise.
6354         (vrp_bitmap_equal_p, range_is_nonnull): Likewise.
6355         (value_range_constant_singleton, symbolic_range_p): Likewise.
6356         (compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
6357         (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
6358         (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
6359         (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
6360         (find_case_label_range, find_case_label_index): Likewise.
6361         (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
6362         (range_int_cst_singleton_p, value_inside_range): Likewise.
6363         (get_single_symbol): Likewise.
6364         (switch_update): Move structure definition here.
6365         (to_remove_edges, to_update_switch_stmts): Provide externs.
6366         * tree-vrp.c: Move all methods for vr-values class to vr-values.c
6367         (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
6368         (vrp_val_is_min, set_value_range): Likewise.
6369         (set_and_canonicalize_value_range, copy_value_range): Likewise.
6370         (set_value_range_to_value, set_value_range_to_nonnull): Likewise.
6371         (set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
6372         (range_is_nonnull, range_int_cst_p): Likewwise.
6373         (range_int_cst_singleton_p, symbolic_range_p): Likewise.
6374         (get_single_symbol, operand_less_p): Likewise
6375         (compare_values_warnv, compare_values): Likewise.
6376         (value_inside_range, value_range_constant_singleton): Likewise.
6377         (zero_nonzero_bitgs_from_vr): Likewise.
6378         (extract_range_from_binary_expr_1): Likewise.
6379         (overflow_comparison_p): Likewise.
6380         (to_remove_edges, to_update_switch_stmts): Likewise.
6381         (find_case_label-index, find_case_label_range): Likewise.
6382         (switch_update, set_value_range_to_nonnegative): Remove.
6383         (set_value_range_to_truthvalue): Likewise.
6384         (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
6385         (gimple_stmt_nonzero_p, compare_ranges): Likewise.
6386         (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
6387         (find_case_label_ranges, test_for_singularity): Likewise.
6388         (range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
6389         (x_vr_values): Move to its remaining use site.
6390
6391 2017-11-10  Jeff Law  <law@redhat.com>
6392
6393         * vr-values.h (VR_INITIALIZER): Move #define here.
6394         * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
6395         * Makefile.in (OBJS): Add tree-evrp.o
6396         * tree-vrp.h (assert_info): Move structure definition here.
6397         (set_value_range_to_varying): Prototype.
6398         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6399         (infer_value_range, register_edge_assert_for): Likewise.
6400         (stmt_interesting_for_vrp): Likewise.
6401         * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
6402         (set_value_range_to_varying): No longer static.
6403         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6404         (infer_value_range, register_edge_assert_for): Likewise.
6405
6406 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
6407
6408         * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
6409         generate the XXBRD instruction.
6410
6411         * config/rs6000/rs6000-c.c (is_float128_p): New helper function.
6412         (rs6000_builtin_type_compatible): Treat _Float128 and long double
6413         as being compatible if -mabi=ieeelongdouble.
6414         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
6415         to setup float128 built-ins with hardware support.
6416         (BU_FLOAT128_HW_2): Likewise.
6417         (BU_FLOAT128_HW_3): Likewise.
6418         (BU_FLOAT128_HW_VSX_1): Likewise.
6419         (BU_FLOAT128_HW_VSX_2): Likewise.
6420         (scalar_extract_expq): Change float128 built-in functions to
6421         accommodate having both KFmode and TFmode functions.  Use the
6422         KFmode variant as the default.
6423         (scalar_extract_sigq): Likewise.
6424         (scalar_test_neg_qp): Likewise.
6425         (scalar_insert_exp_q): Likewise.
6426         (scalar_insert_exp_qp): Likewise.
6427         (scalar_test_data_class_qp): Likewise.
6428         (sqrtf128_round_to_odd): Delete processing the round to odd
6429         built-in functions as special built-in functions, and define them
6430         as float128 built-ins.  Use the KFmode variant as the default.
6431         (truncf128_round_to_odd): Likewise.
6432         (addf128_round_to_odd): Likewise.
6433         (subf128_round_to_odd): Likewise.
6434         (mulf128_round_to_odd): Likewise.
6435         (divf128_round_to_odd): Likewise.
6436         (fmaf128_round_to_odd): Likewise.
6437         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
6438         support for KFmode and TFmode xststdcqp calls.
6439         (rs6000_expand_builtin): If long double is IEEE 128-bit floating
6440         point, switch the built-in handlers for the get/set float128
6441         exponent, get float128 mantissa, float128 test built-ins, and the
6442         float128 round to odd built-in functions.  Eliminate creating the
6443         float128 round to odd built-in functions as special built-ins.
6444         (rs6000_init_builtins): Eliminate special creation of the float128
6445         round to odd built-in functions.
6446         * config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
6447         function insns to support both TFmode and KFmode variants.
6448         (xsxsigqp_<mode>): Likewise.
6449         (xsiexpqpf_<mode>): Likewise.
6450         (xsiexpqp_<mode>): Likewise.
6451         (xststdcqp_<mode>): Likewise.
6452         (xststdcnegqp_<mode>): Likewise.
6453         (xststdcqp_<mode>): Likewise.
6454
6455 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6456
6457         * tree-ssa-threadupdate.c (compute_path_counts): Remove
6458         unused path_in_freq_ptr parameter.
6459         (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
6460
6461 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6462
6463         * ipa-inline.c (edge_badness): Dump sreal frequency.
6464         (compute_inlined_call_time): Match natural implementaiton ...
6465         * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
6466         forgotten division by CGRAPH_FREQ_BASE.
6467
6468 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6469
6470         * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
6471         Solaris 11.  Update comment.
6472         * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
6473         renaming.
6474         * config/sol2.h (STARTFILE_SPEC): Likewise.
6475         * configure: Regenerate.
6476
6477 2017-11-14  Carl Love  <cel@us.ibm.com>
6478
6479         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
6480         le_ and be_ prefixes to swap* variables.  Remove
6481         if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
6482         statements.
6483
6484 2017-11-14  Jason Merrill  <jason@redhat.com>
6485
6486         Support GTY((cache)) on hash_map.
6487         * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
6488         (ggc_cache_remove): Override it instead of ggc_mx.
6489         * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
6490         (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
6491         * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
6492         (simple_cache_map_traits): Override maybe_mx.
6493         * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
6494         (hash_map): Friend gt_cleare_cache.
6495         (gt_cleare_cache): New.
6496         * tree.h (tree_cache_traits): New hash_map traits class.
6497         (tree_cache_map): New typedef.
6498
6499 2017-11-14  Richard Biener  <rguenther@suse.de>
6500
6501         * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
6502         paramter and handling.
6503         (cleanup_control_flow_bb): Likewise.
6504         (cleanup_control_flow_pre): New helper performing a DFS walk
6505         to call cleanup_control_flow_bb in PRE order.
6506         (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
6507         via cleanup_control_flow_pre.
6508
6509 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
6510
6511         * config/aarch64/aarch64-simd.md
6512         (aarch64_simd_bsl<mode>_internal): Remove DImode.
6513         (*aarch64_simd_bsl<mode>_alt): Likewise.
6514         (aarch64_simd_bsldi_internal): New.
6515         (aarch64_simd_bsldi_alt): Likewise.
6516
6517 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6518
6519         * tracer.c (better_p): Do not compare frequencies.
6520         * reg-stack.c (better_edge): Likewise.
6521         * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
6522         and back.
6523
6524 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6525
6526         * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
6527         * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
6528         * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
6529         * lto-streamer-in.c (input_function): Use update_max_bb_count.
6530         * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
6531         * predict.c (maybe_hot_frequency_p): Inline to ...
6532         (maybe_hot_count_p): ... here; rewrite to counts.
6533         (counts_to_freqs): Rename to ...
6534         (update_max_bb_count): ... this one.
6535         (expensive_function_p): Use counts.
6536         (estimate_bb_frequencies): Update.
6537         (rebuild_frequencies): Update.
6538         * predict.h (counts_to_freqs): Rename to ...
6539         (update_max_bb_count): ... this one.
6540         * profile.c (compute_branch_probabilities): Add debug info
6541         * tree-inline.c (expand_call_inline): Update debug info.
6542         (optimize_inline_calls): Use update_max_bb_count..
6543         (tree_function_versioning): Use update_max_bb_count..
6544         * value-prof.c (gimple_value_profile_transformations):
6545         Do not use update_max_bb_count.
6546
6547 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6548
6549         * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
6550         always use frequencies.
6551
6552 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6553
6554         * bb-reorder.c: Remove frequencies from comments.
6555         (better_edge_p): Use profile counts.
6556         (find_traces): Dump profile counts.
6557         (rotate_loop): Use profile counts.
6558         (find_traces_1_round): Likewise.
6559         (connect_better_edge_p): Use counts instead of probabilities for
6560         reverse walk.
6561         (copy_bb_p): Drop early check for non-0 frequency.
6562         (sanitize_hot_paths): Update comments.
6563
6564 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6565
6566         * ipa-split.c (struct split_point): Add count.
6567         (consider_split): Do not compute incoming frequency; compute incoming
6568         count and store it to split_point.
6569         (split_function): Set count of the call to split part correctly.
6570
6571 2017-11-13  Carl Love  <cel@us.ibm.com>
6572
6573         * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
6574
6575 2017-11-13  Tom Tromey  <tom@tromey.com>
6576
6577         * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
6578
6579 2017-11-13  Carl Love  <cel@us.ibm.com>
6580
6581         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
6582         Add support for builtins:
6583         unsigned int vec_first_{,miss}_match_{,or_eos}index,
6584         vector {un,}signed {char,int,short},
6585         vector {un,}signed {char,int,short}) arguments.
6586         * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
6587         VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
6588         Add BU_P9V_AV_2 expansions for the builtins.
6589         * config/rs6000/altivec.h (vec_first_match_index,
6590         vec_first_mismatch_index, vec_first_match_or_eos_index,
6591         vec_first_mismatch_or_eos_index): Add #defines for the builtins.
6592         * config/rs6000/rs6000-protos.h (bytes_in_mode): Add
6593         new extern declaration.
6594         * config/rs6000/rs6000.c (bytes_in_mode): Add new function.
6595         * config/rs6000/vsx.md (first_match_index_<mode>,
6596         first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
6597         first_mismatch_or_eos_index_<mode>): Add define expand.
6598         (vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
6599         * doc/extend.texi: Update the built-in documenation file for the new
6600         built-in functions.
6601
6602 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
6603
6604         * match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
6605         into the min/max operations for _Float<N> and _Float<N>X types.
6606
6607 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6608
6609         PR lto/81351
6610         * dwarf2out.c (do_eh_frame): New static variable.
6611         (dwarf2out_begin_prologue): Set it.
6612         (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
6613
6614 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6615
6616         * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
6617
6618         * tree-ssa-sink.c (select_best_block): Do not use frequencies.
6619
6620 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6621
6622         PR lto/81351
6623         * debug.h (dwarf2out_do_eh_frame): Declare.
6624         * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
6625         (dwarf2out_do_frame): Use it.
6626         (dwarf2out_do_cfi_asm): Likewise.
6627         * dwarf2out.c (dwarf2out_frame_finish): Likewise.
6628         (dwarf2out_assembly_start): Likewise.
6629         (dwarf2out_begin_prologue): Fix comment.
6630         * toplev.c (compile_file): Always call dwarf2out_frame_finish
6631         if the target needs either debug or unwind DWARF2 info.
6632         * lto-opts.c (lto_write_options): Do not save -fexceptions,
6633         -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
6634         -ftrapping-math, -ftrapv and -fwrapv.
6635
6636 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6637
6638         * cgraph.c (cgraph_edge::sreal_frequency): New function.
6639         * cgraph.h (cgraph_edge::sreal_frequency): Declare.
6640         * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
6641         (estimate_edge_size_and_time): Likewise.
6642         (ipa_merge_fn_summary_after_inlining): Likewise.
6643         * ipa-inline.c (cgraph_freq_base_rec): Remove.
6644         (compute_uninlined_call_time): Use sreal_frequency.
6645         (compute_inlined_call_time): Likewise.
6646         (ipa_inline): Do not initialize cgraph_freq_base_rec.
6647         * profile-count.c: Include sreal.h.
6648         (profile_count::to_sreal_scale): New.
6649         * profile-count.h: Forward declare sreal.
6650         (profile_count::to_sreal_scale): Declare.
6651
6652 2017-11-13  Nathan Sidwell  <nathan@acm.org>
6653
6654         * diagnostic.c (maybe_line_and_column): New.
6655         (diagnostic_get_location_text): Use it.
6656         (diagnostic_report_current_module): Likewise.
6657         (test_diagnostic_get_location_text): Add tests.
6658
6659 2017-11-13  Luis Machado  <luis.machado@linaro.org>
6660
6661         * doc/md.texi (Specifying processor pipeline description): Fix
6662         incorrect latency for the div instruction example.
6663
6664 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
6665
6666         PR tree-optimization/78821
6667         * gimple-ssa-store-merging.c (compatible_load_p): Don't require
6668         that bit_not_p is the same.
6669         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
6670         (split_group): Count precisely bit_not_p bits in each statement.
6671         (invert_op): New function.
6672         (imm_store_chain_info::output_merged_store): Use invert_op to
6673         emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
6674         but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
6675
6676 2017-11-13  Martin Liska  <mliska@suse.cz>
6677
6678         * gcov.c (struct coverage_info): Remove typedef of coverage_t.
6679         (struct source_info): Likewise.
6680         (add_branch_counts): Likewise.
6681         (add_line_counts): Likewise.
6682         (function_summary): Likewise.
6683         (output_intermediate_line): Likewise.
6684         (generate_results): Likewise.
6685
6686 2017-11-13  Martin Liska  <mliska@suse.cz>
6687
6688         * gcov.c (struct block_info): Remove typedef for block_t.
6689         (struct line_info): Likewise.
6690         (line_info::has_block): Likewise.
6691         (EXIT_BLOCK): Likewise.
6692         (unblock): Likewise.
6693         (circuit): Likewise.
6694         (get_cycles_count): Likewise.
6695         (process_file): Likewise.
6696         (read_graph_file): Likewise.
6697         (solve_flow_graph): Likewise.
6698         (find_exception_blocks): Likewise.
6699         (add_line_counts): Likewise.
6700         (accumulate_line_info): Likewise.
6701         (output_line_details): Likewise.
6702
6703 2017-11-13  Martin Liska  <mliska@suse.cz>
6704
6705         * gcov.c (struct arc_info): Remove typedef for arc_t.
6706         (struct line_info): Likewise.
6707         (add_branch_counts): Likewise.
6708         (output_branch_count): Likewise.
6709         (function_info::~function_info): Likewise.
6710         (circuit): Likewise.
6711         (output_intermediate_line): Likewise.
6712         (read_graph_file): Likewise.
6713         (solve_flow_graph): Likewise.
6714         (find_exception_blocks): Likewise.
6715         (add_line_counts): Likewise.
6716         (accumulate_line_info): Likewise.
6717         (output_line_details): Likewise.
6718         (output_function_details): Likewise.
6719
6720 2017-11-13  Martin Liska  <mliska@suse.cz>
6721
6722         * gcov.c (struct function_info): Remove typedef for function_t.
6723         (struct source_info): Likewise.
6724         (source_info::get_functions_at_location): Likewise.
6725         (solve_flow_graph): Likewise.
6726         (find_exception_blocks): Likewise.
6727         (add_line_counts): Likewise.
6728         (output_intermediate_file): Likewise.
6729         (process_file): Likewise.
6730         (generate_results): Likewise.
6731         (release_structures): Likewise.
6732         (read_graph_file): Likewise.
6733         (read_count_file): Likewise.
6734         (accumulate_line_counts): Likewise.
6735         (output_lines): Likewise.
6736
6737 2017-11-13  Martin Liska  <mliska@suse.cz>
6738
6739         * gcov.c (function_info::function_info): Remove num_counts
6740         and add vector<gcov_type>.
6741         (function_info::~function_info): Use the vector.
6742         (process_file): Likewise.
6743         (read_graph_file): Likewise.
6744         (read_count_file): Likewise.
6745         (solve_flow_graph): Likewise.
6746
6747 2017-11-13  Martin Liska  <mliska@suse.cz>
6748
6749         * gcov.c (function_info::is_artificial): New function.
6750         (process_file): Erase all artificial early.
6751         (generate_results): Skip as all artificial are already
6752         removed.
6753
6754 2017-11-13  Martin Liska  <mliska@suse.cz>
6755
6756         * gcov.c (read_graph_file): Store to global vector of functions.
6757         (read_count_file): Iterate the vector.
6758         (process_file): Likewise.
6759         (generate_results): Likewise.
6760         (release_structures): Likewise.
6761
6762 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
6763
6764         PR tree-optimization/82954
6765         * gimple-ssa-store-merging.c
6766         (imm_store_chain_info::coalesce_immediate_stores): If
6767         !infof->ops[N].base_addr, split group if info->ops[N].base_addr.
6768
6769 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
6770
6771         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
6772         Upddate call to ENDIAN_LANE_N.
6773         (aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
6774         (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
6775         (*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
6776         and use aarch64_endian_lane_rtx.
6777         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
6778
6779 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6780
6781         * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
6782
6783 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6784
6785         * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
6786
6787 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6788
6789         * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
6790         body.
6791         * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6792         * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6793         * defaults.h (ASM_OUTPUT_LABELREF): Same.
6794
6795 2017-11-11  Martin Sebor  <msebor@redhat.com>
6796
6797         PR c/81117
6798         * doc/extend.texi (attribute nonstring): Remove spurious argument.
6799
6800         PR bootstrap/82948
6801         * prefic.c (translate_name): Replace strncpy with memcpy to
6802         avoid -Wstringop-truncation.
6803
6804 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6805
6806         * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
6807
6808 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6809
6810         * predict.c (maybe_hot_frequency_p): Do not use cfun.
6811
6812 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6813
6814         * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
6815         merging.
6816
6817 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6818
6819         * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
6820         enable generating XXBRH if the value is in a vector register.
6821         (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
6822         value is in a vector register.
6823         (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
6824         register to register bswap64's instead of doing the GPR sequence
6825         used on previous machines.
6826         (bswapdi2_xxbrd): New insn.
6827         (bswapdi2_reg): Disallow on ISA 3.0.
6828         (register to register bswap64 splitter): Do not split the insn on
6829         ISA 3.0 systems that use XXBRD.
6830
6831 2017-11-10  Martin Sebor  <msebor@redhat.com>
6832
6833         PR c/81117
6834         * config/darwin-c.c (framework_construct_pathname): Replace strncpy
6835         with memcpy.
6836         (find_subframework_file): Same.
6837
6838 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6839
6840         * auto-profile.c (afdo_indirect_call): Drop frequency.
6841         * cgraph.c (symbol_table::create_edge): Drop frequency argument.
6842         (cgraph_node::create_edge): Drop frequency argument.
6843         (cgraph_node::create_indirect_edge): Drop frequency argument.
6844         (cgraph_edge::make_speculative): Drop frequency arguments.
6845         (cgraph_edge::resolve_speculation): Do not update frequencies
6846         (cgraph_edge::dump_edge_flags): Do not dump frequency.
6847         (cgraph_node::dump): Check consistency in IPA mode.
6848         (cgraph_edge::maybe_hot_p): Use IPA counter.
6849         (cgraph_edge::verify_count_and_frequency): Rename to ...
6850         (cgraph_edge::verify_count): ... this one; drop frequency checking.
6851         (cgraph_node::verify_node): Update.
6852         * cgraph.h (struct cgraph_edge): Drop frequency.
6853         (cgraph_edge::frequency): New function.
6854         * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
6855         frequencies.
6856         (cgraph_edge::rebuild_edges): Likewise.
6857         * cgraphclones.c (cgraph_edge::clone): Scale only counts.
6858         (duplicate_thunk_for_node): Do not pass frequency.
6859         (cgraph_node::create_clone): Scale only counts.
6860         (cgraph_node::create_virtual_clone): Do not pass frequency.
6861         (cgraph_node::create_edge_including_clones): Do not pass frequency.
6862         (cgraph_node::create_version_clone): Do not pass frequency.
6863         * cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
6864         (cgraph_node::expand_thunk): Do not pass frequency.
6865         (cgraph_node::create_wrapper): Do not pass frequency.
6866         * gimple-iterator.c (update_call_edge_frequencies): Do not pass
6867         frequency.
6868         * gimple-streamer-in.c (input_bb): Scale only IPA counts.
6869         * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
6870         * ipa-cp.c (ipcp_lattice::print): Use frequency function.
6871         (gather_caller_stats): Use frequency function.
6872         (ipcp_cloning_candidate_p): Use frequency function.
6873         (ipcp_propagate_stage): Use frequency function.
6874         (get_info_about_necessary_edges): Use frequency function.
6875         (update_profiling_info): Update only IPA profile.
6876         (update_specialized_profile): Use frequency functoin.
6877         (perhaps_add_new_callers): Update only IPA profile.
6878         * ipa-devirt.c (ipa_devirt): Use IPA profile.
6879         * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
6880         (dump_ipa_call_summary): Use frequency function.
6881         (estimate_edge_size_and_time): Use frequency function.
6882         (ipa_merge_fn_summary_after_inlining): Use frequency function.
6883         * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
6884         * ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
6885         (update_noncloned_counts): ... ths one; scale counts only.
6886         (clone_inlined_nodes): Do not scale frequency.
6887         (inline_call): Do not pass frequency.
6888         * ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
6889         (compute_inlined_call_time): Use IPA profile.
6890         (want_inline_small_function_p): Use IPA profile.
6891         (want_inline_self_recursive_call_p): Use IPA profile.
6892         (edge_badness): Use IPA profile.
6893         (lookup_recursive_calls): Use IPA profile.
6894         (recursive_inlining): Do not pass frequency.
6895         (resolve_noninline_speculation): Do not update frequency.
6896         (inline_small_functions): Collect max of IPA profile.
6897         (dump_overall_stats): Dump IPA porfile.
6898         (dump_inline_stats): Dump IPA porfile.
6899         (ipa_inline): Collect IPA stats.
6900         * ipa-inline.h (clone_inlined_nodes): Update prototype.
6901         * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
6902         (ipa_propagate_frequency): Use frequency function.
6903         (ipa_profile): Cleanup.
6904         * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
6905         * ipa-utils.c (ipa_merge_profiles): Merge all profiles.
6906         * lto-cgraph.c (lto_output_edge): Do not stream frequency.
6907         (input_node): Do not stream frequency.
6908         (input_edge): Do not stream frequency.
6909         (merge_profile_summaries): Scale only IPA profiles.
6910         * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
6911         * predict.c (drop_profile): Do not recompute frequency.
6912         * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
6913         (ipa_tm_insert_gettmclone_call): Do not pass frequency.
6914         * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
6915         * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
6916         * tree-emutls.c (gen_emutls_addr): Do not pass frequency.
6917         * tree-inline.c (copy_bb): Do not scale frequency.
6918         (expand_call_inline): Do not scale frequency.
6919         (tree_function_versioning): Do not scale frequency.
6920         * ubsan.c (ubsan_create_edge): Do not pass frequency.
6921
6922 2017-11-10  Julia Koval  <julia.koval@intel.com>
6923
6924         * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
6925         (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
6926         (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
6927         (_mm256_maskz_gf2p8affine_epi64_epi8)
6928         (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
6929         (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
6930         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
6931         (__builtin_ia32_vgf2p8affineqb_v32qi)
6932         (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
6933         * config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
6934
6935 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
6936
6937         PR target/82641
6938         * config/arm/arm.c
6939         (arm_option_override): Refactor.
6940         (arm_option_reconfigure_globals): New.
6941         (arm_options_perform_arch_sanity_checks): New.
6942         * config/arm/arm-protos.h (arm_option_reconfigure_globals):
6943         New prototype.
6944         (arm_options_perform_arch_sanity_checks): Likewise
6945
6946 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
6947
6948         * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
6949         (power9-qpmul): New.
6950         * rs6000/rs6000.md ("type" attr): Add qmul.
6951         (mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
6952         *nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
6953         *nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
6954
6955 2017-11-10  Martin Sebor  <msebor@redhat.com>
6956
6957         PR c/81117
6958         * builtins.c (compute_objsize): Handle arrays that
6959         compute_builtin_object_size likes to fail for.  Make extern.
6960         * builtins.h (compute_objsize): Declare.
6961         (check_strncpy_sizes): New function.
6962         (expand_builtin_strncpy): Call check_strncpy_sizes.
6963         * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
6964         -Wstringop-truncation.
6965         (gimple_fold_builtin_strncat): Same.
6966         * gimple.c (gimple_build_call_from_tree): Set call location.
6967         * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
6968         (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
6969         (handle_builtin_stxncpy, handle_builtin_strncat): Same.
6970         (handle_builtin_strlen): Use strlen_to_stridx.
6971         (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
6972         stpncpy.
6973         Use strlen_to_stridx.
6974         (pass_strlen::execute): Release strlen_to_stridx.
6975         * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
6976         (-Wstringop-truncation): Document new option.
6977
6978 2017-11-10  Martin Liska  <mliska@suse.cz>
6979
6980         PR gcov-profile/82702
6981         * gcov.c (main): Handle intermediate files in a different
6982         way.
6983         (get_gcov_intermediate_filename): New function.
6984         (output_gcov_file): Remove support of intermediate files.
6985         (generate_results): Allocate intermediate file.
6986         (release_structures): Clean-up properly fn_end.
6987         (output_intermediate_file): Start iterating with line 1.
6988
6989 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
6990
6991         PR tree-optimization/82929
6992         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
6993         ops_swapped_p non-static data member.
6994         (store_immediate_info::store_immediate_info): Clear it.
6995         (imm_store_chain_info::coalesce_immediate_stores): If swapping
6996         ops set ops_swapped_p.
6997         (count_multiple_uses): Handle ops_swapped_p.
6998
6999 2017-11-10  Martin Liska  <mliska@suse.cz>
7000
7001         * coverage.c (coverage_init): Stream information about
7002         support of has_unexecuted_blocks.
7003         * doc/gcov.texi: Document that.
7004         * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
7005         * gcov.c (read_graph_file): Likewise.
7006         (output_line_beginning): Fix a small issue with
7007         color output.
7008
7009 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
7010
7011         * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
7012         reference of trivial component.
7013
7014 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
7015
7016         PR bootstrap/82916
7017         * gimple-ssa-store-merging.c
7018         (pass_store_merging::terminate_all_aliasing_chains): For
7019         gimple_store_p stmts also call refs_output_dependent_p.
7020
7021         PR rtl-optimization/82913
7022         * compare-elim.c (try_merge_compare): Punt if def_insn is not
7023         single set.
7024
7025 2017-11-09  Jeff Law  <law@redhat.com>
7026
7027         * vr-values.h: New file with vr_values class.
7028         * tree-vrp.c: Include vr-values.h
7029         (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
7030         data objects into the vr_values class.
7031         (vr_value, values_propagated, vr_phi_edge_counts): Likewise.
7032         (get_value_range): Make it a member function within vr_values class.
7033         (set_defs_to_varying, update_value_range, add_equivalence): Likewise.
7034         (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
7035         (op_with_constant_singleton_value_range): Likewise.
7036         (extract_range_for_var_from_comparison_expr): Likewise.
7037         (extract_range_from_assert, extract_range_from_ssa_name): Likewise.
7038         (extract_range_from_binary_expr): Likewise.
7039         (extract_range_from_unary_expr): Likewise.
7040         (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
7041         (check_for_binary_op_overflow, extract_range_basic): Likewise.
7042         (extract_range_from_assignment, adjust_range_with_scev): Likewise.
7043         (dump_all_value_ranges, get_vr_for_comparison): Likewise.
7044         (compare_name_with_value, compare_names): Likewise.
7045         (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
7046         (vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
7047         (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
7048         (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
7049         (extract_range_from_phi_node): Likewise.
7050         (simplify_truth_ops_using_ranges): Likewise.
7051         (simplify_div_or_mod_using_ranges): Likewise.
7052         (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
7053         (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
7054         (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
7055         (simplify_float_conversion_using_ranges): Likewise.
7056         (simplify_internal_call_using_ranges): Likewise.
7057         (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
7058         (vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
7059         poitner via x_vr_values for calls into gimple folder.
7060         (vrp_initialize_lattice): Make this the vr_values ctor.
7061         (vrp_free_lattice): Make this the vr_values dtor.
7062         (set_vr_value): New function.
7063         (class vrp_prop): Add vr_values data member.  Add various member
7064         functions as well as member functions that delegate to vr_values.
7065         (check_array_ref): Make a member function within vrp_prop class.
7066         (search_for_addr_array, vrp_initialize): Likewise.
7067         (vrp_finalize): Likewise.  Revamp to avoid direct access to
7068         vr_value, values_propagated, etc.
7069         (check_array_bounds): Extract vrp_prop class instance pointer from
7070         walk info structure.  Use it to call member functions.
7071         (check_all_array_refs): Make a member function within vrp_prop class.
7072         Smuggle class instance pointer via walk info structure.
7073         (x_vr_values): New local static.
7074         (vrp_valueize): Use x_vr_values to get class instance.
7075         (vr_valueize_1): Likewise.
7076         (class vrp_folder): Add vr_values data member.  Add various member
7077         functions as well as member functions that delegate to vr_values.
7078         (fold_predicate_in): Make a mber fucntion within vrp_folder class.
7079         (simplify_stmt_for_jump_threading): Extract smuggled vr_values
7080         class instance from vr_values.  Use it to call member functions.
7081         (vrp_dom_walker): Add vr_values data member.
7082         (vrp_dom_walker::after_dom_children): Smuggle vr_values class
7083         instance via x_vr_values.
7084         (identify_jump_threads): Accept vr_values as argument.  Store
7085         it into the walker structure.
7086         (evrp_dom_walker): Add vr_values class data member.  Add various
7087         delegators.
7088         (evrp_dom_walker::try_find_new_range): Use vr_values data
7089         member to access the memory allocator.
7090         (evrp_dom_walker::before_dom_children): Store vr_values class
7091         instance into the vrp_folder class.
7092         (evrp_dom_walker::push_value_range): Rework to avoid direct
7093         access to num_vr_values and vr_value.
7094         (evrp_dom_walker::pop_value_range): Likewise.
7095         (execute_early_vrp): Remove call to vrp_initialize_lattice.
7096         Use vr_values to get to dump_all_value_ranges member function.
7097         Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
7098         and simplify_cond_using_ranges_2 via vrp_prop class instance.
7099         Pass vr_values class instance down to identify_jump_threads.
7100         Remove call to vrp_free_lattice.
7101         (debug_all_value_ranges): Remove.
7102
7103         * tree-vrp.c (vrp_prop): Move class to earlier point in the file.
7104         (vrp_folder): Likewise.
7105
7106         * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
7107         Get it from the existing bitmap instead.
7108         (vrp_intersect_ranges_1): Likewise.
7109
7110 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7111
7112         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
7113         bit_not_p field.
7114         (store_immediate_info::store_immediate_info): Add bitnotp argument,
7115         set bit_not_p to it.
7116         (imm_store_chain_info::coalesce_immediate_stores): Break group
7117         if bit_not_p is different.
7118         (count_multiple_uses, split_group,
7119         imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
7120         (handled_load): Avoid multiple chained BIT_NOT_EXPRs.
7121         (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
7122         result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
7123         to store_immediate_info ctor.
7124
7125 2017-11-09  Jim Wilson  <jimw@sifive.com>
7126
7127         * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
7128         (scan_prog_file): Likewise.
7129
7130 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7131
7132         * bb-reorder.c (max_entry_frequency): Remove.
7133         (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
7134         connect_traces, push_to_next_round_p): Remove prototypes.
7135         (find_traces_1_round): Use counts only.
7136         (push_to_next_round_p): Likewise.
7137         (find_traces): Likewise.
7138         (rotate_loop): Likewise.
7139         (find_traces_1_round): Likewise.
7140         (connect_traces): Likewise.
7141         (edge_order): Likewise.
7142
7143 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7144
7145         * config/arm/arm.c (output_return_instruction): Add comments to
7146         indicate requirement for cmse_nonsecure_entry return to account
7147         for the size of clearing instruction output here.
7148         (thumb_exit): Likewise.
7149         * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
7150         return in hardfloat mode.
7151
7152 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
7153
7154         * config/rs6000/rs6000.c (machine_function): Add a bool,
7155         "toc_is_wrapped_separately".
7156         (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
7157         if it wasn't explicitly set or unset, we are optimizing for speed, and
7158         doing separate shrink-wrapping.
7159         (rs6000_get_separate_components): Enable the TOC component if
7160         saving the TOC register in the prologue.
7161         (rs6000_components_for_bb): Handle the TOC component.
7162         (rs6000_emit_prologue_components): Store the TOC register where needed.
7163         (rs6000_set_handled_components): Mark TOC as handled, if handled.
7164         (rs6000_emit_prologue): Don't save the TOC if that is already done.
7165
7166 2017-11-09  Martin Jambor  <mjambor@suse.cz>
7167
7168         * ipa-param-manipulation.c: New file.
7169         * ipa-param-manipulation.h: Likewise.
7170         * Makefile.in (OBJS): Add ipa-param-manipulation.o.
7171         (PLUGIN_HEADERS): Addded ipa-param-manipulation.h
7172         * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
7173         (ipa_parm_adjustment): Likewise.
7174         (ipa_parm_adjustment_vec): Likewise.
7175         (ipa_get_vector_of_formal_parms): Moved declaration to
7176         ipa-param-manipulation.h.
7177         (ipa_get_vector_of_formal_parm_types): Likewise.
7178         (ipa_modify_formal_parameters): Likewise.
7179         (ipa_modify_call_arguments): Likewise.
7180         (ipa_combine_adjustments): Likewise.
7181         (ipa_dump_param_adjustments): Likewise.
7182         (ipa_modify_expr): Likewise.
7183         (ipa_get_adjustment_candidate): Likewise.
7184         * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
7185         ipa-param-manipulation.c.
7186         (ipa_get_vector_of_formal_parm_types): Likewise.
7187         (ipa_modify_formal_parameters): Likewise.
7188         (ipa_modify_call_arguments): Likewise.
7189         (ipa_modify_expr): Likewise.
7190         (get_ssa_base_param): Likewise.
7191         (ipa_get_adjustment_candidate): Likewise.
7192         (index_in_adjustments_multiple_times_p): Likewise.
7193         (ipa_combine_adjustments): Likewise.
7194         (ipa_dump_param_adjustments): Likewise.
7195         * tree-sra.c: Also include ipa-param-manipulation.h
7196         * omp-simd-clone.c: Include ipa-param-manipulation.h instead of
7197         ipa-param.h.
7198
7199 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7200             Alan Hayward  <alan.hayward@arm.com>
7201             David Sherwood  <david.sherwood@arm.com>
7202
7203         * doc/sourcebuild.texi (vect_masked_store): Document.
7204
7205 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7206             Alan Hayward  <alan.hayward@arm.com>
7207             David Sherwood  <david.sherwood@arm.com>
7208
7209         * doc/sourcebuild.texi (vect_align_stack_vars): Document.
7210
7211 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7212             Alan Hayward  <alan.hayward@arm.com>
7213             David Sherwood  <david.sherwood@arm.com>
7214
7215         * doc/sourcebuild.texi (vect_variable_length): Document.
7216
7217 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7218             Alan Hayward  <alan.hayward@arm.com>
7219             David Sherwood  <david.sherwood@arm.com>
7220
7221         * doc/sourcebuild.texi (vect_unaligned_possible): Document.
7222
7223 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7224             Alan Hayward  <alan.hayward@arm.com>
7225             David Sherwood  <david.sherwood@arm.com>
7226
7227         * doc/sourcebuild.texi (vect_element_align_preferred): Document.
7228
7229 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7230             Alan Hayward  <alan.hayward@arm.com>
7231             David Sherwood  <david.sherwood@arm.com>
7232
7233         * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
7234         previously undocumented selectors.
7235         (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
7236
7237 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7238
7239         * doc/rtl.texi (const_vector): Say that elements can be
7240         const_wide_ints too.
7241         * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
7242         * emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
7243         (gen_vec_duplicate): Use it instead of CONSTANT_P.
7244         * optabs.c (expand_vector_broadcast): Likewise.
7245
7246 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7247             Alan Hayward  <alan.hayward@arm.com>
7248             David Sherwood  <david.sherwood@arm.com>
7249
7250         * tree-ssa-loop-ivopts.c (get_address_cost): Try using a
7251         scaled index even if the unscaled address was invalid.
7252         Don't increase the complexity of using a scale in that case.
7253
7254 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7255             Alan Hayward  <alan.hayward@arm.com>
7256             David Sherwood  <david.sherwood@arm.com>
7257
7258         * doc/rtl.texi: Rewrite the subreg rules so that they partition
7259         the inner register into REGMODE_NATURAL_SIZE bytes rather than
7260         UNITS_PER_WORD bytes.
7261         * emit-rtl.c (validate_subreg): Divide subregs into blocks
7262         based on REGMODE_NATURAL_SIZE of the inner mode.
7263         (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
7264         !SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
7265         * expmed.c (lowpart_bit_field_p): Divide the value up into
7266         chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
7267         * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
7268         whether something is likely to occupy more than one register.
7269
7270 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7271
7272         PR ipa/82879
7273         * ipa-inline-transform.c (update_noncloned_frequencies): Use
7274         profile_count::adjust_for_ipa_scaling.
7275         * tree-inline.c (copy_bb, copy_cfg_body): Likewise.
7276         * profile-count.c (profile_count::adjust_for_ipa_scaling): New member
7277         function.
7278         * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
7279
7280 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7281
7282         * gimple-ssa-store-merging.c (count_multiple_uses): New function.
7283         (split_group): Add total_orig and total_new arguments, estimate the
7284         number of statements related to the store group without store merging
7285         and with store merging.
7286         (imm_store_chain_info::output_merged_store): Adjust split_group
7287         callers, punt if estimated number of statements with store merging
7288         is not smaller than estimated number of statements without it.
7289         Formatting fix.
7290         (handled_load): Remove has_single_use checks.
7291         (pass_store_merging::process_store): Likewise.
7292
7293 2017-11-09  Richard Biener  <rguenther@suse.de>
7294
7295         PR tree-optimization/82902
7296         * tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
7297
7298 2017-11-09  Martin Liska  <mliska@suse.cz>
7299
7300         PR target/82863
7301         * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
7302         uninitialized.
7303
7304 2017-11-09  Martin Liska  <mliska@suse.cz>
7305
7306         PR tree-optimization/82669
7307         * sbitmap.h (bmp_iter_set_init): Remove non needed check.
7308
7309 2017-11-09  Martin Liska  <mliska@suse.cz>
7310
7311         PR gcov-profile/48463
7312         * coverage.c (coverage_begin_function): Output also end locus
7313         of a function and information whether the function is
7314         artificial.
7315         * gcov-dump.c (tag_function): Parse and print the information.
7316         * gcov.c (INCLUDE_MAP): Add include.
7317         (INCLUDE_SET): Likewise.
7318         (struct line_info): Move earlier in the source file because
7319         of vector<line_info> in function_info structure.
7320         (line_info::line_info): Likewise.
7321         (line_info::has_block): Likewise.
7322         (struct source_info): Add new member index.
7323         (source_info::get_functions_at_location): New function.
7324         (function_info::group_line_p): New function.
7325         (output_intermediate_line): New function.
7326         (output_intermediate_file): Use the mentioned function.
7327         (struct function_start): New.
7328         (struct function_start_pair_hash): Likewise.
7329         (process_file): Add code that identifies group functions.
7330         Assign lines either to global or function scope.
7331         (generate_results): Skip artificial functions.
7332         (find_source): Assign index for each source file.
7333         (read_graph_file): Read new flag artificial and end_line.
7334         (add_line_counts): Assign it either to global of function scope.
7335         (accumulate_line_counts): Isolate core of the function to
7336         accumulate_line_info and call it for both function and global
7337         scope lines.
7338         (accumulate_line_info): New function.
7339         (output_line_beginning): Fix GNU coding style.
7340         (print_source_line): New function.
7341         (output_line_details): Likewise.
7342         (output_function_details): Likewise.
7343         (output_lines): Iterate both source (global) scope and function
7344         scope.
7345         (struct function_line_start_cmp): New class.
7346         * doc/gcov.texi: Reflect changes in documentation.
7347
7348 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7349
7350         PR debug/82837
7351         * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
7352         (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
7353         and similarly for not instead of neg.
7354
7355 2017-11-08  Andi Kleen  <ak@linux.intel.com>
7356
7357         * config/i386/i386.opt: Add -mforce-indirect-call.
7358         * config/i386/predicates.md: Check for flag_force_indirect_call.
7359         * doc/invoke.texi: Document -mforce-indirect-call
7360
7361 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
7362
7363         * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
7364         New extern.
7365         (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
7366         config/riscv/riscv.c (predict.h): New include.
7367         (riscv_slow_unaligned_access_p): No longer static.
7368         (riscv_block_move_straight): Add require.
7369         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
7370
7371 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7372
7373         PR target/82855
7374         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
7375         <avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
7376         nonimmediate_operand predicate for operand 1 instead of
7377         register_operand.
7378
7379 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7380
7381         * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
7382         New pattern.
7383         * config/aarch64/constraints.md (Uml): New constraint.
7384         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
7385         predicate.
7386
7387 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7388
7389         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
7390         of two vec_duplicates into a vec_concat.
7391
7392 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7393
7394         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7395         Simplify vec_merge of vec_duplicate and vec_concat.
7396         * config/aarch64/constraints.md (Utq): New constraint.
7397         * config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
7398         define_insn.
7399
7400 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7401
7402         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7403         Simplify vec_merge of vec_duplicate and const_vector.
7404         * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
7405         New predicate.
7406         * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
7407         mode iterator.  Update predicate on operand 1 to
7408         handle non-const_vec constants.  Delete constraints.
7409         (*aarch64_combinez_be<mode>): Likewise for operand 2.
7410
7411 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7412
7413         PR tree-optimization/78821
7414         * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
7415         data member.
7416         (store_operand_info::store_operand_info): Initialize it to false.
7417         (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
7418         ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
7419         store in the group, and if chain_info is non-NULL, to ignore altogether
7420         that chain.
7421         (compatible_load_p): Fail if bit_not_p does not match.
7422         (imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
7423         (handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
7424         (pass_store_merging::process_store): Adjust
7425         terminate_all_aliasing_chains calls to pass NULL in all current spots,
7426         call terminate_all_aliasing_chains newly when adding a store into
7427         a chain with non-NULL chain_info.
7428
7429 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7430
7431         * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
7432
7433 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7434
7435         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
7436         Remove.
7437         (aarch64_layout_frame): Initialise emit_frame_chain.
7438         (aarch64_can_eliminate): Remove omit leaf frame pointer code.
7439         (TARGET_FRAME_POINTER_REQUIRED): Remove define.
7440
7441 2017-11-08  Martin Liska  <mliska@suse.cz>
7442
7443         * gimplify.c (expand_FALLTHROUGH_r): Simplify usage
7444         of gimple_call_internal_p.
7445
7446 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7447
7448         * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
7449
7450 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7451
7452         * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
7453         "do {} while (0)".
7454
7455 2017-11-08  Martin Liska  <mliska@suse.cz>
7456
7457         PR sanitizer/82792
7458         * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
7459
7460 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7461
7462         * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
7463
7464 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
7465
7466         PR target/82855
7467         * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
7468         (*cmp<mode>_ccz_1): New insn with $k alternative.
7469
7470         PR target/82855
7471         * config/i386/i386.c (ix86_swap_binary_operands_p): Treat
7472         RTX_COMM_COMPARE as commutative as well.
7473         (ix86_binary_operator_ok): Formatting fix.
7474         * config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
7475         *<code><mode>3<mask_name><round_saeonly_name>,
7476         *<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
7477         *<s>mul<mode>3_highpart<mask_name>,
7478         *vec_widen_umult_even_v16si<mask_name>,
7479         *vec_widen_umult_even_v8si<mask_name>,
7480         *vec_widen_umult_even_v4si<mask_name>,
7481         *vec_widen_smult_even_v16si<mask_name>,
7482         *vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
7483         *avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
7484         *avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
7485         *sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
7486         *sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
7487         <avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
7488         *sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
7489         *<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
7490         *<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
7491         !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
7492         ix86_binary_operator_ok.  Formatting fixes.
7493         (*<plusminus_insn><mode>3<mask_name><round_name>,
7494         *<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
7495         fixes.
7496
7497 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
7498
7499         * config/rs6000/rs6000.md (GPR2): New mode_iterator.
7500         ("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
7501         eq and ne if TARGET_ISEL.
7502         (cmp): New code_iterator.
7503         (UNS, UNSU_, UNSIK): New code_attrs.
7504         (<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
7505         ("eq<mode>3"): New define_expand, rename the define_insn_and_split
7506         to...
7507         ("eq<mode>3"): ... this.
7508         ("ne<mode>3"): New define_expand, rename the define_insn_and_split
7509         to...
7510         ("ne<mode>3"): ... this.
7511
7512 2017-11-07  Julia Koval  <julia.koval@intel.com>
7513
7514         PR target/82812
7515         * common/config/i386/i386-common.c
7516         (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
7517         (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
7518         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
7519         * config/i386/i386.opt: Ditto.
7520         * config/i386/i386.c (ix86_target_string): Ditto.
7521         (ix86_option_override_internal): Ditto.
7522         (ix86_init_mpx_builtins): Move MPX to args2.
7523         (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
7524         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
7525         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
7526         __builtin_ia32_vgf2p8affineinvqb_v32qi,
7527         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
7528         __builtin_ia32_vgf2p8affineinvqb_v16qi,
7529         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
7530
7531 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
7532
7533         PR target/80425
7534         * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
7535         and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
7536         (zero-extendsidi peephole2): Remove peephole.
7537
7538 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7539
7540         PR c/53037
7541         * stor-layout.c: Include attribs.h.
7542         (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
7543         explicit lookup of "aligned" attribute.
7544
7545 2017-11-07  Andrew Waterman  <andrew@sifive.com>
7546
7547         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
7548         (riscv_expand_block_move): Likewise.
7549         * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
7550         implementation.
7551         (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
7552         (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
7553         * config/riscv/riscv.c (riscv_block_move_straight): New function.
7554         (riscv_adjust_block_mem): Likewise.
7555         (riscv_block_move_loop): Likewise.
7556         (riscv_expand_block_move): Likewise.
7557         * config/riscv/riscv.md (movmemsi): New pattern.
7558
7559 2017-11-07  Michael Clark  <michaeljclark@mac.com>
7560
7561         * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
7562         (MUSL_DYNAMIC_LINKER): Likewise.
7563
7564 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
7565
7566         * config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
7567         (rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
7568         nonmmory_operand.
7569
7570 2017-11-07  Richard Biener  <rguenther@suse.de>
7571
7572         * match.pd: Fix build.
7573
7574 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
7575             Jackson Woodruff  <jackson.woodruff@arm.com>
7576
7577         PR tree-optimization/71026
7578         * match.pd: Canonicalize negate in division.
7579
7580 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
7581
7582         PR middle-end/80131
7583         * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
7584
7585 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7586
7587         * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
7588         (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
7589
7590 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7591
7592         * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
7593         non-scalar integral types.
7594         * match.pd (negate_expr_p): Handle MINUS_EXPR.
7595         (-(A-B), -(~A)): New transformations.
7596
7597 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7598
7599         * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
7600         semicolon after "do {} while (0)".
7601         * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7602         * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7603         * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7604         * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7605         * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7606
7607 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7608
7609         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
7610         after "do {} while (0)".
7611         * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7612         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7613         * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7614         * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7615         * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7616
7617 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7618
7619         PR other/82784
7620         * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
7621         "while {} do (0)".
7622         (arm_rtx_costs_internal): Add missing semicolon after
7623         HANDLE_NARROW_SHIFT_ARITH call.
7624
7625 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7626
7627         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7628         disable isel if it was not set explicitly.
7629
7630 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
7631
7632         * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
7633         (add_type_attribute) likewise.
7634
7635 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
7636
7637         * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
7638         of struct ix86_frame.
7639         (ix86_initial_elimination_offset): Likewise.
7640         (ix86_expand_split_stack_prologue): Likewise.
7641
7642 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
7643
7644         * tree-vrp.h (enum value_range_type): Update stale comment.
7645
7646 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7647             Alan Hayward  <alan.hayward@arm.com>
7648             David Sherwood  <david.sherwood@arm.com>
7649
7650         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
7651         (aarch64_expand_vec_perm_const): Take the number of units too.
7652         * config/aarch64/aarch64.c (aarch64_expand_vec_perm)
7653         (aarch64_expand_vec_perm_const): Likewise.
7654         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
7655         (vec_perm<mode>): Update accordingly.
7656
7657 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7658             Alan Hayward  <alan.hayward@arm.com>
7659             David Sherwood  <david.sherwood@arm.com>
7660
7661         * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
7662         Take the number of units too.
7663         * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
7664         (aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
7665         but check for a vector mode before rather than after the call.
7666         * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
7667         (move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
7668         (vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
7669         (vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
7670         (vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
7671         (aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
7672         (widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
7673         (aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
7674         (aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
7675         (aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
7676         (aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
7677         (aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
7678         (aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
7679         (aarch64_sqdmull2_n<mode>): Update accordingly.
7680
7681 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7682             Alan Hayward  <alan.hayward@arm.com>
7683             David Sherwood  <david.sherwood@arm.com>
7684
7685         * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
7686         the number of units too.
7687         * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
7688         * config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
7689         (vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
7690         (vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
7691         (vec_store_lanesxi<mode>): Update accordingly.
7692
7693 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7694             Alan Hayward  <alan.hayward@arm.com>
7695             David Sherwood  <david.sherwood@arm.com>
7696
7697         * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
7698         * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
7699         * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
7700         of units rather than the mode.
7701         * config/aarch64/iterators.md (nunits): New mode attribute.
7702         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
7703         Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
7704         * config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
7705         (aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
7706         (*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
7707         (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
7708         (*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
7709         (*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
7710         (*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
7711         (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
7712         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
7713         (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
7714         (reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
7715         (reduc_<maxmin_uns>_scal_<mode>): Likewise.
7716         (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
7717         (*aarch64_get_lane_zero_extendsi<mode>): Likewise.
7718         (aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
7719         (*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
7720         (aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
7721         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
7722         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
7723         (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
7724         (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
7725         (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
7726         (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
7727         (aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
7728         (aarch64_sqdmull2_lane<mode>_internal): Likewise.
7729         (aarch64_sqdmull2_laneq<mode>_internal): Likewise.
7730         (aarch64_vec_load_lanesoi_lane<mode>): Likewise.
7731         (aarch64_vec_store_lanesoi_lane<mode>): Likewise.
7732         (aarch64_vec_load_lanesci_lane<mode>): Likewise.
7733         (aarch64_vec_store_lanesci_lane<mode>): Likewise.
7734         (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
7735         (aarch64_vec_store_lanesxi_lane<mode>): Likewise.
7736         (aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
7737         (aarch64_simd_vec_setv2di): Likewise.
7738
7739 2017-11-06  Carl Love  <cel@us.ibm.com>
7740
7741         * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
7742         definitions.
7743         (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
7744         * config/rs6000/altivec.h (vec_revb): Change the #define from power 9
7745         to power 8.
7746         * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
7747         extern declaration.
7748         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
7749         * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
7750         Add power 8 macro expansions.
7751         (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
7752         * config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
7753         power 8 instructions.  (VSX_XXBR): Add iterator.
7754
7755 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
7756
7757         * config/arm/arm.md (predicable_short_it): Change default to "no",
7758         improve documentation, remove uses that are identical to the default.
7759         (enabled_for_depr_it): Rename to enabled_for_short_it.
7760         * gcc/config/arm/arm-fixed.md (predicable_short_it):
7761         Remove default uses.
7762         * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
7763         * gcc/config/arm/sync.md (predicable_short_it): Likewise.
7764         * gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
7765         * gcc/config/arm/vfp.md (predicable_short_it): Likewise.
7766
7767 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
7768
7769         PR target/82748
7770         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
7771         float128 helper macros, which are no longer used after deleting
7772         the old 'q' built-in functions, and moving the round to odd
7773         built-in functions to being special built-in functions.
7774         (BU_FLOAT128_2): Likewise.
7775         (BU_FLOAT128_1_HW): Likewise.
7776         (BU_FLOAT128_2_HW): Likewise.
7777         (BU_FLOAT128_3_HW): Likewise.
7778         (FABSQ): Delete old 'q' built-in functions.
7779         (COPYSIGNQ): Likewise.
7780         (SQRTF128_ODD): Move round to odd built-in functions to be
7781         special built-in functions, so that we can handle
7782         -mabi=ieeelongdouble.
7783         (TRUNCF128_ODD): Likewise.
7784         (ADDF128_ODD): Likewise.
7785         (SUBF128_ODD): Likewise.
7786         (MULF128_ODD): Likewise.
7787         (DIVF128_ODD): Likewise.
7788         (FMAF128_ODD): Likewise.
7789         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
7790         built-in names to 'f128'.
7791         * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
7792         old 'q' built-in functions, as the machine independent code for
7793         'f128' built-in functions handles this.
7794         (rs6000_expand_builtin): Add expansion for float128 round to odd
7795         functions, keying off on -mabi=ieeelongdouble of whether to use
7796         the KFmode or TFmode variant.
7797         (rs6000_init_builtins): Initialize the _Float128 round to odd
7798         built-in functions.
7799         * doc/extend.texi (PowerPC Built-in Functions): Document the old
7800         _Float128 'q' built-in functions are now mapped into the new
7801         'f128' built-in functions.
7802
7803 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
7804
7805         * collect2.c (add_lto_object): Compile for OBJECT_COFF.
7806         (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
7807
7808 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
7809
7810         PR jit/82826
7811         * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
7812         * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
7813         * toplev.c: Include "ipa-fnsummary.h".
7814         (toplev::finalize): Call ipa_fnsummary_c_finalize.
7815
7816 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
7817
7818         PR tree-optimization/82838
7819         * gimple-ssa-store-merging.c
7820         (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
7821         on a separate gimple_seq which is then appended to seq.
7822
7823 2017-11-06  Jeff Law  <law@redhat.com>
7824
7825         PR target/82788
7826         * config/i386/i386.c (PROBE_INTERVAL): Remove.
7827         (get_probe_interval): New functions.
7828         (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
7829         (ix86_adjust_stack_and_probe): Likewise.
7830         (output_adjust_stack_and_probe): Likewise.
7831         (ix86_emit_probe_stack_range): Likewise.
7832         (ix86_expand_prologue): Likewise.
7833
7834 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7835
7836         PR tree-optimization/82816
7837         * tree-ssa-math-opts.c (convert_mult_to_widen): Return false
7838         if the modes of the two types are the same.
7839         (convert_plusminus_to_widen): Likewise.
7840
7841 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7842
7843         * config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
7844         p9_vadu<mode>3.
7845         (usadv16qi): New define_expand.
7846         (usadv8hi): New define_expand.
7847
7848 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
7849
7850         PR bootstrap/82832
7851         * ipa-inline-transform.c (update_noncloned_frequencies): Always
7852         scale.
7853         (inline_transform): Likewise.
7854         * predict.c (counts_to_freqs): Remove useless conditional.
7855         * profile-count.h (profile_count::apply_scale): Move sanity check.
7856         * tree-inline.c (copy_bb): Always scale.
7857         (copy_cfg_body): Likewise.
7858
7859 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
7860
7861         PR target/67591
7862         * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
7863         attribute.
7864         (*cmp_ite0): Add enabled_for_depr_it attribute.
7865         (*cmp_ite1): Likewise.
7866
7867 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7868
7869         * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
7870         TYPE_MFCRF.
7871
7872 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7873
7874         * tree-vrp.c (vrp_int_const_binop): Return true on success and
7875         return the value by pointer.
7876         (extract_range_from_multiplicative_op_1): Update accordingly.
7877         Return as soon as an operation fails.
7878
7879 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7880
7881         PR other/82784
7882         * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
7883         (DEF_SANITIZER_BUILTIN): ... here.
7884         (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
7885         DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
7886
7887 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7888
7889         PR other/82784
7890         * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
7891         macro body.
7892         (ASM_OUTPUT_CASE_LABEL): Add semicolon after
7893         ASM_OUTPUT_BEFORE_CASE_LABEL call.
7894         * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
7895         after macro body.
7896         * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7897         * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7898         * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7899
7900 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7901
7902         PR other/82784
7903         * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
7904         "do {} while (0)".
7905
7906 2017-11-04  Michael Clark  <michaeljclark@mac.com>
7907
7908         * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
7909         config/riscv/riscv.md (addsi3): Use 'i' for immediates.
7910         (adddi3): Likewise.
7911         (*addsi3_extended): Likewise.
7912         (*addsi3_extended2): Likewise.
7913         (<optab>si3): Likewise.
7914         (<optab>di3): Likewise.
7915         (<optab><mode>3): Likewise.
7916         (<*optabe>si3_internal): Likewise.
7917         (zero_extendqi<SUPERQI:mode>2): Likewise.
7918         (*add<mode>hi3): Likewise.
7919         (*xor<mode>hi3): Likewise.
7920         (<optab>di3): Likewise.
7921         (*<optab>si3_extend): Likewise.
7922         (*sge<u>_<X:mode><GPR:mode>): Likewise.
7923         (*slt<u>_<X:mode><GPR:mode>): Likewise.
7924         (*sle<u>_<X:mode><GPR:mode>): Likewise.
7925
7926 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7927
7928         * config/riscv/riscv.c (riscv_option_override): Conditionally set
7929         TARGET_STRICT_ALIGN based upon -mtune argument.
7930
7931 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7932
7933         * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
7934
7935 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
7936
7937         * config/i386/i386.c (choose_basereg): Use optional scratch
7938         register and add assertion.
7939         (x86_emit_outlined_ms2sysv_save): Use scratch register when
7940         needed, and don't allocate stack.
7941         (ix86_expand_prologue): Rearrange where SSE saves/stub call is
7942         emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
7943         (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
7944
7945 2017-11-03  Jeff Law  <law@redhat.com>
7946
7947         * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
7948         (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
7949         to probe at the start of a noreturn function.
7950
7951 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
7952
7953         PR tree-optimization/78821
7954         * gimple-ssa-store-merging.c: Update the file comment.
7955         (MAX_STORE_ALIAS_CHECKS): Define.
7956         (struct store_operand_info): New type.
7957         (store_operand_info::store_operand_info): New constructor.
7958         (struct store_immediate_info): Add rhs_code and ops data members.
7959         (store_immediate_info::store_immediate_info): Add rhscode, op0r
7960         and op1r arguments to the ctor, initialize corresponding data members.
7961         (struct merged_store_group): Add load_align_base and load_align
7962         data members.
7963         (merged_store_group::merged_store_group): Initialize them.
7964         (merged_store_group::do_merge): Update them.
7965         (merged_store_group::apply_stores): Pick the constant for
7966         encode_tree_to_bitpos from one of the two operands, or skip
7967         encode_tree_to_bitpos if neither operand is a constant.
7968         (class pass_store_merging): Add process_store method decl.  Remove
7969         bool argument from terminate_all_aliasing_chains method decl.
7970         (pass_store_merging::terminate_all_aliasing_chains): Remove
7971         var_offset_p argument and corresponding handling.
7972         (stmts_may_clobber_ref_p): New function.
7973         (compatible_load_p): New function.
7974         (imm_store_chain_info::coalesce_immediate_stores): Terminate group
7975         if there is overlap and rhs_code is not INTEGER_CST.  For
7976         non-overlapping stores terminate group if rhs is not mergeable.
7977         (get_alias_type_for_stmts): Change first argument from
7978         auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
7979         BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
7980         instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
7981         alias type.
7982         (get_location_for_stmts): Change first argument from
7983         auto_vec<gimple *> & to vec<gimple *> &.
7984         (struct split_store): Remove orig_stmts data member, add orig_stores.
7985         (split_store::split_store): Create orig_stores rather than orig_stmts.
7986         (find_constituent_stmts): Renamed to ...
7987         (find_constituent_stores): ... this.  Change second argument from
7988         vec<gimple *> * to vec<store_immediate_info *> *, push pointers
7989         to info structures rather than the statements.
7990         (split_group): Rename ALLOW_UNALIGNED argument to
7991         ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
7992         it.  Adjust find_constituent_stores caller.
7993         (imm_store_chain_info::output_merged_store): Handle rhs_code other
7994         than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
7995         get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
7996         MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
7997         (mem_valid_for_store_merging): New function.
7998         (handled_load): New function.
7999         (pass_store_merging::process_store): New method.
8000         (pass_store_merging::execute): Use process_store method.  Adjust
8001         terminate_all_aliasing_chains caller.
8002
8003 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8004
8005         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8006         Return true for more constants, symbols and label references.
8007         (aarch64_valid_floating_const): Remove unused function.
8008
8009 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8010
8011         PR target/82786
8012         * config/aarch64/aarch64.c (aarch64_layout_frame):
8013         Undo forcing of LR at bottom of frame.
8014
8015 2017-11-03  Jeff Law  <law@redhat.com>
8016
8017         PR target/82823
8018         * config/i386/i386.c (ix86_expand_prologue): Tighten assert
8019         for int_registers_saved.
8020
8021         * cfganal.c (single_pred_edge_ignoring_loop_edges): New function
8022         extracted from tree-ssa-dom.c.
8023         * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
8024         * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
8025         (record_equivalences_from_incoming_edge): Add additional argument
8026         to single_pred_edge_ignoring_loop_edges call.
8027         * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
8028         (uncprop_dom_walker::before_dom_children): Add additional argument
8029         to single_pred_edge_ignoring_loop_edges call.
8030         * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
8031         single_pred_edge_ignoring_loop_edges rather than open coding.
8032         * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
8033
8034 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
8035
8036         * match.pd (-(-A)): Rewrite.
8037
8038 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8039
8040         * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
8041         (rs6000_emit_int_cmove): New declaration.
8042         * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
8043         (rs6000_emit_sISEL): Delete.
8044         (rs6000_emit_int_cmove): Make non-static.
8045         * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
8046         instead of rs6000_emit_sISEL.
8047
8048 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
8049
8050         * asan.c (create_cond_insert_point): Maintain profile.
8051         * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
8052         merged.
8053         * basic-block.h (struct basic_block_def): Remove frequency.
8054         (EDGE_FREQUENCY): Use to_frequency
8055         * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
8056         heuristics.
8057         (find_traces): Update to use to_frequency.
8058         (find_traces_1_round): Likewise; use only IPA counts.
8059         (bb_to_key): Likewise.
8060         (connect_traces): Use IPA counts only.
8061         (copy_bb_p): Update to use to_frequency.
8062         (fix_up_crossing_landing_pad): Likewise.
8063         (sanitize_hot_paths): Likewise.
8064         * bt-load.c (basic_block_freq): Likewise.
8065         * cfg.c (init_flow): Set count_max to uninitialized.
8066         (check_bb_profile): Remove frequencies; check counts.
8067         (dump_bb_info): Do not dump frequencies.
8068         (update_bb_profile_for_threading): Update counts only.
8069         (scale_bbs_frequencies_int): Likewise.
8070         (MAX_SAFE_MULTIPLIER): Remove.
8071         (scale_bbs_frequencies_gcov_type): Update counts only.
8072         (scale_bbs_frequencies_profile_count): Update counts only.
8073         (scale_bbs_frequencies): Update counts only.
8074         * cfg.h (struct control_flow_graph): Add count-max.
8075         (update_bb_profile_for_threading): Update prototype.
8076         * cfgbuild.c (find_bb_boundaries): Do not update frequencies.
8077         (find_many_sub_basic_blocks): Likewise.
8078         * cfgcleanup.c (try_forward_edges): Likewise.
8079         (try_crossjump_to_edge): Likewise.
8080         * cfgexpand.c (expand_gimple_cond): Likewise.
8081         (expand_gimple_tailcall): Likewise.
8082         (construct_init_block): Likewise.
8083         (construct_exit_block): Likewise.
8084         * cfghooks.c (verify_flow_info): Check consistency of counts.
8085         (dump_bb_for_graph): Do not dump frequencies.
8086         (split_block_1): Do not update frequencies.
8087         (split_edge): Do not update frequencies.
8088         (make_forwarder_block): Do not update frequencies.
8089         (duplicate_block): Do not update frequencies.
8090         (account_profile_record): Do not update frequencies.
8091         * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
8092         for global heuristics.
8093         * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
8094         (expected_loop_iterations_unbounded): Use counts only.
8095         * cfgloopmanip.c (scale_loop_profile): Simplify.
8096         (create_empty_loop_on_edge): Simplify
8097         (loopify): Simplify
8098         (duplicate_loop_to_header_edge): Simplify
8099         * cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
8100         (update_br_prob_note): Take care of removing note when profile
8101         becomes undefined.
8102         (relink_block_chain): Do not dump frequency.
8103         (rtl_account_profile_record): Use to_frequency.
8104         * cgraph.c (symbol_table::create_edge): Convert count to ipa count.
8105         (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
8106         (cgraph_update_edges_for_call_stmt_node): Likewise.
8107         (cgraph_edge::verify_count_and_frequency): Update.
8108         (cgraph_node::verify_node): Temporarily disable frequency verification.
8109         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use
8110         to_cgraph_frequency.
8111         (cgraph_edge::rebuild_edges): Convert to ipa counts.
8112         * cgraphunit.c (init_lowered_empty_function): Do not initialize
8113         frequencies.
8114         (cgraph_node::expand_thunk): Update profile.
8115         * except.c (dw2_build_landing_pads): Do not update frequency.
8116         * final.c (compute_alignments): Use to_frequency.
8117         (dump_basic_block_info): Do not dump frequency.
8118         * gimple-pretty-print.c (dump_profile): Do not dump frequency.
8119         (dump_gimple_bb_header): Do not dump frequency.
8120         * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
8121         do update count.
8122         * gimple-streamer-in.c (input_bb): Do not stream frequency.
8123         * gimple-streamer-out.c (output_bb): Do not stream frequency.
8124         * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
8125         (init_before_recovery): Do not update frequency.
8126         (sched_create_recovery_edges): Do not update frequency.
8127         * hsa-gen.c (convert_switch_statements): Do not update frequency.
8128         * ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
8129         (ipa_cp_c_finalize): Set max_count to uninitialized.
8130         * ipa-fnsummary.c (get_minimal_bb): Use counts.
8131         (param_change_prob): Use counts.
8132         * ipa-profile.c (ipa_profile_generate_summary): Do not summarize
8133         local profiles.
8134         * ipa-split.c (consider_split): Use to_frequency.
8135         (split_function): Use to_frequency.
8136         * ira-build.c (loop_compare_func): Likewise.
8137         (mark_loops_for_removal): Likewise.
8138         (mark_all_loops_for_removal): Likewise.
8139         * loop-doloop.c (doloop_modify): Do not update frequency.
8140         * loop-unroll.c (unroll_loop_runtime_iterations): Do not update
8141         frequency.
8142         * lto-streamer-in.c (input_function): Update count_max.
8143         * omp-expand.c (expand_omp_taskreg): Update count_max.
8144         * omp-simd-clone.c (simd_clone_adjust): Update profile.
8145         * predict.c (maybe_hot_frequency_p): Use to_frequency.
8146         (maybe_hot_count_p): Use ipa counts only.
8147         (maybe_hot_bb_p): Simplify.
8148         (maybe_hot_edge_p): Simplify.
8149         (probably_never_executed): Do not take frequency argument.
8150         (probably_never_executed_bb_p): Do not pass frequency.
8151         (probably_never_executed_edge_p): Likewise.
8152         (combine_predictions_for_bb): Check that profile is nonzero.
8153         (propagate_freq): Do not set frequency.
8154         (drop_profile): Simplify.
8155         (counts_to_freqs): Simplify.
8156         (expensive_function_p): Use to_frequency.
8157         (propagate_unlikely_bbs_forward): Simplify.
8158         (determine_unlikely_bbs): Simplify.
8159         (estimate_bb_frequencies): Add hack to silence graphite issues.
8160         (compute_function_frequency): Use ipa counts.
8161         (pass_profile::execute): Update.
8162         (rebuild_frequencies): Use counts only.
8163         (force_edge_cold): Use counts only.
8164         * profile-count.c (profile_count::dump): Dump new count types.
8165         (profile_count::differs_from_p): Check compatiblity.
8166         (profile_count::to_frequency): New function.
8167         (profile_count::to_cgraph_frequency): New function.
8168         * profile-count.h (struct function): Declare.
8169         (enum profile_quality): Add profile_guessed_local and
8170         profile_guessed_global0.
8171         (class profile_proability): Decrease number of bits to 29;
8172         update from_reg_br_prob_note and to_reg_br_prob_note.
8173         (class profile_count: Update comment; decrease number of bits
8174         to 61. Check compatibility.
8175         (profile_count::compatible_p): New private member function.
8176         (profile_count::ipa_p): New member function.
8177         (profile_count::operator<): Handle global zero correctly.
8178         (profile_count::operator>): Handle global zero correctly.
8179         (profile_count::operator<=): Handle global zero correctly.
8180         (profile_count::operator>=): Handle global zero correctly.
8181         (profile_count::nonzero_p): New member function.
8182         (profile_count::force_nonzero): New member function.
8183         (profile_count::max): New member function.
8184         (profile_count::apply_scale): Handle IPA scalling.
8185         (profile_count::guessed_local): New member function.
8186         (profile_count::global0): New member function.
8187         (profile_count::ipa): New member function.
8188         (profile_count::to_frequency): Declare.
8189         (profile_count::to_cgraph_frequency): Declare.
8190         * profile.c (OVERLAP_BASE): Delete.
8191         (compute_frequency_overlap): Delete.
8192         (compute_branch_probabilities): Do not use compute_frequency_overlap.
8193         * regs.h (REG_FREQ_FROM_BB): Use to_frequency.
8194         * sched-ebb.c (rank): Use counts only.
8195         * shrink-wrap.c (handle_simple_exit): Use counts only.
8196         (try_shrink_wrapping): Use counts only.
8197         (place_prologue_for_one_component): Use counts only.
8198         * tracer.c (find_best_predecessor): Use to_frequency.
8199         (find_trace): Use to_frequency.
8200         (tail_duplicate): Use to_frequency.
8201         * trans-mem.c (expand_transaction): Do not update frequency.
8202         * tree-call-cdce.c: Do not update frequency.
8203         * tree-cfg.c (gimple_find_sub_bbs): Likewise.
8204         (gimple_merge_blocks): Likewise.
8205         (gimple_split_edge): Likewise.
8206         (gimple_duplicate_sese_region): Likewise.
8207         (gimple_duplicate_sese_tail): Likewise.
8208         (move_sese_region_to_fn): Likewise.
8209         (gimple_account_profile_record): Likewise.
8210         (insert_cond_bb): Likewise.
8211         * tree-complex.c (expand_complex_div_wide): Likewise.
8212         * tree-eh.c (lower_resx): Update profile.
8213         * tree-inline.c (copy_bb): Simplify count scaling; do not scale
8214         frequencies.
8215         (initialize_cfun): Do not initialize frequencies
8216         (freqs_to_counts): Delete.
8217         (copy_cfg_body): Ignore count parameter.
8218         (copy_body): Update.
8219         (expand_call_inline): Update count_max.
8220         (optimize_inline_calls): Update count_max.
8221         (tree_function_versioning): Update count_max.
8222         * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
8223         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
8224         frequency.
8225         * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
8226         * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
8227         (try_peel_loop): Likewise.
8228         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
8229         to_frequency.
8230         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
8231         (tree_transform_and_unroll_loop): Do not use frequencies
8232         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
8233         Use reliable prediction only.
8234         * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
8235         * tree-ssa-sink.c (select_best_block): Use to_frequency.
8236         * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
8237         probability scaling.
8238         * tree-ssa-threadupdate.c (create_block_for_threading): Do
8239         not update frequency
8240         (any_remaining_duplicated_blocks): Likewise.
8241         (update_profile): Likewise.
8242         (estimated_freqs_path): Delete.
8243         (freqs_to_counts_path): Delete.
8244         (clear_counts_path): Delete.
8245         (ssa_fix_duplicate_block_edges): Likewise.
8246         (duplicate_thread_path): Likewise.
8247         * tree-switch-conversion.c (gen_inbound_check): Use counts.
8248         * tree-tailcall.c (decrease_profile): Do not update frequency.
8249         (eliminate_tail_call): Likewise.
8250         * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
8251         * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
8252         (optimize_mask_stores): Likewise.
8253         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
8254         * ubsan.c (ubsan_expand_null_ifn): Update profile.
8255         (ubsan_expand_ptr_ifn): Update profile.
8256         * value-prof.c (gimple_ic): Simplify.
8257         * value-prof.h (gimple_ic): Update prototype.
8258         * ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
8259         * ipa-inline.c (compute_uninlined_call_time): Be sure that
8260         counts are nonzero.
8261         (want_inline_self_recursive_call_p): Likewise.
8262         (resolve_noninline_speculation): Only cummulate defined counts.
8263         (inline_small_functions): Use nonzero_p.
8264         (ipa_inline): Do not access freed node.
8265
8266 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8267
8268         * config/aarch64/aarch64.c (aarch64_override_options_internal):
8269         Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
8270
8271 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
8272
8273         * config/riscv/riscv.c (riscv_legitimize_move): Handle
8274         non-legitimate address.
8275
8276 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8277
8278         * config/rs6000/rs6000.md (*lt0_disi): Delete.
8279         (*lt0_<mode>di, *lt0_<mode>si): New.
8280
8281 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8282
8283         * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
8284         TARGET_PAIRED_FLOAT.
8285
8286 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
8287             Jim Wilson  <jim.wilson@linaro.org>
8288
8289         * config/aarch64/aarch64-cores.def (saphira): New CPU.
8290         * config/aarch64/aarch64-tune.md: Regenerated.
8291         * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
8292         * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
8293
8294 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
8295
8296         * config/arc/arc.c (arc_save_restore): Corrected CFA note.
8297         (arc_expand_prologue): Restore blink for millicode.
8298         * config/arc/linux.h (LINK_EH_SPEC): Defined.
8299
8300 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
8301
8302         PR target/82809
8303         * config/i386/i386.c (ix86_vector_duplicate_value): Use
8304         gen_vec_duplicate after forcing the scalar into a register.
8305
8306 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
8307
8308         * combine (try_combine): Print the insns input to try_combine to the
8309         dump file.
8310
8311 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
8312
8313         PR target/79868
8314         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
8315         Remove second argument from aarch64_process_target_attr call.
8316         * config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
8317         Ditto.
8318         * config/aarch64/aarch64.c (aarch64_attribute_info): Change
8319         field type.
8320         (aarch64_handle_attr_arch): Remove second argument.
8321         (aarch64_handle_attr_cpu): Ditto.
8322         (aarch64_handle_attr_tune): Ditto.
8323         (aarch64_handle_attr_isa_flags): Ditto.
8324         (aarch64_process_one_target_attr): Ditto.
8325         (aarch64_process_target_attr): Ditto.
8326         (aarch64_option_valid_attribute_p): Remove second argument.
8327         on aarch64_process_target_attr call.
8328
8329 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8330
8331         * diagnostic.c: Include "selftest-diagnostic.h".
8332         (selftest::assert_location_text): New function.
8333         (selftest::test_diagnostic_get_location_text): New function.
8334         (selftest::diagnostic_c_tests): Call it.
8335
8336 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8337
8338         * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
8339         * diagnostic-show-locus.c: Include "selftest-diagnostic.h".
8340         (class selftest::test_diagnostic_context): Move to...
8341         * selftest-diagnostic.c: New file.
8342         * selftest-diagnostic.h: New file.
8343
8344 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
8345
8346         * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
8347         offset range for FT32B.
8348         * config/ft32/ft32.h: option "mcompress" enables relaxation.
8349         * config/ft32/ft32.md: Add TARGET_NOPM.
8350         * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
8351         * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
8352
8353 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
8354
8355         * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
8356
8357 2017-11-02  Jeff Law  <law@redhat.com>
8358
8359         * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
8360         virtual keyword on FINAL OVERRIDE members.
8361
8362         * tree-ssa-propagate.h (ssa_propagation_engine): Group
8363         virtuals together.  Add virtual destructor.
8364         (substitute_and_fold_engine): Similarly.
8365
8366 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
8367
8368         * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
8369
8370 2017-11-02  Richard Biener  <rguenther@suse.de>
8371
8372         PR tree-optimization/82795
8373         * tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
8374
8375 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8376
8377         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
8378         gcc_SUN_LD_VERSION.
8379         (gcc_GAS_CHECK_FEATURE): Remove.
8380         * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
8381         gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
8382         * configure: Regenerate.
8383
8384 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
8385
8386         * config/arc/arc.c (hwloop_optimize): Account for empty
8387         body loops.
8388
8389 2017-11-02  Richard Biener  <rguenther@suse.de>
8390
8391         PR middle-end/82765
8392         * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
8393         Truncate ARRAY_REF index and element size.
8394
8395 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8396
8397         * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
8398
8399 2017-11-01  Jeff Law  <law@redhat.com>
8400
8401         * tree-ssa-ccp.c (ccp_folder): New class derived from
8402         substitute_and_fold_engine.
8403         (ccp_folder::get_value): New member function.
8404         (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
8405         (ccp_fold_stmt): Remove prototype.
8406         (ccp_finalize): Call substitute_and_fold from the ccp_class.
8407         * tree-ssa-copy.c (copy_folder): New class derived from
8408         substitute_and_fold_engine.
8409         (copy_folder::get_value): Renamed from get_value.
8410         (fini_copy_prop): Call substitute_and_fold from copy_folder class.
8411         * tree-vrp.c (vrp_folder): New class derived from
8412         substitute_and_fold_engine.
8413         (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
8414         (vrp_folder::get_value): New member function.
8415         (vrp_finalize): Call substitute_and_fold from vrp_folder class.
8416         (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
8417         * tree-ssa-propagate.h (substitute_and_fold_engine): New class to
8418         provide a class interface to folder/substitute routines.
8419         (ssa_prop_fold_stmt_fn): Remove typedef.
8420         (ssa_prop_get_value_fn): Likewise.
8421         (subsitute_and_fold): Remove prototype.
8422         (replace_uses_in): Likewise.
8423         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
8424         Renamed from replace_uses_in.  Call the virtual member function
8425         (substitute_and_fold_engine::replace_phi_args_in): Similarly.
8426         (substitute_and_fold_dom_walker): Remove initialization of
8427         data member entries for calbacks.  Add substitute_and_fold_engine
8428         member and initialize it.
8429         (substitute_and_fold_dom_walker::before_dom_children0: Use the
8430         member functions for get_value, replace_phi_args_in c
8431         replace_uses_in, and fold_stmt calls.
8432         (substitute_and_fold_engine::substitute_and_fold): Renamed from
8433         substitute_and_fold.  Remove assert.   Update ctor call.
8434
8435         * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
8436         (ssa_prop_visit_phi_fn): Likewise.
8437         (class ssa_propagation_engine): New class to provide an interface
8438         into ssa_propagate.
8439         * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
8440         variable.
8441         (ssa_prop_visit_phi): Likewise.
8442         (ssa_propagation_engine::simulate_stmt): Moved into class.
8443         Call visit_phi/visit_stmt from the class rather than via
8444         file scoped static variables.
8445         (ssa_propagation_engine::simulate_block): Moved into class.
8446         (ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
8447         (ssa_propagation_engine::ssa_propagate): Similarly.  No longer
8448         set file scoped statics for the visit_stmt/visit_phi callbacks.
8449         * tree-complex.c (complex_propagate): New class derived from
8450         ssa_propagation_engine.
8451         (complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
8452         (complex_propagate::visit_phi): Renamed from complex_visit_phi.
8453         (tree_lower_complex): Call ssa_propagate via the complex_propagate
8454         class.
8455         * tree-ssa-ccp.c: (ccp_propagate): New class derived from
8456         ssa_propagation_engine.
8457         (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
8458         (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
8459         (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
8460         * tree-ssa-copy.c (copy_prop): New class derived from
8461         ssa_propagation_engine.
8462         (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
8463         (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
8464         (execute_copy_prop): Call ssa_propagate from the copy_prop class.
8465         * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
8466         (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
8467         (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
8468         (execute_vrp): Call ssa_propagate from the vrp_prop class.
8469
8470 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
8471
8472         PR rtl-optimization/82778
8473         PR rtl-optimization/82597
8474         * compare-elim.c (struct comparison): Add in_a_setter field.
8475         (find_comparison_dom_walker::before_dom_children): Remove killed
8476         bitmap and df_simulate_find_defs call, instead walk the defs.
8477         Compute last_setter and initialize in_a_setter.  Merge definitions
8478         with first initialization for a few variables.
8479         (try_validate_parallel): Use insn_invalid_p instead of
8480         recog_memoized.  Return insn rather than just the pattern.
8481         (try_merge_compare): Fix up comment.  Don't uselessly test if
8482         in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
8483         chains.
8484         (execute_compare_elim_after_reload): Remove df_chain_add_problem
8485         call.
8486
8487 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8488             Alan Hayward  <alan.hayward@arm.com>
8489             David Sherwood  <david.sherwood@arm.com>
8490
8491         * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
8492         aarch64_hard_regno_nregs to get the number of registers
8493         in a mode.
8494
8495 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8496             Alan Hayward  <alan.hayward@arm.com>
8497             David Sherwood  <david.sherwood@arm.com>
8498
8499         * config/aarch64/constraints.md (Upl): Rename to...
8500         (Uaa): ...this.
8501         * config/aarch64/aarch64.md
8502         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
8503         Update accordingly.
8504
8505 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8506             Alan Hayward  <alan.hayward@arm.com>
8507             David Sherwood  <david.sherwood@arm.com>
8508
8509         * config/aarch64/aarch64.c (aarch64_add_constant_internal)
8510         (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
8511         earlier in file.
8512
8513 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8514             Alan Hayward  <alan.hayward@arm.com>
8515             David Sherwood  <david.sherwood@arm.com>
8516
8517         * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
8518         (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
8519         (aarch64_evpc_dup): Generate rtl direcly, rather than using
8520         named expanders.
8521         (aarch64_expand_vec_perm_const_1): Explicitly check for permutes
8522         of a single element.
8523         * config/aarch64/iterators.md: Add a comment above the permute
8524         unspecs to say that they are generated directly by
8525         aarch64_expand_vec_perm_const.
8526         * config/aarch64/aarch64-simd.md: Likewise the permute instructions.
8527
8528 2017-11-01  Nathan Sidwell  <nathan@acm.org>
8529
8530         * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
8531
8532 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8533
8534         * doc/invoke.texi (RISC-V Options): Explicitly name the medlow
8535         and medany code models, and describe what they do.
8536
8537 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8538
8539         Revert accidental duplicate:
8540
8541         * combine.c (can_change_dest_mode): Reject changes in
8542         REGMODE_NATURAL_SIZE.
8543
8544 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
8545
8546         PR rtl-optimization/64682
8547         PR rtl-optimization/69567
8548         PR rtl-optimization/69737
8549         PR rtl-optimization/82683
8550         * combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
8551         register mentioned in the note, drop the note, unless it came from I3,
8552         in which case it should go to I3 again.
8553
8554 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8555
8556         * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
8557         and return false if not.
8558         (clear_bytes_written_by, live_bytes_read): Update accordingly.
8559
8560 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8561
8562         * tree-ssa-alias.h (ranges_overlap_p): Return false if either
8563         range is known to be empty.
8564
8565 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8566             Alan Hayward  <alan.hayward@arm.com>
8567             David Sherwood  <david.sherwood@arm.com>
8568
8569         * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
8570         and CONST_VECTOR_NUNITS instead of computing the number of units from
8571         the byte sizes of the vector and element.
8572         (simplify_binary_operation_1): Likewise.
8573         (simplify_const_binary_operation): Likewise.
8574         (simplify_ternary_operation): Likewise.
8575
8576 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8577             Alan Hayward  <alan.hayward@arm.com>
8578             David Sherwood  <david.sherwood@arm.com>
8579
8580         * var-tracking.c (INT_MEM_OFFSET): Replace with...
8581         (int_mem_offset): ...this new function.
8582         (var_mem_set, var_mem_delete_and_set, var_mem_delete)
8583         (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
8584         (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
8585         Update accordingly.
8586
8587 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8588             Alan Hayward  <alan.hayward@arm.com>
8589             David Sherwood  <david.sherwood@arm.com>
8590
8591         * lower-subreg.c (interesting_mode_p): New function.
8592         (compute_costs, find_decomposable_subregs, decompose_register)
8593         (simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
8594         (resolve_clobber, dump_choices): Use it.
8595
8596 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8597             Alan Hayward  <alan.hayward@arm.com>
8598             David Sherwood  <david.sherwood@arm.com>
8599
8600         * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
8601
8602 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8603             Alan Hayward  <alan.hayward@arm.com>
8604             David Sherwood  <david.sherwood@arm.com>
8605
8606         * alias.c (find_base_value, find_base_term): Only process integer
8607         truncations.  Check the precision rather than the size.
8608
8609 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8610             Alan Hayward  <alan.hayward@arm.com>
8611             David Sherwood  <david.sherwood@arm.com>
8612
8613         * machmode.h (is_narrower_int_mode): New function
8614         * optabs.c (expand_float, expand_fix): Use it.
8615         * dwarf2out.c (rotate_loc_descriptor): Likewise.
8616
8617 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8618             Alan Hayward  <alan.hayward@arm.com>
8619             David Sherwood  <david.sherwood@arm.com>
8620
8621         * rtl.h (narrower_subreg_mode): New function.
8622         * ira-color.c (update_costs_from_allocno): Use it.
8623
8624 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8625             Alan Hayward  <alan.hayward@arm.com>
8626             David Sherwood  <david.sherwood@arm.com>
8627
8628         * optabs-query.h (convert_optab_p): New function, split out from...
8629         (convert_optab_handler): ...here.
8630         (widening_optab_handler): Delete.
8631         (find_widening_optab_handler): Remove permit_non_widening parameter.
8632         (find_widening_optab_handler_and_mode): Likewise.  Provide an
8633         override that operates on mode class wrappers.
8634         * optabs-query.c (widening_optab_handler): Delete.
8635         (find_widening_optab_handler_and_mode): Remove permit_non_widening
8636         parameter.  Assert that the two modes are the same class and that
8637         the "from" mode is narrower than the "to" mode.  Use
8638         convert_optab_handler instead of widening_optab_handler.
8639         * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
8640         instead of widening_optab_handler.
8641         * expr.c (expand_expr_real_2): Update calls to
8642         find_widening_optab_handler.
8643         * optabs.c (expand_widen_pattern_expr): Likewise.
8644         (expand_binop_directly): Take the insn_code as a parameter.
8645         (expand_binop): Only call find_widening_optab_handler for
8646         conversion optabs; use optab_handler otherwise.  Update calls
8647         to find_widening_optab_handler and expand_binop_directly.
8648         Use convert_optab_handler instead of widening_optab_handler.
8649         * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
8650         find_widening_optab_handler and use scalar_mode rather than
8651         machine_mode.
8652         (convert_plusminus_to_widen): Likewise.
8653
8654 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8655             Alan Hayward  <alan.hayward@arm.com>
8656             David Sherwood  <david.sherwood@arm.com>
8657
8658         * machmode.h (fixed_size_mode): New class.
8659         * rtl.h (get_pool_mode): Return fixed_size_mode.
8660         * gengtype.c (main): Add fixed_size_mode.
8661         * target.def (get_raw_result_mode): Return a fixed_size_mode.
8662         (get_raw_arg_mode): Likewise.
8663         * doc/tm.texi: Regenerate.
8664         * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
8665         * targhooks.c (default_get_reg_raw_mode): Likewise.
8666         * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
8667         * config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
8668         * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
8669         (msp430_get_raw_result_mode): Likewise.
8670         * config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
8671         * dbxout.c (dbxout_parms): Require fixed-size modes.
8672         * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
8673         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
8674         * omp-low.c (lower_oacc_reductions): Likewise.
8675         * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
8676         (simplify_subreg): Update accordingly.
8677         * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
8678         (force_const_mem): Update accordingly.  Return NULL_RTX for modes
8679         that aren't fixed-size.
8680         (get_pool_mode): Return a fixed_size_mode.
8681         (output_constant_pool_2): Take a fixed_size_mode.
8682
8683 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8684             Alan Hayward  <alan.hayward@arm.com>
8685             David Sherwood  <david.sherwood@arm.com>
8686
8687         * doc/rtl.texi (vec_series): Document.
8688         (const): Say that the operand can be a vec_series.
8689         * rtl.def (VEC_SERIES): New rtx code.
8690         * rtl.h (const_vec_series_p_1): Declare.
8691         (const_vec_series_p): New function.
8692         * emit-rtl.h (gen_const_vec_series): Declare.
8693         (gen_vec_series): Likewise.
8694         * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
8695         (gen_vec_series): Likewise.
8696         * optabs.c (expand_mult_highpart): Use gen_const_vec_series.
8697         * simplify-rtx.c (simplify_unary_operation): Handle negations
8698         of vector series.
8699         (simplify_binary_operation_series): New function.
8700         (simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
8701         (test_vector_ops_series): New function.
8702         (test_vector_ops): Call it.
8703         * config/powerpcspe/altivec.md (altivec_lvsl): Use
8704         gen_const_vec_series.
8705         (altivec_lvsr): Likewise.
8706         * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
8707
8708 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8709             Alan Hayward  <alan.hayward@arm.com>
8710             David Sherwood  <david.sherwood@arm.com>
8711
8712         * doc/rtl.texi (const): Update description of address constants.
8713         Say that vector constants are allowed too.
8714         * common.md (E, F): Use CONSTANT_P instead of checking for
8715         CONST_VECTOR.
8716         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
8717         checking for CONST_VECTOR.
8718         * expmed.c (make_tree): Use build_vector_from_val for a CONST
8719         VEC_DUPLICATE.
8720         * expr.c (expand_expr_real_2): Check for vector modes instead
8721         of checking for CONST_VECTOR.
8722         * rtl.h (const_vec_p): New function.
8723         (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
8724         (unwrap_const_vec_duplicate): Handle them here too.
8725
8726 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8727             David Malcolm  <dmalcolm@redhat.com>
8728             Alan Hayward  <alan.hayward@arm.com>
8729             David Sherwood  <david.sherwood@arm.com>
8730
8731         * rtl.h (vec_duplicate_p): New function.
8732         * selftest-rtl.c (assert_rtx_eq_at): New function.
8733         * selftest-rtl.h (ASSERT_RTX_EQ): New macro.
8734         (assert_rtx_eq_at): Declare.
8735         * selftest.h (selftest::simplify_rtx_c_tests): Declare.
8736         * selftest-run-tests.c (selftest::run_tests): Call it.
8737         * simplify-rtx.c: Include selftest.h and selftest-rtl.h.
8738         (simplify_unary_operation_1): Recursively handle vector duplicates.
8739         (simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
8740         vector duplicates.
8741         (simplify_subreg): Handle subregs of vector duplicates.
8742         (make_test_reg, test_vector_ops_duplicate, test_vector_ops)
8743         (selftest::simplify_rtx_c_tests): New functions.
8744
8745 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8746             Alan Hayward  <alan.hayward@arm.com>
8747             David Sherwood  <david.sherwood@arm.com>
8748
8749         * emit-rtl.h (gen_const_vec_duplicate): Declare.
8750         (gen_vec_duplicate): Likewise.
8751         * emit-rtl.c (gen_const_vec_duplicate_1): New function, split
8752         out from...
8753         (gen_const_vector): ...here.
8754         (gen_const_vec_duplicate, gen_vec_duplicate): New functions.
8755         (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
8756         whose elements are all equal.
8757         * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
8758         * simplify-rtx.c (simplify_const_unary_operation): Likewise.
8759         (simplify_relational_operation): Likewise.
8760         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
8761         Likewise.
8762         (aarch64_simd_dup_constant): Use gen_vec_duplicate.
8763         (aarch64_expand_vector_init): Likewise.
8764         * config/arm/arm.c (neon_vdup_constant): Likewise.
8765         (neon_expand_vector_init): Likewise.
8766         (arm_expand_vec_perm): Use gen_const_vec_duplicate.
8767         (arm_block_set_unaligned_vect): Likewise.
8768         (arm_block_set_aligned_vect): Likewise.
8769         * config/arm/neon.md (neon_copysignf<mode>): Likewise.
8770         * config/i386/i386.c (ix86_expand_vec_perm): Likewise.
8771         (expand_vec_perm_even_odd_pack): Likewise.
8772         (ix86_vector_duplicate_value): Use gen_vec_duplicate.
8773         * config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
8774         * config/ia64/ia64.c (ia64_expand_vecint_compare): Use
8775         gen_const_vec_duplicate.
8776         * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
8777         * config/mips/mips.c (mips_gen_const_int_vector): Use
8778         gen_const_vec_duplicate.
8779         (mips_expand_vector_init): Use CONST0_RTX.
8780         * config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
8781         (define_split): Use gen_const_vec_duplicate.
8782         * config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
8783         (define_split): Use gen_const_vec_duplicate.
8784         * config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
8785         (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
8786         * config/spu/spu.c (spu_const): Likewise.
8787
8788 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8789             Alan Hayward  <alan.hayward@arm.com>
8790             David Sherwood  <david.sherwood@arm.com>
8791
8792         * combine.c (can_change_dest_mode): Reject changes in
8793         REGMODE_NATURAL_SIZE.
8794
8795 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
8796
8797         * configure.ac (--enable-libssp): New.
8798         (gcc_cv_libc_provides_ssp): Check for explicit setting before
8799         trying to determine target-specific default.  Adjust indentation.
8800         * configure: Regenerated.
8801         * doc/install.texi (Configuration): Expand --disable-libssp
8802         documentation.
8803
8804 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
8805
8806         config/i386/i386.c (ix86_expand_epilogue): Correct stack
8807         calculation.
8808
8809 2017-10-31  Martin Jambor  <mjambor@suse.cz>
8810
8811         PR c++/81702
8812         * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
8813
8814 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
8815
8816         * auto-profile.c (autofdo_source_profile::read): Use
8817         UNKNOWN_LOCATION rather than 0.
8818         * diagnostic-core.h (warning_at_rich_loc): Rename to...
8819         (warning_at): ...this overload.
8820         (warning_at_rich_loc_n): Rename to...
8821         (warning_n): ...this overload.
8822         (error_at_rich_loc): Rename to...
8823         (error_at): ...this overload.
8824         (pedwarn_at_rich_loc): Rename to...
8825         (pedwarn): ...this overload.
8826         (permerror_at_rich_loc): Rename to...
8827         (permerror): ...this overload.
8828         (inform_at_rich_loc): Rename to...
8829         (inform): ...this overload.
8830         * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
8831         (diagnostic_n_impl_richloc): Rename to...
8832         (diagnostic_n_impl): ...this rich_location *-based decl.
8833         (inform_at_rich_loc): Rename to...
8834         (inform): ...this, and add an assertion.
8835         (inform_n): Update for removal of location_t-based diagnostic_n_impl.
8836         (warning_at_rich_loc): Rename to...
8837         (warning_at): ...this, and add an assertion.
8838         (warning_at_rich_loc_n): Rename to...
8839         (warning_n): ...this, and add an assertion.
8840         (warning_n): Update location_t-based implementation for removal of
8841         location_t-based diagnostic_n_impl.
8842         (pedwarn_at_rich_loc): Rename to...
8843         (pedwarn): ...this, and add an assertion.
8844         (permerror_at_rich_loc): Rename to...
8845         (permerror): ...this, and add an assertion.
8846         (error_n): Update for removal of location_t-based diagnostic_n_impl.
8847         (error_at_rich_loc): Rename to...
8848         (error_at): ...this, and add an assertion.
8849         * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
8850         (driver::do_spec_on_infiles): Likewise.
8851         * substring-locations.c (format_warning_va): Update for renaming
8852         of inform_at_rich_loc.
8853
8854 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
8855
8856         * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
8857         _Float<N>X built-in functions so that the variant without the
8858         "__builtin_" prefix is only enabled for the GNU C and Objective C
8859         languages when they are in non-strict ANSI/ISO mode.
8860         (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
8861         * target.def (floatn_builtin_p): Add a target hook to control
8862         whether _Float<N> and _Float<N>X built-in functions without the
8863         "__builtin_" prefix are enabled, and return true for C and
8864         Objective C in the default hook.  Include langhooks.h in
8865         targhooks.c.
8866         * targhooks.h (default_floatn_builtin_p): Likewise.
8867         * targhooks.c (default_floatn_builtin_p): Likewise.
8868         * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
8869         floatn_builtin_p target hook.
8870         * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
8871
8872 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
8873             Eric Botcazou  <ebotcazou@adacore.com>
8874
8875         PR rtl-optimization/81803
8876         * lra-constraints.c (curr_insn_transform): Also reload the whole
8877         register for a strict subreg no wider than a word if this is for
8878         a WORD_REGISTER_OPERATIONS target.
8879
8880 2017-10-31  Jason Merrill  <jason@redhat.com>
8881
8882         * gdbinit.in: Skip over inlines from timevar.h.
8883
8884 2017-10-31  Martin Liska  <mliska@suse.cz>
8885
8886         * doc/gcov.texi: Document new option.
8887         * gcov.c (print_usage): Likewise print it.
8888         (process_args): Support the argument.
8889         (format_count): New function.
8890         (format_gcov): Use the function.
8891
8892 2017-10-31  Martin Liska  <mliska@suse.cz>
8893
8894         * gcov.c (struct name_map): do not use typedef.
8895         Define operator== and operator<.
8896         (name_search): Remove.
8897         (name_sort): Remove.
8898         (main): Do not allocate names.
8899         (process_file): Add vertical space.
8900         (generate_results): Use std::find.
8901         (release_structures): Do not release memory.
8902         (find_source): Use std::find.
8903
8904 2017-10-31  Martin Liska  <mliska@suse.cz>
8905
8906         * gcov.c (struct line_info): Remove it's typedef.
8907         (line_info::line_info): Add proper ctor.
8908         (line_info::has_block): Do not use a typedef.
8909         (struct source_info): Do not use typedef.
8910         (circuit): Likewise.
8911         (get_cycles_count): Likewise.
8912         (output_intermediate_file): Iterate via vector iterator.
8913         (add_line_counts): Use std::vector methods.
8914         (accumulate_line_counts): Likewise.
8915         (output_lines): Likewise.
8916
8917 2017-10-31  Martin Liska  <mliska@suse.cz>
8918
8919         * gcov.c (struct source_info): Remove typedef.
8920         (source_info::source_info): Add proper ctor.
8921         (accumulate_line_counts): Use struct, not it's typedef.
8922         (output_gcov_file): Likewise.
8923         (output_lines): Likewise.
8924         (main): Do not allocate an array.
8925         (output_intermediate_file): Use size of vector container.
8926         (process_file): Resize the vector.
8927         (generate_results): Do not preallocate, use newly added vector
8928         lines.
8929         (release_structures): Do not release sources.
8930         (find_source): Use vector methods.
8931         (add_line_counts): Do not use typedef.
8932
8933 2017-10-31  Martin Liska  <mliska@suse.cz>
8934
8935         * doc/gcov.texi: Document that.
8936         * gcov.c (add_line_counts): Mark lines with a non-executed
8937         statement.
8938         (output_line_beginning): Handle such lines.
8939         (output_lines): Pass new argument.
8940         (output_intermediate_file): Print it in intermediate format.
8941
8942 2017-10-31  Martin Liska  <mliska@suse.cz>
8943
8944         * color-macros.h: New file.
8945         * diagnostic-color.c: Factor out color related to macros to
8946         color-macros.h.
8947         * doc/gcov.texi: Document -k option.
8948         * gcov.c (INCLUDE_STRING): Include string.h.
8949         (print_usage): Add -k option.
8950         (process_args): Parse it.
8951         (pad_count_string): New function.
8952         (output_line_beginning): Likewise.
8953         (DEFAULT_LINE_START): New macro.
8954         (output_lines): Support color output.
8955
8956 2017-10-31  Martin Liska  <mliska@suse.cz>
8957
8958         PR gcov-profile/82633
8959         * doc/gcov.texi: Document -fkeep-{static,inline}-functions and
8960         their interaction with GCOV infrastructure.
8961         * configure.ac: Add -fkeep-{inline,static}-functions to
8962         coverage_flags.
8963         * configure: Regenerate.
8964
8965 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
8966
8967         PR target/82772
8968         * config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
8969
8970 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
8971
8972         PR target/82674
8973         * config/rs6000/rs6000.md (allocate_stack): Force update interval
8974         into a register if it does not fit into an immediate offset field.
8975
8976 2017-10-31  Olivier Hainque  <hainque@adacore.com>
8977
8978         * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
8979
8980 2017-10-31  Julia Koval  <julia.koval@intel.com>
8981
8982         * config.gcc: Add gfniintrin.h.
8983         * config/i386/gfniintrin.h: New.
8984         * config/i386/i386-builtin-types.def
8985         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
8986         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
8987         __builtin_ia32_vgf2p8affineinvqb_v32qi,
8988         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
8989         __builtin_ia32_vgf2p8affineinvqb_v16qi,
8990         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
8991         * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
8992         V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
8993         V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
8994         V64QI_FTYPE_V64QI_V64QI_INT): New types.
8995         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
8996         * config/i386/immintrin.h: Include gfniintrin.h.
8997         * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
8998
8999 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
9000
9001         * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
9002
9003 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9004
9005         * config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
9006         (arm_ashldi3_1bit): Remove pattern.
9007         (ashrdi3): Remove shift by 1 expansion.
9008         (arm_ashrdi3_1bit): Remove pattern.
9009         (lshrdi3): Remove shift by 1 expansion.
9010         (arm_lshrdi3_1bit): Remove pattern.
9011         * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
9012         cost of ashldi3 by 1.
9013         * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
9014         (<shift>di3_neon): Likewise.
9015
9016 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
9017
9018         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
9019         both identically named patterns to (*aarch64_simd_mov<VD:mode>)
9020         and (*aarch64_simd_mov<VQ:mode>).
9021         (*aarch64_simd_mov<VD:mode>): Change type attribute to match
9022         pattern alternative.
9023         (*aarch64_simd_mov<VQ:mode>): Re-order and change type
9024         attributes to match pattern alternative.
9025
9026 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
9027
9028         * config.gcc (powerpc*-*-*): Add emmintrin.h.
9029         * config/rs6000/emmintrin.h: New file.
9030         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
9031
9032 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9033
9034         * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
9035         * (movdi_vfp_cortexa8): Remove pattern.
9036
9037 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9038
9039         * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
9040         etc. reference.
9041         (Specific, alpha*-dec-osf5.1): Remove.
9042         (Specific, mips-sgi-irix5): Remove.
9043         (Specific, mips-sgi-irix6): Remove.
9044
9045 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9046
9047         PR middle-end/22141
9048         * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
9049         arguments to clear_bit_region_be.
9050
9051 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
9052
9053         * gimplify.c: Include memmodel.h.
9054
9055 2017-10-30  Martin Jambor  <mjambor@suse.cz>
9056
9057         * omp-grid.c (grid_attempt_target_gridification): Also insert a
9058         condition whether loop should be executed at all.
9059
9060 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
9061
9062         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
9063         gimple folding of vec_madd() intrinsics.
9064         * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
9065         fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
9066         * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
9067
9068 2017-10-30  Richard Biener  <rguenther@suse.de>
9069
9070         PR tree-optimization/82762
9071         Revert
9072         2017-10-23  Richard Biener  <rguenther@suse.de>
9073
9074         PR tree-optimization/82129
9075         Revert
9076         2017-08-01  Richard Biener  <rguenther@suse.de>
9077
9078         PR tree-optimization/81181
9079         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9080         (compute_antic): ... end of iteration here.
9081
9082 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
9083
9084         * doc/invoke.texi (C Dialect Options): Document -std=c17,
9085         -std=iso9899:2017 and -std=gnu17.
9086         * doc/standards.texi (C Language): Document C17 support.
9087         * doc/cpp.texi (Overview): Mention -std=c17.
9088         (Standard Predefined Macros): Document C11 and C17 values of
9089         __STDC_VERSION__.  Do not refer to C99 support as incomplete.
9090         * doc/extend.texi (Inline): Do not list individual options for
9091         standards newer than C99.
9092         * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
9093         "GNU C17".
9094         * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
9095         language name.
9096
9097 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
9098
9099         * asan.c (asan_finish_file): Align asan globals array by shadow
9100         granularity.
9101
9102 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9103
9104         PR middle-end/22141
9105         * gimple-ssa-store-merging.c: Include rtl.h and expr.h.
9106         (struct store_immediate_info): Add bitregion_start and bitregion_end
9107         fields.
9108         (store_immediate_info::store_immediate_info): Add brs and bre
9109         arguments and initialize bitregion_{start,end} from those.
9110         (struct merged_store_group): Add bitregion_start, bitregion_end,
9111         align_base and mask fields.  Drop unnecessary struct keyword from
9112         struct store_immediate_info.  Add do_merge method.
9113         (clear_bit_region_be): Use memset instead of loop storing zeros.
9114         (merged_store_group::do_merge): New method.
9115         (merged_store_group::merge_into): Use do_merge.  Allow gaps in between
9116         stores as long as the surrounding bitregions have no gaps.
9117         (merged_store_group::merge_overlapping): Use do_merge.
9118         (merged_store_group::apply_stores): Test that bitregion_{start,end}
9119         is byte aligned, rather than requiring that start and width are
9120         byte aligned.  Drop unnecessary struct keyword from
9121         struct store_immediate_info.  Allocate and populate also mask array.
9122         Make start of the arrays relative to bitregion_start rather than
9123         start and size them according to bitregion_{end,start} difference.
9124         (struct imm_store_chain_info): Drop unnecessary struct keyword from
9125         struct store_immediate_info.
9126         (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
9127         (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
9128         struct keyword from struct store_immediate_info.
9129         (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
9130         between stores as long as the surrounding bitregions have no gaps.
9131         Formatting fixes.
9132         (struct split_store): Add orig non-static data member.
9133         (split_store::split_store): Initialize orig to false.
9134         (find_constituent_stmts): Return store_immediate_info *, non-NULL
9135         if there is exactly a single original stmt.  Change stmts argument
9136         to pointer from reference, if NULL, don't push anything to it.  Add
9137         first argument, use it to optimize skipping over orig stmts that
9138         are known to be before bitpos already.  Simplify.
9139         (split_group): Return unsigned int count how many stores are or
9140         would be needed rather than a bool.  Add allow_unaligned argument.
9141         Change split_stores argument from reference to pointer, if NULL,
9142         only do a dry run computing how many stores would be produced.
9143         Rewritten algorithm to use both alignment and misalign if
9144         !allow_unaligned and handle bitfield stores with gaps.
9145         (imm_store_chain_info::output_merged_store): Set start_byte_pos
9146         from bitregion_start instead of start.  Compute allow_unaligned
9147         here, if true, do 2 split_group dry runs to compute which one
9148         produces fewer stores and prefer aligned if equal.  Punt if
9149         new count is bigger or equal than original before emitting any
9150         statements, rather than during that.  Remove no longer needed
9151         new_ssa_names tracking.  Replace num_stmts with
9152         split_stores.length ().  Use 32-bit stack allocated entries
9153         in split_stores auto_vec.  Try to reuse original store lhs/rhs1
9154         if possible.  Handle bitfields with gaps.
9155         (pass_store_merging::execute): Ignore bitsize == 0 stores.
9156         Compute bitregion_{start,end} for the stores and construct
9157         store_immediate_info with that.  Formatting fixes.
9158
9159 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
9160
9161         PR target/82725
9162         * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
9163         UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
9164
9165 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
9166
9167         * gimplify.c: Include tm_p.h.
9168
9169         * common.opt (gcoff): Re-add as ignored option.
9170         (gcoff1, gcoff2, gcoff3): Likewise.
9171
9172         * Makefile.in (OBJS): Delete sdbout.o.
9173         (GTFILES): Delete $(srcdir)/sdbout.c.
9174         * debug.h: Delete sdb_debug_hooks.
9175         * final.c: Delete sdbout.h include.
9176         (final_scan_insn): Delete SDB_DEBUG check.
9177         (rest_of_clean_state): Likewise.
9178         * output.h: Delete sdb_begin_function_line.
9179         * sdbout.c: Delete.
9180         * sdbout.h: Delete.
9181         * toplev.c: Delete sdbout.h include.
9182         (process_options): Delete SDB_DEBUG check.
9183         * tree-core.h (tree_type_common): Delete pointer field of
9184         tree_type_symtab.
9185         * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
9186         TYPE_SYMTAB_POINTER.
9187         * tree.h (TYPE_SYMTAB_POINTER): Delete.
9188         (TYPE_SYMTAB_IS_POINTER): Delete.
9189         (TYPE_SYMTAB_IS_DIE): Renumber.
9190         * xcoffout.c: Refer to former sdbout.c file.
9191         (xcoffout_begin_prologue): Use past tense for sdbout.c reference.
9192
9193         * doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
9194         * doc/invoke.texi (SEEALSO): Delete adb and sdb references.
9195         (Debugging Options): Delete -gcoff.
9196         (-gstabs): Delete SDB reference.
9197         (-gcoff): Delete.
9198         (-gcoff@var{level}): Delete.
9199         * doc/passes.texi (Debugging information output): Delete SDB and
9200         sdbout.c references.
9201         * doc/tm.texi: Regenerate.
9202         * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
9203         (SDB and DWARF): Change node name to DWARF and delete SDB and COFF
9204         references.
9205         (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
9206         (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
9207         (SDB_DEBUGGING_INFO): Delete.
9208         (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
9209         SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
9210         * target.def (output_source_filename): Delete COFF reference.
9211
9212         * common.opt (gcoff): Delete.
9213         (gxcoff+): Update Negative chain.
9214         * defaults.h: Delete all references to SDB_DEBUGGING_INFO and
9215         SDB_DEBUG.
9216         * dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
9217         * flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
9218         * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
9219         and SDB references.
9220         (expand_function_start): Change sdb reference to past tense.
9221         (expand_function_end): Change sdb reference to past tense.
9222         * gcc.c (cpp_unique_options): Delete gcoff3 reference.
9223         * opts.c (debug_type_names): Delete coff entry.
9224         (common_handle_option): Delete OPT_gcoff case.
9225         * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
9226
9227         * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
9228         * config/cris/cris.h: Delete SDB reference in comment.
9229         * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
9230         (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
9231         * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
9232         * config/i386/i386.c (svr4_dbx_register_map): Change SDB references
9233         to past tense.
9234         (ix86_expand_prologue): Likewise.
9235         * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
9236         * config/ia64/ia64.h: Likewise.
9237         * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
9238         * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
9239         support.
9240         * config/mmix/mmix.h: Likewise.
9241         * config/nds32/nds32.c: Likewise.
9242         * config/stormy/storym16.h: Likewise.
9243         * config/visium/visium.h: Likewise.
9244         * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
9245
9246 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
9247
9248         * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
9249         * config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
9250         FRAME_POINTER_REGNUM point at high end of local var area.
9251
9252 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
9253
9254         * bb-reorder.c (find_traces_1_round): Fix off-by-one index.
9255         Move comment around.  Do not reset best_edge for a copiable
9256         destination if the copy would cause a partition change.
9257         (better_edge_p): Remove redundant check.
9258
9259 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9260
9261         * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
9262
9263 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9264
9265         * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
9266         for math functions that have _Float<N> and _Float<N>X variants.
9267         (mathfn_built_in_2): Add support for math functions that have
9268         _Float<N> and _Float<N>X variants.
9269         (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
9270         (expand_builtin_mathfn_ternary): Add support for fma with
9271         _Float<N> and _Float<N>X variants.
9272         (expand_builtin): Likewise.
9273         (fold_builtin_3): Likewise.
9274         * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
9275         create math function _Float<N> and _Float<N>X variants as external
9276         library builtins.
9277         (BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
9278         DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
9279         the __builtin_ prefix and if not strict ansi, without the prefix.
9280         (BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
9281         (BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
9282         (BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
9283         (BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
9284         (BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
9285         (BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
9286         * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
9287         function signatures for fma _Float<N> and _Float<N>X variants.
9288         (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
9289         (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
9290         (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
9291         (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
9292         (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
9293         (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
9294         * gencfn-macros.c (print_case_cfn): Add support for math functions
9295         that have _Float<N> and _Float<N>X variants.
9296         (print_define_operator_list): Likewise.
9297         (fltfn_suffixes): Likewise.
9298         (main): Likewise.
9299         * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
9300         for math functions that have _Float<N> and _Float<N>X variants.
9301         (SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
9302         and _Float<N>X variants.
9303         (COPYSIGN): Likewise.
9304         (FMIN): Likewise.
9305         (FMAX): Likewise.
9306         * fold-const.c (tree_call_nonnegative_warnv_p): Add support for
9307         copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
9308         variants.
9309         (integer_valued_read_call_p): Likewise.
9310         * fold-const-call.c (fold_const_call_ss): Likewise.
9311         (fold_const_call_sss): Add support for copysign, fmin, and fmax
9312         _Float<N> and _Float<N>X variants.
9313         (fold_const_call_ssss): Add support for fma _Float<N> and
9314         _Float<N>X variants.
9315         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
9316         support for copysign and fma _Float<N> and _Float<N>X variants.
9317         (backprop::process_builtin_call_use): Likewise.
9318         * tree-call-cdce.c (can_test_argument_range); Add support for
9319         sqrt _Float<N> and _Float<N>X variants.
9320         (edom_only_function): Likewise.
9321         (get_no_error_domain): Likewise.
9322         * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
9323         * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
9324         copysign _Float<N> and _Float<N>X variants.
9325         * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
9326         handled by machine independent code.
9327         (FMAF128): Likewise.
9328         * doc/cpp.texi (Common Predefined Macros): Document defining
9329         __FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
9330         fma _Float<N> and _Float<N>X variants.
9331
9332 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9333
9334         PR target/82692
9335         * config/i386/i386-modes.def (CCFPU): Remove definition.
9336         * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
9337         (ix86_cc_modes_compatible): Ditto.
9338         (ix86_expand_carry_flag_compare): Ditto.
9339         (ix86_expand_int_movcc): Ditto.
9340         (ix86_expand_int_addcc): Ditto.
9341         (ix86_reverse_condition): Ditto.
9342         (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
9343         Return true/false for unordered/ordered fp comparisons.
9344         (ix86_cc_mode): Always return CCFPmode for float mode comparisons.
9345         (ix86_prepare_fp_compare_args): Update for rename.
9346         (ix86_expand_fp_compare): Update for rename.  Generate unordered
9347         compare RTXes wrapped with UNSPEC_NOTRAP unspec.
9348         (ix86_expand_sse_compare_and_jump): Ditto.
9349         * config/i386/predicates.md (fcmov_comparison_operator):
9350         Remove CCFPU mode handling.
9351         (ix86_comparison_operator): Ditto.
9352         (ix86_carry_flag_operator): Ditto.
9353         * config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
9354         (*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
9355         (*cmpu<mode>_cc_i387): Ditto.
9356         (FPCMP): Remove mode iterator.
9357         (unord): Remove mode attribute.
9358         (unord_subst): New define_subst transformation
9359         (unord): New define_subst attribute.
9360         (unordered): Ditto.
9361         (*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
9362         (*cmpi<unord>xf_i387): Ditto.
9363         * config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
9364         from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
9365         using unord_subst transformation.
9366         * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
9367         (round_saeonly): Also handle CCFP mode.
9368         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
9369         Remove UNSPEC_SAHF unspec handling.
9370
9371 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9372
9373         * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
9374
9375 2017-10-27  Jeff Law  <law@redhat.com>
9376
9377         * gimple-ssa-sprintf.c: Include domwalk.h.
9378         (class sprintf_dom_walker): New class, derived from dom_walker.
9379         (sprintf_dom_walker::before_dom_children): New function.
9380         (struct call_info): Moved into sprintf_dom_walker class
9381         (compute_formath_length, handle_gimple_call): Likewise.
9382         (sprintf_length::execute): Call the dominator walker rather
9383         than walking the statements.
9384
9385         * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
9386         gimple statement locations.
9387         (check_array_bounds): Corresponding changes.  Get the statement's
9388         location directly from wi->stmt.
9389
9390 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
9391
9392         PR target/82717
9393         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
9394
9395 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9396
9397         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
9398         X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
9399
9400 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
9401
9402         PR target/82703
9403         * config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
9404         * config/i386/i386.c (maybe_get_pool_constant): Removed.
9405         (ix86_split_to_parts): Use avoid_constant_pool_reference instead of
9406         maybe_get_pool_constant.
9407         * config/i386/predicates.md (zero_extended_scalar_load_operand):
9408         Likewise.
9409
9410 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9411
9412         * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
9413         2.26 caveat.  Update gas and gld versions.
9414         (Specific, *-*-solaris2*): Update binutils version.  Remove caveat
9415         reference.
9416
9417 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9418
9419         * cgraph.h (set_malloc_flag): Declare.
9420         * cgraph.c (set_malloc_flag_1): New function.
9421         (set_malloc_flag): Likewise.
9422         * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
9423         * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
9424         false.
9425         (read_ipa_call_summary): Add support for reading is_return_callee.
9426         (write_ipa_call_summary): Stream is_return_callee.
9427         * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
9428         * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
9429         ipa-prop.h, ipa-fnsummary.h.
9430         (pure_const_names): Change to static.
9431         (malloc_state_e): Define.
9432         (malloc_state_names): Define.
9433         (funct_state_d): Add field malloc_state.
9434         (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
9435         (check_retval_uses): New function.
9436         (malloc_candidate_p): Likewise.
9437         (analyze_function): Add support for malloc attribute.
9438         (pure_const_write_summary): Stream malloc_state.
9439         (pure_const_read_summary): Add support for reading malloc_state.
9440         (dump_malloc_lattice): New function.
9441         (propagate_malloc): New function.
9442         (warn_function_malloc): New function.
9443         (ipa_pure_const::execute): Call propagate_malloc and
9444         ipa_free_fn_summary.
9445         (pass_local_pure_const::execute): Add support for malloc attribute.
9446         * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
9447         * doc/invoke.texi: Document Wsuggest-attribute=malloc.
9448
9449 2017-10-27  Martin Liska  <mliska@suse.cz>
9450
9451         PR gcov-profile/82457
9452         * doc/invoke.texi: Document that one needs a non-strict ISO mode
9453         for fork-like functions to be properly instrumented.
9454
9455 2017-10-27  Richard Biener  <rguenther@suse.de>
9456
9457         PR middle-end/81659
9458         * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
9459         info when we redirected EH.
9460
9461 2017-10-26  Michael Collison  <michael.collison@arm.com>
9462
9463         * config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
9464         New pattern.
9465         (<optab>_trunchf<GPI:mode>2: New pattern.
9466         (<optab>_trunc<vgp><GPI:mode>2: New pattern.
9467         * config/aarch64/iterators.md (wv): New mode attribute.
9468         (vf, VF): New mode attributes.
9469         (vgp, VGP): New mode attributes.
9470         (s): Update attribute with SImode and DImode prefixes.
9471
9472 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9473
9474         * config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
9475         * config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
9476         * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
9477         (nios2_option_overide): Initialize it.  Don't allow R0-relative
9478         addressing with PIC.
9479         (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
9480         (nios2_symbolic_constant_p): Likewise.
9481         (nios2_legitimate_address_p): Likewise.
9482         (nios2_r0rel_section_name_p): New.
9483         (nios2_symbol_ref_in_r0rel_data_p): New.
9484         (nios2_emit_move_sequence): Handle r0rel_constant_p.
9485         (r0rel_constant_p): New.
9486         (nios2_print_operand_address): Handle r0rel_constant_p.
9487         (nios2_cdx_narrow_form_p): Likewise.
9488         * config/nios2/nios2.opt (mr0rel-sec=): New option.
9489         * doc/invoke.texi (Option Summary): Add -mr0rel-sec.
9490         (Nios II Options): Document -mr0rel-sec.
9491
9492 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9493
9494         * config/nios2/nios2.c: Include xregex.h.
9495         (nios2_gprel_sec_regex): New.
9496         (nios2_option_overide): Initialize it.  Don't allow GP-relative
9497         addressing with PIC.
9498         (nios2_small_section_name_p): Check for regex match.
9499         * config/nios2/nios2.opt (mgprel-sec=): New option.
9500         * doc/invoke.texi (Option Summary): Add -mgprel-sec.
9501         (Nios II Options): Document -mgprel-sec.
9502
9503 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
9504
9505         * doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
9506
9507 2017-10-26  Tom de Vries  <tom@codesourcery.com>
9508
9509         PR tree-optimization/82707
9510         * gimple.c (gimple_copy): Fix unsharing of
9511         GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
9512
9513 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
9514
9515         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
9516         _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
9517         _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
9518         _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
9519         _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
9520         _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
9521         _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
9522         _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
9523         _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
9524         _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
9525         _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
9526         _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
9527         _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
9528         _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
9529         _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
9530         _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
9531         _mm512_mask_cmpunord_ps_mask): New intrinsics.
9532
9533 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
9534
9535         * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
9536         default to IBM.
9537         * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
9538         * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
9539         warning to rs6000.c.  Remove the Undocumented flag, since it has
9540         been documented.
9541         (-mabi=ibmlongdouble): Likewise.
9542         * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
9543         already set, set the default format for long double.
9544         (rs6000_debug_reg_global): Print whether long double is IBM or
9545         IEEE.
9546         (rs6000_option_override_internal): Rework setting long double
9547         format.  Only warn if the user is changing the long double default
9548         and they did not use -Wno-psabi.
9549         * doc/invoke.texi (PowerPC options): Update the documentation for
9550         -mabi=ieeelongdouble and -mabi=ibmlongdouble.
9551
9552 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9553             Alan Hayward  <alan.hayward@arm.com>
9554             David Sherwood  <david.sherwood@arm.com>
9555
9556         * rtl.h (wider_subreg_mode): New function.
9557         * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
9558         rather than an unsigned int *.
9559         * ira-color.c (regno_max_ref_width): Replace with...
9560         (regno_max_ref_mode): ...this new variable.
9561         (coalesced_pseudo_reg_slot_compare): Update accordingly.
9562         Use wider_subreg_mode.
9563         (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
9564         rather than an unsigned int *.
9565         * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
9566         (process_alt_operands): Likewise.
9567         (invariant_p): Likewise.
9568         * lra-spills.c (assign_mem_slot): Likewise.
9569         (add_pseudo_to_slot): Likewise.
9570         * lra.c (collect_non_operand_hard_regs): Likewise.
9571         (add_regs_to_insn_regno_info): Likewise.
9572         * reload1.c (regno_max_ref_width): Replace with...
9573         (regno_max_ref_mode): ...this new variable.
9574         (reload): Update accordingly.  Update call to
9575         ira_sort_regnos_for_alter_reg.
9576         (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
9577         (init_eliminable_invariants): Update to use regno_max_ref_mode.
9578         (scan_paradoxical_subregs): Likewise.
9579
9580 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9581
9582         * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
9583         (aarch64_frame): Add emit_frame_chain boolean.
9584         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
9585         Move eh_return case to aarch64_layout_frame.
9586         (aarch64_layout_frame): Initialize emit_frame_chain.
9587         (aarch64_expand_prologue): Use emit_frame_chain.
9588
9589 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9590
9591         * config/aarch64/aarch64.c (aarch64_layout_frame):
9592         Ensure LR is always stored at the bottom of the callee-saves.
9593         Remove rarely used frame layout which saves callee-saves at top of
9594         frame, so the store of LR can be used as a valid probe in all cases.
9595
9596 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9597
9598         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9599         Improve unaligned TImode/TFmode base/offset split.
9600
9601 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9602             Alan Hayward  <alan.hayward@arm.com>
9603             David Sherwood  <david.sherwood@arm.com>
9604
9605         * caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
9606         * combine.c (find_single_use_1): Likewise.
9607         (expand_field_assignment): Likewise.
9608         (move_deaths): Likewise.
9609         * lra-constraints.c (simplify_operand_subreg): Likewise.
9610         (curr_insn_transform): Likewise.
9611         * lra.c (collect_non_operand_hard_regs): Likewise.
9612         (add_regs_to_insn_regno_info): Likewise.
9613         * rtlanal.c (reg_referenced_p): Likewise.
9614         (covers_regno_no_parallel_p): Likewise.
9615
9616 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9617
9618         * wide-int-print.cc (print_hex): Loop based on extract_uhwi.
9619         Don't print any bits outside the precision of the value.
9620         * wide-int.cc (test_printing): Add some new tests.
9621
9622 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9623
9624         * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
9625         supports -xbrace_comment option.
9626         * configure: Regenerate.
9627         * config.in: Regenerate.
9628         * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
9629         (ASM_CPU_SPEC): Use it.
9630
9631 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9632
9633         * target.def (static_rtx_alignment): New hook.
9634         * targhooks.h (default_static_rtx_alignment): Declare.
9635         * targhooks.c (default_static_rtx_alignment): New function.
9636         * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
9637         * doc/tm.texi: Regenerate.
9638         * varasm.c (force_const_mem): Use targetm.static_rtx_alignment
9639         instead of targetm.constant_alignment.  Remove call to
9640         set_mem_attributes.
9641         * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9642         (cris_preferred_mininum_alignment): New function, split out from...
9643         (cris_constant_alignment): ...here.
9644         (cris_static_rtx_alignment): New function.
9645         * config/i386/i386.c (ix86_static_rtx_alignment): New function,
9646         split out from...
9647         (ix86_constant_alignment): ...here.
9648         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9649         * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9650         (mmix_static_rtx_alignment): New function.
9651         * config/spu/spu.c (spu_static_rtx_alignment): New function.
9652         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9653
9654 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
9655
9656         PR target/81800
9657         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
9658         Add flag_trapping_math and flag_fp_int_builtin_inexact.
9659
9660 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
9661
9662         * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
9663         * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
9664         mark as a sign-extending load.
9665         (local_pic_load_u): Define.
9666
9667 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
9668
9669         PR middle-end/82062
9670         * fold-const.c (operand_equal_for_comparison_p): Also return true
9671         if ARG0 is a simple variant of ARG1 with narrower precision.
9672         (fold_ternary_loc): Always pass unstripped operands to the predicate.
9673
9674 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
9675
9676         * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
9677         cost correctly.
9678         * i386.h (processor_costs): Add gather_static, gather_per_elt,
9679         scatter_static, scatter_per_elt.
9680         * x86-tune-costs.h: Add new cost entries.
9681
9682 2017-10-25  Richard Biener  <rguenther@suse.de>
9683
9684         * tree-ssa-sccvn.h (vn_eliminate): Declare.
9685         * tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
9686         class pass_fre): Move to ...
9687         * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
9688         class pass_fre): ... here and adjust for statistics.
9689
9690 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
9691
9692         PR libstdc++/81706
9693         * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
9694         for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
9695         (duplicate_one_attribute, copy_attributes_to_builtin): New functions.
9696         * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
9697         declarations.
9698
9699 2017-10-25  Richard Biener  <rguenther@suse.de>
9700
9701         * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
9702         el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
9703         eliminate_push_avail, eliminate_insert): Move inside...
9704         (class eliminate_dom_walker): ... this class in preparation
9705         of move.
9706         (fini_eliminate): Remove by merging with ...
9707         (eliminate): ... this function.  Adjust for class changes.
9708         (pass_pre::execute): Remove fini_eliminate call.
9709         (pass_fre::execute): Likewise.
9710
9711 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
9712
9713         PR target/82460
9714         * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
9715         (VPERMI2, VPERMI2I): New mode iterators.
9716         (<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
9717         (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
9718         patterns.
9719         (<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
9720         mode iterator.  Remove 3 old define_insn patterns.
9721         (*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
9722         (<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
9723         VPERMI2 mode iterator, remove the other two expanders.
9724         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
9725         to use VPERMI2 mode iterator, add another alternative for vpermi2*
9726         instructions, remove the other two patterns.
9727         (<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
9728         mode iterator, remove the other two patterns.
9729         * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
9730         (ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
9731         arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
9732         and adjust argument order accordingly.
9733         (ix86_expand_vec_perm): Adjust caller.
9734         (expand_vec_perm_1): Likewise.
9735         (expand_vec_perm_vpermi2_vpshub2): Rename to ...
9736         (expand_vec_perm_vpermt2_vpshub2): ... this.
9737         (ix86_expand_vec_perm_const_1): Adjust caller.
9738         (ix86_vectorize_vec_perm_const_ok): Adjust comments.
9739
9740         PR target/82370
9741         * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
9742         (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
9743         (vec_shl_<mode>): Remove unused expander.
9744         (avx512bw_<shift_insn><mode>3): New define_insn.
9745         (<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
9746         (<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
9747
9748 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
9749
9750         PR c++/82466
9751         * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
9752         description.
9753
9754 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
9755
9756         PR rtl-optimization/82396
9757         * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
9758         (autopref_multipass_init): Simplify initialization.
9759         (autopref_rank_data): Simplify sort order.
9760         * gcc/sched-int.h (autopref_multipass_data_): Remove
9761         multi_mem_insn_p, min_offset and max_offset.
9762
9763 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
9764
9765         PR middle-end/60580
9766         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
9767         Check special value of flag_omit_frame_pointer.
9768         (aarch64_can_eliminate): Likewise.
9769         (aarch64_override_options_after_change_1): Simplify handling of
9770         -fomit-frame-pointer and -fomit-leaf-frame-pointer.
9771
9772 2017-10-24  Richard Biener  <rguenther@suse.de>
9773
9774         PR tree-optimization/82697
9775         * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
9776         zero for conditional load and unconditional store.
9777
9778 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
9779
9780         * doc/install.texi: Document bootstrap-cet.
9781
9782 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
9783
9784         PR target/82659
9785         * config/i386/i386.c (rest_of_insert_endbranch): Don't insert
9786         ENDBR instruction at function entrance if function is only
9787         called directly.
9788
9789 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
9790
9791         PR target/82628
9792         * config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
9793         patterns to better describe from which operation the CF is computed.
9794         (addcarry<mode>_0, subborrow<mode>_0): New patterns.
9795         * config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
9796         one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
9797         is 0, use _0 suffixed expanders instead of emitting a comparison
9798         before it.
9799
9800 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
9801
9802         * config/i386/i386.md(*movsf_internal, *movdf_internal):
9803         Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
9804
9805 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
9806
9807         PR middle-end/82569
9808         * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
9809         * expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
9810         * loop-iv.c (iv_get_reaching_def): Likewise.
9811         * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
9812         variable is promoted and the partition contains undefined values.
9813
9814 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9815
9816         * config/nios2/nios2.c (nios2_rtx_costs): Make costs better
9817         reflect reality.
9818         (nios2_address_cost): Define.
9819         (nios2_legitimize_address): Recognize (exp + constant) directly.
9820         (TARGET_ADDRESS_COST): Define.
9821
9822 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9823
9824         * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
9825         (nios2_symbolic_memory_operand_p): Declare.
9826         (nios2_split_large_constant): Declare.
9827         (nios2_split_symbolic_memory_operand): Declare.
9828         * config/nios2/nios2.c: Adjust includes.
9829         (nios2_symbolic_constant_allowed): New.
9830         (nios2_symbolic_constant_p): New.
9831         (nios2_plus_symbolic_constant_p): New.
9832         (nios2_valid_addr_expr_p): Recognize addresses involving
9833         symbolic constants.
9834         (nios2_legitimate_address_p): Likewise, also LO_SUM.
9835         (nios2_symbolic_memory_operand_p): New.
9836         (nios2_large_constant_p): New.
9837         (nios2_split_large_constant): New.
9838         (nios2_split_plus_large_constant): New.
9839         (nios2_split_symbolic_memory_operand): New.
9840         (nios2_legitimize_address): Code refactoring.  Handle addresses
9841         involving symbolic constants.
9842         (nios2_emit_move_sequence): Likewise.
9843         (nios2_print_operand): Improve error output.
9844         (nios2_print_operand_address): Handle LO_SUM.
9845         (nios2_cdx_narrow_form_p): Likewise.
9846         * config/nios2/nios2.md (movqi_internal): Add splitter for memory
9847         operands involving symbolic constants.
9848         (movhi_internal, movsi_internal): Likewise.
9849         (zero_extendhisi2, zero_extendqi<mode>2): Likewise.
9850         (extendhisi2, extendqi<mode>2): Likewise.
9851
9852 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9853
9854         * tree-pass.h (PROP_rtl_split_insns): Define.
9855         * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
9856
9857 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9858
9859         * config/nios2/nios2.c (TARGET_LRA_P): Don't override.
9860
9861 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9862
9863         PR debug/82630
9864         * target.def (const_not_ok_for_debug_p): Default to
9865         default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
9866         * targhooks.h (default_const_not_ok_for_debug_p): New declaration.
9867         * targhooks.c (default_const_not_ok_for_debug_p): New function.
9868         * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
9869         which targetm.const_not_ok_for_debug_p returned true.
9870         * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
9871         for UNSPECs.
9872         * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
9873         Likewise.
9874         * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
9875         * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
9876         UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
9877         if !base_term_p.
9878         (ix86_const_not_ok_for_debug_p): New function.
9879         (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
9880         (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
9881
9882 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
9883
9884         PR bootstrap/82610
9885         * system.h: Conditionally include "unique-ptr.h" if
9886         INCLUDE_UNIQUE_PTR is defined.
9887         * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
9888         of defining INCLUDE_UNIQUE_PTR before including "system.h".
9889
9890 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
9891
9892         * config/rl78/rl78.md: New define_expand "subdi3".
9893
9894 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
9895
9896         PR target/82673
9897         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
9898         DF_REF_INSN if DF_REF_INSN_INFO is false.
9899
9900 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
9901
9902         * i386.c (dimode_scalar_chain::compute_convert_gain): Use
9903         xmm_move instead of sse_move.
9904         (sse_store_index): New function.
9905         (ix86_register_move_cost): Be more sensible about mismatch stall;
9906         model AVX moves correctly; make difference between sse->integer and
9907         integer->sse.
9908         (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
9909         moves; make difference between SSE and AVX.
9910         * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
9911         and zmm_move. Increase size of sse load and store tables;
9912         add unaligned load and store tables; add ssemmx_to_integer.
9913         * x86-tune-costs.h: Update all entries according to real
9914         move latencies from Agner Fog's manual and chip documentation.
9915
9916 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9917
9918         PR target/82628
9919         * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
9920         * config/i386/constraints.md (Wf): New constraint.
9921         * config/i386/i386.md (UNSPEC_SBB): New unspec.
9922         (cmp<dwi>_doubleword): Removed.
9923         (sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
9924         (sub<mode>3_carry_ccgz): Use unspec instead of compare.
9925         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
9926         expand with cmp<dwi>_doubleword.  For LTU and GEU use
9927         sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
9928
9929         * common.opt (gcolumn-info): Enable by default.
9930         * doc/invoke.texi (gcolumn-info): Document new default.
9931
9932 2017-10-23  Richard Biener  <rguenther@suse.de>
9933
9934         PR tree-optimization/82672
9935         * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
9936         Fold the stmt if we propagated into it.
9937
9938 2017-10-23  Richard Biener  <rguenther@suse.de>
9939
9940         * tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
9941         (bitmap_remove_expr_from_set): ... this.  All callers call this
9942         for non-constant values.
9943         (bitmap_set_subtract): Rename to...
9944         (bitmap_set_subtract_expressions): ... this.  Adjust and
9945         optimize.
9946         (bitmap_set_contains_value): Remove superfluous check.
9947         (bitmap_set_replace_value): Inline into single caller ...
9948         (bitmap_value_replace_in_set): ... here and simplify.
9949         (dependent_clean): Merge into ...
9950         (clean): ... this using an overload.  Adjust.
9951         (prune_clobbered_mems): Adjust.
9952         (compute_antic_aux): Likewise.
9953         (compute_partial_antic_aux): Likewise.
9954
9955 2017-10-23  Richard Biener  <rguenther@suse.de>
9956
9957         PR tree-optimization/82129
9958         Revert
9959         2017-08-01  Richard Biener  <rguenther@suse.de>
9960
9961         PR tree-optimization/81181
9962         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9963         (compute_antic): ... end of iteration here.
9964
9965 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9966
9967         * target.def (starting_frame_offset): New hook.
9968         * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
9969         (TARGET_STARTING_FRAME_OFFSET): ...this new hook.
9970         * doc/tm.texi.in: Regenerate.
9971         * hooks.h (hook_hwi_void_0): Declare.
9972         * hooks.c (hook_hwi_void_0): New function.
9973         * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
9974         STARTING_FRAME_OFFSET.
9975         * builtins.c (expand_builtin_setjmp_receiver): Likewise.
9976         * reload1.c (reload): Likewise.
9977         * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
9978         instead of STARTING_FRAME_OFFSET.
9979         * function.c (try_fit_stack_local): Likewise.
9980         (assign_stack_local_1): Likewise
9981         (instantiate_virtual_regs): Likewise.
9982         * rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
9983         * config/avr/avr.md (nonlocal_goto_receiver): Likewise.
9984         * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
9985         * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
9986         * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
9987         * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
9988         * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
9989         * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
9990         * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
9991         * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
9992         * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
9993         * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
9994         * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
9995         * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
9996         * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
9997         * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
9998         * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
9999         * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
10000         * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
10001         * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
10002         * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
10003         * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
10004         * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
10005         * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
10006         * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
10007         * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
10008         * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
10009         * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
10010         * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
10011         * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
10012         * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
10013         * config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
10014         * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
10015         * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
10016         * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
10017         * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
10018         * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
10019         * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
10020         * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
10021         * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
10022         * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
10023         * config/avr/avr.c (avr_starting_frame_offset): Make static and
10024         return a HOST_WIDE_INT.
10025         (avr_builtin_setjmp_frame_value): Use it instead of
10026         STARTING_FRAME_OFFSET.
10027         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10028         * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
10029         * config/epiphany/epiphany.c (epiphany_starting_frame_offset):
10030         New function.
10031         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10032         * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
10033         * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
10034         (TARGET_CONSTANT_ALIGNMENT): Redefine.
10035         * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
10036         * config/lm32/lm32.c (lm32_starting_frame_offset): New function.
10037         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10038         * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
10039         * config/m32r/m32r.c (m32r_starting_frame_offset): New function.
10040         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10041         * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
10042         * config/microblaze/microblaze.c (microblaze_starting_frame_offset):
10043         New function.
10044         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10045         * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
10046         * config/mips/mips.c (mips_compute_frame_info): Refer to
10047         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10048         (mips_starting_frame_offset): New function.
10049         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10050         * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
10051         * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
10052         * config/mmix/mmix.c (mmix_starting_frame_offset): Make static
10053         and return a HOST_WIDE_INT.
10054         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10055         (mmix_initial_elimination_offset): Refer to
10056         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10057         * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
10058         * config/pa/pa.c (pa_starting_frame_offset): New function.
10059         (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
10060         (pa_expand_prologue): Likewise.
10061         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10062         * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
10063         !FRAME_GROWS_DOWNWARD handling to...
10064         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10065         * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
10066         !FRAME_GROWS_DOWNWARD handling to...
10067         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10068         * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
10069         !FRAME_GROWS_DOWNWARD handling to...
10070         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10071         * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
10072         Redefine.
10073         (rs6000_starting_frame_offset): New function.
10074         * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
10075         !FRAME_GROWS_DOWNWARD handling to...
10076         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10077         * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
10078         !FRAME_GROWS_DOWNWARD handling to...
10079         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10080         * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
10081         !FRAME_GROWS_DOWNWARD handling to...
10082         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10083         * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
10084         (rs6000_starting_frame_offset): New function.
10085         * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
10086         * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
10087         * config/vax/vax.c (vax_starting_frame_offset): New function.
10088         (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
10089         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10090         * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
10091         * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
10092         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10093         * system.h (STARTING_FRAME_OFFSET): Poison.
10094
10095 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10096
10097         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
10098         SCALAR_TYPE_MODE instead of TYPE_MODE.
10099
10100 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10101             Alan Hayward  <alan.hayward@arm.com>
10102             David Sherwood  <david.sherwood@arm.com>
10103
10104         * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
10105
10106 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10107             Alan Hayward  <alan.hayward@arm.com>
10108             David Sherwood  <david.sherwood@arm.com>
10109
10110         * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
10111
10112 2017-10-23  Richard Biener  <rguenther@suse.de>
10113
10114         PR tree-optimization/82129
10115         * tree-ssa-pre.c (bitmap_set_and): Remove.
10116         (compute_antic_aux): Compute ANTIC_OUT intersection in a way
10117         canonicalizing expressions in the set to those with lowest
10118         ID rather than taking that from the first edge.
10119
10120 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10121
10122         * combine.c (rtx_equal_for_field_assignment_p): Use
10123         byte_lowpart_offset.
10124
10125 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10126             Alan Hayward  <alan.hayward@arm.com>
10127             David Sherwood  <david.sherwood@arm.com>
10128
10129         * internal-fn.c (expand_direct_optab_fn): Don't assign directly
10130         to a SUBREG_PROMOTED_VAR.
10131
10132 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10133             Alan Hayward  <alan.hayward@arm.com>
10134             David Sherwood  <david.sherwood@arm.com>
10135
10136         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
10137         (expand_debug_source_expr): Likewise.
10138         * combine.c (combine_simplify_rtx): Likewise.
10139         * cse.c (fold_rtx): Likewise.
10140         * optabs.c (expand_float): Likewise.
10141         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
10142         (simplify_binary_operation_1): Likewise.
10143
10144 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10145             Alan Hayward  <alan.hayward@arm.com>
10146             David Sherwood  <david.sherwood@arm.com>
10147
10148         * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
10149         (record_promoted_value): Likewise.
10150         * expr.c (expand_expr_real_2): Likewise.
10151         * ree.c (update_reg_equal_equiv_notes): Likewise.
10152         (combine_set_extension): Likewise.
10153         * rtlanal.c (low_bitmask_len): Likewise.
10154         * simplify-rtx.c (neg_const_int): Likewise.
10155         (simplify_binary_operation_1): Likewise.
10156
10157 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10158             Alan Hayward  <alan.hayward@arm.com>
10159             David Sherwood  <david.sherwood@arm.com>
10160
10161         * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
10162         * regcprop.c (maybe_mode_change): Likewise.
10163         * reload1.c (alter_reg): Likewise.
10164
10165 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10166
10167         * inchash.h (inchash::hash::add_wide_int): New function.
10168         * lto-streamer-out.c (hash_tree): Use it.
10169
10170 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10171
10172         * inchash.h (inchash::hash::add_wide_int): Rename to...
10173         (inchash::hash::add_hwi): ...this.
10174         * ipa-devirt.c (hash_odr_vtable): Update accordingly.
10175         (polymorphic_call_target_hasher::hash): Likewise.
10176         * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
10177         (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
10178         (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
10179         * lto-streamer-out.c (hash_tree): Likewise.
10180         * optc-save-gen.awk: Likewise.
10181         * tree.c (add_expr): Likewise.
10182
10183 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10184
10185         PR target/52451
10186         * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
10187         for ordered inequality comparisons even with TARGET_IEEE_FP.
10188
10189 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10190
10191         PR target/82628
10192         * config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
10193         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10194         Expand with cmp<dwi>_doubleword.
10195
10196 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10197
10198         * extend.texi: Add x86 specific to 'nocf_check' attribute.
10199         List CET intrinsics.
10200         * invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
10201         specific to -fcf-protection option.
10202
10203 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10204
10205         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
10206         (OPTION_MASK_ISA_SHSTK_SET): Likewise.
10207         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
10208         (OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
10209         (ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
10210         * config.gcc (extra_headers): Add cetintrin.h for x86 targets.
10211         (extra_objs): Add cet.o for Linux/x86 targets.
10212         (tmake_file): Add i386/t-cet for Linux/x86 targets.
10213         * config/i386/cet.c: New file.
10214         * config/i386/cetintrin.h: Likewise.
10215         * config/i386/t-cet: Likewise.
10216         * config/i386/cpuid.h (bit_SHSTK): New.
10217         (bit_IBT): Likewise.
10218         * config/i386/driver-i386.c (host_detect_local_cpu): Detect and
10219         pass IBT and SHSTK bits.
10220         * config/i386/i386-builtin-types.def
10221         (VOID_FTYPE_UNSIGNED_PVOID): New.
10222         (VOID_FTYPE_UINT64_PVOID): Likewise.
10223         * config/i386/i386-builtin.def: Add CET intrinsics.
10224         * config/i386/i386-c.c (ix86_target_macros_internal): Add
10225         OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
10226         * config/i386/i386-passes.def: Add pass_insert_endbranch pass.
10227         * config/i386/i386-protos.h (make_pass_insert_endbranch): New
10228         prototype.
10229         * config/i386/i386.c (rest_of_insert_endbranch): New.
10230         (pass_data_insert_endbranch): Likewise.
10231         (pass_insert_endbranch): Likewise.
10232         (make_pass_insert_endbranch): Likewise.
10233         (ix86_notrack_prefixed_insn_p): Likewise.
10234         (ix86_target_string): Add -mibt, -mshstk flags.
10235         (ix86_option_override_internal): Add flag_cf_protection
10236         processing.
10237         (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
10238         (ix86_print_operand): Add 'notrack' prefix output.
10239         (ix86_init_mmx_sse_builtins): Add CET intrinsics.
10240         (ix86_expand_builtin): Expand CET intrinsics.
10241         (x86_output_mi_thunk): Add 'endbranch' instruction.
10242         * config/i386/i386.h (TARGET_IBT): New.
10243         (TARGET_IBT_P): Likewise.
10244         (TARGET_SHSTK): Likewise.
10245         (TARGET_SHSTK_P): Likewise.
10246         * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
10247         UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
10248         UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
10249         (builtin_setjmp_setup): New pattern.
10250         (builtin_longjmp): Likewise.
10251         (rdssp<mode>): Likewise.
10252         (incssp<mode>): Likewise.
10253         (saveprevssp): Likewise.
10254         (rstorssp): Likewise.
10255         (wrss<mode>): Likewise.
10256         (wruss<mode>): Likewise.
10257         (setssbsy): Likewise.
10258         (clrssbsy): Likewise.
10259         (nop_endbr): Likewise.
10260         * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
10261         options.
10262         * config/i386/immintrin.h: Include <cetintrin.h>.
10263         * config/i386/linux-common.h
10264         (file_end_indicate_exec_stack_and_cet): New prototype.
10265         (TARGET_ASM_FILE_END): New.
10266
10267 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10268
10269         * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
10270         latencies instead of having separate table; make difference between
10271         integer and float costs.
10272         * i386.h (processor_costs): Remove scalar_stmt_cost,
10273         scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
10274         scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
10275         vec_store_cost.
10276         * x86-tune-costs.h: Remove entries which has been removed in
10277         procesor_costs from all tables; make cond_taken_branch_cost
10278         and cond_not_taken_branch_cost COST_N_INSNS based.
10279
10280 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10281
10282         * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
10283
10284 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10285
10286         * config/i386/i386.md (isa): Remove fma_avx512f.
10287         * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
10288         <avx512>_fmadd_<mode>_mask3<round_name>,
10289         <avx512>_fmsub_<mode>_mask<round_name>,
10290         <avx512>_fmsub_<mode>_mask3<round_name>,
10291         <avx512>_fnmadd_<mode>_mask<round_name>,
10292         <avx512>_fnmadd_<mode>_mask3<round_name>,
10293         <avx512>_fnmsub_<mode>_mask<round_name>,
10294         <avx512>_fnmsub_<mode>_mask3<round_name>,
10295         <avx512>_fmaddsub_<mode>_mask<round_name>,
10296         <avx512>_fmaddsub_<mode>_mask3<round_name>,
10297         <avx512>_fmsubadd_<mode>_mask<round_name>,
10298         <avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
10299         (*vec_widen_umult_even_v16si<mask_name>,
10300         *vec_widen_smult_even_v16si<mask_name>): Likewise.
10301         (<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
10302
10303 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10304
10305         * extend.texi: Add 'nocf_check' documentation.
10306         * gimple.texi: Add second parameter to
10307         gimple_build_call_from_tree.
10308         * invoke.texi: Add -fcf-protection documentation.
10309         * rtl.texi: Add REG_CALL_NOTRACK documenation.
10310
10311 2017-10-20  Richard Biener  <rguenther@suse.de>
10312
10313         PR tree-optimization/82473
10314         * tree-vect-loop.c (vectorizable_reduction): Properly get at
10315         the largest input type.
10316
10317 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10318
10319         * c-attribs.c (handle_nocf_check_attribute): New function.
10320         (c_common_attribute_table): Add 'nocf_check' handling.
10321         * gimple-parser.c: Add second argument NULL to
10322         gimple_build_call_from_tree.
10323         * attrib.c (comp_type_attributes): Check nocf_check attribute.
10324         * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
10325         call insn.
10326         * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
10327         * common.opt: Add fcf-protection flag.
10328         * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
10329         * flag-types.h: Add enum cf_protection_level.
10330         * gimple.c (gimple_build_call_from_tree): Add second parameter.
10331         Add 'nocf_check' attribute propagation to gimple call.
10332         * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
10333         (gimple_build_call_from_tree): Update prototype.
10334         (gimple_call_nocf_check_p): New function.
10335         (gimple_call_set_nocf_check): Likewise.
10336         * gimplify.c: Add second argument to gimple_build_call_from_tree.
10337         * ipa-icf.c: Add nocf_check attribute in statement hash.
10338         * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
10339         * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
10340         * toplev.c (process_options): Add flag_cf_protection handling.
10341
10342 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10343
10344         * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
10345
10346 2017-10-20  Richard Biener  <rguenther@suse.de>
10347
10348         PR tree-optimization/82603
10349         * tree-if-conv.c (predicate_mem_writes): Make sure to only
10350         remove false predicated stores.
10351
10352 2017-10-20  Richard Biener  <rguenther@suse.de>
10353
10354         * graphite-isl-ast-to-gimple.c
10355         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
10356         Remove return value and simplify, dump copied stmt after lhs
10357         adjustment.
10358         (translate_isl_ast_to_gimple::translate_isl_ast_node_user):
10359         Reduce dump verbosity.
10360         (gsi_insert_earliest): Likewise.
10361         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
10362         * graphite.c (print_global_statistics): Adjust dumping.
10363         (print_graphite_scop_statistics): Likewise.
10364         (print_graphite_statistics): Do not dump loops here.
10365         (graphite_transform_loops): But here.
10366
10367 2017-10-20  Nicolas Roche  <roche@adacore.com>
10368
10369         * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
10370         * configure: Regenerate.
10371
10372 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10373
10374         PR target/82158
10375         * tree-cfg.c (pass_warn_function_return::execute): In noreturn
10376         functions when optimizing replace GIMPLE_RETURN stmts with
10377         calls to __builtin_unreachable ().
10378
10379         PR sanitizer/82595
10380         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
10381         for -fsanitize=thread link of executables.
10382         (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
10383         link of executables.
10384
10385         PR target/82370
10386         * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
10387         New mode iterators.
10388         (<shift_insn><mode>3<mask_name>): Change the last of the 3
10389         define_insns for logical vector shifts to use VI248_AVX512BW
10390         iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
10391         condition, useless isa and prefix attributes.  Change the first
10392         2 of these define_insns to ...
10393         (<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
10394         define_insn for avx512vl.
10395         (<shift_insn><mode>3): ... and this, new define_insn without
10396         masking for non-avx512vl.
10397
10398         PR target/82370
10399         * config/i386/sse.md (*andnot<mode>3,
10400         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
10401         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
10402         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
10403         not applied use empty suffix even for TARGET_AVX512VL.
10404         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
10405         is applied, supply evex,evex or evex,evex,evex instead of just
10406         evex.
10407
10408 2017-10-20  Julia Koval  <julia.koval@intel.com>
10409
10410         * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
10411         (OPTION_MASK_ISA_GFNI_UNSET): New.
10412         (ix86_handle_option): Handle OPT_mgfni.
10413         * config/i386/cpuid.h (bit_GFNI): New.
10414         * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
10415         * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
10416         * config/i386/i386.c (ix86_target_string): Add -mgfni.
10417         (ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
10418         * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
10419         * config/i386/i386.opt: Add mgfni.
10420
10421 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
10422
10423         * config/msp430/msp430.c (msp430_option_override): Disable
10424         -fdelete-null-pointer-checks.
10425         * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
10426
10427 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10428
10429         * x86-tune-costs.h (generic_cost, core_cost): Correct costs
10430         of x87 and SSE instructions.
10431
10432 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10433
10434         * asan.c (create_cond_insert_point): Do not update edge count.
10435         * auto-profile.c (afdo_propagate_edge): Update for edge count removal.
10436         (afdo_propagate_circuit): Likewise.
10437         (afdo_calculate_branch_prob): Likewise.
10438         (afdo_annotate_cfg): Likewise.
10439         * basic-block.h (struct edge_def): Remove count.
10440         (edge_def::count): New accessor.
10441         * bb-reorder.c (rotate_loop): Update.
10442         (find_traces_1_round): Update.
10443         (connect_traces): Update.
10444         (sanitize_hot_paths): Update.
10445         * cfg.c (unchecked_make_edge): Update.
10446         (make_single_succ_edge): Update.
10447         (check_bb_profile): Update.
10448         (dump_edge_info): Update.
10449         (update_bb_profile_for_threading): Update.
10450         (scale_bbs_frequencies_int): Update.
10451         (scale_bbs_frequencies_gcov_type): Update.
10452         (scale_bbs_frequencies_profile_count): Update.
10453         (scale_bbs_frequencies): Update.
10454         * cfganal.c (connect_infinite_loops_to_exit): Update.
10455         * cfgbuild.c (compute_outgoing_frequencies): Update.
10456         (find_many_sub_basic_blocks): Update.
10457         * cfgcleanup.c (try_forward_edges): Update.
10458         (try_crossjump_to_edge): Update
10459         * cfgexpand.c (expand_gimple_cond): Update
10460         (expand_gimple_tailcall): Update
10461         (construct_exit_block): Update
10462         * cfghooks.c (verify_flow_info): Update
10463         (redirect_edge_succ_nodup): Update
10464         (split_edge): Update
10465         (make_forwarder_block): Update
10466         (duplicate_block): Update
10467         (account_profile_record): Update
10468         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
10469         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
10470         * cfgloopmanip.c (scale_loop_profile): Update.
10471         (loopify): Update.
10472         (lv_adjust_loop_entry_edge): Update.
10473         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
10474         (force_nonfallthru_and_redirect): Update.
10475         (purge_dead_edges): Update.
10476         (rtl_flow_call_edges_add): Update.
10477         * cgraphunit.c (init_lowered_empty_function): Update.
10478         (cgraph_node::expand_thunk): Update.
10479         * gimple-pretty-print.c (dump_probability): Update.
10480         (dump_edge_probability): Update.
10481         * gimple-ssa-isolate-paths.c (isolate_path): Update.
10482         * haifa-sched.c (sched_create_recovery_edges): Update.
10483         * hsa-gen.c (convert_switch_statements): Update.
10484         * ifcvt.c (dead_or_predicable): Update.
10485         * ipa-inline-transform.c (inline_transform): Update.
10486         * ipa-split.c (split_function): Update.
10487         * ipa-utils.c (ipa_merge_profiles): Update.
10488         * loop-doloop.c (add_test): Update.
10489         * loop-unroll.c (unroll_loop_runtime_iterations): Update.
10490         * lto-streamer-in.c (input_cfg): Update.
10491         (input_function): Update.
10492         * lto-streamer-out.c (output_cfg): Update.
10493         * modulo-sched.c (sms_schedule): Update.
10494         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
10495         * predict.c (maybe_hot_edge_p): Update.
10496         (unlikely_executed_edge_p): Update.
10497         (probably_never_executed_edge_p): Update.
10498         (dump_prediction): Update.
10499         (drop_profile): Update.
10500         (propagate_unlikely_bbs_forward): Update.
10501         (determine_unlikely_bbs): Update.
10502         (force_edge_cold): Update.
10503         * profile.c (compute_branch_probabilities): Update.
10504         * reg-stack.c (better_edge): Update.
10505         * shrink-wrap.c (handle_simple_exit): Update.
10506         * tracer.c (better_p): Update.
10507         * trans-mem.c (expand_transaction): Update.
10508         (split_bb_make_tm_edge): Update.
10509         * tree-call-cdce.c: Update.
10510         * tree-cfg.c (gimple_find_sub_bbs): Update.
10511         (gimple_split_edge): Update.
10512         (gimple_duplicate_sese_region): Update.
10513         (gimple_duplicate_sese_tail): Update.
10514         (gimple_flow_call_edges_add): Update.
10515         (insert_cond_bb): Update.
10516         (execute_fixup_cfg): Update.
10517         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
10518         * tree-complex.c (expand_complex_div_wide): Update.
10519         * tree-eh.c (lower_resx): Update.
10520         (unsplit_eh): Update.
10521         (cleanup_empty_eh_move_lp): Update.
10522         * tree-inline.c (copy_edges_for_bb): Update.
10523         (freqs_to_counts): Update.
10524         (copy_cfg_body): Update.
10525         * tree-ssa-dce.c (remove_dead_stmt): Update.
10526         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
10527         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
10528         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
10529         (unloop_loops): Update.
10530         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
10531         * tree-ssa-loop-split.c (connect_loops): Update.
10532         (split_loop): Update.
10533         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
10534         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
10535         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
10536         * tree-ssa-reassoc.c (branch_fixup): Update.
10537         * tree-ssa-tail-merge.c (replace_block_by): Update.
10538         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
10539         (compute_path_counts): Update.
10540         (update_profile): Update.
10541         (recompute_probabilities): Update.
10542         (update_joiner_offpath_counts): Update.
10543         (estimated_freqs_path): Update.
10544         (freqs_to_counts_path): Update.
10545         (clear_counts_path): Update.
10546         (ssa_fix_duplicate_block_edges): Update.
10547         (duplicate_thread_path): Update.
10548         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
10549         (case_bit_test_cmp): Update.
10550         (collect_switch_conv_info): Update.
10551         (gen_inbound_check): Update.
10552         (do_jump_if_equal): Update.
10553         (emit_cmp_and_jump_insns): Update.
10554         * tree-tailcall.c (decrease_profile): Update.
10555         (eliminate_tail_call): Update.
10556         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
10557         (vect_do_peeling): Update.
10558         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
10559         * ubsan.c (ubsan_expand_null_ifn): Update.
10560         (ubsan_expand_ptr_ifn): Update.
10561         * value-prof.c (gimple_divmod_fixed_value): Update.
10562         (gimple_mod_pow2): Update.
10563         (gimple_mod_subtract): Update.
10564         (gimple_ic): Update.
10565         (gimple_stringop_fixed_value): Update.
10566
10567 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10568
10569         PR target/82618
10570         * config/i386/i386.md (sub to cmp): New peephole2 pattern.
10571
10572 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
10573
10574         PR rtl-optimization/82395
10575         * ira-color.c (allocno_priority_compare_func): Fix comparison step
10576         based on non_spilled_static_chain_regno_p.
10577
10578 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10579
10580         * config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
10581         (ix86_emit_mode_set): Rewrite insn mnemonic construction.
10582         (ix86_prepare_fp_compare_args): Redefine is_sse as bool.
10583
10584 2017-10-19  Martin Sebor  <msebor@redhat.com>
10585
10586         PR tree-optimization/82596
10587         * tree.c (array_at_struct_end_p): Handle STRING_CST.
10588
10589 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10590
10591         * asan.c (handle_builtin_alloca): Deal with all alloca variants.
10592         (get_mem_refs_of_builtin_call): Likewise.
10593         * builtins.c (expand_builtin_apply): Adjust call to
10594         allocate_dynamic_stack_space.
10595         (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
10596         the third argument to allocate_dynamic_stack_space, otherwise -1.
10597         (expand_builtin): Deal with all alloca variants.
10598         (is_inexpensive_builtin): Likewise.
10599         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
10600         * calls.c (special_function_p): Deal with all alloca variants.
10601         (initialize_argument_information): Adjust call to
10602         allocate_dynamic_stack_space.
10603         (expand_call): Likewise.
10604         * cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
10605         * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
10606         * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
10607         use it for the stack usage computation.
10608         * explow.h (allocate_dynamic_stack_space): Adjust prototype.
10609         * function.c (gimplify_parameters): Call build_alloca_call_expr.
10610         * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
10611         Take into account 3rd argument of __builtin_alloca_with_align_and_max.
10612         (in_loop_p): Remove first argument and useless check.
10613         (pass_walloca::execute): Remove useless test and adjust call to above.
10614         * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
10615         * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
10616         (gimplify_call_expr): Deal with all alloca variants.
10617         * hsa-gen.c (gen_hsa_alloca): Likewise.
10618         (gen_hsa_insns_for_call): Likewise.
10619         * ipa-pure-const.c (special_builtin_state): Likewise.
10620         * tree-chkp.c (chkp_build_returned_bound): Likewise.
10621         * tree-object-size.c (alloc_object_size): Likewise.
10622         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
10623         (call_may_clobber_ref_p_1): Likewise.
10624         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
10625         (ccp_fold_stmt): Likewise.
10626         (optimize_stack_restore): Likewise.
10627         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
10628         (mark_all_reaching_defs_necessary_1): Likewise.
10629         (propagate_necessity): Likewise.
10630         (eliminate_unnecessary_stmts): Likewise.
10631         * tree.c (build_common_builtin_nodes): Build
10632         BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
10633         (build_alloca_call_expr): New function.
10634         * tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
10635         (CASE_BUILT_IN_ALLOCA): Likewise.
10636         (build_alloca_call_expr): Declare.
10637         * varasm.c (incorporeal_function_p): Deal with all alloca variants.
10638
10639 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10640
10641         PR debug/82509
10642         * dwarf2out.c (new_die_raw): New static inline function.
10643         (new_die): Use it to create the DIE.
10644         (add_AT_external_die_ref): Likewise.
10645         (clone_die): Likewise.
10646         (clone_as_declaration): Likewise.
10647         (dwarf2out_vms_debug_main_pointer): Likewise.
10648         (base_type_die): Likewise.  Remove early return for corner cases.
10649         Do not call add_pubtype on the DIE here.
10650         (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
10651         (modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
10652         typedefs for base types with DW_AT_endianity.  Make sure a DIE with
10653         native order exists for base types, attach the DIE manually and call
10654         add_pubtype on it.  Do not equate a reverse order DIE to the type.
10655
10656 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
10657
10658         * config/arm/arm.c (align_ok_ldrd_strd): New function.
10659         (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
10660         the mem into it.
10661         (gen_operands_ldrd_strd): Validate the alignment of the accesses.
10662
10663 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
10664
10665         * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
10666         SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
10667         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
10668         BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
10669         * opts.c (sanitizer_opts): Add builtin.
10670         * ubsan.c (instrument_builtin): New function.
10671         (pass_ubsan::execute): Call it.
10672         (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
10673         * doc/invoke.texi: Document -fsanitize=builtin.
10674
10675         * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
10676         builtins, store max (log2 (align), 0) into uchar field instead of
10677         align into uptr field.
10678         (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
10679         store uchar 0 field instead of uptr 0 field.
10680         (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
10681         instead of passing one address of struct with 2 locations pass
10682         two addresses of structs with 1 location each.
10683         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
10684         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
10685         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
10686         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
10687         (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
10688         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
10689         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
10690         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
10691
10692 2017-10-19  Martin Liska  <mliska@suse.cz>
10693
10694         PR driver/81829
10695         * file-find.c (remove_prefix): Remove.
10696         * file-find.h (remove_prefix): Likewise.
10697         * gcc-ar.c: Remove smartness of lookup.
10698
10699 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
10700
10701         * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
10702         *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
10703         *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
10704
10705 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
10706
10707         PR target/82580
10708         * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
10709         (setcc + and to xor + setcc): New peephole2.
10710
10711 2017-10-19  Tom de Vries  <tom@codesourcery.com>
10712
10713         * doc/sourcebuild.texi (Test Directives, Variants of
10714         dg-require-support): Add dg-require-stack-size.
10715
10716 2017-10-19  Martin Liska  <mliska@suse.cz>
10717
10718         PR sanitizer/82517
10719         * gimplify.c (gimplify_decl_expr): Do not instrument variables
10720         that have a large alignment.
10721         (gimplify_target_expr): Likewise.
10722
10723 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
10724
10725         PR rtl-optimization/82602
10726         * ira.c (rtx_moveable_p): Return false for volatile asm.
10727
10728 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
10729
10730         PR target/82580
10731         * config/i386/i386-modes.def (CCGZ): New CC mode.
10732         * config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
10733         * config/i386/predicates.md (ix86_comparison_operator):
10734         Handle CCGZmode.
10735         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10736         Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
10737         with double-word subtraction.
10738         (put_condition_code): Handle CCGZmode.
10739
10740 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
10741
10742         * wide-int.cc (debug (const wide_int &)): New.
10743         (debug (const wide_int *)): New.
10744         (debug (const widest_int &)): New.
10745         (debug (const widest_int *)): New.
10746
10747 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
10748
10749         PR middle-end/82556
10750         * lra-constraints.c (curr_insn_transform): Use non-input operand
10751         instead of output one for matched reload.
10752
10753 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
10754
10755         * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
10756         (tree-ssa-loop-ivopts.h): New header file.
10757         (struct builtin_info): New fields.
10758         (classify_builtin_1): Compute and record base and offset parts for
10759         memset builtin partition by calling strip_offset.
10760         (offset_cmp, fuse_memset_builtins): New functions.
10761         (finalize_partitions): Fuse adjacent memset partitions by calling
10762         above function.
10763         * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
10764         Expose the interface.
10765         * tree-ssa-loop-ivopts.h (strip_offset): New declaration.
10766
10767 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
10768
10769         PR tree-optimization/82574
10770         * tree-loop-distribution.c (find_single_drs): New parameter.  Check
10771         that data reference must be executed exactly once per iteration
10772         against the outermost loop in nest.
10773         (classify_partition): Update call to above function.
10774
10775 2017-10-18  Richard Biener  <rguenther@suse.de>
10776
10777         PR tree-optimization/82591
10778         * graphite.c (graphite_transform_loops): Move code gen message
10779         printing ...
10780         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
10781         Here.  Handle scop_to_isl_ast failing.
10782         (scop_to_isl_ast): Limit the number of ISL operations.
10783
10784 2017-10-18  Richard Biener  <rguenther@suse.de>
10785
10786         * graphite-isl-ast-to-gimple.c
10787         (translate_isl_ast_to_gimple::set_rename): Simplify.
10788         (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
10789         (graphite_copy_stmts_from_block): ... here.
10790         (copy_bb_and_scalar_dependences): Simplify.
10791         (add_parameters_to_ivs_params): Canonicalize.
10792         (generate_entry_out_of_ssa_copies): Simplify.
10793         * graphite-sese-to-poly.c (extract_affine_name): Simplify
10794         by passing in ISL dimension.
10795         (parameter_index_in_region_1): Rename to ...
10796         (parameter_index_in_region): ... this.
10797         (extract_affine): Adjust assert, pass down parameter index.
10798         (add_param_constraints): Use range-info when available.
10799         (build_scop_context): Adjust.
10800         * sese.c (new_sese_info): Adjust.
10801         (free_sese_info): Likewise.
10802         * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
10803         Remove unused typedefs.
10804         (struct sese_info_t): Simplify rename_map, remove incomplete_phis.
10805
10806 2017-10-18  Martin Liska  <mliska@suse.cz>
10807
10808         * combine.c (simplify_compare_const): Add gcc_fallthrough.
10809
10810 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10811
10812         * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
10813         (s390_sched_init): Do not reset s390_sched_state if we entered the
10814         current basic block via a fallthru edge and all others are unlikely.
10815
10816 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10817
10818         * config/s390/s390.c (NUM_SIDES): New variable.
10819         (LONGRUNNING_THRESHOLD): New variable.
10820         (LATENCY_FACTOR): New variable.
10821         (s390_sched_score): Decrease score for long-running instructions on
10822         wrong side.
10823         (s390_sched_variable_issue): Perform bookkeeping for long-running
10824         instructions.
10825
10826 2017-10-18  Richard Biener  <rguenther@suse.de>
10827
10828         * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
10829         Simplify with removal of the parameter rename map.
10830         (set_rename): Likewise.
10831         (should_copy_to_new_region): Likewise.
10832         (graphite_copy_stmts_from_block): Likewise.
10833         (copy_bb_and_scalar_dependences): Remove initialization of
10834         unused copied_bb_map.
10835         (copy_def): Remove.
10836         (copy_internal_parameters): Likewise.
10837         (graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
10838         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
10839         Use INTEGRAL_TYPE_P.
10840         (parameter_index_in_region_1): Rename to ...
10841         (assign_parameter_index_in_region): ... this.  Assert we have
10842         a parameter we handle.
10843         (scan_tree_for_params): Adjust.
10844         * sese.h (parameter_rename_map_t): Remove.
10845         (struct sese_info_t): Remove unused parameter_rename_map and
10846         copied_bb_map members.
10847         * sese.c (new_sese_info): Adjust.
10848         (free_sese_info): Likewise.
10849
10850 2017-10-18  Martin Liska  <mliska@suse.cz>
10851
10852         PR sanitizer/82545
10853         * asan.c (asan_expand_poison_ifn): Do not put gimple stmt
10854         on an abnormal edge.
10855
10856 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10857
10858         * doc/invoke.texi (ffunction-sections and fdata-sections):
10859         Update.
10860
10861 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10862
10863         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
10864         the use statement can throw internally.
10865
10866 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10867
10868         * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
10869         any RTX present on the RHS of a SET.
10870         * compare-elim.c (try_eliminate_compare): Restore comment.
10871
10872 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10873
10874         * langhooks.h (struct lang_hooks): Document that tree_size langhook
10875         may be also called on tcc_type nodes.
10876         * langhooks.c (lhd_tree_size): Likewise.
10877
10878 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
10879
10880         * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
10881         format_warning_at_substring.
10882         (maybe_warn): Convert source_range * param to a location_t.  Pass
10883         UNKNOWN_LOCATION rather than NULL to fmtwarn.
10884         (format_directive): Remove code to extract source_ranges and
10885         source_range * in favor of just a location_t.
10886         (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
10887         fmtwarn.
10888         * substring-locations.c (format_warning_va): Convert
10889         source_range * param to a location_t.
10890         (format_warning_at_substring): Likewise.
10891         * substring-locations.h (format_warning_va): Likewise.
10892         (format_warning_at_substring): Likewise.
10893
10894 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
10895
10896         * target.h (enum vect_cost_for_stmt): Add vec_gather_load and
10897         vec_scatter_store
10898         * tree-vect-stmts.c (record_stmt_cost): Make difference between normal
10899         and scatter/gather ops.
10900
10901         * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
10902         vec_gather_load and vec_scatter_store.
10903         * arm/arm.c (arm_builtin_vectorization_cost): Likewise.
10904         * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
10905         * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
10906         * s390/s390.c (s390_builtin_vectorization_cost): Likewise.
10907         * spu/spu.c (spu_builtin_vectorization_cost): Likewise.
10908         * i386/i386.c (x86_builtin_vectorization_cost): Likewise.
10909
10910 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
10911
10912         * reg-stack.c (compare_for_stack_reg): Add bool argument.
10913         Detect FTST instruction and handle its register pops.  Only pop
10914         second operand if can_pop_second_op is true.
10915         (subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
10916         set can_pop_second_op to false in the compare_for_stack_reg call.
10917
10918         * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
10919         output_fp_compare for stack register operands.
10920         * config/i386/i386.c (output_fp_compare): Do not output SSE compare
10921         instructions here.  Do not emit stack register pops here.  Assert
10922         that FCOMPP pops next to top stack register.  Rewrite function.
10923
10924 2017-10-17  Nathan Sidwell  <nathan@acm.org>
10925
10926         PR middle-end/82577
10927         * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
10928         use DECL_ASSEMBLER_NAME_RAW.
10929
10930         PR middle-end/82546
10931         * tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
10932         TYPE nodes.
10933
10934 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
10935             Wilco Dijkstra <wilco.dijkstra@arm.com>
10936
10937         * builtins.c (expand_builtin_update_setjmp_buf): Add a
10938         converstion to Pmode from the buf_addr.
10939
10940 2017-10-17  Richard Biener  <rguenther@suse.de>
10941
10942         * graphite-dependences.c (scop_get_reads_and_writes): Change
10943         output parameters to references.
10944
10945 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
10946
10947         PR 71026/tree-optimization
10948         * fold-const.c (distribute_real_division): Removed.
10949         (fold_binary_loc): Remove calls to distribute_real_divison.
10950
10951 2017-10-17  Richard Biener  <rguenther@suse.de>
10952
10953         * graphite-scop-detection.c
10954         (scop_detection::stmt_has_simple_data_refs_p): Always use
10955         the full nest as region.
10956         (try_generate_gimple_bb): Likewise.
10957         * sese.c (scalar_evolution_in_region): Simplify now that
10958         SCEV can handle instantiation in regions.
10959         * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
10960         in the non-loop part of a function if requested.
10961
10962 2017-10-17  Richard Biener  <rguenther@suse.de>
10963
10964         PR tree-optimization/82563
10965         * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
10966         New function.
10967         (graphite_regenerate_ast_isl): Call it.
10968         * graphite-scop-detection.c (build_scops): Remove entry edge split.
10969
10970 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10971
10972         PR tree-optimization/82549
10973         * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
10974         Formatting fixes.  Instead of calling make_bit_field_ref with negative
10975         bitpos return 0.
10976
10977 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
10978
10979         * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
10980         _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
10981         _mm_maskz_reduce_ss): New.
10982         * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
10983         __builtin_ia32_reducess_mask): Ditto..
10984         (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
10985         * config/i386/sse.md (reduces<mode>): Renamed to ...
10986         (reduces<mode><mask_scalar_name>): ... this.
10987         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
10988         Changed to ...
10989         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
10990         %0<mask_scalar_operand4>, %1, %2, %3}): ... this.
10991
10992 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
10993
10994         * Makefile.in (OBJS): Add unique-ptr-tests.o.
10995         * selftest-run-tests.c (selftest::run_tests): Call
10996         selftest::unique_ptr_tests_cc_tests.
10997         * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
10998         * unique-ptr-tests.cc: New file.
10999
11000 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
11001
11002         PR sanitizer/82353
11003         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11004         locations.
11005         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11006         (make_hard_regno_born, make_hard_regno_dead): Update
11007         bb_killed_pseudos and bb_gen_pseudos for fixed regs.
11008
11009 2017-10-16  Jeff Law  <law@redhat.com>
11010
11011         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11012
11013 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
11014
11015         * x86-tune-costs.h (znver1_cost): Fix move cost tables.
11016
11017 2017-10-16  Olivier Hainque  <hainque@adacore.com>
11018
11019         * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
11020         with_cpu if we were configured for an e500v2 target cpu name.
11021
11022 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11023
11024         * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
11025         * doc/invoke.texi: Document +nodsp as a valid extension for
11026         -mcpu=cortex-m33.
11027
11028 2017-10-16  Martin Liska  <mliska@suse.cz>
11029
11030         * sbitmap.c (bitmap_bit_in_range_p_checking): New function.
11031         (test_set_range): Likewise.
11032         (test_range_functions): Rename to ...
11033         (test_bit_in_range): ... this.
11034         (sbitmap_c_tests): Add new test.
11035
11036 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11037
11038         * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
11039         New.
11040         (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
11041         (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
11042
11043 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11044
11045         * config/aarch64/aarch64-builtins.c
11046         (aarch64_types_quadopu_lane_qualifiers): New.
11047         (TYPES_QUADOPU_LANE): New.
11048         * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
11049         (<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
11050         (aarch64_<sur>dot_laneq<vsi2qi>): New.
11051         * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
11052         (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
11053         * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
11054         (Vdottype, DOTPROD): New.
11055         (sur): Add SDOT and UDOT.
11056
11057 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11058
11059         * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
11060         (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
11061         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11062         Add TARGET_DOTPROD.
11063         * config/aarch64/aarch64-option-extensions.def (dotprod): New.
11064         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
11065         Enable TARGET_DOTPROD.
11066         (cortex-a75.cortex-a55): Likewise.
11067         * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
11068
11069 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11070
11071         * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
11072         (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
11073         New.
11074         * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
11075         New.
11076         * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
11077         (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
11078         * config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
11079         (neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
11080         * config/arm/types.md (neon_dot, neon_dot_q): New.
11081         * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
11082
11083 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11084
11085         * config/arm/arm.h (TARGET_DOTPROD): New.
11086         * config/arm/arm.c (arm_arch_dotprod): New.
11087         (arm_option_reconfigure_globals): Add arm_arch_dotprod.
11088         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
11089         * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
11090         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
11091         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
11092         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
11093         * doc/invoke.texi (armv8.2-a): Document dotprod
11094
11095 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11096
11097         * i386.c (ix86_vec_cost): New function.
11098         (ix86_rtx_costs): Handle vector operations better.
11099         * i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
11100         * x86-tune-costs.h: Add new costs to all tables.
11101
11102 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11103
11104         * i386.c (ix86_rtx_costs): Make difference between x87 and SSE
11105         operations.
11106         * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
11107         divsd, sqrtss and sqrtsd
11108         * x86-tune-costs.h: Add new entries to all costs.
11109         (znver1_cost): Fix to match real instruction latencies.
11110
11111 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11112             Michael Collison <michael.collison@arm.com>
11113
11114         * compare-elim.c: Include emit-rtl.h.
11115         (can_merge_compare_into_arith): New function.
11116         (try_validate_parallel): Likewise.
11117         (try_merge_compare): Likewise.
11118         (try_eliminate_compare): Call the above when no previous clobber
11119         is available.
11120         (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
11121         dataflow problems.
11122
11123 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11124
11125         PR middle-end/62263
11126         PR middle-end/82498
11127         * tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
11128         up to 2 preparation statements for ASSIGN in MIDDLE_BB.
11129
11130         PR middle-end/62263
11131         PR middle-end/82498
11132         * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
11133         to be any operand_equal_p operands.  For & (B - 1) require
11134         B to be power of 2.  Recognize
11135         (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
11136
11137 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11138
11139         PR bootstrap/82553
11140         * optabs.c (expand_memory_blockage): Fix call of
11141         targetm.have_memory_blockage.
11142
11143 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11144
11145         PR bootstrap/82548
11146         * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
11147         x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
11148         objects to extra_objs instead of overwriting it.
11149
11150 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11151
11152         * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
11153         Use any_fp_register_operand as operand[3] predicate.  Simplify
11154         equality test for operands[2] and operands[4] memory location.
11155         (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
11156         (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
11157         (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
11158         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
11159         any_fp_register_operand as operand[1] predicate.  Simplify
11160         equality test for operands[0] and operands[3] memory location.
11161         (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
11162         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
11163         (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
11164
11165 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11166
11167         * target-insns.def: Add memory_blockage.
11168         * optabs.c (expand_memory_blockage): New function.
11169         (expand_asm_memory_barrier): Rename ...
11170         (expand_asm_memory_blockage): ... to this.
11171         (expand_mem_thread_fence): Call expand_memory_blockage
11172         instead of expand_asm_memory_barrier.
11173         (expand_mem_singnal_fence): Ditto.
11174         (expand_atomic_load): Ditto.
11175         (expand_atomic_store): Ditto.
11176         * doc/md.texi (Standard Pattern Names For Generation):
11177         Document memory_blockage instruction pattern.
11178
11179 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
11180
11181         * config/rl78/rl78.c (rl78_emit_libcall): New function.
11182         * config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
11183         * config/rl78/rl78.md: New define_expand "adddi3".
11184
11185 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11186
11187         * cfghooks.c (verify_flow_info): Disable check that all probabilities
11188         are set correctly.
11189
11190 2017-10-13  Jeff Law  <law@redhat.com>
11191
11192         * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
11193
11194 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11195
11196         PR target/82274
11197         * internal-fn.c (expand_mul_overflow): If both operands have
11198         the same highpart of -1 or 0 and the topmost bit of lowpart
11199         is different, overflow is if res <= 0 rather than res < 0.
11200
11201 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
11202
11203         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
11204         TARGET_P9_VECTOR code for unaligned_load case.
11205
11206 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11207
11208         * cfghooks.c (verify_flow_info): Check that edge probabilities are set.
11209
11210 2017-10-13  Nathan Sidwell  <nathan@acm.org>
11211
11212         * tree-core.h (tree_contains_struct): Make bool.
11213         * tree.c (tree_contains_struct): Likewise.
11214         * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
11215         (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
11216         MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
11217         MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
11218         MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
11219
11220 2017-10-13  Richard Biener  <rguenther@suse.de>
11221
11222         * graphite-isl-ast-to-gimple.c
11223         (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
11224         parameters and dominance check.
11225         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
11226         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
11227         (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
11228         Do not update SSA form here or do intermediate IL verification.
11229         * graphite.c: Include tree-ssa.h and tree-into-ssa.h.
11230         (graphite_initialize): Remove check on the number of loops in
11231         the function and inline into graphite_transform_loops.
11232         (graphite_finalize): Inline into graphite_transform_loops.
11233         (graphite_transform_loops): Perform SSA update and IL verification
11234         here.
11235         * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
11236
11237 2017-10-13  Richard Biener  <rguenther@suse.de>
11238
11239         * graphite-isl-ast-to-gimple.c (max_mode_int_precision,
11240         graphite_expression_type_precision): Avoid global constructor
11241         by moving ...
11242         (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
11243         (translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
11244         (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
11245         (translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
11246         (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
11247         * graphite-sese-to-poly.c (build_original_schedule): Return nothing.
11248
11249 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
11250
11251         PR target/82499
11252         * config/i386/i386.h (ix86_red_zone_size): New.
11253         * config/i386/i386.md (push peephole2s): Replace
11254         "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
11255
11256 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11257             Alan Hayward  <alan.hayward@arm.com>
11258             David Sherwood  <david.sherwood@arm.com>
11259
11260         * combine.c (can_change_dest_mode): Reject changes in
11261         REGMODE_NATURAL_SIZE.
11262
11263 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11264             Alan Hayward  <alan.hayward@arm.com>
11265             David Sherwood  <david.sherwood@arm.com>
11266
11267         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
11268         (expand_debug_source_expr): Likewise.
11269         * combine.c (combine_simplify_rtx): Likewise.
11270         * cse.c (fold_rtx): Likewise.
11271         * fwprop.c (canonicalize_address): Likewise.
11272         * targhooks.c (default_shift_truncation_mask): Likewise.
11273
11274 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11275             Alan Hayward  <alan.hayward@arm.com>
11276             David Sherwood  <david.sherwood@arm.com>
11277
11278         * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
11279         (widened_mode): Likewise.
11280         (expand_unop): Likewise.
11281         * ree.c (transform_ifelse): Likewise.
11282         (merge_def_and_ext): Likewise.
11283         (combine_reaching_defs): Likewise.
11284         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11285
11286 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11287             Alan Hayward  <alan.hayward@arm.com>
11288             David Sherwood  <david.sherwood@arm.com>
11289
11290         * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
11291         * combine.c (gen_lowpart_for_combine): Likewise.
11292         * dwarf2out.c (rtl_for_decl_location): Likewise.
11293         * final.c (alter_subreg): Likewise.
11294         * rtlhooks.c (gen_lowpart_general): Likewise.
11295         (gen_lowpart_if_possible): Likewise.
11296
11297 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11298             Alan Hayward  <alan.hayward@arm.com>
11299             David Sherwood  <david.sherwood@arm.com>
11300
11301         * calls.c (expand_call): Use subreg_lowpart_offset.
11302         * cse.c (cse_insn): Likewise.
11303         * regcprop.c (copy_value): Likewise.
11304         (copyprop_hardreg_forward_1): Likewise.
11305
11306 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11307
11308         PR target/82524
11309         * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
11310         *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
11311         =Q constraints to +Q and into insn condition add check
11312         that operands[0] and operands[1] are equal.
11313         (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
11314         =Q constraints to +Q and into insn condition add check
11315         that operands[0] is equal to either operands[1] or operands[2].
11316
11317         PR target/82498
11318         * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
11319         instead of handling MINUS_EXPR twice (once for each argument),
11320         canonicalize operand order and handle just once, use rtype where
11321         possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
11322
11323         PR target/82498
11324         * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
11325         any values of __C while still being pattern recognizable as a simple
11326         rotate instruction.
11327
11328 2017-10-13  Richard Biener  <rguenther@suse.de>
11329
11330         PR tree-optimization/82451
11331         Revert
11332         2017-10-02  Richard Biener  <rguenther@suse.de>
11333
11334         PR tree-optimization/82355
11335         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
11336         a mapping for the enclosing loop but avoid generating one for
11337         the loop tree root.
11338         (copy_bb_and_scalar_dependences): Remove premature codegen
11339         error on PHIs in blocks duplicated into multiple places.
11340         * graphite-scop-detection.c
11341         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
11342         in the region use it as loop and nest to analyze the DR in.
11343         (try_generate_gimple_bb): Likewise.
11344         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
11345         (add_loop_constraints): For blocks in a loop not in the region
11346         create a dimension with a single iteration.
11347         * sese.h (gbb_loop_at_index): Remove assert.
11348
11349         * cfgloop.c (loop_preheader_edge): For the loop tree root
11350         return the single successor of the entry block.
11351         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11352         Reset the SCEV hashtable and niters.
11353         * graphite-scop-detection.c
11354         (scop_detection::graphite_can_represent_scev): Add SCOP parameter,
11355         assert that we only have POLYNOMIAL_CHREC that vary in loops
11356         contained in the region.
11357         (scop_detection::graphite_can_represent_expr): Adjust.
11358         (scop_detection::stmt_has_simple_data_refs_p): For loops
11359         not in the region set loop to NULL.  The nest is now the
11360         entry edge to the region.
11361         (try_generate_gimple_bb): Likewise.
11362         * sese.c (scalar_evolution_in_region): Adjust for
11363         instantiate_scev change.
11364         * tree-data-ref.h (graphite_find_data_references_in_stmt):
11365         Make nest parameter the edge into the region.
11366         (create_data_ref): Likewise.
11367         * tree-data-ref.c (dr_analyze_indices): Make nest parameter an
11368         entry edge into a region and adjust instantiate_scev calls.
11369         (create_data_ref): Likewise.
11370         (graphite_find_data_references_in_stmt): Likewise.
11371         (find_data_references_in_stmt): Pass the loop preheader edge
11372         from the nest argument.
11373         * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
11374         parameter the edge into the region.
11375         (instantiate_parameters): Use the loop preheader edge as entry.
11376         * tree-scalar-evolution.c (analyze_scalar_evolution): Handle
11377         NULL loop.
11378         (get_instantiated_value_entry): Make instantiate_below parameter
11379         the edge into the region.
11380         (instantiate_scev_name): Likewise.  Adjust dominance checks,
11381         when we cannot use loop-based instantiation instantiate by
11382         walking use-def chains.
11383         (instantiate_scev_poly): Adjust.
11384         (instantiate_scev_binary): Likewise.
11385         (instantiate_scev_convert): Likewise.
11386         (instantiate_scev_not): Likewise.
11387         (instantiate_array_ref): Remove.
11388         (instantiate_scev_3): Likewise.
11389         (instantiate_scev_2): Likewise.
11390         (instantiate_scev_1): Likewise.
11391         (instantiate_scev_r): Do not blindly handle N-operand trees.
11392         Do not instantiate array-refs.  Handle all constants and invariants.
11393         (instantiate_scev): Make instantiate_below parameter
11394         the edge into the region.
11395         (resolve_mixers): Use the loop preheader edge for the region
11396         parameter to instantiate_scev_r.
11397         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
11398
11399 2017-10-13  Richard Biener  <rguenther@suse.de>
11400
11401         PR tree-optimization/82525
11402         * graphite-isl-ast-to-gimple.c
11403         (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
11404         out from ...
11405         (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
11406         Fail code generation when we cannot represent the isl integer.
11407         (binary_op_to_tree): Elide modulo operations that are no-ops
11408         in the type we code generate.  Remove now superfluous code
11409         generation errors.
11410
11411 2017-10-13  Richard Biener  <rguenther@suse.de>
11412
11413         * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
11414         (scop_detection::harmful_loop_in_region): Remove premature
11415         IV type restriction.
11416         (scop_detection::graphite_can_represent_scev): We can handle
11417         pointer IVs just fine.
11418
11419 2017-10-13  Alan Modra  <amodra@gmail.com>
11420
11421         * doc/extend.texi (Extended Asm <Clobbers>): Rename to
11422         "Clobbers and Scratch Registers".  Add paragraph on
11423         alternative to clobbers for scratch registers and OpenBLAS
11424         example.
11425
11426 2017-10-13  Alan Modra  <amodra@gmail.com>
11427
11428         * doc/extend.texi (Clobbers): Correct vax example.  Delete old
11429         example of a memory input for a string of known length.  Move
11430         commentary out of table.  Add a number of new examples
11431         covering array memory inputs.
11432
11433 2017-10-12  Martin Liska  <mliska@suse.cz>
11434
11435         PR tree-optimization/82493
11436         * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
11437         (test_range_functions): New function.
11438         (sbitmap_c_tests): Likewise.
11439         * selftest-run-tests.c (selftest::run_tests): Run new tests.
11440         * selftest.h (sbitmap_c_tests): New function.
11441
11442         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11443
11444 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
11445
11446         * config/rs6000/amo.h: Fix spacing issue.
11447
11448 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11449
11450         PR target/82498
11451         * config/i386/i386.md (*ashl<mode>3_mask_1,
11452         *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
11453         *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
11454         patterns.
11455
11456 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11457
11458         * profile-count.h (safe_scale_64bit): Fix GCC4.x path.
11459         (profile_probability): Set max_probability
11460         to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
11461         in temporaries.
11462         * profile-count.c (profile_probability::differs_from_p): Do not
11463         rely on max_probaiblity == 10000
11464
11465 2017-10-12  Jeff Law  <law@redhat.com>
11466
11467         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
11468         negative offsets.
11469
11470 2017-10-12  Martin Sebor  <msebor@redhat.com>
11471
11472         PR other/82301
11473         PR c/82435
11474         * cgraphunit.c (maybe_diag_incompatible_alias): New function.
11475         (handle_alias_pairs): Call it.
11476         * common.opt (-Wattribute-alias): New option.
11477         * doc/extend.texi (ifunc attribute): Discuss C++ specifics.
11478         * doc/invoke.texi (-Wattribute-alias): Document.
11479
11480 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
11481
11482         Revert
11483         2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11484         PR sanitizer/82353
11485         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11486         locations.
11487         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11488         (make_hard_regno_born, make_hard_regno_dead): Update
11489         bb_killed_pseudos and bb_gen_pseudos.
11490
11491 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11492
11493         * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
11494
11495 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
11496
11497         * config/alpha/alpha.c (alpha_split_conditional_move):
11498         Use std::swap instead of manually swapping.
11499         (alpha_stdarg_optimize_hook): Ditto.
11500         (alpha_canonicalize_comparison): Ditto.
11501
11502 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11503
11504         * tree-loop-distribution.c (struct builtin_info): New struct.
11505         (struct partition): Refactor fields into struct builtin_info.
11506         (partition_free): Free struct builtin_info.
11507         (build_size_arg_loc, build_addr_arg_loc): Delete.
11508         (generate_memset_builtin, generate_memcpy_builtin): Get memory range
11509         information from struct builtin_info.
11510         (find_single_drs): New function refactored from classify_partition.
11511         Also moved builtin validity checks to this function.
11512         (compute_access_range, alloc_builtin): New functions.
11513         (classify_builtin_st, classify_builtin_ldst): New functions.
11514         (classify_partition): Refactor code into functions find_single_drs,
11515         classify_builtin_st and classify_builtin_ldst.
11516         (distribute_loop): Don't do runtime alias check when distributing
11517         loop nest.
11518         (find_seed_stmts_for_distribution): New function.
11519         (pass_loop_distribution::execute): Refactor code finding seed
11520         stmts into above function.  Support distribution for the innermost
11521         two-level loop nest.  Adjust dump information.
11522
11523 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11524
11525         * tree-loop-distribution.c: Adjust the general comment.
11526         (NUM_PARTITION_THRESHOLD): New macro.
11527         (ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
11528         (classify_partition): Skip builtin pattern of loop nest's inner loop.
11529         (merge_dep_scc_partitions): New parameter ignore_alias_p and use it
11530         in call to build_partition_graph.
11531         (finalize_partitions): New parameter.  Make loop distribution more
11532         conservative by fusing more partitions.
11533         (distribute_loop): Don't do runtime alias check in case of loop nest
11534         distribution.
11535         (find_seed_stmts_for_distribution): New function.
11536         (prepare_perfect_loop_nest): New function.
11537         (pass_loop_distribution::execute): Refactor code finding seed stmts
11538         and loop nest into above functions.  Support loop nest distribution.
11539         Adjust dump information accordingly.
11540
11541 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11542
11543         * tree-loop-distribution.c (break_alias_scc_partitions): Add comment
11544         and set PTYPE_SEQUENTIAL for merged partition.
11545
11546 2017-10-12  Richard Biener  <rguenther@suse.de>
11547
11548         PR tree-optimization/69728
11549         Revert
11550         2017-09-19  Richard Biener  <rguenther@suse.de>
11551
11552         PR tree-optimization/69728
11553         * graphite-sese-to-poly.c (schedule_error): New global.
11554         (add_loop_schedule): Handle empty domain by failing the
11555         schedule.
11556         (build_original_schedule): Handle schedule_error.
11557
11558         * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
11559         domain by returning an unchanged schedule.
11560
11561 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11562
11563         * genrecog.c (validate_pattern): For VEC_SELECT verify that
11564         CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
11565
11566 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
11567
11568         * Makefile.in (TAGS): Merge all the *.def files into one pattern.
11569         Handle params.def.
11570
11571 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11572
11573         PR c++/82159
11574         * expr.c (store_field): Don't optimize away bitsize == 0 store
11575         from CALL_EXPR with addressable return type.
11576
11577 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11578
11579         * config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
11580         * config/rs6000/rs6000.md (sel): Delete mode attribute.
11581         (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
11582         *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
11583         TARGET_ISEL instead of TARGET_ISEL<sel>.
11584
11585 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
11586
11587         * config/rs6000/rs6000.c
11588         (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
11589
11590 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11591
11592         * config/rs6000/predicates.md (zero_constant, all_ones_constant):
11593         Move up in file.
11594         (reg_or_cint_operand): Fix comment.
11595         (reg_or_zero_operand): New predicate.
11596         * config/rs6000/rs6000-protos.h (output_isel): Delete.
11597         * config/rs6000/rs6000.c (output_isel): Delete.
11598         * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
11599         instead of reg_or_cint_operand.  Output instruction directly (not via
11600         output_isel).
11601         (isel_unsigned_<mode>): Ditto.
11602         (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
11603         gpc_reg_operand.  Add an instruction alternative for this.  Output
11604         instruction directly.
11605         (*isel_reversed_unsigned_<mode>): Ditto.
11606
11607 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11608
11609         * config/i386/i386.c (ix86_canonicalize_comparison): New function.
11610         (TARGET_CANONICALIZE_COMPARISON): Define.
11611
11612 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
11613
11614         PR target/81422
11615         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
11616         Check whether the dest is REG before adding REG_EQUIV note.
11617
11618 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11619
11620         PR sanitizer/82353
11621         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11622         locations.
11623         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11624         (make_hard_regno_born, make_hard_regno_dead): Update
11625         bb_killed_pseudos and bb_gen_pseudos.
11626
11627 2017-10-11  Nathan Sidwell  <nathan@acm.org>
11628
11629         * incpath.h (enum incpath_kind): Name enum, prefix values.
11630         (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
11631         * incpath.c (heads, tails): Use INC_MAX.
11632         (add_env_var_paths, add_standard_paths): Use incpath_kind.
11633         (merge_include_chains, split_quote_chain,
11634         register_include_chains): Update incpath_kind names.
11635         (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
11636         * config/darwin-c.c (add_system_framework_path): Update incpath_kind
11637         names.
11638         (add_framework_path, darwin_register_objc_includes): Likewise.
11639         * config/vms/vms-c.c (vms_c_register_includes): Likewise.
11640
11641 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11642
11643         * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
11644         Do not use float_operator operator predicate.
11645         (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
11646         * config/i386/predicates.md (float_operator): Remove predicate.
11647
11648 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11649
11650         * config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
11651         (*jccxf_i387): Ditto.
11652         (*jcc<mode>_i387): Ditto.
11653         (*jccu<mode>_i387): Ditto.
11654         (*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
11655         (*jcc_*_i387 splitters): Remove.
11656         * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
11657         * config/i386/i386.c (ix86_split_fp_branch): Remove.
11658         * config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
11659         Remove predicate.
11660
11661 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
11662
11663         * profile-count.h (slow_safe_scale_64bit): New function.
11664         (safe_scale_64bit): New inline.
11665         (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
11666         * profile-count.c: Include wide-int.h
11667         (slow_safe_scale_64bit): New.
11668
11669 2017-10-11  Nathan Sidwell  <nathan@acm.org>
11670
11671         * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
11672         HAS_DECL_ASSEMBLER_NAME_P.
11673         * gimple-expr.c (gimple_decl_printable_name: Check
11674         HAS_DECL_ASSEMBLER_NAME_P too.
11675         * ipa-utils.h (type_in_anonymous_namespace_p): Check
11676         DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
11677         (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
11678         * passes.c (rest_of_decl_compilation): Check
11679         HAS_DECL_ASSEMBLER_NAME_P too.
11680         * recog.c (verify_changes): Likewise.
11681         * tree-pretty-print.c (dump_decl_name): Likewise.
11682         * tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
11683
11684         * tree.h (DECL_ASSEMBLER_NAME_RAW): New.
11685         (SET_DECL_ASSEMBLER_NAME): Use it.
11686         (DECL_ASSEMBLER_NAME_SET_P): Likewise.
11687         (COPY_DECL_ASSEMBLER_NAME): Likewise.
11688         * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
11689
11690 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
11691
11692         * config.gcc (i386, x86_64): Add extra objects.
11693         * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
11694         (ix86_min_insn_size): Declare.
11695         (ix86_issue_rate): Declare.
11696         (ix86_adjust_cost): Declare.
11697         (ia32_multipass_dfa_lookahead): Declare.
11698         (ix86_macro_fusion_p): Declare.
11699         (ix86_macro_fusion_pair_p): Declare.
11700         (ix86_bd_has_dispatch): Declare.
11701         (ix86_bd_do_dispatch): Declare.
11702         (ix86_core2i7_init_hooks): Declare.
11703         (ix86_atom_sched_reorder): Declare.
11704         * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
11705         (COSTS_N_BYTES): Move to x86-tune-costs.h.
11706         (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
11707         (rip_relative_addr_p): Rename to ...
11708         (ix86_rip_relative_addr_p): ... this one; export.
11709         (memory_address_length): Update.
11710         (ix86_issue_rate): Move to x86-tune-sched.c.
11711         (ix86_flags_dependent): Move to x86-tune-sched.c.
11712         (ix86_agi_dependent): Move to x86-tune-sched.c.
11713         (exact_dependency_1): Move to x86-tune-sched.c.
11714         (exact_store_load_dependency): Move to x86-tune-sched.c.
11715         (ix86_adjust_cost): Move to x86-tune-sched.c.
11716         (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
11717         (ix86_macro_fusion_p): Move to x86-tune-sched.c.
11718         (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
11719         (do_reorder_for_imul): Move to x86-tune-sched-atom.c.
11720         (swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
11721         (ix86_sched_reorder): Move to x86-tune-sched-atom.c.
11722         (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
11723         (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
11724         (min_insn_size): Rename to ...
11725         (ix86_min_insn_size): ... this one; export.
11726         (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
11727         (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
11728         (core2i7_first_cycle_multipass_backtrack): Move to
11729         x86-tune-sched-core.c.
11730         (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
11731         (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
11732         (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
11733         (ix86_avoid_jump_mispredicts): Update.
11734         (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
11735         (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
11736         (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
11737         (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
11738         (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
11739         (MAX_INSN): Move to ix86-tune-sched-bd.c.
11740         (MAX_IMM): Move to ix86-tune-sched-bd.c.
11741         (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
11742         (MAX_IMM_32): Move to ix86-tune-sched-bd.c.
11743         (MAX_IMM_64): Move to ix86-tune-sched-bd.c.
11744         (MAX_LOAD): Move to ix86-tune-sched-bd.c.
11745         (MAX_STORE): Move to ix86-tune-sched-bd.c.
11746         (BIG): Move to ix86-tune-sched-bd.c.
11747         (enum dispatch_group): Move to ix86-tune-sched-bd.c.
11748         (enum insn_path): Move to ix86-tune-sched-bd.c.
11749         (get_mem_group): Move to ix86-tune-sched-bd.c.
11750         (is_cmp): Move to ix86-tune-sched-bd.c.
11751         (dispatch_violation): Move to ix86-tune-sched-bd.c.
11752         (is_branch): Move to ix86-tune-sched-bd.c.
11753         (is_prefetch): Move to ix86-tune-sched-bd.c.
11754         (init_window): Move to ix86-tune-sched-bd.c.
11755         (allocate_window): Move to ix86-tune-sched-bd.c.
11756         (init_dispatch_sched): Move to ix86-tune-sched-bd.c.
11757         (is_end_basic_block): Move to ix86-tune-sched-bd.c.
11758         (process_end_window): Move to ix86-tune-sched-bd.c.
11759         (allocate_next_window): Move to ix86-tune-sched-bd.c.
11760         (find_constant): Move to ix86-tune-sched-bd.c.
11761         (get_num_immediates): Move to ix86-tune-sched-bd.c.
11762         (has_immediate): Move to ix86-tune-sched-bd.c.
11763         (get_insn_path): Move to ix86-tune-sched-bd.c.
11764         (get_insn_group): Move to ix86-tune-sched-bd.c.
11765         (count_num_restricted): Move to ix86-tune-sched-bd.c.
11766         (fits_dispatch_window): Move to ix86-tune-sched-bd.c.
11767         (add_insn_window): Move to ix86-tune-sched-bd.c.
11768         (add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
11769         (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
11770         (debug_dispatch_window): Move to ix86-tune-sched-bd.c.
11771         (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
11772         (debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
11773         (do_dispatch): Move to ix86-tune-sched-bd.c.
11774         (has_dispatch): Move to ix86-tune-sched-bd.c.
11775         * config/i386/t-i386: Add new object files.
11776         * config/i386/x86-tune-costs.h: New file.
11777         * config/i386/x86-tune-sched-atom.c: New file.
11778         * config/i386/x86-tune-sched-bd.c: New file.
11779         * config/i386/x86-tune-sched-core.c: New file.
11780         * config/i386/x86-tune-sched.c: New file.
11781
11782 2017-10-11  Liu Hao  <lh_mouse@126.com>
11783
11784         * pretty-print.c [_WIN32] (colorize_init): Remove.  Use
11785         the generic version below instead.
11786         (should_colorize): Recognize Windows consoles as terminals
11787         for MinGW targets.
11788         * pretty-print.c [__MINGW32__] (write_all): New function.
11789         [__MINGW32__] (find_esc_head): Likewise.
11790         [__MINGW32__] (find_esc_terminator): Likewise.
11791         [__MINGW32__] (eat_esc_sequence): Likewise.
11792         [__MINGW32__] (mingw_ansi_fputs): New function that handles
11793         ANSI escape codes.
11794         (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
11795         for MinGW targets.
11796
11797 2017-10-11  Richard Biener  <rguenther@suse.de>
11798
11799         * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
11800         Properly call analyze_scalar_evolution with the loop of the stmt.
11801
11802 2017-10-11  Richard Biener  <rguenther@suse.de>
11803
11804         * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
11805         * tree-core.h (tree_base): Add chrec_var union member.
11806         * tree.h (CHREC_VAR): Remove.
11807         (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
11808         * tree-chrec.h (build_polynomial_chrec): Adjust.
11809         * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
11810         * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
11811
11812 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
11813
11814         * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
11815         * match.pd: ... here.
11816         ((T) X == (T) Y): Relax condition.
11817
11818 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
11819
11820         PR tree-optimization/82472
11821         * tree-loop-distribution.c (sort_partitions_by_post_order): Refine
11822         comment.
11823         (break_alias_scc_partitions): Update postorder number.
11824
11825 2017-10-11  Martin Liska  <mliska@suse.cz>
11826
11827         PR sanitizer/82490
11828         * opts.c (parse_no_sanitize_attribute): Do not use error_value
11829         variable.
11830         * opts.h (parse_no_sanitize_attribute): Remove last argument.
11831
11832 2017-10-11  Martin Liska  <mliska@suse.cz>
11833
11834         * print-rtl.c (print_insn): Move declaration of idbuf
11835         to same scope as name.
11836
11837 2017-10-11  Martin Liska  <mliska@suse.cz>
11838
11839         Revert r253637:
11840
11841         PR sanitizer/82484
11842         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11843         volatile arguments.
11844
11845 2017-10-11  Martin Liska  <mliska@suse.cz>
11846
11847         PR sanitizer/82484
11848         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11849         volatile arguments.
11850
11851 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
11852
11853         * config.gcc (default_gnu_indirect_function): Default to yes for
11854         arm*-*-linux* with glibc.
11855
11856 2017-10-11  Richard Biener  <rguenther@suse.de>
11857
11858         * tree-scalar-evolution.c (get_scalar_evolution): Handle
11859         default-defs and types we do not want to analyze.
11860         (interpret_loop_phi): Replace unreachable code with an assert.
11861         (compute_scalar_evolution_in_loop): Remove and inline ...
11862         (analyze_scalar_evolution_1): ... here, replacing condition with
11863         what makes the intent clearer.  Remove handling of cases
11864         get_scalar_evolution now handles.
11865
11866 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
11867
11868         PR rtl-optimization/81434
11869         * haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
11870         comment for main loop.  In sched_group_found if, also add checks for
11871         pass and min_cost_group.
11872
11873 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
11874
11875         * config/rs6000/rs6000.c (TARGET_INSN_COST): New.
11876         (rs6000_insn_cost): New function.
11877         * config/rs6000/rs6000.md (cost): New attribute.
11878
11879 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
11880             H.J. Lu  <hongjiu.lu@intel.com>
11881
11882         PR target/79565
11883         PR target/82483
11884         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
11885         OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
11886         __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
11887         (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
11888         to OPTION_MASK_ISA_AVX512VL - builtins that have both
11889         OPTION_MASK_ISA_MMX and some other bit set require both
11890         mmx and the ISAs without the mmx bit.
11891         * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
11892         __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
11893         __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
11894         __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
11895         __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
11896         __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
11897         __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
11898         __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
11899         __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
11900         __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
11901         __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
11902         __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
11903         __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
11904         __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
11905         Add OPTION_MASK_ISA_MMX.
11906
11907 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
11908
11909         * config.gcc (armv7*-*-freebsd*): New target.
11910         (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
11911
11912 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
11913
11914         * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
11915         X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
11916         spot in the file.
11917
11918 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
11919
11920         * wide-int.h (wide_int_ref_storage): Make host_dependent_precision
11921         a template parameter.
11922         (WIDE_INT_REF_FOR): Update accordingly.
11923         * tree.h (wi::int_traits <const_tree>): Delete.
11924         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
11925         (wi::to_widest, wi::to_offset): Use them.  Expand commentary.
11926         (wi::tree_to_wide_ref): New typedef.
11927         (wi::to_wide): New function.
11928         * calls.c (get_size_range): Use wi::to_wide when operating on
11929         trees as wide_ints.
11930         * cgraph.c (cgraph_node::create_thunk): Likewise.
11931         * config/i386/i386.c (ix86_data_alignment): Likewise.
11932         (ix86_local_alignment): Likewise.
11933         * dbxout.c (stabstr_O): Likewise.
11934         * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
11935         * expr.c (const_vector_from_tree): Likewise.
11936         * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
11937         * fold-const.c (may_negate_without_overflow_p, negate_expr_p)
11938         (fold_negate_expr_1, int_const_binop_1, const_binop)
11939         (fold_convert_const_int_from_real, optimize_bit_field_compare)
11940         (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
11941         (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
11942         (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
11943         (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
11944         (fold_not_const, round_up_loc): Likewise.
11945         * gimple-fold.c (gimple_fold_indirect_ref): Likewise.
11946         * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
11947         (alloca_call_type): Likewise.
11948         * gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
11949         * godump.c (go_output_typedef): Likewise.
11950         * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
11951         * internal-fn.c (get_min_precision): Likewise.
11952         * ipa-cp.c (ipcp_store_vr_results): Likewise.
11953         * ipa-polymorphic-call.c
11954         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
11955         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
11956         (ipa_modify_call_arguments): Likewise.
11957         * match.pd: Likewise.
11958         * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
11959         * print-tree.c (print_node_brief, print_node): Likewise.
11960         * stmt.c (expand_case): Likewise.
11961         * stor-layout.c (layout_type): Likewise.
11962         * tree-affine.c (tree_to_aff_combination): Likewise.
11963         * tree-cfg.c (group_case_labels_stmt): Likewise.
11964         * tree-data-ref.c (dr_analyze_indices): Likewise.
11965         (prune_runtime_alias_test_list): Likewise.
11966         * tree-dump.c (dequeue_and_dump): Likewise.
11967         * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
11968         * tree-predcom.c (is_inv_store_elimination_chain): Likewise.
11969         * tree-pretty-print.c (dump_generic_node): Likewise.
11970         * tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
11971         (simple_iv_with_niters): Likewise.
11972         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
11973         * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
11974         * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
11975         * tree-ssa-loop-niter.c (split_to_var_and_offset)
11976         (refine_value_range_using_guard, number_of_iterations_ne_max)
11977         (number_of_iterations_lt_to_ne, number_of_iterations_lt)
11978         (get_cst_init_from_scev, record_nonwrapping_iv)
11979         (scev_var_range_cant_overflow): Likewise.
11980         * tree-ssa-phiopt.c (minmax_replacement): Likewise.
11981         * tree-ssa-pre.c (compute_avail): Likewise.
11982         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
11983         (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
11984         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
11985         * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
11986         * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
11987         * tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
11988         (dump_case_nodes, try_switch_expansion): Likewise.
11989         * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
11990         (vect_do_peeling): Likewise.
11991         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
11992         * tree-vect-stmts.c (vectorizable_load): Likewise.
11993         * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
11994         (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
11995         (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
11996         (overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
11997         (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
11998         (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
11999         (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
12000         (evrp_dom_walker::before_dom_children): Likewise.
12001         * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
12002         (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
12003         (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
12004         (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
12005         (get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
12006         (get_range_pos_neg): Likewise.
12007         * ubsan.c (ubsan_expand_ptr_ifn): Likewise.
12008         * config/darwin.c (darwin_mergeable_constant_section): Likewise.
12009         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
12010         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
12011         * config/avr/avr.c (avr_fold_builtin): Likewise.
12012         * config/bfin/bfin.c (bfin_local_alignment): Likewise.
12013         * config/msp430/msp430.c (msp430_attr): Likewise.
12014         * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
12015         * config/powerpcspe/powerpcspe-c.c
12016         (altivec_resolve_overloaded_builtin): Likewise.
12017         * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
12018         (rs6000_expand_ternop_builtin): Likewise.
12019         * config/rs6000/rs6000-c.c
12020         (altivec_resolve_overloaded_builtin): Likewise.
12021         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
12022         (rs6000_expand_ternop_builtin): Likewise.
12023         * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
12024
12025 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12026
12027         * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
12028         when copying loop nest with only one inner loop.
12029
12030 2017-10-10  Richard Biener  <rguenther@suse.de>
12031
12032         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
12033         blocks if SCEV is active.
12034         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
12035         dead code.
12036         (analyze_scalar_evolution): Handle cached evolutions the obvious way.
12037         (scev_initialize): Assert we are not yet initialized.
12038
12039 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12040
12041         * tree-loop-distribution.c (generate_loops_for_partition): Remove
12042         inner loop's exit stmt by making it always exit the loop, otherwise
12043         we would generate an infinite empty loop.
12044
12045 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12046
12047         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
12048         renaming variables in new preheader if it's deleted.
12049
12050 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12051
12052         * tree-loop-distribution.c (struct partition): Remove unused field
12053         loops of the structure.
12054         (partition_alloc, partition_free): Ditto.
12055         (build_rdg_partition_for_vertex): Ditto.
12056
12057 2017-10-09  Jeff Law  <law@redhat.com>
12058
12059         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
12060         return type to match prototype and documentation.
12061
12062 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12063
12064         * config/rs6000/rs6000.c (processor_costs): Move to ...
12065         * config/rs6000/rs6000.h: ... here.
12066         (rs6000_cost): Declare.
12067
12068 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
12069
12070         * except.c (setjmp_fn): New global variable.
12071         (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
12072         (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
12073         if DONT_USE_BUILTIN_SETJMP is defined.
12074
12075 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12076
12077         * target.def (insn_cost): New hook.
12078         * doc/tm.texi.in (TARGET_INSN_COST): New hook.
12079         * doc/tm.texi: Regenerate.
12080         * rtlanal.c (insn_cost): Use the new hook.
12081
12082 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12083
12084         * combine.c (combine_validate_cost): Compute the new insn_cost,
12085         not just pattern_cost.
12086         (try_combine): Adjust comment.
12087
12088 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12089
12090         * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
12091         insn_cost.
12092         * combine.c (uid_insn_cost): Adjust comment.
12093         (combine_validate_cost): Adjust comment.  Use pattern_cost instead
12094         of insn_rtx_cost
12095         (combine_instructions): Use insn_cost instead of insn_rtx_cost.
12096         * dse.c (find_shift_sequence): Ditto.
12097         * ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
12098         (bb_valid_for_noce_process_p): Use pattern_cost.
12099         * rtl.h (insn_rtx_cost): Delete.
12100         (pattern_cost): New prototype.
12101         (insn_cost): New prototype.
12102         * rtlanal.c (insn_rtx_cost): Rename to...
12103         (pattern_cost): ... this.
12104         (insn_cost): New.
12105
12106 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
12107
12108         * config/i386/i386.md (*jcc_2): Remove insn pattern.
12109         (*jcc<mode>_0_r_i387): Ditto.
12110         (*jccxf_r_i387): Ditto.
12111         (*jcc<mode>_r_i387): Ditto.
12112         (*jccu<mode>_r_i387): Ditto.
12113         (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
12114         (*jcc): Rename from *jcc_1.
12115
12116 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12117
12118         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
12119         deferred rescans after the lvx/stvx recombination pre-pass.
12120
12121 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
12122
12123         * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
12124         memory operation instruction support.
12125         * config.gcc (powerpc*-*-*): Include amo.h as an extra header.
12126         (rs6000-ibm-aix[789]*): Likewise.
12127         * doc/extend.texi (PowerPC Atomic Memory Operation Functions):
12128         Document new functions.
12129
12130 2017-10-09  Richard Biener  <rguenther@suse.de>
12131
12132         PR tree-optimization/82397
12133         * tree-data-ref.c (data_ref_compare_tree): Make sure to return
12134         equality only for semantically equal trees.
12135
12136 2017-10-09  Richard Biener  <rguenther@suse.de>
12137
12138         PR tree-optimization/82449
12139         * sese.c (scev_analyzable_p): Check whether the SCEV is linear.
12140         * tree-chrec.h (evolution_function_is_constant_p): Adjust to
12141         allow constant addresses.
12142         * tree-chrec.c (scev_is_linear_expression): Constant evolutions
12143         are linear.
12144
12145 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12146
12147         * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
12148         flags.
12149
12150 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12151
12152         PR target/82463
12153         * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
12154         definitions.
12155
12156 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12157
12158         PR target/82465
12159         * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
12160
12161 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
12162
12163         PR target/82464
12164         * config/s390/s390-builtins.def (s390_vec_xor_flt_a,
12165         s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
12166
12167 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
12168
12169         * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
12170         (WI_BINARY_PREDICATE_RESULT): Likewise.
12171         (wi::binary_traits::operator_result): New type.
12172         (wi::binary_traits::predicate_result): Likewise.
12173         (generic_wide_int::operator~, unary generic_wide_int::operator-)
12174         (generic_wide_int::operator==, generic_wide_int::operator!=)
12175         (generic_wide_int::operator&, generic_wide_int::and_not)
12176         (generic_wide_int::operator|, generic_wide_int::or_not)
12177         (generic_wide_int::operator^, generic_wide_int::operator+
12178         (binary generic_wide_int::operator-, generic_wide_int::operator*):
12179         Delete.
12180         (operator~, unary operator-, operator==, operator!=, operator&)
12181         (operator|, operator^, operator+, binary operator-, operator*): New
12182         functions.
12183         * expr.c (get_inner_reference): Use wi::bit_and_not.
12184         * fold-const.c (fold_binary_loc): Likewise.
12185         * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
12186         * tree-ssa-ccp.c (get_value_from_alignment): Likewise.
12187         (bit_value_binop): Likewise.
12188         * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
12189         * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
12190         (extract_range_from_binary_expr_1): Likewise.
12191         (masked_increment): Likewise.
12192         (simplify_bit_ops_using_ranges): Likewise.
12193
12194 2017-10-09  Martin Jambor  <mjambor@suse.cz>
12195
12196         PR hsa/82416
12197         * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
12198         * hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
12199         (hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
12200         COMPLEX types.
12201         (hsa_fixup_mov_insn_type): New function.
12202         (hsa_op_with_type::get_in_type): Use it.
12203         (hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
12204         immediates in an assert.
12205         (hsa_op_with_type::extend_int_to_32bit): New method.
12206         (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
12207         types.  Convert to dest type if necessary.
12208         (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
12209         (reg_for_gimple_ssa): Pass false as min32int to
12210         hsa_type_for_scalar_tree_type.
12211         (gen_hsa_addr): Fixup type when creating addresable temporary.
12212         (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
12213         (gen_hsa_unary_operation): Extend operands and convert to dest type if
12214         necessary.  Call hsa_fixup_mov_insn_type.
12215         (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
12216         extend operands and convert to dest type if necessary.
12217         (gen_hsa_insns_for_operation_assignment): Extend operands and convert
12218         to dest type if necessary.
12219         (set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
12220         if conversion nt necessary and size matches.
12221         (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
12222         to dest type if necessary.
12223         (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
12224         (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
12225         necessary.
12226         (gen_hsa_clrsb): Likewise.
12227         (gen_hsa_ffs): Likewise.
12228         (gen_hsa_divmod): Extend operands and convert to dest type if
12229         necessary.
12230         (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
12231
12232 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12233
12234         * config/rs6000/rs6000.md (conditional branch): Clean up formatting.
12235         Remove empty default arguments.  Use a brace block as output
12236         statement.
12237         (conditional return): Ditto.
12238         (jump): Ditto.
12239         (indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
12240         (tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
12241         Ditto.
12242         (group_ending_nop): Ditto.
12243         (doloop_end): Ditto.
12244         (ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
12245         (splitters for those): Ditto.
12246
12247 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12248
12249         * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
12250         a conditional jump (and the compare for it) so that pc_rtx is the
12251         last operand.
12252         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
12253         for the deleted and renamed ctr<mode>_internal[234] patterns.
12254         * config/rs6000/rs6000.md: Delete second conditional branch pattern.
12255         Delete second conditional return pattern.
12256         (ctr<mode>_internal2): Delete this second bdnz pattern.
12257         (ctr<mode>_internal3): Rename to ctr<mode>_internal2.
12258         (ctr<mode>_internal4): Delete this second bdz pattern.
12259
12260 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12261
12262         * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
12263         (always_initialized_rtx_for_ssa_name_p): New predicate.
12264         * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
12265         (finish_out_of_ssa): Free new field of SA.
12266         * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
12267         * tree-ssa-coalesce.c: Include tree-ssa.h.
12268         (get_parm_default_def_partitions): Remove extern keyword.
12269         (get_undefined_value_partitions): New function.
12270         * expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
12271         not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
12272         uninitialized bits.
12273         * loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
12274
12275 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12276
12277         * builtins.def (BUILT_IN_SETJMP): Revert latest change.
12278
12279 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12280
12281         * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
12282         for targets that preffer 128bit.
12283
12284 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12285
12286         * config/i386/i386.c (has_dispatch): Disable for Ryzen.
12287
12288 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12289
12290         * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
12291         on the target mem instead of RTX_FRAME_RELATED_P on the insn to
12292         prevent DSE.
12293         (thumb_set_return_address): Likewise.
12294
12295 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12296
12297         * common/config/arm/arm-common.c (arm_except_unwind_info):
12298         Handle DWARF2_UNWIND_INFO.
12299
12300 2017-10-07  Michael Collison <michael.collison@arm.com>
12301
12302         * config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
12303         New pattern.
12304
12305 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
12306
12307         * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
12308         of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
12309         * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
12310         defined, force the creation of a new block for a dispatch label.
12311
12312 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
12313
12314         * invoke.texi (Wsuggest-attribute=cold): Document.
12315         * common.opt (Wsuggest-attribute=cold): New
12316         * ipa-pure-const.c (warn_function_cold): New function.
12317         * predict.c (compute_function_frequency): Use it.
12318         * predict.h (warn_function_cold): Declare.
12319
12320 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
12321
12322         * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
12323         Update profile.
12324
12325 2017-10-06  Martin Liska  <mliska@suse.cz>
12326
12327         * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
12328         keyword for member functions.
12329         (struct sanopt_tree_couple): New struct.
12330         (struct sanopt_tree_couple_hash): New function.
12331         (struct sanopt_ctx): Add new hash_map.
12332         (has_dominating_ubsan_ptr_check): New function.
12333         (record_ubsan_ptr_check_stmt): Likewise.
12334         (maybe_optimize_ubsan_ptr_ifn): Likewise.
12335         (sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
12336         (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
12337
12338 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
12339
12340         PR target/82440
12341         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
12342         aarch64_simd_valid_immediate on CONST_VECTORs.
12343         (aarch64_reg_or_bic_imm): Likewise.
12344
12345 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
12346
12347         PR rtl-optimization/82396
12348         * haifa-sched.c (ready_sort_real): Disable qsort checking.
12349
12350 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
12351
12352         * graphite-dependences.c (scop_get_reads): Move code to...
12353         (scop_get_must_writes): Move code to...
12354         (scop_get_may_writes): Move code to...
12355         (scop_get_reads_and_writes): ... here.
12356         (scop_get_dependences): Call scop_get_reads_and_writes.
12357
12358 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
12359
12360         PR tree-optimization/82434
12361         * fold-const.h (can_native_encode_type_p,
12362         can_native_encode_string_p): Remove.
12363         * fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
12364         don't encode anything, just return what would be otherwise returned.
12365         (native_encode_fixed, native_encode_complex, native_encode_vector):
12366         Likewise.
12367         (native_encode_string): Likewise.  Inline by hand
12368         can_native_encode_string_p.
12369         (can_native_encode_type_p): Remove.
12370         (can_native_encode_string_p): Remove.
12371         * tree-vect-stmts.c (vectorizable_store): Instead of testing just
12372         STRING_CSTs using can_native_encode_string_p, test all
12373         CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
12374         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
12375         argument from native_encode_expr.
12376         (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
12377         (pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
12378         but just 2.
12379
12380 2017-10-06  Richard Biener  <rguenther@suse.de>
12381
12382         PR tree-optimization/82397
12383         * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
12384         operand_equal_p but rely on data_ref_compare_tree for detecting
12385         equalities.
12386         (vect_analyze_data_ref_accesses): Use data_ref_compare_tree
12387         to match up with dr_group_sort_cmp.
12388
12389 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12390
12391         PR target/82322
12392         * config/s390/s390-builtins.def (s390_vfi): Define new overloaded
12393         builtin.
12394         * config/s390/s390-builtin-types.def: Regenerate.
12395
12396 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12397
12398         PR target/82317
12399         * config/s390/s390-builtin-types.def: Regenerate.
12400         * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
12401         Change flag from B_VXE to B_VX.
12402         (s390_vec_min_dbl): Remove B_VXE flag.
12403
12404 2017-10-06  Richard Biener  <rguenther@suse.de>
12405
12406         * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
12407         (translate_isl_ast_to_gimple::translate_pending_phi_nodes,
12408         translate_isl_ast_to_gimple::is_valid_rename,
12409         translate_isl_ast_to_gimple::get_rename,
12410         translate_isl_ast_to_gimple::get_def_bb_for_const,
12411         translate_isl_ast_to_gimple::get_new_name,
12412         translate_isl_ast_to_gimple::collect_all_ssa_names,
12413         translate_isl_ast_to_gimple::copy_loop_phi_args,
12414         translate_isl_ast_to_gimple::collect_all_ssa_names,
12415         translate_isl_ast_to_gimple::copy_loop_phi_args,
12416         translate_isl_ast_to_gimple::copy_loop_phi_nodes,
12417         translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
12418         translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
12419         translate_isl_ast_to_gimple::copy_loop_close_phi_args,
12420         translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
12421         translate_isl_ast_to_gimple::copy_cond_phi_args,
12422         translate_isl_ast_to_gimple::copy_cond_phi_nodes,
12423         translate_isl_ast_to_gimple::edge_for_new_close_phis,
12424         translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
12425         translate_isl_ast_to_gimple::rename_uses,
12426         translate_isl_ast_to_gimple::rename_all_uses): Remove.
12427         (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
12428         (set_rename_for_each_def): Likewise.
12429         (graphite_copy_stmts_from_block): Handle debug stmt resetting
12430         here.  Handle rewriting SCEV analyzable uses here.
12431         (copy_bb_and_scalar_dependences): Generate code for PHI
12432         copy-in/outs.
12433         (graphite_regenerate_ast_isl): Adjust.
12434         * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
12435         (add_write, add_read): New functions.
12436         (build_cross_bb_scalars_def): Use it and simplify.
12437         (build_cross_bb_scalars_use): Likewise.
12438         (graphite_find_cross_bb_scalar_vars): Inline into...
12439         (try_generate_gimple_bb): ...here.  Add dependences for PHIs,
12440         simulating out-of-SSA.  Compute liveout and add dependencies.
12441         (build_scops): Force an empty entry block.
12442         * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
12443         members.
12444         (sese_build_liveouts): Declare.
12445         (sese_trivially_empty_bb_p): Likewise.
12446         * sese.c (sese_build_liveouts_bb): Properly handle PHIs,
12447         compute liveout and debug_liveout.
12448         (sese_bad_liveouts_use): Remove.
12449         (sese_reset_debug_liveouts_bb): Likewise.
12450         (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
12451         (sese_build_liveouts): Build liveout and debug_liveout and store
12452         it in region.
12453         (new_sese_info): Adjust.
12454         (free_sese_info): Likewise.
12455         (sese_insert_phis_for_liveouts): Reset debug stmts from here,
12456         do not build liveout here.
12457         (move_sese_in_condition): Adjust region entry.
12458         (scev_analyzable_p): Match up with chrec_apply requirements.
12459         (sese_trivially_empty_bb_p): New.
12460         * tree-into-ssa.c (get_reaching_def): Properly support generating
12461         default-defs for incremental rewrite of anonymous names.
12462
12463 2017-10-06  Richard Biener  <rguenther@suse.de>
12464
12465         * graphite-sese-to-poly.c (extract_affine): For casts increasing
12466         precision do not perform modulo reduction.
12467
12468 2017-10-06  Richard Biener  <rguenther@suse.de>
12469
12470         PR tree-optimization/82436
12471         * tree-vect-slp.c (vect_supported_load_permutation_p): More
12472         conservatively choose the vectorization factor when checking
12473         whether we can perform the required load permutation.
12474         (vect_transform_slp_perm_load): Assert when we may not fail.
12475
12476 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
12477
12478         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
12479         message for incompatible -msdata=* and -mcall-* options.
12480
12481 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12482
12483         * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
12484         rate for post-reload scheduling.
12485
12486 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12487
12488         * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
12489
12490 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12491
12492         * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
12493         to improve monte carlo in scimark.
12494
12495 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12496
12497         * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
12498         pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
12499         athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
12500         pentium4_cost, nocona_cost): Set reassociation width to 1.
12501         (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
12502         width to 2 for fp operations and 1 otherwise.
12503         (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
12504         for int and fp.
12505         (atom_cost): Set reassociation width to 2.
12506         (slm_cost, generic_cost): Set fp reassociation width
12507         to 2 and 1 otherwise.
12508         (intel_cost): Set fp reassociation width to 4 and 1 otherwise.
12509         (core_cost): Set fp reassociation width to 4 and vector to 2.
12510         (ix86_reassociation_width): Rewrite using cost table; special case
12511         plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
12512         and TARGET_AVX128_OPTIMAL.
12513         * config/i386/i386.h (processor_costs): Add
12514         reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
12515         (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
12516         TARGET_REASSOC_FP_TO_PARALLEL): Remove.
12517         * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
12518         (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
12519         (X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
12520
12521 2017-10-05  Nathan Sidwell  <nathan@acm.org>
12522
12523         * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
12524
12525 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12526
12527         * config/arm/arm.c (arm_test_fpu_data): New.
12528         (arm_run_selftests): Call arm_test_fpu_data.
12529
12530 2017-10-04  Nathan Sidwell  <nathan@acm.org>
12531
12532         * toplev.c (toplev::main): Remove excess parens on pretty_printer
12533         decl.
12534         * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
12535
12536 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
12537
12538         * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
12539         check type for aarch64_simd_valid_immediate.
12540         (aarch64_output_simd_mov_immediate): Update prototype.
12541         (aarch64_simd_valid_immediate): Update prototype.
12542         * config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
12543         support for ORR-immediate.
12544         (and<mode>3): modified pattern to add support for BIC-immediate.
12545         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
12546         now checks for valid immediate for BIC and ORR based on new enum
12547         argument.
12548         (aarch64_output_simd_mov_immediate): Function now used to output
12549         BIC/ORR imm as well based on new enum argument.
12550         * config/aarch64/constraints.md (Do): New vector immediate constraint.
12551         (Db) : Likewise.
12552         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
12553         (aarch64_reg_or_bic_imm): Likewise.
12554
12555 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12556
12557         * config/s390/vx-builtins.md ("vec_mergeh<mode>")
12558         ("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
12559
12560 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12561
12562         Revert r253399:
12563
12564         PR rtl-optimization/82396
12565         * haifa-sched.c (autopref_multipass_init): Simplify
12566         initialization.
12567         (autopref_rank_data): Simplify sort order.
12568         * sched-int.h (autopref_multipass_data_): Remove
12569         multi_mem_insn_p, min_offset and max_offset.
12570
12571 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12572
12573         * doc/sourcebuild.texi: Document vect_peeling_profitable.
12574
12575 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12576
12577         * doc/sourcebuild.texi: Document vect_intdouble_cvt and
12578         vect_doubleint_cvt.
12579
12580 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12581
12582         * doc/sourcebuild.texi: Document vect_long_mult.
12583
12584 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
12585
12586         PR tree-optimization/82413
12587         * fold-const.c (build_range_check): Use widest_int when comparing
12588         the maximum ETYPE value with HIGH.
12589
12590 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12591
12592         PR rtl-optimization/82396
12593         * haifa-sched.c (autopref_multipass_init): Simplify
12594         initialization.
12595         (autopref_rank_data): Simplify sort order.
12596         * sched-int.h (autopref_multipass_data_): Remove
12597         multi_mem_insn_p, min_offset and max_offset.
12598
12599 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
12600
12601         PR tree-optimization/82381
12602         * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
12603         oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
12604         is not.
12605
12606         PR tree-optimization/82374
12607         * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
12608         DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
12609         DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
12610         current_function_decl to the new decl.
12611
12612 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
12613
12614         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
12615         helper macro for IEEE float128 hardware built-in functions.
12616         (SQRTF128_ODD): Add built-in functions with the round-to-odd
12617         semantics.
12618         (TRUNCF128_ODD): Likewise.
12619         (ADDF128_ODD): Likewise.
12620         (SUBF128_ODD): Likewise.
12621         (MULF128_ODD): Likewise.
12622         (DIVF128_ODD): Likewise.
12623         (FMAF128_ODD): Likewise.
12624         * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
12625         UNSPEC_TRUNC_ROUND_TO_ODD.
12626         (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
12627         (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
12628         floating point round to odd instructions.
12629         (UNSPEC_SUB_ROUND_TO_ODD): Likewise.
12630         (UNSPEC_MUL_ROUND_TO_ODD): Likewise.
12631         (UNSPEC_DIV_ROUND_TO_ODD): Likewise.
12632         (UNSPEC_FMA_ROUND_TO_ODD): Likewise.
12633         (UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
12634         (trunc<mode>sf2_hw): Change the truncate with round to odd
12635         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
12636         (add<mode>3_odd): Add insns for IEEE 128-bit floating point round
12637         to odd hardware instructions.
12638         (sub<mode>3_odd): Likewise.
12639         (mul<mode>3_odd): Likewise.
12640         (div<mode>3_odd): Likewise.
12641         (sqrt<mode>2_odd): Likewise.
12642         (fma<mode>4_odd): Likewise.
12643         (fms<mode>4_odd): Likewise.
12644         (nfma<mode>4_odd): Likewise.
12645         (nfms<mode>4_odd): Likewise.
12646         (trunc<mode>df2_odd): Change the truncate with round to odd
12647         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
12648         function.
12649         * doc/extend.texi (PowerPC built-in functions): Update documentation
12650         for existing IEEE float128-bit built-in functions.  Add built-in
12651         functions that generate the IEEE 128-bit floating point round to
12652         odd instructions.
12653
12654 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
12655
12656         PR rtl-optimization/77729
12657         * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
12658         to (X&(C1&~C2))|C2 transformations.
12659
12660 2017-10-03  Martin Jambor  <mjambor@suse.cz>
12661
12662         PR tree-optimization/82363
12663         * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
12664         mismatch, mark lacc written regardless of racc.
12665
12666 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
12667
12668         PR tree-optimization/82381
12669         * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
12670         stmt_to_insert nor wheather SSA_NAMEs are default defs.
12671         Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
12672         fallthrough into reassoc_stmt_dominates_stmt_p.
12673
12674         PR target/82386
12675         * combine.c (combine_instructions): Don't combine in unreachable
12676         basic blocks.
12677
12678 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
12679
12680         PR target/80210
12681         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
12682         function to not use the have_cpu variable.  Do not set cpu_index,
12683         rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
12684         or the default cpu.
12685         (rs6000_valid_attribute_p): Remove duplicate initializations of
12686         old_optimize and func_optimize.
12687         (rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
12688         (rs6000_activate_target_options): Make global.
12689         * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
12690         prototype.
12691
12692 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
12693
12694         * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
12695         if *poffset + *pmax_size overflows in HOST_WIDE_INT.
12696         Set *poffset to 0 and *psize and *pmax_size to -1 if
12697         *poffset + *psize overflows in HOST_WIDE_INT.
12698
12699         PR tree-optimization/82387
12700         PR tree-optimization/82388
12701         PR tree-optimization/82389
12702         * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
12703         instead of live_bytes non-NULL.
12704
12705 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
12706
12707         PR target/41076
12708         * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
12709         alternative.
12710
12711 2017-10-02  Richard Biener  <rguenther@suse.de>
12712
12713         * graphite-isl-ast-to-gimple.c (set_codegen_error): With
12714         -fchecking and --param graphite-allow-codegen-errors=0 ICE.
12715         * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
12716
12717 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
12718
12719         * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
12720         requested precision matches the type's.
12721         * calls.c (alloc_max_size): Calculate the new candidate size as
12722         a widest_int and use wi::to_widest when comparing it with the
12723         current candidate size.
12724         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
12725         zero rather than integer_zero_node.
12726         * match.pd: Check for a no-op conversion before using wi::add
12727         rather than after.  Use tree_to_uhwi when summing small shift
12728         counts into an unsigned int.
12729
12730 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
12731             Alan Hayward  <alan.hayward@arm.com>
12732             David Sherwood  <david.sherwood@arm.com>
12733
12734         PR target/71307
12735         * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
12736         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
12737         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
12738         POINTER_AND_FP_REGS.
12739
12740 2017-10-02  Richard Biener  <rguenther@suse.de>
12741
12742         PR tree-optimization/82355
12743         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
12744         a mapping for the enclosing loop but avoid generating one for
12745         the loop tree root.
12746         (copy_bb_and_scalar_dependences): Remove premature codegen
12747         error on PHIs in blocks duplicated into multiple places.
12748         * graphite-scop-detection.c
12749         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
12750         in the region use it as loop and nest to analyze the DR in.
12751         (try_generate_gimple_bb): Likewise.
12752         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
12753         (add_loop_constraints): For blocks in a loop not in the region
12754         create a dimension with a single iteration.
12755         * sese.h (gbb_loop_at_index): Remove assert.
12756
12757 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
12758
12759         * omp-expand.c (adjust_context_scope): New function.
12760         (expand_parallel_call): Call adjust_context_scope.
12761
12762 2017-10-01  Jeff Law  <law@redhat.com>
12763
12764         * tree-ssa-dom.c (optimize_stmt): Make this a method within the
12765         dom_opt_dom_walker class with direct access to private members.
12766         Add comments.  Call test_for_singularity.
12767         (dom_opt_dom_walker::before_dom_children): Corresponding changes.
12768         (dom_opt_dom_walker::after_dom_children): Do not lazily initialize
12769         m_dummy_cond anymore.
12770         (class dom_opt_dom_walker): Initialize m_dummy_cond member in the
12771         class ctor.
12772         (pass_dominator:execute): Build the dummy_cond here and pass it
12773         to the dom_opt_dom_walker ctor.
12774         (test_for_singularity): New function.
12775
12776 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
12777             Maya Rashish  <coypu@sdf.org>
12778
12779         * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
12780         netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
12781         (alpha*-*-netbsd*) Use nbsd_tm_file.
12782         (arm*-*-netbsdelf*) Likewise.
12783         (i[34567]86-*-netbsdelf*) Likewise.
12784         (x86_64-*-netbsd*) Likewise.
12785         (mips*-*-netbsd*) Likewise.
12786         (powerpc-*-netbsd*) Likewise.
12787         (sh*-*-netbsd*) Likewise.
12788         (sparc-*-netbsdelf*) Likewise.
12789         (sparc64-*-netbsd*) Likewise.
12790         (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
12791         to tm_defines.
12792         (vax-*-netbsdelf*) Likewise.
12793         * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
12794         (UINT_FAST8_TYPE) Likewise.
12795         (INT_FAST16_TYPE) Check CHAR_FAST16.
12796         (UINT_FAST16_TYPE) Likewise.
12797
12798 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
12799
12800         PR target/82361
12801         * config/i386/i386.md
12802         (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
12803         (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
12804         *divmodsi4_zext_2): New define_insn_and_split.
12805         (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
12806         (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
12807         (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
12808         *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
12809         New define_insn_and_split.
12810         (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
12811         * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
12812         operands[1] having DImode when mode is SImode.
12813
12814         * config/i386/i386.c (ix86_split_idivmod): Use mode instead of
12815         always SImode for DIV and MOD in REG_EQUAL notes.
12816
12817 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
12818
12819         PR middle-end/82319
12820         * match.pd: Fix handling of NaNs in pattern.
12821
12822 2017-09-29  Jeff Law  <law@redhat.com>
12823
12824         * sbitmap.c (bitmap_bit_in_range_p): New function.
12825         * sbitmap.h (bitmap_bit_in_range_p): Prototype.
12826         * tree-ssa-dse.c (live_bytes_read): New function.
12827         (dse_classify_store): Ignore reads of dead bytes.
12828
12829         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
12830         typos and whitespace errors.
12831         * config/i386/predicates.md (address_no_seg_operand): Likewise.
12832         * config/s390/s390.c (s390_emit_prologue): Likewise.
12833
12834 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12835
12836         PR target/81481
12837         * ira-costs.c (scan_one_insn): Don't take into account PIC equiv
12838         with a symbol for LRA.
12839
12840 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12841
12842         PR rtl-optimization/82338
12843         * lra-constraints.c (inherit_in_ebb): Check usage_insns check.
12844
12845 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
12846
12847         * genmodes.c (calc_wider_mode): Suppress qsort macro.
12848         * system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
12849         (qsort_chk): Declare.
12850         * vec.c [CHECKING_P] (qsort_chk_error): New static function.
12851         (qsort_chk): New function.
12852
12853 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12854
12855         PR tree-optimization/82337
12856         * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
12857         phi definition if the PHI result appears in an abnormal PHI.
12858         (find_basis_for_base_expr): Don't record a basis if the LHS of the
12859         basis appears in an abnormal PHI.
12860
12861 2017-09-29  Richard Biener  <rguenther@suse.de>
12862
12863         * graphite-isl-ast-to-gimple.c
12864         (translate_isl_ast_to_gimple::set_codegen_error): New function.
12865         (binary_op_to_tree): Use it.
12866         (get_rename_from_scev): Likewise.
12867         (copy_loop_phi_nodes): Likewise.
12868         (copy_bb_and_scalar_dependences): Likewise.
12869         (translate_pending_phi_nodes): Likewise.
12870
12871 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
12872
12873         PR target/82339
12874         * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
12875         for movabsq $(i32 << shift), r64.
12876
12877 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
12878
12879         * config/i386/i386.c (ix86_print_operand_address_as): Do not check
12880         index when encoding %esp as %rsp to avoid 0x67 prefix.
12881
12882 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
12883
12884         * config/i386/i386.md (*movsf_internal, *movdf_internal):
12885         Return 256-bit AVX modes for TARGET_PREFER_AVX256.
12886
12887 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
12888
12889         * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
12890         Extensions with more than 16 double VFP registers.
12891         (cmse_nonsecure_entry_clear_before_return): Remove second entry of
12892         to_clear_mask and all code related to it.  Replace the remaining
12893         entry by a sbitmap and adapt code accordingly.
12894
12895 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
12896
12897         * brig-builtins.def: Change pure attributes to const.
12898
12899 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12900
12901         * config.gcc (default_gnu_indirect_function): Default to yes for
12902         sparc*-*-linux* with glibc.
12903
12904 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12905
12906         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
12907         (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
12908         when creating .init_array and .fini_array sections with priority
12909         specified.
12910
12911 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
12912
12913         PR target/71727
12914         * config/aarch64/aarch64.c
12915         (aarch64_builtin_support_vector_misalignment): Always return false
12916         when misalignment is unknown.
12917
12918 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
12919
12920         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
12921         this function to return false if the definition used by the swap
12922         instruction is artificial, or if the memory address from which the
12923         constant value is loaded is not represented by a base address held
12924         in a register or if the base address register is a frame or stack
12925         pointer.  Additionally, return false if the base address of the
12926         loaded constant is a SYMBOL_REF but is not considered to be a
12927         constant.
12928         (replace_swapped_load_constant): New function.
12929         (rs6000_analyze_swaps): Add a new pass to replace a swap of a
12930         loaded constant vector with a load of a swapped constant vector.
12931
12932 2017-09-27  Carl Love  <cel@us.ibm.com>
12933
12934         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
12935         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
12936         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
12937         fctiw instruction.
12938
12939 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
12940
12941         * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
12942         first, always call autopref_rank_data otherwise.
12943
12944 2017-09-27  Richard Biener  <rguenther@suse.de>
12945
12946         * graphite-scop-detection.c (find_scop_parameters): Move
12947         loop bound handling ...
12948         (gather_bbs::before_dom_children): ... here, avoiding the need
12949         to build scop_info->loop_nest.
12950         (record_loop_in_sese): Remove.
12951         * sese.h (sese_info_t::loop_nest): Remove.
12952         * sese.c (new_sese_info): Do not allocate loop_nest.
12953         (free_sese_info): Do not free loop_nest.
12954
12955 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
12956
12957         PR c++/82159
12958         * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
12959         lhs from calls if the lhs has addressable type.
12960
12961 2017-09-27  Richard Biener  <rguenther@suse.de>
12962
12963         * graphite.h (scop::max_alias_set): New member.
12964         * graphite-scop-detection.c: Remove references to non-existing
12965         --param in comments.
12966         (build_alias_sets): Record the maximum alias set used for drs.
12967         (build_scops): Support zero as unlimited for
12968         --param graphite-max-arrays-per-scop.
12969         * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
12970         and inline into ...
12971         (build_poly_sr_1): ... here.  Compute alias set based on the
12972         maximum alias set used for drs rather than
12973         PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
12974
12975 2017-09-27  Richard Biener  <rguenther@suse.de>
12976
12977         * graphite-optimize-isl.c (get_schedule_for_node_st): Allow
12978         --param loop-block-tile-size=0 to disable tiling.
12979
12980 2017-09-27  Richard Biener  <rguenther@suse.de>
12981
12982         * doc/invoke.texi (graphite-max-bbs-per-function): Remove.
12983         (graphite-max-nb-scop-params): Document special value zero.
12984         * domwalk.h (dom_walker::STOP): New symbolical constant.
12985         (dom_walker::dom_walker): Add optional parameter for bb to
12986         RPO mapping.
12987         (dom_walker::~dom_walker): Declare.
12988         (dom_walker::before_dom_children): Document STOP return value.
12989         (dom_walker::m_user_bb_to_rpo): New member.
12990         (dom_walker::m_bb_to_rpo): Likewise.
12991         * domwalk.c (dom_walker::dom_walker): Compute bb to RPO
12992         mapping here if not provided by the user.
12993         (dom_walker::~dom_walker): Free bb to RPO mapping if not
12994         provided by the user.
12995         (dom_walker::STOP): Define.
12996         (dom_walker::walk): Do not compute bb to RPO mapping here.
12997         Support STOP return value from before_dom_children to stop
12998         walking.
12999         * graphite-optimize-isl.c (optimize_isl): If the schedule
13000         is the same still generate code if -fgraphite-identity
13001         or -floop-parallelize-all are given.
13002         * graphite-scop-detection.c: Include cfganal.h.
13003         (gather_bbs::gather_bbs): Get and pass through bb to RPO
13004         mapping.
13005         (gather_bbs::before_dom_children): Return STOP for BBs
13006         not in the region.
13007         (build_scops): Compute bb to RPO mapping and pass it to
13008         the domwalk.  Treat --param graphite-max-nb-scop-params=0
13009         as not limiting the number of params.
13010         * graphite.c (graphite_initialize): Remove limit on the
13011         number of basic-blocks in a function.
13012         * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
13013         (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
13014         default value of 10.
13015
13016 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13017
13018         * config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
13019         Adjust code to eliminate needing to do the shift right 32-bits
13020         operation after XSCVDPSPN.
13021
13022 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13023
13024         * match.pd ((X / Y) == 0 -> X < Y): New pattern.
13025         ((X / Y) != 0 -> X >= Y): Likewise.
13026
13027 2017-09-26  Carl Love  <cel@us.ibm.com>
13028
13029         * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
13030         P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
13031         vector unsigned char vec_xl_len_r (unsigned char *, size_t);
13032         void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
13033         * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
13034         * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
13035         definitions and overloading.
13036         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case
13037         statement for P9V_BUILTIN_XST_LEN_R.
13038         (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
13039         * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
13040         define_expand and define_insn for the instructions and builtins.
13041         * doc/extend.texi: Update the built-in documentation file for the new
13042         built-in functions.
13043         * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
13044         define_insn for the instructions
13045
13046 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
13047
13048         PR target/39570
13049         * gcc/config/netbsd-protos.h: New file.
13050         * gcc/config/netbsd.c: New file.
13051         * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
13052         * gcc/config/t-netbsd: New file.
13053         * gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
13054         (tmake_file) Add t-netbsd.
13055         (extra_objs) Add netbsd.o.
13056
13057 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
13058
13059         PR fortran/82143
13060         PR fortran/82324
13061         * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
13062
13063 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13064
13065         * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
13066         sign extension from a vector register to a GPR by doing a 32-bit
13067         direct move and then an EXTSW.
13068         (extendsi<mode>2 splitter): Likewise.
13069         (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
13070         right or vector extract after doing XSCVDPSPN.  Use
13071         zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
13072         the GPRs.
13073         (movdi_from_sf_zero_ext): Likewise.
13074         (reload_gpr_from_vsxsf): Likewise.
13075         (p8_mfvsrd_4_disf): Delete, no longer used.
13076         (movsi_from_df): Optimize converting a DFmode to a SFmode, and
13077         then needing to move the SFmode to a GPR to use the XSCVDPSP
13078         instruction instead of FRSP and XSCVDPSPN.
13079         * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
13080         it is adjacent to the other XSCVSPDP insns.
13081         (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
13082         SFmode to be in traditional Altivec registers.
13083         (vsx_xscvdpspn): Eliminate useless alternative constraint.
13084         (vsx_xscvspdpn): Likewise.
13085         (vsx_xscvspdpn_scalar): Likewise.
13086
13087 2017-09-26  Martin Jambor  <mjambor@suse.cz>
13088
13089         * tree-sra.c (compare_access_positions): Put integral types first,
13090         stabilize sorting of integral types, remove conditions putting
13091         non-full-precision integers last.
13092         (sort_and_splice_var_accesses): Disable scalarization if a
13093         non-integert would be represented by a non-full-precision integer.
13094
13095 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
13096
13097         * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
13098         * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
13099         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
13100         * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
13101         Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
13102         conditionals inside the function instead of around it.  Call
13103         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
13104         (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
13105
13106 2017-09-26  Richard Biener  <rguenther@suse.de>
13107
13108         * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
13109         fold in ...
13110         (scop_detection::build_scop_breadth): ... this.  Removed.
13111         (scop_detection::loop_is_valid_in_scop): Fold into single caller.
13112         (scop_detection::harmful_stmt_in_bb): Likewise.
13113         (scop_detection::graphite_can_represent_stmt): Likewise.
13114         (scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
13115         (scop_detection::can_represent_loop): Remove recursion, fold in ...
13116         (scop_detection::can_represent_loop_1): ... this.  Removed.
13117         (scop_detection::harmful_loop_in_region): Simplify after inlining
13118         the above and remove more quadraticness.
13119         (build_scops): Adjust.
13120         * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
13121         quadraticness.
13122
13123 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
13124
13125         PR target/82267
13126         * config/i386/i386.c (ix86_print_operand_address_as): Only test
13127         REGNO (base) == SP_REG if base is a REG.
13128
13129         PR middle-end/35691
13130         * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
13131         if it is different SSA_NAME.
13132         (optimize_range_tests_cmp_bitwise): New function.
13133         (optimize_range_tests): Call it.
13134
13135 2017-09-26  Richard Biener  <rguenther@suse.de>
13136
13137         PR tree-optimization/82321
13138         * graphite.c (canonicalize_loop_closed_ssa): Properly check
13139         for the def being inside the loop.
13140
13141 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13142
13143         * config/s390/vx-builtins.md ("vmslg"): Add missing operand in
13144         assembler output.
13145         * config/s390/s390-builtins.def: Fix constraint on op4.
13146
13147 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13148
13149         * config/s390/s390.c (s390_expand_vec_compare): Use the new mode
13150         independent expanders.
13151         * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
13152         ("vec_ordered", "vec_unordered"): New expanders.
13153
13154 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13155
13156         * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
13157         for SFmode.
13158
13159 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13160
13161         * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
13162         vec_unpacks_lo_v16qi.
13163         ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
13164
13165 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13166
13167         * config/s390/vector.md ("vec_unpacks_lo_v4sf")
13168         ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
13169         ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
13170
13171 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13172
13173         * config/s390/predicates.md ("const_shift_by_byte_operand"): New
13174         predicate.
13175         * config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
13176         and V16QI.
13177         ("*vec_slb<mode>"): New insn pattern.
13178         ("vec_shr_<mode>"): New expander.
13179         * config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
13180         and force the shift count operand to V16QImode.
13181         ("vec_srb<mode>"): Set shift count mode to V16QI.
13182
13183 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13184
13185         * config/s390/vector.md ("vec_widen_umult_lo_<mode>")
13186         ("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
13187         ("vec_widen_smult_hi_<mode>"): New expander definitions.
13188
13189 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
13190
13191         PR target/82175
13192         * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
13193
13194 2017-09-26  Richard Biener  <rguenther@suse.de>
13195
13196         PR tree-optimization/82320
13197         * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
13198         isn't a change.
13199
13200 2017-09-25  Jeff Law  <law@redhat.com>
13201
13202         * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
13203         prototype for new argument.
13204         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
13205         mostly extracted from rs6000_emit_allocate_stack.
13206         (rs6000_emit_probe_stack_range_stack_clash): New function.
13207         (rs6000_emit_allocate_stack): Call
13208         rs6000_emit_probe_stack_range_stack_clash as needed.
13209         (rs6000_emit_probe_stack_range): Add additional argument
13210         to call to gen_probe_stack_range{si,di}.
13211         (output_probe_stack_range): New.
13212         (output_probe_stack_range_1): Renamed from output_probe_stack_range.
13213         (output_probe_stack_range_stack_clash): New.
13214         (rs6000_emit_prologue): Emit notes into dump file as requested.
13215         * rs6000.md (allocate_stack): Handle -fstack-clash-protection.
13216         (probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
13217         Add additional operand and pass it to output_probe_stack_range.
13218
13219 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
13220
13221         PR tree-optimization/82163
13222         * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
13223         (checking_verify_loop_closed_ssa): New parameter.
13224         * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
13225         (check_loop_closed_ssa_stmt): Delete.
13226         (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
13227         (verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
13228         (tree_transform_and_unroll_loop): Check loop closed ssa form only for
13229         changed loops.
13230
13231 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
13232
13233         * brig-builtins.def: Treat HSAIL barrier builtins as
13234         setjmp/longjump style functions.
13235
13236 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13237
13238         * target.def (constant_alignment): New hook.
13239         * defaults.h (CONSTANT_ALIGNMENT): Delete.
13240         * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
13241         (TARGET_CONSTANT_ALIGNMENT): ...this new hook.
13242         * doc/tm.texi: Regenerate.
13243         * targhooks.h (default_constant_alignment): Declare.
13244         (constant_alignment_word_strings): Likewise.
13245         * targhooks.c (default_constant_alignment): New function.
13246         (constant_alignment_word_strings): Likewise.
13247         * builtins.c (get_object_alignment_2): Use targetm.constant_alignment
13248         instead of CONSTANT_ALIGNMENT.
13249         * varasm.c (align_variable, get_variable_align, build_constant_desc)
13250         (force_const_mem): Likewise.
13251         * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
13252         * config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
13253         (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
13254         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13255         * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
13256         definition.
13257         * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
13258         * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13259         constant_alignment_word_strings.
13260         * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
13261         (CONSTANT_ALIGNMENT): Likewise.
13262         * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13263         (arm_constant_alignment): New function.
13264         * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
13265         * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13266         constant_alignment_word_strings.
13267         * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
13268         * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13269         constant_alignment_word_strings.
13270         * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
13271         * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13272         (cris_constant_alignment): New function.
13273         * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
13274         * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13275         (epiphany_constant_alignment): New function.
13276         * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
13277         * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13278         constant_alignment_word_strings.
13279         * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
13280         * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13281         constant_alignment_word_strings.
13282         * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
13283         * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13284         constant_alignment_word_strings.
13285         * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
13286         * config/i386/i386-protos.h (ix86_constant_alignment): Delete.
13287         * config/i386/i386.c (ix86_constant_alignment): Make static.
13288         Use the same interface as the target hook.
13289         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13290         * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
13291         * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13292         constant_alignment_word_strings.
13293         * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
13294         * config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
13295         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13296         * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
13297         * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13298         constant_alignment_word_strings.
13299         * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
13300         * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13301         constant_alignment_word_strings.
13302         * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
13303         * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13304         constant_alignment_word_strings.
13305         * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
13306         * config/microblaze/microblaze.c (microblaze_constant_alignment):
13307         New function.
13308         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13309         * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
13310         * config/mips/mips.c (mips_constant_alignment): New function.
13311         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13312         * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
13313         * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
13314         * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13315         (mmix_constant_alignment): Make static.  Use the same interface
13316         as the target hook.
13317         * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
13318         * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13319         constant_alignment_word_strings.
13320         * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
13321         * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13322         constant_alignment_word_strings.
13323         * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
13324         * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13325         constant_alignment_word_strings.
13326         * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
13327         * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13328         (rs6000_constant_alignment): New function.
13329         * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
13330         * config/riscv/riscv.c (riscv_constant_alignment): New function.
13331         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13332         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
13333         * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13334         (rs6000_constant_alignment): New function.
13335         * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
13336         * config/s390/s390.c (s390_constant_alignment): New function.
13337         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13338         * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
13339         * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13340         constant_alignment_word_strings.
13341         * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
13342         * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13343         (sparc_constant_alignment): New function.
13344         * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
13345         * config/spu/spu.c (spu_constant_alignment): New function.
13346         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13347         * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
13348         * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13349         constant_alignment_word_strings.
13350         * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
13351         * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13352         constant_alignment_word_strings.
13353         * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
13354         * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13355         constant_alignment_word_strings.
13356         * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
13357         * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13358         (visium_constant_alignment): New function.
13359         * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
13360         * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13361         (xtensa_constant_alignment): New function.
13362         * system.h (CONSTANT_ALIGNMENT): Poison.
13363
13364 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
13365
13366         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13367         for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
13368         (rs6000_builtin_valid_without_lhs): New helper function.
13369         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13370         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
13371
13372 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13373
13374         * target.h (vec_perm_indices): Use unsigned short rather than
13375         unsigned char.
13376         (auto_vec_perm_indices): Likewise.
13377         * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
13378         Use unsigned int rather than unsigned char.
13379         * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
13380
13381 2017-09-25  Richard Biener  <rguenther@suse.de>
13382
13383         * cfgloop.h (sort_sibling_loops): Declare.
13384         * cfgloop.c (sort_sibling_loops_cmp): New helper.
13385         (sort_sibling_loops): New function sorting the sibling loop list
13386         in RPO order.
13387         * graphite.c (graphite_transform_loops): Sort sibling loops.
13388
13389 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
13390
13391         * target.def (vec_perm_const_ok): Change sel parameter to
13392         vec_perm_indices.
13393         * optabs-query.c (can_vec_perm_p): Update accordingly.
13394         * doc/tm.texi: Regenerate.
13395         * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
13396         auto_vec_perm_indices and remove separate nelt field.
13397         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13398         (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
13399         (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
13400         (aarch64_expand_vec_perm_const): Update accordingly.
13401         (aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
13402         to vec_perm_indices.
13403         * config/arm/arm.c (expand_vec_perm_d): Change perm to
13404         auto_vec_perm_indices and remove separate nelt field.
13405         (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
13406         (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
13407         (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
13408         accordingly.
13409         (arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
13410         to vec_perm_indices.
13411         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
13412         sel to vec_perm_indices.
13413         * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
13414         * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
13415         * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
13416         Likewise.
13417         * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
13418         Likewise.
13419
13420 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
13421
13422         PR debug/82155
13423         * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
13424         on the FUNCTION_DECL function context if it has a DIE that is a
13425         declaration.
13426
13427 2017-09-25  Richard Biener  <rguenther@suse.de>
13428
13429         PR tree-optimization/82285
13430         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
13431         enumeral types.
13432
13433 2017-09-25  Tom de Vries  <tom@codesourcery.com>
13434
13435         PR target/80035
13436         PR target/81069
13437         * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
13438         noreturn function.
13439
13440 2017-09-25  Richard Biener  <rguenther@suse.de>
13441
13442         * graphite-optimize-isl.c (optimize_isl): Fail and dump if
13443         ISL errors other than isl_error_quota happen.  Dump if the
13444         schedule is the same.
13445         * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
13446         errors instead of aborting inside ISL.
13447
13448 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
13449
13450         PR target/80556
13451         * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
13452         of libgcc_eh for m64.
13453         * config/i386/darwin64.h: Likewise.
13454
13455 2017-09-25  Richard Biener  <rguenther@suse.de>
13456
13457         PR middle-end/82144
13458         * dwarf2out.c (gen_enumeration_type_die): Do not add alignment
13459         attribute for incomplete types nor twice for complete ones.
13460
13461 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
13462
13463         PR target/82267
13464         * config/i386/i386.c (ix86_print_operand_address_as): Encode
13465         %esp as %rsp to avoid 0x67 prefix if there is no index or base
13466         register.
13467
13468 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
13469
13470         PR bootstrap/82306
13471         * config/i386/i386.opt (mprefer-avx256): Use
13472         ix86_target_flags variable.
13473         * config/i386/i386.c (ix86_target_string): Move
13474         -mprefer-avx256 to flag2_opts.
13475
13476 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
13477
13478         PR middle-end/35691
13479         * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
13480         and x != -1 | y != -1 into (x & y) != -1.
13481
13482 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
13483
13484         * config.gcc: Add new case statement to set
13485         default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
13486         i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
13487         s390x-*-linux* case statements.   Added aarch64 to the list of
13488         supported architectures.
13489
13490 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13491
13492         PR tree-optimization/82289
13493         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
13494         STMT_VINFO_RELEVANT_P.
13495
13496 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13497             Alan Hayward  <alan.hayward@arm.com>
13498             David Sherwood  <david.sherwood@arm.com>
13499
13500         * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
13501         for VR_RANGE only; don't allow VR_ANTI_RANGE.
13502         (extract_range_from_binary_expr_1): Don't call
13503         extract_range_from_multiplicative_op_1 if !range_int_cst_p.
13504
13505 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13506             Alan Hayward  <alan.hayward@arm.com>
13507             David Sherwood  <david.sherwood@arm.com>
13508
13509         * target.def (preferred_vector_alignment): New hook.
13510         * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
13511         hook.
13512         * doc/tm.texi: Regenerate.
13513         * targhooks.h (default_preferred_vector_alignment): Declare.
13514         * targhooks.c (default_preferred_vector_alignment): New function.
13515         * tree-vectorizer.h (dataref_aux): Add a target_alignment field.
13516         Expand commentary.
13517         (DR_TARGET_ALIGNMENT): New macro.
13518         (aligned_access_p): Update commentary.
13519         (vect_known_alignment_in_bytes): New function.
13520         * tree-vect-data-refs.c (vect_calculate_required_alignment): New
13521         function.
13522         (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
13523         Calculate the misalignment based on the target alignment rather than
13524         the vector size.
13525         (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
13526         rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
13527         (vect_enhance_data_refs_alignment): Mask the byte misalignment with
13528         the target alignment, rather than masking the element misalignment
13529         with the number of elements in a vector.  Also use the target
13530         alignment when calculating the maximum number of peels.
13531         (vect_find_same_alignment_drs): Use vect_calculate_required_alignment
13532         instead of TYPE_ALIGN_UNIT.
13533         (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
13534         Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
13535         (vect_create_addr_base_for_vector_ref): Update call accordingly.
13536         (vect_create_data_ref_ptr): Likewise.
13537         (vect_setup_realignment): Realign by ANDing with
13538         -DR_TARGET_MISALIGNMENT.
13539         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
13540         the number of peels based on DR_TARGET_ALIGNMENT.
13541         * tree-vect-stmts.c (get_group_load_store_type): Compare the gap
13542         with the guaranteed alignment boundary when deciding whether
13543         overrun is OK.
13544         (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
13545         relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
13546         (ensure_base_align): Remove stmt_info parameter.  Get the
13547         target base alignment from DR_TARGET_ALIGNMENT.
13548         (vectorizable_store): Update call accordingly.   Interpret
13549         DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
13550         TYPE_ALIGN_UNIT.
13551         (vectorizable_load): Likewise.
13552
13553 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13554             Alan Hayward  <alan.hayward@arm.com>
13555             David Sherwood  <david.sherwood@arm.com>
13556
13557         * tree-vectorizer.h (vect_get_scalar_dr_size): New function.
13558         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
13559         (vect_enhance_data_refs_alignment): Likewise.
13560
13561 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13562
13563         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
13564         error.  Only quit immediately if parsing is complete.
13565         (BEGIN): Initialize fatal_err and parse_done.
13566         (begin fpu, end fpu): Check number of arguments.
13567         (begin arch, end arch): Likewise.
13568         (begin cpu, end cpu): Likewise.
13569         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
13570         (optalias): Likewise.
13571
13572 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13573
13574         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
13575         * config/arm/arm-isa.h: Delete.  Move definitions to ...
13576         * arm-cpus.in: ... here.  Use new feature and fgroup values.
13577         * config/arm/arm.c (arm_option_override): Use lower case for feature
13578         bit names.
13579         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
13580         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
13581         * config/arm/parsecpu.awk (END): Add new command 'isa'.
13582         (isa_pfx): Delete.
13583         (print_isa_bits_for): New function.
13584         (gen_isa): New function.
13585         (gen_comm_data): Use print_isa_bits_for.
13586         (define feature): New keyword.
13587         (define fgroup): New keyword.
13588         * config/arm/t-arm (TM_H): Remove.
13589         (GTM_H): Add arm-isa.h.
13590         (arm-isa.h): Add rule to generate file.
13591         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
13592         case for feature bit names.
13593
13594 2017-09-22  Richard Biener  <rguenther@suse.de>
13595
13596         * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
13597         single caller.
13598         (graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
13599         print of no dependency loops ...
13600         * graphite.c (graphite_transform_loops): ... here.
13601         (canonicalize_loop_closed_ssa_form): Work from inner to outer
13602         loops.
13603         (same_close_phi_node, remove_duplicate_close_phi,
13604         make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
13605         (canonicalize_loop_closed_ssa): ... here and simplify.
13606         * graphite-optimize-isl.c: Include tree-vectorizer.h.
13607         (optimize_isl): Use dump_printf_loc to tell when we stopped
13608         optimizing because of an ISL timeout.
13609
13610 2017-09-22  Richard Biener  <rguenther@suse.de>
13611
13612         PR tree-optimization/82291
13613         * tree-if-conv.c (predicate_mem_writes): Make sure to
13614         remove writes in blocks predicated with false.
13615
13616 2017-09-22  Richard Biener  <rguenther@suse.de>
13617
13618         * sese.c: Include cfganal.h.
13619         (if_region_set_false_region): Remove.
13620         (create_if_region_on_edge): Likewise.
13621         (move_sese_in_condition): Re-implement without destroying
13622         dominators.
13623
13624 2017-09-22  Richard Biener  <rguenther@suse.de>
13625
13626         * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
13627         Verify both BBs contain loop PHI nodes before dispatching to
13628         copy_loop_phi_args.
13629         (graphite_regenerate_ast_isl): Do not recompute dominators,
13630         do not verify three times.  Restructure for clarity.
13631         * graphite-scop-detection.c (same_close_phi_node,
13632         remove_duplicate_close_phi, make_close_phi_nodes_unique,
13633         defined_in_loop_p, canonicalize_loop_closed_ssa,
13634         canonicalize_loop_closed_ssa_form): Simplify, remove excess
13635         checking and SSA rewrite, move to ...
13636         * graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
13637         (graphite_initialize): Do not pass in ctx, do not reset the
13638         SCEV cache, compute only dominators.
13639         (graphite_transform_loops): Allocate ISL ctx after
13640         graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
13641         Maintain post-dominators only around build_scops.
13642         * sese.c (if_region_set_false_region): Make static.  Free
13643         and recompute dominators.
13644         (move_sese_in_condition): Assert we don't get called with
13645         post-dominators computed.
13646         * sese.h (if_region_set_false_region): Remove.
13647
13648 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
13649
13650         * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
13651         mode attribute for TARGET_AVX512VL.
13652
13653 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
13654
13655         * config/i386/i386.opt (mprefer-avx256): New option.
13656         * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
13657         to flag_opts.
13658         (ix86_preferred_simd_mode): Return 256-bit AVX modes
13659         for TARGET_PREFER_AVX256.
13660         * doc/invoke.texi (x86 Options): Document -mprefer-avx256.
13661
13662 2017-09-21  Jeff Law  <law@redhat.com>
13663
13664         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
13665         Fix dump output if the only stack space is for pushed registers.
13666
13667 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13668
13669         * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
13670         of insn_cost.
13671
13672 2017-09-21  Martin Sebor  <msebor@redhat.com>
13673
13674         PR c/81882
13675         * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
13676         code (in C++) or code that triggers warnings.
13677
13678 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
13679
13680         * stor-layout.c (bit_from_pos): Do not distribute the conversion.
13681
13682 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
13683
13684         * haifa-sched.c: Rename insn_cost to insn_sched_cost.
13685         * sched-rgn.c: Ditto.
13686         * sel-sched-ir.c: Ditto.
13687
13688 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
13689
13690         * toplev.h (set_random_seed): Adjust return type.
13691         * toplev.c (init_local_tick): Move eager initialization of random_seed
13692         to get_random_seed.  Adjust comment.
13693         (init_random_seed): Inline to get_random_seed, delete.
13694         (get_random_seed): Initialize random_seed lazily.
13695         (set_random_seed): Do not return previous value.
13696         (print_switch_value): Do not call get_random_seed.
13697
13698 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
13699
13700         * cgraph.c (delete_function_version): New, broken out from...
13701         (cgraph_node::delete_function_version): ...here.  Rename to
13702         cgraph_node::delete_function_version_by_decl.  Update all uses.
13703         (cgraph_node::remove): Call delete_function_version.
13704
13705 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
13706
13707         PR sanitizer/81715
13708         * tree-inline.c (expand_call_inline): Emit clobber stmts for
13709         VAR_DECLs to which addressable non-volatile parameters are mapped
13710         and for id->retvar after the return value assignment.  Clear
13711         id->retval and id->retbnd after inlining.
13712
13713 2017-09-21  Richard Biener  <rguenther@suse.de>
13714
13715         PR tree-optimization/82276
13716         PR tree-optimization/82244
13717         * tree-vrp.c (build_assert_expr_for): Set
13718         SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
13719         has it set.
13720         (remove_range_assertions): Revert earlier change.
13721
13722 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
13723
13724         PR target/71951
13725         * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
13726
13727 2017-09-21  Richard Biener  <rguenther@suse.de>
13728
13729         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
13730         Restore valid IL after code generation errors.
13731         * graphite.c (graphite_transform_loops): Diagnose code
13732         generation issues as MSG_MISSED_OPTIMIZATION and continue
13733         with processing SCOPs.
13734
13735 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13736             Alan Hayward  <alan.hayward@arm.com>
13737             David Sherwood  <david.sherwood@arm.com>
13738
13739         * calls.c (compute_argument_addresses): Use simplify_gen_binary
13740         rather than choosing between plus_constant and gen_rtx_<CODE>.
13741         * expr.c (emit_push_insn): Likewise.
13742         (expand_expr_real_2): Likewise.
13743
13744 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13745             Alan Hayward  <alan.hayward@arm.com>
13746             David Sherwood  <david.sherwood@arm.com>
13747
13748         * loop-unroll.c (split_iv): Call copy_rtx on the step.
13749
13750 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13751             Alan Hayward  <alan.hayward@arm.com>
13752             David Sherwood  <david.sherwood@arm.com>
13753
13754         * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
13755         calling tree_to_uhwi.
13756
13757 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13758             Alan Hayward  <alan.hayward@arm.com>
13759             David Sherwood  <david.sherwood@arm.com>
13760
13761         * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
13762         INTEGER_CST rather than a negative test for ADDR_EXPR.
13763
13764 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13765             Alan Hayward  <alan.hayward@arm.com>
13766             David Sherwood  <david.sherwood@arm.com>
13767
13768         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13769         int_cst_rangeN before calling value_range_constant_singleton (&vrN).
13770
13771 2017-09-21  Richard Biener  <rguenther@suse.de>
13772
13773         PR tree-optimization/71351
13774         * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
13775         graphite_create_new_loop_guard): Remove, fold remaining parts
13776         into caller ...
13777         (translate_isl_ast_node_for): ... here and simplify.
13778
13779 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
13780
13781         PR target/82260
13782         * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
13783         with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
13784         latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
13785         alternative always use QI mode, for -Os imov (=R,R) alternative
13786         always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
13787         ignore -Os.
13788
13789 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13790             Jeff Law  <law@redhat.com>
13791
13792         * config/s390/s390.c (MIN_UNROLL_PROBES): Define.
13793         (allocate_stack_space): New function, partially extracted from
13794         s390_emit_prologue.
13795         (s390_emit_prologue): Track offset to most recent stack probe.
13796         Code to allocate space moved into allocate_stack_space.
13797         Dump actions when no stack is allocated.
13798         (s390_prologue_plus_offset): New function.
13799         (s390_emit_stack_probe): Likewise.
13800
13801 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
13802
13803         * common.opt (Wa, Wl, Wp, g, gz=): Add
13804         RejectNegative.
13805         (gno-column-info): Remove.
13806         (gcolumn-info): Drop RejectNegative.
13807         (gno-): New prefix.
13808         (gno-record-gcc-switches): Remove.
13809         (grecord-gcc-switches): Drop RejectNegative.
13810         (gno-split-dwarf): Remove.
13811         (gsplit-dwarf): Drop RejectNegative.
13812         (gno-strict-dwarf): Remove.
13813         (gstrict-dwarf): Drop RejectNegative.
13814         * config/darwin.opt (gfull, gused): Add RejectNegative.
13815         * dwarf2out.c (gen_producer_string): Drop
13816         gno-record-gcc-switches handler.
13817         * optc-gen.awk: Add g to prefixes with negative forms.
13818         * opts-common.c (remapping_prefix_p): New.
13819         (find_opt): Check it.
13820         (generate_canonical_option): Test g prefix.
13821         (option_map): Add -gno- mapping.
13822         (add_misspelling_candidates): Check remapping_prefix_p.
13823
13824 2017-09-20  Jeff Law  <law@redhat.com>
13825
13826         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
13827         thinko in stack clash protection support.
13828
13829         * explow.c (compute_stack_clash_protection_loop_data): Use
13830         CONST_INT_P instead of explicit test.  Verify object is a
13831         CONST_INT_P before looking at INTVAL.
13832         (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
13833         instead of explicit test.
13834
13835 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
13836
13837         PR target/77687
13838         * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
13839         address instead of to r1 and r11.
13840
13841 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
13842
13843         * config.gcc: Support "knm".
13844         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
13845         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13846         PROCESSOR_KNM.
13847         * config/i386/i386.c (m_KNM): Define.
13848         (processor_target_table): Add "knm".
13849         (PTA_KNM): Define.
13850         (ix86_option_override_internal): Add "knm".
13851         (ix86_issue_rate): Add PROCESSOR_KNM.
13852         (ix86_adjust_cost): Ditto.
13853         (ia32_multipass_dfa_lookahead): Ditto.
13854         (get_builtin_code_for_version): Handle PROCESSOR_KNM.
13855         (fold_builtin_cpu): Add M_INTEL_KNM.
13856         * config/i386/i386.h (processor_costs): Define TARGET_KNM.
13857         (processor_type): Add PROCESSOR_KNM.
13858         * config/i386/x86-tune.def: Add m_KNM.
13859         * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
13860
13861 2017-09-20  Richard Biener  <rguenther@suse.de>
13862
13863         PR tree-optimization/80213
13864         * graphite-scop-detection.c (trivially_empty_bb_p): Labels
13865         are allowed in empty BBs as well.
13866         (canonicalize_loop_closed_ssa): Also look for other complex
13867         edges.
13868         (scop_detection::get_sese): Include the loop-closed PHI block
13869         in loop SESEs.
13870         (scop_detection::merge_sese): Remove code adding extra blocks.
13871         (scop_detection::region_has_one_loop): Adjust for get_sese changes.
13872         (build_scops): Assert the final returned scop is invalid.
13873
13874 2017-09-20  Richard Biener  <rguenther@suse.de>
13875
13876         PR tree-optimization/82264
13877         * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
13878         for GIMPLE_CONDs.
13879         (vn_phi_lookup): Likewise.
13880         (vn_phi_insert): Likewise.
13881
13882 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
13883
13884         * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
13885         that fits into uhwi or shwi, add DW_AT_const_value regardless
13886         of early_dwarf without going through RTL, using add_AT_unsigned
13887         or add_AT_int.
13888
13889         * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
13890         (DEBUG_LTO_ABBREV_SECTION): Likewise.
13891         (DEBUG_LTO_MACINFO_SECTION): Likewise.
13892         (DEBUG_MACRO_SECTION): Likewise.
13893         (DEBUG_LTO_MACRO_SECTION): Likewise.
13894         (DEBUG_STR_DWO_SECTION): Likewise.
13895         (DEBUG_LTO_STR_DWO_SECTION): Likewise.
13896         (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
13897         (DEBUG_LTO_DWO_LINE_SECTION): Define.
13898         (DEBUG_LTO_LINE_STR_SECTION): Define.
13899         (init_sections_and_labels): Initialize debug_line_str_section
13900         variable.  Initialize debug_loc_section for -gdwarf-5 to
13901         DEBUG_LOCLISTS_SECTION.  Formatting fixes.
13902
13903 2017-09-20  Richard Biener  <rguenther@suse.de>
13904
13905         * graphite-sese-to-poly.c (extract_affine): Properly handle
13906         POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
13907
13908 2017-09-20  Richard Biener  <rguenther@suse.de>
13909
13910         PR tree-optimization/81373
13911         * graphite-scop-detection.c (build_cross_bb_scalars_def):
13912         Force SESE live-out defs to be handled even if they are
13913         scev_analyzable_p.
13914
13915 2017-09-19  Jeff Law  <law@redhat.com>
13916
13917         * combine-stack-adj.c (combine_stack_adjustments_for_block): Do
13918         nothing for stack adjustments with REG_STACK_CHECK.
13919         * sched-deps.c (parse_add_or_inc): Reject insns with
13920         REG_STACK_CHECK from dependency breaking.
13921         * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
13922         (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
13923         * reg-notes.def (STACK_CHECK): New note.
13924
13925         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
13926         (ix86_expand_prologue): Dump stack clash info as needed.
13927         Call ix86_adjust_stack_and_probe_stack_clash as needed.
13928
13929         * function.c (dump_stack_clash_frame_info): New function.
13930         * function.h (dump_stack_clash_frame_info): Prototype.
13931         (enum stack_clash_probes): New enum.
13932
13933         * config/alpha/alpha.c (alpha_expand_prologue): Also check
13934         flag_stack_clash_protection.
13935         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
13936         (arm_expand_prologue, thumb1_expand_prologue): Likewise.
13937         (arm_frame_pointer_required): Likewise.
13938         * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
13939         (ia64_expand_prologue): Likewise.
13940         * config/mips/mips.c (mips_expand_prologue): Likewise.
13941         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
13942         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13943         (sparc_flat_expand_prologue): Likewise.
13944         * config/spu/spu.c (spu_expand_prologue): Likewise.
13945
13946         * explow.c: Include "params.h".
13947         (anti_adjust_stack_and_probe_stack_clash): New function.
13948         (get_stack_check_protect): Likewise.
13949         (compute_stack_clash_protection_loop_data): Likewise.
13950         (emit_stack_clash_protection_loop_start): Likewise.
13951         (emit_stack_clash_protection_loop_end): Likewise.
13952         (allocate_dynamic_stack_space): Use get_stack_check_protect.
13953         Use anti_adjust_stack_and_probe_stack_clash.
13954         * explow.h (compute_stack_clash_protection_loop_data): Prototype.
13955         (emit_stack_clash_protection_loop_start): Likewise.
13956         (emit_stack_clash_protection_loop_end): Likewise.
13957         * rtl.h (get_stack_check_protect): Prototype.
13958         * target.def (stack_clash_protection_final_dynamic_probe): New hook.
13959         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
13960         * targhooks.h (default_stack_clash_protection_final_dynamic_probe):
13961         Prototype.
13962         * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
13963         Add @hook.
13964         * doc/tm.texi: Rebuilt.
13965         * config/aarch64/aarch64.c (aarch64_expand_prologue): Use
13966         get_stack_check_protect.
13967         * config/alpha/alpha.c (alpha_expand_prologue): Likewise.
13968         * config/arm/arm.c (arm_expand_prologue): Likewise.
13969         (arm_frame_pointer_required): Likewise.
13970         * config/i386/i386.c (ix86_expand_prologue): Likewise.
13971         * config/ia64/ia64.c (ia64_expand_prologue): Likewise.
13972         * config/mips/mips.c (mips_expand_prologue): Likewise.
13973         * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
13974         * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
13975         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13976         (sparc_flat_expand_prologue): Likewise.
13977
13978         * common.opt (-fstack-clash-protection): New option.
13979         * flag-types.h (enum stack_check_type): Note difference between
13980         -fstack-check= and -fstack-clash-protection.
13981         * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
13982         (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
13983         * toplev.c (process_options): Issue warnings/errors for cases
13984         not handled with -fstack-clash-protection.
13985         * doc/invoke.texi (-fstack-clash-protection): Document new option.
13986         (-fstack-check): Note additional problem with -fstack-check=generic.
13987         Note that -fstack-check is primarily for Ada and refer users
13988         to -fstack-clash-protection for stack-clash-protection.
13989         Document new params for stack clash protection.
13990
13991 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
13992
13993         * config/i386/i386.c (ix86_split_long_move): Do not handle
13994         address used for LEA in a special way.
13995
13996 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
13997
13998         * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
13999
14000 2017-09-19  Martin Sebor  <msebor@redhat.com>
14001
14002         PR c/81854
14003         * cgraphunit.c (handle_alias_pairs): Reject aliases between functions
14004         of incompatible types.
14005
14006 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
14007
14008         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
14009         for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
14010         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14011         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
14012
14013 2017-09-19  Richard Biener  <rguenther@suse.de>
14014
14015         PR tree-optimization/82244
14016         * tree-vrp.c (remove_range_assertions): Do not propagate
14017         a constant to abnormals but replace the assert with a copy.
14018
14019 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
14020
14021         PR rtl-optimization/57878
14022         PR rtl-optimization/68988
14023         * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
14024         avoidance test involving non_reload_pseudos.  Move frequency test
14025         below the general fragmentation avoidance test.
14026
14027 2017-09-19  Richard Biener  <rguenther@suse.de>
14028
14029         PR tree-optimization/69728
14030         * graphite-sese-to-poly.c (schedule_error): New global.
14031         (add_loop_schedule): Handle empty domain by failing the
14032         schedule.
14033         (build_original_schedule): Handle schedule_error.
14034
14035 2017-09-19  Richard Biener  <rguenther@suse.de>
14036
14037         * graphite-scop-detection.c (scop_detection::can_represent_loop):
14038         Do not iterate to sibling loops but only to siblings of inner
14039         loops.
14040
14041 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
14042
14043         PR target/81613
14044         * config/m68k/m68k.md (moveq feeding equality comparison): Check
14045         that the registers are different.
14046
14047 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
14048
14049         * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
14050         to processor_model and "amdfam17h" to arch_names_table.
14051         * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
14052
14053 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14054
14055         PR c/82234
14056         * doc/extend.texi: Add @findex entry for __builtin_shuffle.
14057
14058 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14059             Alan Hayward  <alan.hayward@arm.com>
14060             David Sherwood  <david.sherwood@arm.com>
14061
14062         * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
14063         with a vec_info *.
14064         * tree-vect-loop.c (vect_analyze_loop_operations): Update call
14065         accordingly.
14066         * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
14067         parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
14068         vect_schedule_slp_instance.
14069         (vect_slp_analyze_operations): Replace parameters with a vec_info *.
14070         Update call to vect_slp_analyze_node_operations.  Simplify return
14071         value.
14072         (vect_slp_analyze_bb_1): Update call accordingly.
14073         (vect_schedule_slp_instance): Remove vectorization_factor parameter.
14074         Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
14075         (vect_schedule_slp): Update call accordingly.
14076
14077 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14078             Alan Hayward  <alan.hayward@arm.com>
14079             David Sherwood  <david.sherwood@arm.com>
14080
14081         * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
14082         with types that aren't in fact scalar.
14083
14084 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14085
14086         * tree-vect-slp.c (vect_record_max_nunits): New function,
14087         split out from...
14088         (vect_build_slp_tree_1): ...here.
14089         (vect_build_slp_tree_2): Call it for phis too.
14090
14091 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14092
14093         * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
14094         to vect_get_vec_def_for_operand when getting the mask operand.
14095
14096 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14097             Alan Hayward  <alan.hayward@arm.com>
14098             David Sherwood  <david.sherwood@arm.com>
14099
14100         * tree-vect-loop.c (vectorizable_live_operation): Fix type of
14101         bitstart.
14102
14103 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14104             Alan Hayward  <alan.hayward@arm.com>
14105             David Sherwood  <david.sherwood@arm.com>
14106
14107         * tree-vect-loop.c (vectorizable_live_operation): Fix element size
14108         calculation for vector booleans.
14109
14110 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14111             Alan Hayward  <alan.hayward@arm.com>
14112             David Sherwood  <david.sherwood@arm.com>
14113
14114         * tree-vect-stmts.c (can_vectorize_live_stmts): New function,
14115         split out from...
14116         (vect_transform_stmt): ...here.
14117         (vect_analyze_stmt): Use it instead of calling
14118         vectorizable_live_operation directly.
14119
14120 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
14121
14122         * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
14123         non-SIMT targets in acc vector loops.
14124
14125 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
14126
14127         * configure.ac: Add arc and check if assembler supports gdwarf2.
14128         * configure: Regenerate.
14129
14130 2017-09-18  Richard Biener  <rguenther@suse.de>
14131
14132         PR tree-optimization/82220
14133         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
14134         epilogue niters from the min_profitable_iters compute.
14135
14136 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14137
14138         PR target/82145
14139         * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
14140         changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
14141         (ix86_init_pic_reg): Revert 2017-09-01 changes.
14142
14143 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
14144
14145         PR target/81361
14146         * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
14147         switching to a new text section.
14148
14149 2017-09-18  Richard Biener  <rguenther@suse.de>
14150
14151         * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
14152         Simplify.
14153         (build_alias_set): Reject aliases with no access function.
14154
14155 2017-09-18  Richard Biener  <rguenther@suse.de>
14156
14157         PR tree-optimization/79622
14158         * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
14159         handle PHIs.
14160         (build_cross_bb_scalars_use): Likewise.
14161
14162 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
14163
14164         * cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
14165
14166 2017-09-18  Alan Modra  <amodra@gmail.com>
14167
14168         PR target/81996
14169         * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
14170         stack_pointer_rtx for count 0.  Update comments.  Break up
14171         large rtl expression.
14172
14173 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
14174
14175         * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
14176         Increase to 20 bytes.
14177         (xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
14178         (xlogue_layout::get_stub_name): Modify to select the appropairate sse
14179         or avx version of the stub.
14180
14181 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
14182
14183         PR target/82166
14184         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
14185         compute the minimum stack alignment.  Also update preferred stack
14186         boundary for leaf functions.
14187
14188 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
14189
14190         PR tree-optimization/82228
14191         * tree-vect-loop.c (vectorizable_live_operation): Move initialization
14192         of ncopies.
14193
14194 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14195
14196         * common/config/nds32/nds32-common.c
14197         (nds32_option_optimization_table): Refine formatting.
14198         (nds32_option_optimization_table): Use -fsched-pressure and
14199         -fomit-frame-pointer for specific optimization level.
14200
14201 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14202
14203         * config/nds32/nds32.c: Refine formatting and comments.
14204         * config/nds32/nds32.h: Likewise.
14205         * config/nds32/nds32.md: Likewise.
14206         * config/nds32/nds32-cost.c: Likewise.
14207         * config/nds32/nds32-isr.c: Likewise.
14208         * config/nds32/nds32-md-auxiliary.c: Likewise.
14209         * config/nds32/nds32-multiple.md: Likewise.
14210         * config/nds32/nds32-predicates.c: Likewise.
14211
14212 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
14213             Jakub Jelinek  <jakub@redhat.com>
14214
14215         Add support for -std=c++2a.
14216         * doc/cpp.texi (__cplusplus): Document value for -std=c++2a
14217         or -std=gnu+2a.
14218         * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
14219
14220 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
14221
14222         PR target/82066
14223         * doc/extend.texi (Common Function Attributes): Add 
14224         references to ARM, AArch64, and S/390 specific attributes.
14225         (Function Specific Option Pragmas): Add AArch64 and S/390
14226         to list of back ends that support the target pragma.
14227
14228 2017-09-15  Nathan Sidwell  <nathan@acm.org>
14229
14230         * doc/standards.texi: Fix C++17 description.  Update URLs for
14231         C++11 & 14.
14232
14233 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
14234
14235         * common.opt (Wcast-align=strict): New warning option.
14236         * doc/invoke.texi: Document -Wcast-align=strict. 
14237
14238 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
14239
14240         * cgraph.h (cgraph_thunk_info): Add comments.
14241         * cgraph.c (cgraph_node::create_thunk): Adjust comment, make
14242         assert for VIRTUAL_* arguments stricter.
14243
14244 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
14245
14246         PR tree-optimization/71026
14247         * match.pd: Move RDIV patterns from fold-const.c
14248         * fold-const.c (distribute_real_division): Removed.
14249         (fold_binary_loc): Remove calls to distribute_real_divison.
14250
14251 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14252
14253         * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
14254         c++1z and gnu++1z as deprecated.  Change other references to
14255         -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
14256         Change -Wc++1z-compat to -Wc++17-compat.
14257         * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
14258         * dwarf2out.c (highest_c_language): Handle C++17.
14259         (gen_compile_unit_die): Likewise.
14260
14261 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14262
14263         PR rtl-optimization/82192
14264         * combine.c (make_extraction): Don't look through non-paradoxical
14265         SUBREGs or TRUNCATE if pos + len is or might be bigger than
14266         inner's mode.
14267
14268 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14269             Alan Hayward  <alan.hayward@arm.com>
14270             David Sherwood  <david.sherwood@arm.com>
14271
14272         * target.def (function_arg_offset): New hook.
14273         * targhooks.h (default_function_arg_offset): Declare.
14274         * targhooks.c (default_function_arg_offset): New function.
14275         * function.c (locate_and_pad_parm): Use
14276         targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
14277         * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
14278         (TARGET_FUNCTION_ARG_OFFSET): ...this.
14279         * doc/tm.texi: Regenerate.
14280         * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
14281         * config/spu/spu.c (spu_function_arg_offset): New function.
14282         (TARGET_FUNCTION_ARG_OFFSET): Redefine.
14283         * system.h (FUNCTION_ARG_OFFSET): Poison.
14284
14285 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14286             Alan Hayard  <alan.hayward@arm.com>
14287             David Sherwood  <david.sherwood@arm.com>
14288
14289         * target.def (truly_noop_truncation): New hook.
14290         (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
14291         than TRULY_NOOP_TRUNCATION.
14292         * hooks.h (hook_bool_uint_uint_true): Declare.
14293         * hooks.c (hook_bool_uint_uint_true): New function.
14294         * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
14295         (TARGET_TRULY_NOOP_TRUNCATION): ...this.
14296         * doc/tm.texi: Regenerate.
14297         * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
14298         rather than TRULY_NOOP_TRUNCATION in comments.
14299         (simplify_comparison): Likewise.
14300         (record_truncated_value): Likewise.
14301         * expmed.c (extract_bit_field_1): Likewise.
14302         (extract_split_bit_field): Likewise.
14303         * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
14304         instead of TRULY_NOOP_TRUNCATION.
14305         * function.c (assign_parm_setup_block): Likewise.
14306         * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
14307         * rtlhooks.c: Include target.h.
14308         * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
14309         * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
14310         * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
14311         * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
14312         * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
14313         * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
14314         * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
14315         * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
14316         * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
14317         * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
14318         * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
14319         * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
14320         * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
14321         * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
14322         * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
14323         * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
14324         * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
14325         * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
14326         * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
14327         * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
14328         * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
14329         * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
14330         * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
14331         * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
14332         * config/mips/mips.c (mips_truly_noop_truncation): New function.
14333         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14334         * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14335         rather than TRULY_NOOP_TRUNCATION in comments.
14336         * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
14337         * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
14338         * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
14339         * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
14340         * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
14341         * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
14342         * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
14343         * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
14344         * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
14345         * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
14346         * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
14347         * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14348         rather than TRULY_NOOP_TRUNCATION in comments.
14349         * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
14350         * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
14351         * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
14352         * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
14353         * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
14354         TRULY_NOOP_TRUNCATION condition.
14355         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14356         (TRULY_NOOP_TRUNCATION): Delete.
14357         * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
14358         * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
14359         * config/spu/spu.c (spu_truly_noop_truncation): New function.
14360         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14361         * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
14362         * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
14363         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
14364         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14365         * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14366         rather than TRULY_NOOP_TRUNCATION in comments.
14367         * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
14368         * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
14369         * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
14370         * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
14371         * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
14372         * system.h (TRULY_NOOP_TRUNCATION): Poison.
14373
14374 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
14375
14376         PR target/67591
14377         * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
14378         (*cmp_ior): Likewise.
14379         (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
14380         (*ior_scc_scc_cmp): Likewise.
14381         (*and_scc_scc): Likewise.
14382         (*and_scc_scc_cmp): Likewise.
14383
14384 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14385             Alan Hayard  <alan.hayward@arm.com>
14386             David Sherwood  <david.sherwood@arm.com>
14387
14388         * target.def (can_change_mode_class): New hook.
14389         (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
14390         (hard_regno_nregs): Likewise.
14391         * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
14392         * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
14393         * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
14394         (TARGET_CAN_CHANGE_MODE_CLASS): ...this.
14395         (LOAD_EXTEND_OP): Update accordingly.
14396         * doc/tm.texi: Regenerate.
14397         * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
14398         CANNOT_CHANGE_MODE_CLASS.
14399         * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
14400         (REG_CAN_CHANGE_MODE_P): ...this new macro.
14401         * combine.c (simplify_set): Update accordingly.
14402         * emit-rtl.c (validate_subreg): Likewise.
14403         * recog.c (general_operand): Likewise.
14404         * regcprop.c (mode_change_ok): Likewise.
14405         * reload1.c (choose_reload_regs): Likewise.
14406         (inherit_piecemeal_p): Likewise.
14407         * rtlanal.c (simplify_subreg_regno): Likewise.
14408         * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
14409         instead of CANNOT_CHANGE_MODE_CLASS.
14410         (reload_cse_simplify_operands): Likewise.
14411         * reload.c (push_reload): Use targetm.can_change_mode_class
14412         instead of CANNOT_CHANGE_MODE_CLASS.
14413         (push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
14414         REG_CANNOT_CHANGE_MODE_P.
14415         * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14416         * config/alpha/alpha.c (alpha_can_change_mode_class): New function.
14417         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14418         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14419         * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14420         (arm_can_change_mode_class): New function.
14421         * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14422         than CANNOT_CHANGE_MODE_CLASS in comments.
14423         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14424         * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
14425         * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
14426         (ix86_can_change_mode_class): ...this new function, inverting the
14427         sense of the return value.
14428         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14429         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14430         * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14431         (ia64_can_change_mode_class): New function.
14432         * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14433         * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
14434         * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
14435         (m32c_can_change_mode_class): ...this new function, inverting the
14436         sense of the return value.
14437         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14438         * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14439         * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
14440         * config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
14441         (mips_can_change_mode_class): ...this new function, inverting the
14442         sense of the return value.
14443         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14444         * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14445         * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14446         (msp430_can_change_mode_class): New function.
14447         * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14448         * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
14449         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14450         * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14451         * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14452         * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
14453         * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14454         (pa_cannot_change_mode_class): Replace with...
14455         (pa_can_change_mode_class): ...this new function, inverting the
14456         sense of the return value.
14457         (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14458         than CANNOT_CHANGE_MODE_CLASS in comments.
14459         * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14460         * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
14461         * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14462         (pdp11_cannot_change_mode_class): Replace with...
14463         (pdp11_can_change_mode_class): ...this new function, inverting the
14464         sense of the return value.
14465         * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14466         * config/powerpcspe/powerpcspe-protos.h
14467         (rs6000_cannot_change_mode_class_ptr): Delete.
14468         * config/powerpcspe/powerpcspe.c
14469         (rs6000_cannot_change_mode_class_ptr): Delete.
14470         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14471         (rs6000_option_override_internal): Assign to
14472         targetm.can_change_mode_class instead of
14473         rs6000_cannot_change_mode_class_ptr.
14474         (rs6000_cannot_change_mode_class): Replace with...
14475         (rs6000_can_change_mode_class): ...this new function, inverting the
14476         sense of the return value.
14477         (rs6000_debug_cannot_change_mode_class): Replace with...
14478         (rs6000_debug_can_change_mode_class): ...this new function.
14479         * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14480         * config/riscv/riscv.c (riscv_can_change_mode_class): New function.
14481         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14482         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14483         * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
14484         Delete.
14485         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
14486         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14487         (rs6000_option_override_internal): Assign to
14488         targetm.can_change_mode_class instead of
14489         rs6000_cannot_change_mode_class_ptr.
14490         (rs6000_cannot_change_mode_class): Replace with...
14491         (rs6000_can_change_mode_class): ...this new function, inverting the
14492         sense of the return value.
14493         (rs6000_debug_cannot_change_mode_class): Replace with...
14494         (rs6000_debug_can_change_mode_class): ...this new function.
14495         * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14496         * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
14497         * config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
14498         (s390_can_change_mode_class): ...this new function, inverting the
14499         sense of the return value.
14500         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14501         * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14502         * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
14503         * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14504         (sh_cannot_change_mode_class): Replace with...
14505         (sh_can_change_mode_class): ...this new function, inverting the
14506         sense of the return value.
14507         * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14508         * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14509         (sparc_can_change_mode_class): New function.
14510         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14511         * config/spu/spu.c (spu_can_change_mode_class): New function.
14512         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14513         * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14514         * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14515         (visium_can_change_mode_class): New function.
14516         * system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
14517
14518 2017-09-15  Richard Biener  <rguenther@suse.de>
14519
14520         PR tree-optimization/82217
14521         * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
14522         but not undefined case.
14523
14524 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14525
14526         PR target/82145
14527         * postreload.c (reload_cse_simplify_operands): Skip
14528         NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
14529
14530 2017-09-15  Richard Biener  <rguenther@suse.de>
14531
14532         PR tree-optimization/68823
14533         * graphite-scop-detection.c (build_alias_set): If we have a
14534         possible dependence check whether we can handle them by just
14535         looking at the DRs DR_ACCESS_FNs.
14536         (build_scops): If build_alias_set fails, fail the SCOP.
14537
14538 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
14539
14540         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
14541         to support float128 built-in functions that require the ISA 3.0
14542         hardware.
14543         (BU_FLOAT128_3_HW): Likewise.
14544         (SQRTF128): Add support for the IEEE 128-bit square root and fma
14545         built-in functions.
14546         (FMAF128): Likewise.
14547         (FMAQ): Likewise.
14548         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
14549         support for built-in functions that need the ISA 3.0 IEEE 128-bit
14550         floating point instructions.
14551         (rs6000_invalid_builtin): Likewise.
14552         (rs6000_builtin_mask_names): Likewise.
14553         * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
14554         (RS6000_BTM_FLOAT128_HW): Likewise.
14555         (RS6000_BTM_COMMON): Likewise.
14556         * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
14557         function.
14558         * doc/extend.texi (RS/6000 built-in functions): Document the
14559         IEEE 128-bit floating point square root and fused multiply-add
14560         built-in functions.
14561
14562 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
14563
14564         * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
14565         reg (r2) isn't in the set of registers defined in the prologue.
14566
14567 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14568             Alan Hayward  <alan.hayward@arm.com>
14569             David Sherwood  <david.sherwood@arm.com>
14570
14571         * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
14572         (LOOP_VINFO_MAX_VECT_FACTOR): New macro.
14573         (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
14574         (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
14575         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
14576         accordingly.
14577         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
14578         max_vectorization_factor.
14579         (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
14580
14581 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14582             Alan Hayward  <alan.hayward@arm.com>
14583             David Sherwood  <david.sherwood@arm.com>
14584
14585         * tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
14586         (vect_worthwhile_without_simd_p): Declare.
14587         * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
14588         (vectorizable_reduction): Use it.
14589         * tree-vect-stmts.c (vectorizable_shift): Likewise.
14590         (vectorizable_operation): Likewise.
14591
14592 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14593             Alan Hayward  <alan.hayward@arm.com>
14594             David Sherwood  <david.sherwood@arm.com>
14595
14596         * tree-vectorizer.h (vect_get_num_copies): New function.
14597         * tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
14598         * tree-vect-loop.c (vectorizable_reduction): Likewise.
14599         (vectorizable_induction): Likewise.
14600         (vectorizable_live_operation): Likewise.
14601         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
14602         (vectorizable_bswap): Likewise.
14603         (vectorizable_call): Likewise.
14604         (vectorizable_conversion): Likewise.
14605         (vectorizable_assignment): Likewise.
14606         (vectorizable_shift): Likewise.
14607         (vectorizable_operation): Likewise.
14608         (vectorizable_store): Likewise.
14609         (vectorizable_load): Likewise.
14610         (vectorizable_condition): Likewise.
14611         (vectorizable_comparison): Likewise.
14612         (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
14613
14614 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14615             Alan Hayward  <alan.hayward@arm.com>
14616             David Sherwood  <david.sherwood@arm.com>
14617
14618         * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
14619         of vect_init_vector.
14620
14621 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14622             Alan Hayward  <alan.hayward@arm.com>
14623             David Sherwood  <david.sherwood@arm.com>
14624
14625         * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
14626         an inline wrapper that provides a location.
14627         (gimple_build_vector): Likewise.
14628         * gimple-fold.c (gimple_build_vector_from_val): New function.
14629         (gimple_build_vector): Likewise.
14630         * tree-vect-loop.c (get_initial_def_for_reduction): Use the new
14631         functions to build the initial value.  Always return a gimple value.
14632         (get_initial_defs_for_reduction): Likewise.  Only compute
14633         neutral_vec once.
14634         (vect_create_epilog_for_reduction): Don't call force_gimple_operand or
14635         vect_init_vector on the results from get_initial_def(s)_for_reduction.
14636         (vectorizable_induction): Use gimple_build_vector rather than
14637         vect_init_vector.
14638
14639 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14640             Alan Hayward  <alan.hayward@arm.com>
14641             David Sherwood  <david.sherwood@arm.com>
14642
14643         * target.h (vec_perm_indices): New typedef.
14644         (auto_vec_perm_indices): Likewise.
14645         * optabs-query.h: Include target.h
14646         (can_vec_perm_p): Take a vec_perm_indices *.
14647         * optabs-query.c (can_vec_perm_p): Likewise.
14648         (can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
14649         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14650         * tree-vect-generic.c (lower_vec_perm): Likewise.
14651         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14652         (vect_grouped_load_supported): Likewise.
14653         (vect_shift_permute_load_chain): Likewise.
14654         (vect_permute_store_chain): Use auto_vec_perm_indices.
14655         (vect_permute_load_chain): Likewise.
14656         * fold-const.c (fold_vec_perm): Take vec_perm_indices.
14657         (fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
14658         Update uses of can_vec_perm_p.
14659         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
14660         mode with a number of elements.  Take a vec_perm_indices *.
14661         (vect_create_epilog_for_reduction): Update accordingly.
14662         Use auto_vec_perm_indices.
14663         (have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
14664         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14665         (vect_transform_slp_perm_load): Likewise.
14666         (vect_schedule_slp_instance): Use auto_vec_perm_indices.
14667         * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
14668         (vect_gen_perm_mask_checked): Likewise.
14669         * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
14670         (vect_gen_perm_mask_checked): Likewise.
14671         (vectorizable_mask_load_store): Use auto_vec_perm_indices.
14672         (vectorizable_store): Likewise.
14673         (vectorizable_load): Likewise.
14674         (perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
14675         (vectorizable_bswap): Likewise.
14676
14677 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14678             Alan Hayward  <alan.hayward@arm.com>
14679             David Sherwood  <david.sherwood@arm.com>
14680
14681         * tree.h (build_vector): Take a vec<tree> instead of a tree *.
14682         * tree.c (build_vector): Likewise.
14683         (build_vector_from_ctor): Update accordingly.
14684         (build_vector_from_val): Likewise.
14685         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
14686         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14687         * tree-vect-generic.c (add_rshift): Likewise.
14688         (expand_vector_divmod): Likewise.
14689         (optimize_vector_constructor): Likewise.
14690         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
14691         (vect_transform_slp_perm_load): Likewise.
14692         (vect_schedule_slp_instance): Likewise.
14693         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14694         (vectorizable_call): Likewise.
14695         (vect_gen_perm_mask_any): Likewise.  Add elements in order.
14696         * expmed.c (make_tree): Likewise.
14697         * fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
14698         a vector passed to build_vector.
14699         (fold_convert_const): Likewise.
14700         (exact_inverse): Likewise.
14701         (fold_ternary_loc): Likewise.
14702         (fold_relational_const): Likewise.
14703         (const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
14704         on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
14705         (const_unop): Likewise.  Store the reduction accumulator in a
14706         variable rather than an array.
14707         (vec_cst_ctor_to_array): Take the number of elements as a parameter.
14708         (fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
14709         the new vector, rather than constructing it after the input arrays.
14710         (native_interpret_vector): Use auto_vec<tree> when building
14711         a vector passed to build_vector.  Add elements in order.
14712         * tree-vect-loop.c (get_initial_defs_for_reduction): Use
14713         auto_vec<tree> when building a vector passed to build_vector.
14714         (vect_create_epilog_for_reduction): Likewise.
14715         (vectorizable_induction): Likewise.
14716         (get_initial_def_for_reduction): Likewise.  Fix indentation of
14717         case statements.
14718         * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
14719         to a vec<tree> *.
14720         (sparc_fold_builtin): Use auto_vec<tree> when building a vector
14721         passed to build_vector.
14722
14723 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14724             Alan Hayward  <alan.hayward@arm.com>
14725             David Sherwood  <david.sherwood@arm.com>
14726
14727         * tree-core.h (tree_base::u): Add an "nelts" field.
14728         (tree_vector): Use VECTOR_CST_NELTS as the length.
14729         * tree.c (tree_size): Likewise.
14730         (make_vector): Initialize VECTOR_CST_NELTS.
14731         * tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
14732         * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
14733         TYPE_VECTOR_SUBPARTS.
14734         * expr.c (const_vector_mask_from_tree): Consistently use "units"
14735         as the number of units, setting it from VECTOR_CST_NELTS.
14736         (const_vector_from_tree): Likewise.
14737         * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
14738         TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
14739         (fold_negate_expr_1): Likewise.
14740         (fold_convert_const): Likewise.
14741         (const_binop): Likewise.  Differentiate the number of output and
14742         input elements.
14743         (const_unop): Likewise.
14744         (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
14745         in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
14746         in cases that did the opposite.
14747
14748 2017-09-14  Richard Biener  <rguenther@suse.de>
14749
14750         * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
14751         to VN_TOP.
14752
14753 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
14754
14755         * dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
14756
14757 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
14758
14759         PR target/81325
14760         * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
14761         if and where to split a bb, except for splitting before debug insn
14762         sequences followed by non-label real insn.  Delete debug insns
14763         in between basic blocks.
14764
14765         * combine.c (make_compound_operation_int): Formatting fixes.
14766
14767         * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
14768         * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14769         * config/netbsd.h (LINK_EH_SPEC): Likewise.
14770         * config/sol2.h (LINK_EH_SPEC): Likewise.
14771         * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14772         * config/s390/linux.h (LINK_SPEC): Likewise.
14773         * config/freebsd.h (LINK_EH_SPEC): Likewise.
14774         * config/openbsd.h (LINK_EH_SPEC): Likewise.
14775         * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14776         * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
14777         * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
14778         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14779         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
14780         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
14781
14782 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
14783
14784         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
14785         support.
14786         (ENDFILE_LINUX_SPEC): Likewise.
14787         (LINK_EH_SPEC): Likewise.
14788         * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
14789         (LINK_OS_LINUX_SPEC32): Likewise.
14790         (LINK_OS_LINUX_SPEC64): Likewise.
14791         * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
14792         (LINK_OS_LINUX_SPEC): Likewise.
14793
14794 2017-09-13  Martin Liska  <mliska@suse.cz>
14795
14796         PR middle-end/82154
14797         * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
14798         CASE_HIGH is NULL_TREE.
14799
14800 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14801             Alan Hayward  <alan.hayward@arm.com>
14802             David Sherwood  <david.sherwood@arm.com>
14803
14804         * target.def (secondary_memory_needed): New hook.
14805         (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
14806         instead of SECONDARY_MEMORY_NEEDED.
14807         (secondary_memory_needed_mode): Likewise.
14808         * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
14809         * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
14810         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
14811         (TARGET_SECONDARY_MEMORY_NEEDED): ...this.
14812         (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
14813         * doc/tm.texi: Regenerate.
14814         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
14815         * config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
14816         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14817         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
14818         * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
14819         * config/i386/i386.c (inline_secondary_memory_needed): Put the
14820         mode argument first and change the reg_class arguments to reg_class_t.
14821         (ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
14822         Make static.  Update the call to inline_secondary_memory_needed.
14823         (ix86_register_move_cost): Update the call to
14824         inline_secondary_memory_needed.
14825         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14826         * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
14827         definition.
14828         * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
14829         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14830         in comment.
14831         * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
14832         * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
14833         * config/mips/mips.c (mips_secondary_memory_needed): Make static
14834         and match hook interface.  Add comment from mips.h.
14835         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14836         * config/mmix/mmix.md (truncdfsf2): Refer to
14837         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14838         in comment.
14839         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
14840         (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
14841         * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14842         (pa_secondary_memory_needed): New function.
14843         * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
14844         * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
14845         * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14846         (pdp11_secondary_memory_needed): Make static and match hook interface.
14847         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
14848         * config/powerpcspe/powerpcspe-protos.h
14849         (rs6000_secondary_memory_needed_ptr): Delete.
14850         * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
14851         Delete.
14852         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14853         (rs6000_option_override_internal): Assign to
14854         targetm.secondary_memory_needed rather than
14855         rs6000_secondary_memory_needed_ptr.
14856         (rs6000_secondary_memory_needed): Match hook interface.
14857         (rs6000_debug_secondary_memory_needed): Likewise.
14858         * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
14859         * config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
14860         (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
14861         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14862         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
14863         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
14864         Delete.
14865         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
14866         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14867         (rs6000_option_override_internal): Assign to
14868         targetm.secondary_memory_needed rather than
14869         rs6000_secondary_memory_needed_ptr.
14870         (rs6000_secondary_memory_needed): Match hook interface.
14871         (rs6000_debug_secondary_memory_needed): Likewise.
14872         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
14873         * config/s390/s390.c (s390_secondary_memory_needed): New function.
14874         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14875         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
14876         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14877         (sparc_secondary_memory_needed): New function.
14878         * lra-constraints.c (check_and_process_move): Refer to
14879         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14880         in comment.
14881         (curr_insn_transform): Likewise.
14882         (process_alt_operands): Use targetm.secondary_memory_needed
14883         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14884         (check_secondary_memory_needed_p): Likewise.
14885         (choose_split_class): Likewise.
14886         * reload.c: Unconditionally include code that was previously
14887         conditional on SECONDARY_MEMORY_NEEDED.
14888         (push_secondary_reload): Use targetm.secondary_memory_needed
14889         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14890         (push_reload): Likewise.
14891         * reload1.c: Unconditionally include code that was previously
14892         conditional on SECONDARY_MEMORY_NEEDED.
14893         (choose_reload_regs): Use targetm.secondary_memory_needed
14894         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14895         (gen_reload): Likewise.
14896         * system.h (SECONDARY_MEMORY_NEEDED): Poison.
14897
14898 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14899             Alan Hayward  <alan.hayward@arm.com>
14900             David Sherwood  <david.sherwood@arm.com>
14901
14902         * target.def (secondary_memory_needed_mode): New hook:
14903         * targhooks.c (default_secondary_memory_needed_mode): Declare.
14904         * targhooks.h (default_secondary_memory_needed_mode): New function.
14905         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
14906         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
14907         * doc/tm.texi: Regenerate.
14908         * lra-constraints.c (check_and_process_move): Use
14909         targetm.secondary_memory_needed_mode instead of
14910         TARGET_SECONDARY_MEMORY_NEEDED_MODE.
14911         (curr_insn_transform): Likewise.
14912         * reload.c (get_secondary_mem): Likewise.
14913         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14914         * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
14915         function.
14916         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14917         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14918         * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
14919         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14920         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
14921         Delete.
14922         * config/powerpcspe/powerpcspe-protos.h
14923         (rs6000_secondary_memory_needed_mode): Delete.
14924         * config/powerpcspe/powerpcspe.c
14925         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14926         (rs6000_secondary_memory_needed_mode): Make static.
14927         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14928         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
14929         Delete.
14930         * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14931         Redefine.
14932         (rs6000_secondary_memory_needed_mode): Make static.
14933         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14934         * config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
14935         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14936         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14937         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14938         Redefine.
14939         (sparc_secondary_memory_needed_mode): New function.
14940         * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
14941
14942 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
14943
14944         * config/aarch64/constraints.md (Umq): New constraint.
14945         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
14946         Change to use Umq.
14947         (mov<mode>): Update condition.
14948
14949 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14950
14951         * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
14952         when bitposition is the same.
14953
14954 2017-09-13  Richard Biener  <rguenther@suse.de>
14955
14956         * dwarf2out.c (output_die_symbol): Remove.
14957         (output_die): Do not output a DIEs symbol.
14958
14959 2017-09-13  Richard Biener  <rguenther@suse.de>
14960
14961         PR middle-end/82128
14962         * gimple-fold.c (gimple_fold_call): Update SSA name in-place to
14963         default-def to avoid breaking iterator update with the weird
14964         interaction with cgraph_update_edges_for_call_stmt_node.
14965
14966 2017-09-13  Richard Biener  <rguenther@suse.de>
14967
14968         * tree-cfg.c (verify_gimple_assign_binary): Add verification
14969         for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
14970         VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
14971         (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
14972
14973 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
14974
14975         * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
14976         Disable pc relative literal load irrespective of
14977         TARGET_FIX_ERR_A53_84341 for default.
14978
14979 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
14980
14981         * config/sparc/sparc.c (output_return): Output the source location of
14982         the insn in the delay slot, if any.
14983         (output_sibcall): Likewise.
14984
14985 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
14986
14987         PR driver/81498
14988         * common.opt (-static-pie): New alias.
14989         (shared): Negate static-pie.
14990         (-no-pie): Update help text.
14991         (-pie): Likewise.
14992         (static-pie): New option.
14993         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
14994         -static-pie support.
14995         (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
14996         (LINK_EH_SPEC): Likewise.
14997         (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14998         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
14999         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
15000         * gcc.c (LINK_COMMAND_SPEC): Likewise.
15001         (init_gcc_specs): Likewise.
15002         (init_spec): Likewise.
15003         (display_help): Update help message for -pie.
15004         * doc/invoke.texi: Update -pie, -no-pie and -static.  Document
15005         -static-pie.
15006
15007 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
15008
15009         * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
15010         (movdi_aarch64): Likewise.
15011         (movti_aarch64): Likewise.
15012
15013 2017-09-12 Simon Wright <simon@pushface.org>
15014
15015         PR target/80204
15016         * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
15017         calculation of the minor version, always output as 0.
15018
15019 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15020
15021         PR target/82112
15022         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
15023         ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
15024         on it early, rather than manual conversion late.  For
15025         ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
15026         instead of performing manual conversion.
15027
15028 2017-09-12  Carl Love  <cel@us.ibm.com>
15029
15030         * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
15031         vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
15032         vmulouw, vmulosw.
15033         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
15034         VMULOSW): Add definitions.
15035         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
15036         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
15037         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
15038         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
15039         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
15040
15041 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15042
15043         * config/aarch64/aarch64.md (movdi_aarch64): Set load/store
15044         types correctly.
15045         (movti_aarch64): Likewise.
15046         (movdf_aarch64): Likewise.
15047         (movtf_aarch64): Likewise.
15048         (load_pairdi): Likewise.
15049         (store_pairdi): Likewise.
15050         (load_pairdf): Likewise.
15051         (store_pairdf): Likewise.
15052         (loadwb_pair<GPI:mode>_<P:mode>): Likewise.
15053         (storewb_pair<GPI:mode>_<P:mode>): Likewise.
15054         (ldr_got_small_<mode>): Likewise.
15055         (ldr_got_small_28k_<mode>): Likewise.
15056         (ldr_got_tiny): Likewise.
15057         * config/aarch64/iterators.md (ldst_sz): New.
15058         (ldpstp_sz): Likewise.
15059         * config/aarch64/thunderx.md (thunderx_storepair): Split store_8
15060         to store_16.
15061         (thunderx_load): Split load_8 to load_16.
15062         * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
15063         load_8 to load_16.
15064         (thunderx2t99_storepair_basic): Split store_8 to store_16.
15065         * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
15066         (xgene1_store_pair): Split store_8 to store_16.
15067         * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
15068         (falkor_st_0_st_sd): Split store_8 to store_16.
15069
15070 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15071
15072         * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
15073         and store1/2/3/4 to store_4/8/12/16.
15074         * config/aarch64/aarch64.md: Update for rename.
15075         * config/arm/arm.md: Likewise.: Likewise.
15076         * config/arm/arm.c: Likewise.
15077         * config/arm/thumb1.md: Likewise.
15078         * config/arm/thumb2.md: Likewise.
15079         * config/arm/vfp.md: Likewise.
15080         * config/arm/arm-generic.md: Likewise.
15081         * config/arm/arm1020e.md: Likewise.
15082         * config/arm/arm1026ejs.md: Likewise.
15083         * config/arm/arm1136jfs.md: Likewise.
15084         * config/arm/arm926ejs.md: Likewise.
15085         * config/arm/cortex-a15.md: Likewise.
15086         * config/arm/cortex-a17.md: Likewise.
15087         * config/arm/cortex-a5.md: Likewise.
15088         * config/arm/cortex-a53.md: Likewise.
15089         * config/arm/cortex-a57.md: Likewise.
15090         * config/arm/cortex-a7.md: Likewise.
15091         * config/arm/cortex-a8.md: Likewise.
15092         * config/arm/cortex-a9.md: Likewise.
15093         * config/arm/cortex-m4.md: Likewise.
15094         * config/arm/cortex-m7.md: Likewise.
15095         * config/arm/cortex-r4.md: Likewise.
15096         * config/arm/exynos-m1.md: Likewise.
15097         * config/arm/fa526.md: Likewise.
15098         * config/arm/fa606te.md: Likewise.
15099         * config/arm/fa626te.md: Likewise.
15100         * config/arm/fa726te.md: Likewise.
15101         * config/arm/fmp626.md: Likewise.
15102         * config/arm/iwmmxt.md: Likewise.
15103         * config/arm/ldmstm.md: Likewise.
15104         * config/arm/marvell-pj4.md: Likewise.
15105         * config/arm/xgene1.md: Likewise.
15106         * config/aarch64/thunderx.md: Likewise.
15107         * config/aarch64/thunderx2t99.md: Likewise.
15108         * config/aarch64/falkor.md: Likewise.
15109
15110 2017-09-12  Martin Liska  <mliska@suse.cz>
15111
15112         * attribs.c (private_lookup_attribute): New function.
15113         * attribs.h (private_lookup_attribute): Declared here.
15114         (lookup_attribute): Called from this place.
15115
15116 2017-09-12  Richard Biener  <rguenther@suse.de>
15117
15118         PR tree-optimization/82157
15119         * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
15120         stmts with side-effects.
15121
15122 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15123             Alan Hayward  <alan.hayward@arm.com>
15124             David Sherwood <david.sherwood@arm.com>
15125
15126         * target.def (hard_regno_nregs): New hook.
15127         (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
15128         * targhooks.h (default_hard_regno_nregs): Declare.
15129         * targhooks.c (default_hard_regno_nregs): New function.
15130         * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
15131         (TARGET_HARD_REGNO_NREGS): ...this hook.
15132         (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
15133         (CLASS_MAX_NREGS): Likewise.
15134         * doc/tm.texi: Regenerate.
15135         * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
15136         instead of HARD_REGNO_NREGS.
15137         * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
15138         HARD_REGNO_NREGS in the comment.
15139         * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
15140         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
15141         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
15142         Return an unsigned int.
15143         (TARGET_HARD_REGNO_NREGS): Redefine.
15144         * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
15145         * config/arc/arc.h (HARD_REGNO_NREGS): Delete.
15146         * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15147         (arc_hard_regno_nregs): New function.
15148         * config/arm/arm.h (HARD_REGNO_NREGS): Delete.
15149         * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
15150         (arm_hard_regno_nregs): New function.
15151         * config/avr/avr.h (HARD_REGNO_NREGS): Delete.
15152         * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
15153         * config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
15154         (TARGET_HARD_REGNO_NREGS): Redefine.
15155         * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
15156         * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
15157         (HARD_REGNO_NREGS): Delete.
15158         * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
15159         (cr16_hard_regno_nregs): New function.
15160         (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
15161         * config/cris/cris.h (HARD_REGNO_NREGS): Delete.
15162         * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
15163         (cris_hard_regno_nregs): New function.
15164         * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
15165         * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
15166         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15167         * config/frv/frv.h (HARD_REGNO_NREGS): Delete.
15168         (CLASS_MAX_NREGS): Remove outdated copy of documentation.
15169         * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
15170         * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
15171         (frv_hard_regno_nregs): Make static.  Take and return an
15172         unsigned int.
15173         (frv_class_max_nregs): Remove outdated copy of documentation.
15174         * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
15175         * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
15176         * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
15177         * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
15178         * config/i386/i386.h (HARD_REGNO_NREGS): Delete.
15179         * config/i386/i386.c (ix86_hard_regno_nregs): New function.
15180         (TARGET_HARD_REGNO_NREGS): Redefine.
15181         * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
15182         (CLASS_MAX_NREGS): Update comment.
15183         * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
15184         (ia64_hard_regno_nregs): New function.
15185         * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
15186         * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
15187         * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
15188         * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
15189         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
15190         an unsigned int.
15191         (m32c_hard_regno_nregs): Likewise.  Make static.
15192         (TARGET_HARD_REGNO_NREGS): Redefine.
15193         * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
15194         * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
15195         * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
15196         (m68k_hard_regno_nregs): New function.
15197         * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
15198         * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
15199         * config/mips/mips.h (HARD_REGNO_NREGS): Delete.
15200         * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
15201         * config/mips/mips.c (mips_hard_regno_nregs): Make static.
15202         Take and return an unsigned int.
15203         (TARGET_HARD_REGNO_NREGS): Redefine.
15204         * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
15205         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15206         * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
15207         * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
15208         * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
15209         * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
15210         * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
15211         (msp430_hard_regno_nregs): Make static.  Take and return an
15212         unsigned int.
15213         * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
15214         * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
15215         * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
15216         (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
15217         * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
15218         * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
15219         * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
15220         (TARGET_HARD_REGNO_NREGS): Redefine.
15221         * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
15222         (PA_HARD_REGNO_NREGS): ...this.
15223         * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
15224         (PA_HARD_REGNO_NREGS): ...this.
15225         * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15226         (pa_hard_regno_nregs): New function.
15227         * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
15228         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
15229         (pdp11_hard_regno_nregs): New function.
15230         * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
15231         * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
15232         (rs6000_hard_regno_nregs_hook): New function.
15233         * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
15234         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
15235         * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
15236         Take and return an unsigned int.  Move earlier in file.
15237         (TARGET_HARD_REGNO_NREGS): Redefine.
15238         * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
15239         * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
15240         * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
15241         (rl78_hard_regno_nregs): Make static.  Take and return an
15242         unsigned int.
15243         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
15244         * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
15245         (rs6000_hard_regno_nregs_hook): New function.
15246         * config/rx/rx.h (HARD_REGNO_NREGS): Delete.
15247         * config/rx/rx.c (rx_hard_regno_nregs): New function.
15248         (TARGET_HARD_REGNO_NREGS): Redefine.
15249         * config/s390/s390.h (HARD_REGNO_NREGS): Delete.
15250         * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
15251         instead of HARD_REGNO_NREGS.
15252         (s390_hard_regno_nregs): New function.
15253         (s390_hard_regno_mode_ok): Add comment from s390.h.
15254         (TARGET_HARD_REGNO_NREGS): Redefine.
15255         * config/sh/sh.h (HARD_REGNO_NREGS): Delete.
15256         * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
15257         (sh_hard_regno_nregs): New function.
15258         (sh_pass_in_reg_p): Use it.
15259         * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
15260         * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15261         (sparc_hard_regno_nregs): New function.
15262         * config/spu/spu.h (HARD_REGNO_NREGS): Delete.
15263         * config/spu/spu.c (spu_hard_regno_nregs): New function.
15264         (spu_function_arg_advance): Use it, supplying a valid register number.
15265         (TARGET_HARD_REGNO_NREGS): Redefine.
15266         * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
15267         * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
15268         * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
15269         * config/v850/v850.h (HARD_REGNO_NREGS): Delete.
15270         * config/vax/vax.h (HARD_REGNO_NREGS): Delete.
15271         * config/visium/visium.h (HARD_REGNO_NREGS): Delete.
15272         (CLASS_MAX_NREGS): Remove copy of old documentation.
15273         * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
15274         (visium_hard_regno_nregs): New function.
15275         (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
15276         * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
15277         * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15278         xtensa_hard_regno_nregs): New function.
15279         * system.h (HARD_REGNO_NREGS): Poison.
15280
15281 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15282
15283         * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
15284         hard_regno_nregs instead of HARD_REGNO_NREGS.
15285         (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
15286         * config/c6x/c6x.c (c6x_expand_prologue): Likewise.
15287         (c6x_expand_epilogue): Likewise.
15288         * config/frv/frv.c (frv_alloc_temp_reg): Likewise.
15289         (frv_read_iacc_argument): Likewise.
15290         * config/sh/sh.c: Include regs.h.
15291         (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15292         (regs_used): Likewise.
15293         (output_stack_adjust): Likewise.
15294         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
15295         * expmed.c: Include regs.h.
15296         (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15297         * ree.c: Include regs.h.
15298         (combine_reaching_defs): Use hard_regno_nregs instead of
15299         HARD_REGNO_NREGS.
15300         (add_removable_extension): Likewise.
15301
15302 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15303
15304         * regs.h (hard_regno_nregs): Turn into a function.
15305         (end_hard_regno): Update accordingly.
15306         * caller-save.c (setup_save_areas): Likewise.
15307         (save_call_clobbered_regs): Likewise.
15308         (replace_reg_with_saved_mem): Likewise.
15309         (insert_restore): Likewise.
15310         (insert_save): Likewise.
15311         * combine.c (can_change_dest_mode): Likewise.
15312         (move_deaths): Likewise.
15313         (distribute_notes): Likewise.
15314         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
15315         * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
15316         (rs6000_split_multireg_move): Likewise.
15317         (rs6000_register_move_cost): Likewise.
15318         (rs6000_memory_move_cost): Likewise.
15319         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
15320         (rs6000_split_multireg_move): Likewise.
15321         (rs6000_register_move_cost): Likewise.
15322         (rs6000_memory_move_cost): Likewise.
15323         * cselib.c (cselib_reset_table): Likewise.
15324         (cselib_lookup_1): Likewise.
15325         * emit-rtl.c (set_mode_and_regno): Likewise.
15326         * function.c (aggregate_value_p): Likewise.
15327         * ira-color.c (setup_profitable_hard_regs): Likewise.
15328         (check_hard_reg_p): Likewise.
15329         (calculate_saved_nregs): Likewise.
15330         (assign_hard_reg): Likewise.
15331         (improve_allocation): Likewise.
15332         (calculate_spill_cost): Likewise.
15333         * ira-emit.c (modify_move_list): Likewise.
15334         * ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
15335         (ira_hard_reg_in_set_p): Likewise.
15336         * ira.c (setup_reg_mode_hard_regset): Likewise.
15337         (clarify_prohibited_class_mode_regs): Likewise.
15338         (check_allocation): Likewise.
15339         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15340         (lra_setup_reg_renumber): Likewise.
15341         (setup_try_hard_regno_pseudos): Likewise.
15342         (spill_for): Likewise.
15343         (assign_hard_regno): Likewise.
15344         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
15345         * lra-constraints.c (in_class_p): Likewise.
15346         (lra_constraint_offset): Likewise.
15347         (simplify_operand_subreg): Likewise.
15348         (lra_constraints): Likewise.
15349         (split_reg): Likewise.
15350         (split_if_necessary): Likewise.
15351         (invariant_p): Likewise.
15352         (inherit_in_ebb): Likewise.
15353         * lra-lives.c (process_bb_lives): Likewise.
15354         * lra-remat.c (reg_overlap_for_remat_p): Likewise.
15355         (get_hard_regs): Likewise.
15356         (do_remat): Likewise.
15357         * lra-spills.c (assign_spill_hard_regs): Likewise.
15358         * mode-switching.c (create_pre_exit): Likewise.
15359         * postreload.c (reload_combine_recognize_pattern): Likewise.
15360         * recog.c (peep2_find_free_register): Likewise.
15361         * regcprop.c (kill_value_regno): Likewise.
15362         (set_value_regno): Likewise.
15363         (copy_value): Likewise.
15364         (maybe_mode_change): Likewise.
15365         (find_oldest_value_reg): Likewise.
15366         (copyprop_hardreg_forward_1): Likewise.
15367         * regrename.c (check_new_reg_p): Likewise.
15368         (regrename_do_replace): Likewise.
15369         * reload.c (push_reload): Likewise.
15370         (combine_reloads): Likewise.
15371         (find_dummy_reload): Likewise.
15372         (operands_match_p): Likewise.
15373         (find_reloads): Likewise.
15374         (find_equiv_reg): Likewise.
15375         (reload_adjust_reg_for_mode): Likewise.
15376         * reload1.c (count_pseudo): Likewise.
15377         (count_spilled_pseudo): Likewise.
15378         (find_reg): Likewise.
15379         (clear_reload_reg_in_use): Likewise.
15380         (free_for_value_p): Likewise.
15381         (allocate_reload_reg): Likewise.
15382         (choose_reload_regs): Likewise.
15383         (reload_adjust_reg_for_temp): Likewise.
15384         (emit_reload_insns): Likewise.
15385         (delete_output_reload): Likewise.
15386         * rtlanal.c (subreg_get_info): Likewise.
15387         * sched-deps.c (sched_analyze_reg): Likewise.
15388         * sel-sched.c (init_regs_for_mode): Likewise.
15389         (mark_unavailable_hard_regs): Likewise.
15390         (choose_best_reg_1): Likewise.
15391         (verify_target_availability): Likewise.
15392         * valtrack.c (dead_debug_insert_temp): Likewise.
15393         * var-tracking.c (track_loc_p): Likewise.
15394         (emit_note_insn_var_location): Likewise.
15395         * varasm.c (make_decl_rtl): Likewise.
15396         * reginfo.c (choose_hard_reg_mode): Likewise.
15397         (init_reg_modes_target): Refer directly to
15398         this_target_regs->x_hard_regno_nregs.
15399
15400 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15401
15402         * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
15403         instead of hard_regno_nregs.
15404
15405 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15406
15407         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
15408         end_hard_regno instead of hard_regno_nregs.
15409         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
15410         * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
15411         * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
15412         * ira-color.c (improve_allocation): Likewise.
15413         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15414         * lra-lives.c (mark_regno_live): Likewise.
15415         (mark_regno_dead): Likewise.
15416         * lra-remat.c (operand_to_remat): Likewise.
15417         * lra.c (collect_non_operand_hard_regs): Likewise.
15418         * postreload.c (reload_combine_note_store): Likewise.
15419         (move2add_valid_value_p): Likewise.
15420         * reload.c (regno_clobbered_p): Likewise.
15421
15422 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15423
15424         * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
15425         hard_regno_nregs.
15426         * config/v850/v850.c (v850_reorg): Likewise.
15427         * reload.c (refers_to_regno_for_reload_p): Likewise.
15428         (find_equiv_reg): Likewise.
15429         * reload1.c (reload_reg_reaches_end_p): Likewise.
15430
15431 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15432
15433         * caller-save.c (add_used_regs): Use REG_NREGS instead of
15434         hard_regno_nregs.
15435         * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
15436         * config/arm/arm.c (output_move_neon): Likewise.
15437         (arm_attr_length_move_neon): Likewise.
15438         (neon_split_vcombine): Likewise.
15439         * config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
15440         (c6x_mark_reg_written): Likewise.
15441         (c6x_dwarf_register_span): Likewise.
15442         * config/i386/i386.c (ix86_save_reg): Likewise.
15443         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
15444         (rws_access_reg): Likewise.
15445         * config/s390/s390.c (s390_call_saved_register_used): Likewise.
15446         * mode-switching.c (create_pre_exit): Likewise.
15447         * ree.c (combine_reaching_defs): Likewise.
15448         (add_removable_extension): Likewise.
15449         * regcprop.c (find_oldest_value_reg): Likewise.
15450         (copyprop_hardreg_forward_1): Likewise.
15451         * reload.c (reload_inner_reg_of_subreg): Likewise.
15452         (push_reload): Likewise.
15453         (combine_reloads): Likewise.
15454         (find_dummy_reload): Likewise.
15455         (reload_adjust_reg_for_mode): Likewise.
15456         * reload1.c (find_reload_regs): Likewise.
15457         (forget_old_reloads_1): Likewise.
15458         (reload_reg_free_for_value_p): Likewise.
15459         (reload_adjust_reg_for_temp): Likewise.
15460         (emit_reload_insns): Likewise.
15461         (delete_output_reload): Likewise.
15462         * sel-sched.c (choose_best_reg_1): Likewise.
15463         (choose_best_pseudo_reg): Likewise.
15464
15465 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15466             Alan Hayward  <alan.hayward@arm.com>
15467             David Sherwood <david.sherwood@arm.com>
15468
15469         * defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
15470         * target.def (slow_unaligned_access): New hook.
15471         * targhooks.h (default_slow_unaligned_access): Declare.
15472         * targhooks.c (default_slow_unaligned_access): New function.
15473         * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
15474         (TARGET_SLOW_UNALIGNED_ACCESS): ...this.
15475         * doc/tm.texi: Regenerate.
15476         * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
15477         * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
15478         * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
15479         definition.
15480         * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
15481         * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
15482         Redefine.
15483         (rs6000_slow_unaligned_access): New function.
15484         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15485         (expand_block_compare): Likewise.
15486         (expand_strn_compare): Likewise.
15487         (rs6000_rtx_costs): Likewise.
15488         * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
15489         (riscv_slow_unaligned_access): Likewise.
15490         * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
15491         (riscv_slow_unaligned_access_p): ...this and make static.
15492         (riscv_option_override): Update accordingly.
15493         (riscv_slow_unaligned_access): New function.
15494         (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15495         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
15496         * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15497         (rs6000_slow_unaligned_access): New function.
15498         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15499         (rs6000_rtx_costs): Likewise.
15500         * config/rs6000/rs6000-string.c (expand_block_compare)
15501         (expand_strn_compare): Use targetm.slow_unaligned_access instead
15502         of SLOW_UNALIGNED_ACCESS.
15503         * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
15504         * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
15505         * calls.c (expand_call): Use targetm.slow_unaligned_access instead
15506         of SLOW_UNALIGNED_ACCESS.
15507         * expmed.c (simple_mem_bitfield_p): Likewise.
15508         * expr.c (alignment_for_piecewise_move): Likewise.
15509         (emit_group_load_1): Likewise.
15510         (emit_group_store): Likewise.
15511         (copy_blkmode_from_reg): Likewise.
15512         (emit_push_insn): Likewise.
15513         (expand_assignment): Likewise.
15514         (store_field): Likewise.
15515         (expand_expr_real_1): Likewise.
15516         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
15517         * lra-constraints.c (simplify_operand_subreg): Likewise.
15518         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
15519         * gimple-ssa-store-merging.c: Likewise in block comment at start
15520         of file.
15521         * tree-ssa-strlen.c: Include target.h.
15522         (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
15523         of SLOW_UNALIGNED_ACCESS.
15524         * system.h (SLOW_UNALIGNED_ACCESS): Poison.
15525
15526 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15527
15528         PR rtl-optimization/82185
15529         * expmed.c (emit_store_flag_int): Only test tem if it has been
15530         initialized.
15531
15532 2017-09-12  Richard Biener  <rguenther@suse.de>
15533
15534         PR middle-end/82149
15535         * match.pd ((FTYPE) N CMP CST): Fix typo.
15536
15537 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
15538
15539         * config/mips/mips.c (mips_attribute_table): Add 'short_call'
15540         attribute.
15541         (mips_near_type_p): Add 'short_call' attribute as a synonym
15542         for 'near'.
15543         * doc/extend.texi (short_call): Document new function attribute.
15544
15545 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15546
15547         PR target/82112
15548         * c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
15549         assertion check that in the condition.
15550         (get_atomic_generic_size): Likewise.  Before testing if parameter
15551         has pointer type, if it has array type, call for C++
15552         default_conversion to perform array-to-pointer conversion.
15553
15554 2017-09-12  Richard Biener  <rguenther@suse.de>
15555
15556         * tree-vect-generic.c (expand_vector_operations_1): Do nothing
15557         for operations we cannot scalarize.
15558
15559 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
15560
15561         * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
15562         vectors heap vectors.  Clean up comments.
15563         Make visited_bbs a reference.
15564         (profitable_jump_thread_path): Make GC
15565         vectors heap vectors.  Clean up comments.
15566         Misc cleanups.
15567         (convert_and_register_jump_thread_path): Make GC vectors heap
15568         vectors.
15569         (check_subpath_and_update_thread_path): Same.  Clean up comments.
15570         Make visited_bbs a reference.
15571         (handle_phi): Abstract common code to to
15572         register_jump_thread_path_if_profitable.
15573         Rename VAR_BB to DEF_BB.
15574         Update comments.
15575         Make GC vectors heap vectors.
15576         Make visited_bbs a reference.
15577         (handle_assignment): Same.
15578         (register_jump_thread_path_if_profitable): New.
15579         (fsm_find_control_statement_thread_paths): Rename VAR_BB to
15580         DEF_BB.
15581         Make GC vectors heap vectors.  Clean up comments.
15582         Make visited_bbs a reference.
15583         (find_jump_threads_backwards): Make visited_bbs live in the stack.
15584         * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
15585         comment.
15586
15587 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
15588
15589         PR target/82181
15590         * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
15591         words of E_DImode object are reachable by xtensa_uimm8x4 access.
15592
15593 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
15594
15595         Revert r251800 and r251799.
15596
15597 2017-09-11  Martin Jambor  <mjambor@suse.cz>
15598
15599         PR hsa/82119
15600         * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
15601         arguments in advance.
15602         * hsa-regalloc.c (naive_process_phi): New parameter predecessors,
15603         use it to find predecessor edges.
15604         (naive_outof_ssa): Collect vector of predecessors.
15605
15606 2017-09-08  Jason Merrill  <jason@redhat.com>
15607
15608         PR c++/70029 - ICE with ref-qualifier and -flto
15609         * langhooks.h (struct lang_hooks_for_types): Add
15610         copy_lang_qualifiers.
15611         * attribs.c (build_type_attribute_qual_variant): Use it.
15612         * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
15613         NULL.
15614         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
15615         * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
15616
15617 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
15618
15619         PR target/81988
15620         * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
15621         (*mulsi3_sp64): New instruction.
15622         (mulsi3): New expander.
15623
15624 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
15625
15626         * config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
15627
15628 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15629
15630         * sancov.c: Include memmodel.h.
15631
15632 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
15633
15634         PR target/80897
15635         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
15636         large offsets.
15637
15638 2017-09-07  Carl Love  <cel@us.ibm.com>
15639
15640         * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
15641         the sldi instruction.
15642
15643 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
15644
15645         * sancov.c: Include tm_p.h.
15646
15647 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
15648
15649         PR target/81979
15650         * output.h (switch_to_other_text_partition): New declaration.
15651         * varasm.c (switch_to_other_text_partition): New function.
15652         * config/rs6000/rs6000.c (uses_TOC): Return 2 if
15653         NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
15654         (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
15655         to the other text partition before emitting LCL label and switch back
15656         after emitting the word after it.
15657
15658 2017-09-07  Richard Biener  <rguenther@suse.de>
15659
15660         * passes.def (pass_split_crit_edges): Remove instance before PRE.
15661         * tree-ssa-pre.c (pass_pre::execute): Instead manually split
15662         critical edges here, after loop init.
15663         (pass_data_pre): Remove PROP_no_crit_edges flags.
15664         * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
15665         for valueization of call args to avoid leaking VN_TOP.
15666         (visit_use): Assert we do not visit default defs.
15667         (init_scc_vn): Use build_decl for VN_TOP to make name nicer.
15668         Use error_mark_node to more easily detect leaking VN_TOP.
15669         All default-defs are varying, not VN_TOP.  Mark them visited.
15670         (run_scc_vn): Make code match comment.
15671
15672 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15673
15674         * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
15675         OPTION_MASK_FLOAT128_KEYWORD.
15676         (POWERPC_MASKS): Likewise.
15677         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
15678         support for the -mfloat128-type option, and make -mfloat128
15679         default on PowerPC Linux systems.  Define or undefine
15680         __FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
15681         Define __float128 to be __ieee128 if IEEE 128-bit support is
15682         enabled, or undefine it.
15683         (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
15684         Delete defining __FLOAT128_TYPE__.
15685         * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
15686         -mfloat128-type option and make -mfloat128 default on PowerPC
15687         Linux systems.
15688         (TARGET_FLOAT128_TYPE): Likewise.
15689         (-mfloat128-type): Likewise.
15690         * config/rs6000/rs6000.c (rs6000_option_override_internal):
15691         Delete the -mfloat128-type option and make -mfloat128 default on
15692         PowerPC Linux systems.  Always use __ieee128 to be the keyword for
15693         the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
15694         128-bit floating point is enabled.  Change tests from using
15695         -mfloat128-type to -mfloat128.
15696         (rs6000_mangle_type): Use the correct mangling for the __float128
15697         type even if normal long double is restricted to 64-bits.
15698         (floatn_mode): Enable the _Float128 type by default on VSX Linux
15699         systems.
15700         * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
15701         (MASK_FLOAT128_KEYWORD): Define new shortcut macro.
15702         (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
15703         -mfloat128-type.
15704         * doc/invoke.texi (RS/6000 and PowerPC Options): Update
15705         documentation for -mfloat128.
15706
15707 2017-09-06  Olivier Hainque  <hainque@adacore.com>
15708
15709         * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
15710
15711 2017-09-06  Wish Wu  <wishwu007@gmail.com>
15712             Jakub Jelinek  <jakub@redhat.com>
15713
15714         * asan.c (initialize_sanitizer_builtins): Add
15715         BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
15716         BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
15717         BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
15718         BT_FN_VOID_UINT64_PTR variables.
15719         * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
15720         (BT_FN_VOID_UINT16_UINT16): Likewise.
15721         (BT_FN_VOID_UINT32_UINT32): Likewise.
15722         (BT_FN_VOID_FLOAT_FLOAT): Likewise.
15723         (BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
15724         (BT_FN_VOID_UINT64_PTR): Likewise.
15725         * common.opt (flag_sanitize_coverage): New variable.
15726         (fsanitize-coverage=trace-pc): Remove.
15727         (fsanitize-coverage=): Add.
15728         * flag-types.h (enum sanitize_coverage_code): New enum.
15729         * fold-const.c (fold_range_test): Disable non-short-circuit
15730         optimization if flag_sanitize_coverage.
15731         (fold_truth_andor): Likewise.
15732         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
15733         * opts.c (COVERAGE_SANITIZER_OPT): Define.
15734         (coverage_sanitizer_opts): New array.
15735         (get_closest_sanitizer_option): Add OPTS argument, handle also
15736         OPT_fsanitize_coverage_.
15737         (parse_sanitizer_options): Adjusted to also handle
15738         OPT_fsanitize_coverage_.
15739         (common_handle_option): Add OPT_fsanitize_coverage_.
15740         * sancov.c (instrument_comparison, instrument_switch): New function.
15741         (sancov_pass): Add trace-cmp support.
15742         * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
15743         BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
15744         BUILT_IN_SANITIZER_COV_TRACE_CMP8,
15745         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
15746         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
15747         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
15748         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
15749         BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
15750         BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
15751         * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
15752
15753 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
15754
15755         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
15756         error.  Only quit immediately if parsing is complete.
15757         (BEGIN): Initialize fatal_err and parse_done.
15758         (begin fpu, end fpu): Check number of arguments.
15759         (begin arch, end arch): Likewise.
15760         (begin cpu, end cpu): Likewise.
15761         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
15762         (optalias): Likewise.
15763
15764 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
15765
15766         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
15767         * config/arm/arm-isa.h: Delete.  Move definitions to ...
15768         * arm-cpus.in: ... here.  Use new feature and fgroup values.
15769         * config/arm/arm.c (arm_option_override): Use lower case for feature
15770         bit names.
15771         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
15772         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
15773         * config/arm/parsecpu.awk (END): Add new command 'isa'.
15774         (isa_pfx): Delete.
15775         (print_isa_bits_for): New function.
15776         (gen_isa): New function.
15777         (gen_comm_data): Use print_isa_bits_for.
15778         (define feature): New keyword.
15779         (define fgroup): New keyword.
15780         * config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
15781         (arm-isa.h): Add rule to generate file.
15782         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
15783         case for feature bit names.
15784
15785 2017-09-06  Richard Biener  <rguenther@suse.de>
15786
15787         * tree-ssa-pre.c (NECESSARY): Remove.
15788         (create_expression_by_pieces): Do not touch pass-local flags.
15789         (insert_into_preds_of_block): Likewise.
15790         (do_pre_regular_insertion): Likewise.
15791         (eliminate_insert): Likewise.
15792         (eliminate_dom_walker::before_dom_children): Likewise.
15793         (fini_eliminate): Do not look at inserted_exprs.
15794         (mark_operand_necessary): Remove.
15795         (remove_dead_inserted_code): Replace with simple work-list
15796         algorithm based on inserted_exprs and SSA uses.
15797         (pass_pre::execute): Re-order fini_eliminate and
15798         remove_dead_inserted_code.
15799
15800 2017-09-06  Olivier Hainque  <hainque@adacore.com>
15801
15802         * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
15803         for VxWorks 7.  Adjust surrounding comments.
15804
15805 2017-09-06  Richard Biener  <rguenther@suse.de>
15806
15807         * gimple-ssa-strength-reduction.c
15808         (find_candidates_dom_walker::before_dom_children): Also allow
15809         pointer types.
15810
15811 2017-09-06  Richard Biener  <rguenther@suse.de>
15812
15813         PR tree-optimization/82108
15814         * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
15815         for gap in the non-permutation SLP case.
15816
15817 2017-09-06  Martin Jambor  <mjambor@suse.cz>
15818
15819         PR tree-optimization/82078
15820         * tree-sra.c (sort_and_splice_var_accesses): Move call to
15821         add_access_to_work_queue...
15822         (build_accesses_from_assign): ...here.
15823         (propagate_all_subaccesses): Make sure racc is the group
15824         representative, if there is one.
15825
15826 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
15827
15828         PR middle-end/82095
15829         * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
15830         NULL DECL_INITIAL.
15831
15832 2017-09-06  Richard Biener  <rguenther@suse.de>
15833
15834         * gimple-ssa-strength-reduction.c
15835         (find_candidates_dom_walker::before_doom_children): Use a
15836         type and not a mode check.
15837
15838 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
15839
15840         PR target/77308
15841         * config/arm/predicates.md (arm_general_adddi_operand): Create new
15842         non-vfp predicate.
15843         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
15844
15845 2017-09-05  Jeff Law  <law@redhat.com>
15846
15847         PR tree-optimization/64910
15848         * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
15849         cases where we have 3 or more operands.
15850
15851 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
15852
15853         PR middle-end/81768
15854         * omp-low.c (lower_omp_for): Recompute tree invariant if
15855         gimple_omp_for_initial/final is ADDR_EXPR.
15856
15857         PR middle-end/81768
15858         * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
15859         into gimple val before gimplification fo the COND_EXPR.
15860
15861 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
15862
15863         * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
15864         REGION_COPY argument.
15865         (thread_through_all_blocks): Remove unused argument to
15866         duplicate_thread_path.
15867
15868 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15869             Alan Hayward  <alan.hayward@arm.com>
15870             David Sherwood  <david.sherwood@arm.com>
15871
15872         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
15873         Take a scalar_mode rather than a machine_mode.
15874         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15875         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
15876         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15877         (aarch64_gen_adjusted_ldpstp): Likewise.
15878         (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
15879
15880 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15881             Alan Hayward  <alan.hayward@arm.com>
15882             David Sherwood  <david.sherwood@arm.com>
15883
15884         * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
15885         Take a scalar_int_mode instead of a machine_mode.
15886         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15887         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15888         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15889         (aarch64_simd_attr_length_rglist): Delete.
15890         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
15891         a scalar_int_mode instead of a machine_mode.
15892         (aarch64_add_offset): Likewise.
15893         (aarch64_internal_mov_immediate): Likewise
15894         (aarch64_add_constant_internal): Likewise.
15895         (aarch64_add_constant): Likewise.
15896         (aarch64_movw_imm): Likewise.
15897         (aarch64_rtx_arith_op_extract_p): Likewise.
15898         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15899         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15900         Remove assert that the mode isn't a vector.
15901         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15902         (aarch64_expand_mov_immediate): Update calls after above changes.
15903         (aarch64_output_casesi): Use as_a <scalar_int_mode>.
15904         (aarch64_and_bitmask_imm): Check for scalar integer modes.
15905         (aarch64_move_imm): Likewise.
15906         (aarch64_can_const_movi_rtx_p): Likewise.
15907         (aarch64_strip_extend): Likewise.
15908         (aarch64_extr_rtx_p): Likewise.
15909         (aarch64_rtx_costs): Likewise, using wode_mode as the mode of
15910         a CONST_INT when the mode parameter is VOIDmode.
15911         (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
15912
15913 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15914
15915         * machmode.h (bitwise_mode_for_mode): Return opt_mode.
15916         * stor-layout.c (bitwise_mode_for_mode): Likewise.
15917         (bitwise_type_for_mode): Update accordingly.
15918
15919 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15920
15921         * stor-layout.h (mode_for_size_tree): Return an opt_mode.
15922         * stor-layout.c (mode_for_size_tree): Likewise.
15923         (mode_for_array): Update accordingly.
15924         (layout_decl): Likewise.
15925         (compute_record_mode): Likewise.  Only set the mode once.
15926
15927 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15928
15929         * target.def (get_mask_mode): Change return type to opt_mode.
15930         Expand commentary.
15931         * doc/tm.texi: Regenerate.
15932         * targhooks.h (default_get_mask_mode): Return an opt_mode.
15933         * targhooks.c (default_get_mask_mode): Likewise.
15934         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
15935         * optabs-query.c (can_vec_mask_load_store_p): Update use of
15936         targetm.get_mask_mode.
15937         * tree.c (build_truth_vector_type): Likewise.
15938
15939 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15940
15941         * machmode.h (mode_for_vector): Return an opt_mode.
15942         * stor-layout.c (mode_for_vector): Likewise.
15943         (mode_for_int_vector): Update accordingly.
15944         (layout_type): Likewise.
15945         * config/i386/i386.c (emit_memmov): Likewise.
15946         (ix86_expand_set_or_movmem): Likewise.
15947         (ix86_expand_vector_init): Likewise.
15948         (ix86_get_mask_mode): Likewise.
15949         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
15950         Likewise.
15951         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
15952         * expmed.c (extract_bit_field_1): Likewise.
15953         * expr.c (expand_expr_real_2): Likewise.
15954         * optabs-query.c (can_vec_perm_p): Likewise.
15955         (can_vec_mask_load_store_p): Likewise.
15956         * optabs.c (expand_vec_perm): Likewise.
15957         * targhooks.c (default_get_mask_mode): Likewise.
15958         * tree-vect-stmts.c (vectorizable_store): Likewise.
15959         (vectorizable_load): Likewise.
15960         (get_vectype_for_scalar_type_and_size): Likewise.
15961
15962 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15963
15964         * machmode.h (mode_for_int_vector): New function.
15965         * stor-layout.c (mode_for_int_vector): Likewise.
15966         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
15967         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
15968         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
15969         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
15970         (s390_expand_vcond): Likewise.
15971
15972 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15973
15974         * machmode.h (opt_machine_mode): New type.
15975         (opt_mode<T>): Allow construction from anything that can be
15976         converted to a T.
15977         (is_a, as_a, dyn_cast): Add overloads for opt_mode.
15978         (mode_for_size): Return an opt_machine_mode.
15979         * stor-layout.c (mode_for_size): Likewise.
15980         (mode_for_size_tree): Update call accordingly.
15981         (bitwise_mode_for_mode): Likewise.
15982         (make_fract_type): Likewise.
15983         (make_accum_type): Likewise.
15984         * caller-save.c (replace_reg_with_saved_mem): Update call
15985         accordingly.
15986         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15987         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15988         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15989         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15990         * expmed.c (extract_bit_field_1): Likewise.
15991         * reload.c (get_secondary_mem): Likewise.
15992         * varasm.c (assemble_integer): Likewise.
15993         * lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
15994         early-out.
15995
15996 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15997
15998         * machmode.h (decimal_float_mode_for_size): New function.
15999         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
16000         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
16001         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.
16002         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
16003         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
16004         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
16005
16006 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16007
16008         * builtins.c (expand_builtin_powi): Use int_mode_for_size.
16009         (get_builtin_sync_mode): Likewise.
16010         (expand_ifn_atomic_compare_exchange): Likewise.
16011         (expand_builtin_atomic_clear): Likewise.
16012         (expand_builtin_atomic_test_and_set): Likewise.
16013         (fold_builtin_atomic_always_lock_free): Likewise.
16014         * calls.c (compute_argument_addresses): Likewise.
16015         (emit_library_call_value_1): Likewise.
16016         (store_one_arg): Likewise.
16017         * combine.c (combine_instructions): Likewise.
16018         * config/aarch64/aarch64.c (aarch64_function_value): Likewise.
16019         * config/arm/arm.c (arm_function_value): Likewise.
16020         (aapcs_allocate_return_reg): Likewise.
16021         * config/c6x/c6x.c (c6x_expand_movmem): Likewise.
16022         * config/i386/i386.c (construct_container): Likewise.
16023         (ix86_gimplify_va_arg): Likewise.
16024         (ix86_expand_sse_cmp): Likewise.
16025         (emit_memmov): Likewise.
16026         (emit_memset): Likewise.
16027         (expand_small_movmem_or_setmem): Likewise.
16028         (ix86_expand_pextr): Likewise.
16029         (ix86_expand_pinsr): Likewise.
16030         * config/lm32/lm32.c (lm32_block_move_inline): Likewise.
16031         * config/microblaze/microblaze.c (microblaze_block_move_straight):
16032         Likewise.
16033         * config/mips/mips.c (mips_function_value_1) Likewise.
16034         (mips_block_move_straight): Likewise.
16035         (mips_expand_ins_as_unaligned_store): Likewise.
16036         * config/powerpcspe/powerpcspe.c
16037         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16038         (rs6000_darwin64_record_arg_flush): Likewise.
16039         * config/rs6000/rs6000.c
16040         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16041         (rs6000_darwin64_record_arg_flush): Likewise.
16042         * config/sparc/sparc.c (sparc_function_arg_1): Likewise.
16043         (sparc_function_value_1): Likewise.
16044         * config/spu/spu.c (adjust_operand): Likewise.
16045         (spu_emit_branch_or_set): Likewise.
16046         (arith_immediate_p): Likewise.
16047         * emit-rtl.c (gen_lowpart_common): Likewise.
16048         * expr.c (expand_expr_real_1): Likewise.
16049         * function.c (assign_parm_setup_block): Likewise.
16050         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
16051         * reload1.c (alter_reg): Likewise.
16052         * stor-layout.c (mode_for_vector): Likewise.
16053         (layout_type): Likewise.
16054
16055 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16056
16057         * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
16058         (spu_convert_move): Likewise.
16059         * lower-subreg.c (resolve_simple_move): Likewise.
16060
16061 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16062
16063         PR target/81833
16064         * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
16065         define_insn to a define_expand.
16066         (altivec_vsum2sws_direct): New define_insn.
16067         (altivec_vsumsws): Convert from a define_insn to a define_expand.
16068
16069 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16070
16071         * config/arm/arm.c (arm_option_params_internal): Improve setting of
16072         max_insns_skipped.
16073
16074 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
16075
16076         PR target/59501
16077         PR target/81624
16078         PR target/81769
16079         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
16080         realign stack if stack alignment needed is less than incoming
16081         stack boundary.
16082
16083 2017-09-05  Marek Polacek  <polacek@redhat.com>
16084
16085         PR sanitizer/82072
16086         * convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
16087         check earlier.
16088
16089 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16090
16091         * explow.c (get_dynamic_stack_size): Improve dynamic alignment.
16092
16093 2017-09-05  Richard Biener  <rguenther@suse.de>
16094
16095         PR tree-optimization/82084
16096         * fold-const.c (can_native_encode_string_p): Handle wide characters.
16097
16098 2017-09-05  Richard Biener  <rguenther@suse.de>
16099
16100         PR tree-optimization/82102
16101         * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
16102
16103 2017-09-05  Martin Liska  <mliska@suse.cz>
16104
16105         PR tree-optimization/82032
16106         * tree-cfg.c (generate_range_test): New function.
16107         * tree-cfg.h (generate_range_test): Declared here.
16108         * tree-cfgcleanup.c (convert_single_case_switch): New function.
16109         (cleanup_control_expr_graph): Use it.
16110         * tree-switch-conversion.c (try_switch_expansion): Remove
16111         assert.
16112         (emit_case_nodes): Use generate_range_test.
16113
16114 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16115
16116         PR target/82098
16117         * config/i386/i386.md (*<btsc><mode>_mask): Add
16118         TARGET_USE_BT to insn constraint.
16119         (*btr<mode>_mask): Ditto.
16120
16121 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
16122
16123         * config/arm/arm.c (arm_legitimate_index_p): Add comment.
16124         (thumb2_legitimate_index_p): Use correct range for DI/DF mode.
16125
16126 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
16127
16128         PR target/77308
16129         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
16130         TARGET_NEON and TARGET_IWMMXT.
16131         (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
16132         TARGET_NEON and TARGET_IWMMXT.
16133         (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
16134
16135 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16136
16137         * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
16138         (ix86_rewrite_tls_address): Ditto.
16139         * config/i386/i386.c (ix86_tls_address_pattern_p) New function.
16140         (ix86_rewrite_tls_address_1): Ditto.
16141         (ix86_rewrite_tls_address): Ditto.
16142         * config/i386/predicates.md (tls_address_pattern): New predicate.
16143         * config/i386/i386.md (TLS address splitter): New splitter.
16144
16145 2017-09-04  Richard Biener  <rguenther@suse.de>
16146
16147         PR tree-optimization/82084
16148         * fold-const.h (can_native_encode_string_p): Declare.
16149         * fold-const.c (can_native_encode_string_p): Factor out from ...
16150         (native_encode_string): ... here.
16151         * tree-vect-stmts.c (vectorizable_store): Call it to avoid
16152         vectorizing stores from constants we later cannot handle.
16153
16154 2017-09-04  Marek Polacek  <polacek@redhat.com>
16155
16156         PR c/81783
16157         * doc/invoke.texi: Update -Wtautological-compare documentation.
16158
16159 2017-09-04  Jeff Law  <law@redhat.com>
16160
16161         PR tree-optimization/64910
16162         * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
16163         swap the first and last operand if the last is a constant.
16164
16165 2017-09-04  Marek Polacek  <polacek@redhat.com>
16166
16167         PR sanitizer/82072
16168         * convert.c (do_narrow): When sanitizing signed integer overflows,
16169         bail out for signed types.
16170         (convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
16171
16172 2017-09-04  Richard Biener  <rguenther@suse.de>
16173
16174         PR tree-optimization/82060
16175         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
16176         Move devirtualization after stmt folding and before EH/AB/noreturn
16177         cleanup to get the stmt refs canonicalized.  Use a bool instead
16178         of gimple_modified_p since that doesn't work for NOPs.  Schedule
16179         NOPs generated by folding for removal.
16180
16181 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16182             Alan Hayward  <alan.hayward@arm.com>
16183             David Sherwood  <david.sherwood@arm.com>
16184
16185         * coretypes.h (pad_direction): New enum.
16186         * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
16187         (FUNCTION_ARG_PADDING): Likewise.
16188         * target.def (function_arg_padding): New hook.
16189         * targhooks.h (default_function_arg_padding): Declare.
16190         * targhooks.c (default_function_arg_padding): New function.
16191         * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
16192         (TARGET_FUNCTION_ARG_PADDING): ...this.
16193         * doc/tm.texi: Regenerate.
16194         * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
16195         instead of direction.
16196         (compute_argument_addresses): Likewise.
16197         (load_register_parameters): Likewise.
16198         (emit_library_call_value_1): Likewise.
16199         (store_one_arg): Use targetm.calls.function_arg_padding instead
16200         of FUNCTION_ARG_PADDING.
16201         (must_pass_in_stack_var_size_or_pad): Likewise.
16202         * expr.c (emit_group_load_1): Use pad_direction instead of direction.
16203         (emit_group_store): Likewise.
16204         (emit_single_push_insn_1): Use targetm.calls.function_arg_padding
16205         instead of FUNCTION_ARG_PADDING.
16206         (emit_push_insn): Likewise, and propagate enum change throughout
16207         function.
16208         * function.h (direction): Delete.
16209         (locate_and_pad_arg_data::where_pad): Use pad_direction instead
16210         of direction.
16211         * function.c (assign_parm_find_stack_rtl): Likewise.
16212         (assign_parm_setup_block_p): Likewise.
16213         (assign_parm_setup_block): Likewise.
16214         (gimplify_parameters): Likewise.
16215         (locate_and_pad_parm): Use targetm.calls.function_arg_padding
16216         instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
16217         function.
16218         * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
16219         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16220         * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
16221         * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
16222         (aarch64_function_arg_padding): ...this new function.
16223         (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
16224         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16225         * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
16226         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16227         * config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
16228         * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16229         (arm_pad_arg_upward): Replace with...
16230         (arm_function_arg_padding): ...this new function.
16231         * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
16232         of direction.
16233         * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
16234         * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
16235         * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16236         (ia64_hpux_function_arg_padding): Replace with...
16237         (ia64_function_arg_padding): ...this new function.  Use pad_direction
16238         instead of direction.  Check for TARGET_HPUX.
16239         * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
16240         * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16241         (iq2000_function_arg_padding): New function.
16242         * config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
16243         * config/mips/mips.c (mips_pad_arg_upward): Replace with...
16244         (mips_function_arg_padding): ...this new function.
16245         (mips_pad_reg_upward): Update accordingly.
16246         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16247         * config/mips/mips.h (PAD_VARARGS_DOWN): Use
16248         targetm.calls.function_arg_padding.
16249         (FUNCTION_ARG_PADDING): Delete.
16250         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16251         * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
16252         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16253         * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
16254         (nios2_block_reg_padding): Return pad_direction instead of direction.
16255         * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
16256         instead of direction.
16257         (nios2_function_arg_padding): Likewise.  Make static.
16258         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16259         * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
16260         (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
16261         * config/pa/pa-protos.h (pa_function_arg_padding): Delete.
16262         * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16263         (pa_function_arg_padding): Make static.  Return pad_direction instead
16264         of direction.
16265         * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
16266         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16267         * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
16268         instead of direction.  Use targetm.calls.function_arg_padding.
16269         * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
16270         * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16271         * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
16272         * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
16273         * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
16274         Redefine.
16275         (function_arg_padding): Rename to...
16276         (rs6000_function_arg_padding): ...this.  Make static.  Return
16277         pad_direction instead of direction.
16278         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16279         * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
16280         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16281         * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
16282         instead of direction.  Use targetm.calls.function_arg_padding.
16283         * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
16284         * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16285         * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
16286         * config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
16287         * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16288         (function_arg_padding): Rename to...
16289         (rs6000_function_arg_padding): ...this.  Make static.  Return
16290         pad_direction instead of direction.
16291         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16292         * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
16293         * config/s390/s390.c (s390_function_arg_padding): New function.
16294         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16295         * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
16296         * config/sparc/sparc-protos.h (function_arg_padding): Delete.
16297         * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16298         (function_arg_padding): Rename to...
16299         (sparc_function_arg_padding): ...this.  Make static.  Return
16300         pad_direction instead of direction.
16301         * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
16302         * config/spu/spu.c (spu_function_arg_padding): New function.
16303         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16304         * system.h (FUNCTION_ARG_PADDING): Poison.
16305
16306 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16307             Alan Hayward  <alan.hayward@arm.com>
16308             David Sherwood  <david.sherwood@arm.com>
16309
16310         * target.def (modes_tieable_p): New hook.
16311         * doc/tm.texi (MODES_TIEABLE_P): Replace with...
16312         (TARGET_MODES_TIEABLE_P): ...this.
16313         * doc/tm.texi.in: Regenerate.
16314         * hooks.h (hook_bool_mode_mode_true): Declare.
16315         * hooks.c (hook_bool_mode_mode_true): New function.
16316         * combine.c (subst): Use targetm.modes_tieable_p instead of
16317         MODES_TIEABLE_P.
16318         * dse.c (find_shift_sequence): Likewise.
16319         * expmed.c (extract_low_bits): Likewise.
16320         * lower-subreg.c: Include target.h.
16321         (find_decomposable_subregs): Use targetm.modes_tieable_p instead of
16322         MODES_TIEABLE_P.
16323         * rtlanal.c (rtx_cost): Likewise.
16324         * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
16325         * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
16326         * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
16327         (TARGET_MODES_TIEABLE_P): Redefine.
16328         * config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
16329         * config/alpha/alpha.c (alpha_modes_tieable_p): New function.
16330         (TARGET_MODES_TIEABLE_P): Redefine.
16331         * config/arc/arc.h (MODES_TIEABLE_P): Delete.
16332         * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
16333         (arc_modes_tieable_p): New function.
16334         * config/arm/arm.h (MODES_TIEABLE_P): Delete.
16335         * config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
16336         * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
16337         (arm_modes_tieable_p): Make static.
16338         * config/avr/avr.h (MODES_TIEABLE_P): Delete.
16339         * config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
16340         * config/bfin/bfin.c (bfin_modes_tieable_p): New function.
16341         (TARGET_MODES_TIEABLE_P): Redefine.
16342         * config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
16343         * config/c6x/c6x.c (c6x_modes_tieable_p): New function.
16344         (TARGET_MODES_TIEABLE_P): Redefine.
16345         * config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
16346         * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
16347         (cr16_modes_tieable_p): New function.
16348         * config/cris/cris.h (MODES_TIEABLE_P): Delete.
16349         * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
16350         * config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
16351         (TRULY_NOOP_TRUNCATION): Update comment.
16352         * config/frv/frv.h (MODES_TIEABLE_P): Delete.
16353         (TRULY_NOOP_TRUNCATION): Update comment.
16354         * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
16355         (frv_modes_tieable_p): New function.
16356         * config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
16357         * config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
16358         * config/h8300/h8300.c (h8300_modes_tieable_p): New function.
16359         (TARGET_MODES_TIEABLE_P): Redefine.
16360         * config/i386/i386.h (MODES_TIEABLE_P): Delete.
16361         * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
16362         * config/i386/i386.c (ix86_modes_tieable_p): Make static.
16363         (TARGET_MODES_TIEABLE_P): Redefine.
16364         * config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
16365         * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
16366         (ia64_modes_tieable_p): New function.
16367         * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
16368         * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
16369         (iq2000_modes_tieable_p): New function.
16370         * config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
16371         * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
16372         (lm32_modes_tieable_p): New function.
16373         * config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
16374         * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
16375         * config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
16376         (TARGET_MODES_TIEABLE_P): Redefine.
16377         * config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
16378         * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
16379         (m32r_modes_tieable_p): New function.
16380         * config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
16381         * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
16382         (m68k_modes_tieable_p): New function.
16383         * config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
16384         * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
16385         (mcore_modes_tieable_p): New function.
16386         * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
16387         * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
16388         function.
16389         (TARGET_MODES_TIEABLE_P): Redefine.
16390         * config/mips/mips.h (MODES_TIEABLE_P): Delete.
16391         * config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
16392         * config/mips/mips.c (mips_modes_tieable_p): Make static.
16393         (TARGET_MODES_TIEABLE_P): Redefine.
16394         * config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
16395         * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
16396         * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
16397         * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
16398         (mn10300_modes_tieable_p): ...this and make static.
16399         (TARGET_MODES_TIEABLE_P): Redefine.
16400         * config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
16401         * config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
16402         * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
16403         * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
16404         (msp430_modes_tieable_p): Make static.
16405         * config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
16406         * config/nds32/nds32.c (nds32_modes_tieable_p): New function.
16407         (TARGET_MODES_TIEABLE_P): Redefine.
16408         * config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
16409         * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
16410         * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
16411         (TARGET_MODES_TIEABLE_P): Redefine.
16412         * config/pa/pa.h (MODES_TIEABLE_P): Delete.
16413         * config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
16414         * config/pa/pa.c (pa_modes_tieable_p): Make static.
16415         (TARGET_MODES_TIEABLE_P): Redefine.
16416         * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
16417         * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
16418         (pdp11_modes_tieable_p): New function.
16419         * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
16420         * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
16421         (rs6000_modes_tieable_p): New function.
16422         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16423         * config/powerpcspe/powerpcspe.md: Update comment.
16424         * config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
16425         * config/riscv/riscv.c (riscv_modes_tieable_p): New function.
16426         (TARGET_MODES_TIEABLE_P): Redefine.
16427         * config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
16428         * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
16429         (rl78_modes_tieable_p): New function.
16430         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
16431         * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
16432         (rs6000_modes_tieable_p): New function.
16433         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16434         * config/rs6000/rs6000.md: Update comment.
16435         * config/rx/rx.h (MODES_TIEABLE_P): Delete.
16436         * config/rx/rx.c (rx_modes_tieable_p): New function.
16437         (TARGET_MODES_TIEABLE_P): Redefine.
16438         * config/s390/s390.h (MODES_TIEABLE_P): Delete.
16439         * config/s390/s390.c (s390_modes_tieable_p): New function.
16440         (TARGET_MODES_TIEABLE_P): Redefine.
16441         * config/sh/sh.h (MODES_TIEABLE_P): Delete.
16442         * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
16443         (sh_modes_tieable_p): New function.
16444         * config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
16445         * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
16446         * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
16447         (sparc_modes_tieable_p): Make static.
16448         * config/spu/spu.h (MODES_TIEABLE_P): Delete.
16449         * config/spu/spu.c (spu_modes_tieable_p): New function.
16450         (TARGET_MODES_TIEABLE_P): Redefine.
16451         * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
16452         * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
16453         (TARGET_MODES_TIEABLE_P): Redefine.
16454         * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
16455         * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
16456         * config/v850/v850.h (MODES_TIEABLE_P): Delete.
16457         * config/v850/v850.c (v850_modes_tieable_p): New function.
16458         (TARGET_MODES_TIEABLE_P): Redefine.
16459         * config/vax/vax.h (MODES_TIEABLE_P): Delete.
16460         * config/visium/visium.h (MODES_TIEABLE_P): Delete.
16461         * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
16462         (visium_modes_tieable_p): New function.
16463         * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
16464         * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
16465         (xtensa_modes_tieable_p): New function.
16466         * system.h (MODES_TIEABLE_P): Poison.
16467
16468 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16469             Alan Hayward  <alan.hayward@arm.com>
16470             David Sherwood  <david.sherwood@arm.com>
16471
16472         * target.def (hard_regno_mode_ok): New hook.
16473         * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
16474         (TARGET_HARD_REGNO_MODE_OK): ...this.
16475         * doc/tm.texi.in: Regenerate.
16476         * hooks.h (hook_bool_uint_mode_true): Declare.
16477         * hooks.c (hook_bool_uint_mode_true): New function.
16478         * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
16479         HARD_REGNO_MODE_OK.
16480         * genpreds.c (write_insn_preds_c): Add an include of target.h.
16481         * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
16482         instead of HARD_REGNO_MODE_OK.
16483         * caller-save.c: Include target.h.
16484         (reg_save_code): Use targetm.hard_regno_mode_ok instead of
16485         HARD_REGNO_MODE_OK.
16486         * combine.c (can_combine_p): Likewise.
16487         (combinable_i3pat): Likewise.
16488         (can_change_dest_mode): Likewise.
16489         * expr.c (init_expr_target): Likewise.
16490         (convert_move): Likewise.
16491         (convert_modes): Likewise.
16492         * ira.c (setup_prohibited_class_mode_regs): Likewise.
16493         (setup_prohibited_mode_move_regs): Likewise.
16494         * ira.h (target_ira): Likewise.
16495         * lra-assigns.c (find_hard_regno_for_1): Likewise.
16496         * lra-constraints.c (process_alt_operands): Likewise.
16497         (split_reg): Likewise.
16498         * recog.c (peep2_find_free_register): Likewise.
16499         * ree.c (combine_reaching_defs): Likewise.
16500         * regcprop.c (maybe_mode_change): Likewise.
16501         * reginfo.c (init_reg_sets_1): Likewise.
16502         (choose_hard_reg_mode): Likewise.
16503         (simplifiable_subregs): Likewise.
16504         * regrename.c (check_new_reg_p): Likewise.
16505         * reload.c (find_valid_class): Likewise.
16506         (find_valid_class_1): Likewise.
16507         (reload_inner_reg_of_subreg): Likewise.
16508         (push_reload): Likewise.
16509         (combine_reloads): Likewise.
16510         (find_dummy_reload): Likewise.
16511         (find_reloads): Likewise.
16512         * reload1.c (find_reg): Likewise.
16513         (set_reload_reg): Likewise.
16514         (allocate_reload_reg): Likewise.
16515         (choose_reload_regs): Likewise.
16516         (reload_adjust_reg_for_temp): Likewise.
16517         * rtlanal.c (subreg_size_offset_from_lsb): Likewise.
16518         (simplify_subreg_regno): Likewise.
16519         * sel-sched.c (init_regs_for_mode): Likewise.
16520         * varasm.c (make_decl_rtl): Likewise.
16521         * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
16522         (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
16523         HARD_REGNO_MODE_OK.
16524         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
16525         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
16526         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16527         * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
16528         * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
16529         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16530         * config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
16531         (arc_mode_class): Delete.
16532         (HARD_REGNO_MODE_OK): Delete.
16533         * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16534         (arc_hard_regno_mode_ok): Rename old array to...
16535         (arc_hard_regno_mode_ok_modes): ...this.
16536         (arc_conditional_register_usage): Update accordingly.
16537         (arc_mode_class): Make static.
16538         (arc_hard_regno_mode_ok): New function.
16539         * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
16540         * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
16541         * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16542         (arm_hard_regno_mode_ok): Make static.
16543         * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
16544         HARD_REGNO_MODE_OK.
16545         * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
16546         * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
16547         * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
16548         return a bool.
16549         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16550         * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
16551         * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
16552         * config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
16553         (bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
16554         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16555         * config/bfin/predicates.md (valid_reg_operand): Use
16556         targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
16557         * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
16558         * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
16559         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16560         * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
16561         * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
16562         * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16563         (cr16_hard_regno_mode_ok): Make static and return a bool.
16564         * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
16565         * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16566         (cris_hard_regno_mode_ok): New function.
16567         * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
16568         (epiphany_mode_class): Delete.
16569         (HARD_REGNO_MODE_OK): Delete.
16570         * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
16571         * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16572         (hard_regno_mode_ok): Rename to...
16573         (epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
16574         * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
16575         * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
16576         HARD_REGNO_MODE_OK.
16577         * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
16578         * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
16579         * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16580         (frv_hard_regno_mode_ok): Make static and return a bool.
16581         * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
16582         HARD_REGNO_MODE_OK.
16583         * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
16584         * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
16585         * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
16586         * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
16587         and return a bool.
16588         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16589         * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
16590         * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
16591         * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
16592         return a bool.
16593         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16594         * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
16595         * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16596         (ia64_hard_regno_mode_ok): New function.
16597         * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
16598         * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16599         (iq2000_hard_regno_mode_ok): New function.
16600         * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
16601         * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16602         (lm32_hard_regno_mode_ok): New function.
16603         * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
16604         * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
16605         * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
16606         instead of HARD_REGNO_MODE_OK.
16607         (m32c_hard_regno_ok): Rename to...
16608         (m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
16609         (m32c_cannot_change_mode_class): Update accordingly.
16610         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16611         * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
16612         (m32r_mode_class): Delete.
16613         (HARD_REGNO_MODE_OK): Delete.
16614         * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16615         (m32r_hard_regno_mode_ok): Rename to...
16616         (m32r_hard_regno_modes): ...this.
16617         (m32r_mode_class): Make static.
16618         (m32r_hard_regno_mode_ok): New function.
16619         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
16620         * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
16621         * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16622         (m68k_hard_regno_mode_ok): Make static.
16623         * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
16624         * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16625         (mcore_hard_regno_mode_ok): New function.
16626         * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
16627         (HARD_REGNO_MODE_OK): Delete.
16628         * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
16629         Rename to...
16630         (microblaze_hard_regno_mode_ok_p): ...this and make static.
16631         (microblaze_hard_regno_mode_ok): New function.
16632         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16633         * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
16634         (mips_hard_regno_mode_ok): Delete.
16635         * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
16636         (mips_hard_regno_mode_ok_p): ...this and make static.
16637         (mips_hard_regno_mode_ok_p): Rename to...
16638         (mips_hard_regno_mode_ok_uncached): ...this.
16639         (mips_hard_regno_mode_ok): New function.
16640         (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
16641         of HARD_REGNO_MODE_OK.
16642         (mips_option_override): Update after above name changes.
16643         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16644         * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
16645         * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
16646         * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
16647         * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
16648         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16649         * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
16650         * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
16651         * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
16652         * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16653         (msp430_hard_regno_mode_ok): Make static and return a bool.
16654         * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
16655         * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
16656         * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
16657         and return a bool.
16658         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16659         * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
16660         * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
16661         * config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
16662         * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
16663         (PA_HARD_REGNO_MODE_OK): ...this
16664         * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
16665         (PA_HARD_REGNO_MODE_OK): ...this.
16666         * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16667         (pa_hard_regno_mode_ok): New function.
16668         * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
16669         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16670         (pdp11_hard_regno_mode_ok): New function.
16671         * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
16672         * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
16673         Delete.
16674         * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
16675         Make static.
16676         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16677         (rs6000_hard_regno_mode_ok): Rename to...
16678         (rs6000_hard_regno_mode_ok_uncached): ...this.
16679         (rs6000_init_hard_regno_mode_ok): Update accordingly.
16680         (rs6000_hard_regno_mode_ok): New function.
16681         * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
16682         * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
16683         * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
16684         (riscv_hard_regno_mode_ok): ...this and make static.
16685         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16686         * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
16687         * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
16688         * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16689         (rl78_hard_regno_mode_ok): Make static and return bool.
16690         * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
16691         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
16692         Delete.
16693         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
16694         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16695         (rs6000_hard_regno_mode_ok): Rename to...
16696         (rs6000_hard_regno_mode_ok_uncached): ...this.
16697         (rs6000_init_hard_regno_mode_ok): Update accordingly.
16698         (rs6000_hard_regno_mode_ok): New function.
16699         * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
16700         * config/rx/rx.c (rx_hard_regno_mode_ok): New function.
16701         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16702         * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
16703         * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
16704         * config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
16705         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16706         * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
16707         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
16708         * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16709         (sh_hard_regno_mode_ok): Make static.
16710         * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
16711         instead of HARD_REGNO_MODE_OK.
16712         * config/sparc/sparc.h (hard_regno_mode_classes): Delete.
16713         (sparc_mode_class): Delete.
16714         (HARD_REGNO_MODE_OK): Delete.
16715         * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16716         (hard_regno_mode_classes): Make static.
16717         (sparc_mode_class): Likewise.
16718         (sparc_hard_regno_mode_ok): New function.
16719         * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
16720         * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
16721         * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
16722         function.
16723         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16724         * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
16725         * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
16726         * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
16727         * config/v850/v850.c (v850_hard_regno_mode_ok): New function.
16728         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16729         * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
16730         * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
16731         * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16732         (visium_hard_regno_mode_ok): New function.
16733         * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
16734         instead of HARD_REGNO_MODE_OK.
16735         * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
16736         (HARD_REGNO_MODE_OK): Delete.
16737         * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
16738         (xtensa_hard_regno_mode_ok_p): ...this and make static.
16739         (xtensa_option_override): Update accordingly.
16740         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16741         (xtensa_hard_regno_mode_ok): New function.
16742         * system.h (HARD_REGNO_MODE_OK): Poison.
16743
16744 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16745             Alan Hayward  <alan.hayward@arm.com>
16746             David Sherwood  <david.sherwood@arm.com>
16747
16748         * target.def (hard_regno_call_part_clobbered): New hook.
16749         * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
16750         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
16751         * doc/tm.texi: Regenerate.
16752         * hooks.h (hook_bool_uint_mode_false): Declare.
16753         * hooks.c (hook_bool_uint_mode_false): New function.
16754         * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16755         * cselib.c (cselib_process_insn): Use
16756         targetm.hard_regno_call_part_clobbered instead of
16757         HARD_REGNO_CALL_PART_CLOBBERED.
16758         * ira-conflicts.c (ira_build_conflicts): Likewise.
16759         * ira-costs.c (ira_tune_allocno_costs): Likewise.
16760         * lra-constraints.c (need_for_call_save_p): Likewise.
16761         * lra-lives.c: Include target.h.
16762         (check_pseudos_live_through_calls): Use
16763         targetm.hard_regno_call_part_clobbered instead of
16764         HARD_REGNO_CALL_PART_CLOBBERED.
16765         * regcprop.c: Include target.h.
16766         (copyprop_hardreg_forward_1): Use
16767         targetm.hard_regno_call_part_clobbered instead of
16768         HARD_REGNO_CALL_PART_CLOBBERED.
16769         * reginfo.c (choose_hard_reg_mode): Likewise.
16770         * regrename.c (check_new_reg_p): Likewise.
16771         * reload.c (find_equiv_reg): Likewise.
16772         * reload1.c (emit_reload_insns): Likewise.
16773         * sched-deps.c (deps_analyze_insn): Likewise.
16774         * sel-sched.c (init_regs_for_mode): Likewise.
16775         (mark_unavailable_hard_regs): Likewise.
16776         * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
16777         * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16778         * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
16779         New function.
16780         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16781         * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16782         * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
16783         Delete.
16784         * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
16785         and return a bool.
16786         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16787         * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16788         * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
16789         function.
16790         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16791         * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16792         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
16793         function.
16794         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16795         * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
16796         Delete.
16797         * config/powerpcspe/powerpcspe.c
16798         (rs6000_hard_regno_call_part_clobbered): New function.
16799         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16800         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16801         * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
16802         New function.
16803         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16804         * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16805         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
16806         function.
16807         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16808         * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16809         * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
16810
16811 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16812             Alan Hayward  <alan.hayward@arm.com>
16813             David Sherwood  <david.sherwood@arm.com>
16814
16815         * rtl.h (subreg_memory_offset): Declare.
16816         * emit-rtl.c (subreg_memory_offset): New function.
16817         * expmed.c (store_bit_field_1): Use it.
16818         * expr.c (undefined_operand_subword_p): Likewise.
16819         * simplify-rtx.c (simplify_subreg): Likewise.
16820
16821 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
16822
16823         PR rtl-optimization/57448
16824         PR target/67458
16825         PR target/81316
16826         * optabs.c (expand_atomic_load): Place compiler memory barriers if
16827         using atomic_load pattern.
16828         (expand_atomic_store): Likewise.
16829
16830 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
16831
16832         PR sanitizer/81981
16833         * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
16834         and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
16835         handling.  Use replace_call_with_value with NULL instead of
16836         gsi_replace, unlink_stmt_vdef and release_defs.
16837
16838         * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
16839         instead of tab.
16840
16841         * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
16842
16843 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16844
16845         PR bootstrap/82045
16846         * rtl.h (emit_library_call_value_1): Declare.
16847         (emit_library_call): Replace declaration with a series of overloads.
16848         Remove the parameter count argument.
16849         (emit_library_call_value): Likewise.
16850         * calls.c (emit_library_call_value_1): Make global.  Replace varargs
16851         with an "rtx_mode_t *".
16852         (emit_library_call_value): Delete.
16853         (emit_library_call): Likewise.
16854         * asan.c (asan_emit_stack_protection): Update calls accordingly.
16855         (asan_emit_allocas_unpoison): Likewise.
16856         * builtins.c (expand_builtin_powi): Likewise.
16857         (expand_asan_emit_allocas_unpoison): Likewise.
16858         * cfgexpand.c (expand_main_function): Likewise.
16859         * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
16860         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
16861         * config/alpha/alpha.c (alpha_trampoline_init): Likewise.
16862         * config/arm/arm.c (arm_trampoline_init): Likewise.
16863         (arm_call_tls_get_addr): Likewise.
16864         (arm_expand_divmod_libfunc): Likewise.
16865         * config/bfin/bfin.md (umulsi3_highpart): Likewise.
16866         (smulsi3_highpart): Likewise.
16867         * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
16868         (c6x_expand_compare): Likewise.
16869         (c6x_expand_movmem): Likewise.
16870         * config/frv/frv.c (frv_trampoline_init): Likewise.
16871         * config/i386/i386.c (ix86_trampoline_init): Likewise.
16872         (ix86_expand_divmod_libfunc): Likewise.
16873         * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
16874         (ia64_expand_compare): Likewise.
16875         (ia64_profile_hook): Likewise.
16876         * config/ia64/ia64.md (save_stack_nonlocal): Likewise.
16877         (nonlocal_goto): Likewise.
16878         (restore_stack_nonlocal): Likewise.
16879         * config/m32r/m32r.c (block_move_call): Likewise.
16880         (m32r_trampoline_init): Likewise.
16881         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
16882         * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
16883         (m68k_call_m68k_read_tp): Likewise.
16884         * config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
16885         (microblaze_expand_divide): Likewise.
16886         * config/mips/mips.h (mips_args): Likewise.
16887         * config/mips/sdemtk.h (mips_sync_icache): Likewise.
16888         (MIPS_ICACHE_SYNC): Likewise.
16889         * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
16890         (nios2_trampoline_init): Likewise.
16891         * config/pa/pa.c (hppa_tls_call): Likewise.
16892         (pa_trampoline_init): Likewise.
16893         * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
16894         * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
16895         (expand_strn_compare): Likewise.
16896         (rs6000_generate_compare): Likewise.
16897         (rs6000_expand_float128_convert): Likewise.
16898         (output_profile_hook): Likewise.
16899         (rs6000_trampoline_init): Likewise.
16900         * config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
16901         * config/riscv/riscv.h (PROFILE_HOOK): Likewise.
16902         * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
16903         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
16904         (rs6000_generate_compare): Likewise.
16905         (rs6000_expand_float128_convert): Likewise.
16906         (output_profile_hook): Likewise.
16907         (rs6000_trampoline_init): Likewise.
16908         * config/rs6000/rs6000.md (neg<mode>2): Likewise.
16909         * config/sh/sh.c (sh_trampoline_init): Likewise.
16910         * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
16911         (sparc_emit_float_lib_cmp): Likewise.
16912         (sparc32_initialize_trampoline): Likewise.
16913         (sparc64_initialize_trampoline): Likewise.
16914         (sparc_profile_hook): Likewise.
16915         * config/spu/spu.c (ea_load_store): Likewise.
16916         * config/spu/spu.md (floatunssidf2): Likewise.
16917         * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
16918         * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
16919         * config/visium/visium.c (expand_block_move_4): Likewise.
16920         (expand_block_move_2): Likewise.
16921         (expand_block_move_1): Likewise.
16922         (expand_block_set_4): Likewise.
16923         (expand_block_set_2): Likewise.
16924         (expand_block_set_1): Likewise.
16925         (visium_trampoline_init): Likewise.
16926         (visium_profile_hook): Likewise.
16927         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
16928         (xtensa_setup_frame_addresses): Likewise.
16929         (xtensa_trampoline_init): Likewise.
16930         * except.c (sjlj_emit_function_enter): Likewise.
16931         (sjlj_emit_function_exit): Likewise.
16932         * explow.c (allocate_dynamic_stack_space): Likewise.
16933         (probe_stack_range): Likewise.
16934         * expr.c (convert_mode_scalar): Likewise.
16935         * optabs.c (expand_binop): Likewise.
16936         (expand_twoval_binop_libfunc): Likewise.
16937         (expand_unop): Likewise.
16938         (prepare_cmp_insn): Likewise.
16939         (prepare_float_lib_cmp): Likewise.
16940         (expand_float): Likewise.
16941         (expand_fix): Likewise.
16942         (expand_fixed_convert): Likewise.
16943         (maybe_emit_sync_lock_test_and_set): Likewise.
16944         (expand_atomic_compare_and_swap): Likewise.
16945         (expand_mem_thread_fence): Likewise.
16946         (expand_atomic_fetch_op): Likewise.
16947
16948 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
16949
16950         * doc/generic.texi (OpenACC): Adjust URL.
16951         * doc/invoke.texi (C Dialect Options): Ditto.
16952
16953 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
16954
16955         * config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
16956         predicate for operand 1.  Add (m,<S>) constraint.
16957         (*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
16958         Prevent memory operand 1 with register operand 2.
16959
16960 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
16961
16962         PR rtl-optimization/82024
16963         * combine.c (try_combine): If the combination result is a PARALLEL,
16964         and we only need to retain the SET in there that would be placed
16965         at I2, check that we can place that at I3 instead, before doing so.
16966
16967 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
16968
16969         PR target/81766
16970         * config/i386/i386.c (ix86_init_large_pic_reg): Return label
16971         instead of void.
16972         (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
16973         if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
16974         and label.
16975
16976 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
16977             Jeff Law  <law@redhat.com>
16978
16979         * varasm.c (bss_initializer_p): Do not put constants into .bss
16980         (categorize_decl_for_section): Handle bss_initializer_p returning
16981         false when DECL_INITIAL is NULL.
16982
16983 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
16984
16985         PR target/82012
16986         * config/s390/s390.c (s390_can_inline_p): New function.
16987
16988 2017-09-01  Jeff Law  <law@redhat.com>
16989
16990         PR tree-optimization/82052
16991         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
16992         Always initialize the returned slot after a hash table miss
16993         when INSERT is true.
16994
16995 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
16996
16997         * config/s390/s390.md (mem_signal_fence): Remove.
16998         * doc/md.texi (mem_signal_fence): Remove.
16999         * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
17000         Update comments.
17001         * target-insns.def (mem_signal_fence): Remove.
17002
17003 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
17004
17005         PR sanitizer/81902
17006         * doc/invoke.texi: Document -fsanitize=pointer-overflow.
17007
17008         PR sanitizer/81923
17009         * asan.c (create_odr_indicator): Strip name encoding from assembler
17010         name before appending it after __odr_asan_.
17011
17012 2017-09-01  Martin Liska  <mliska@suse.cz>
17013
17014         PR tree-optimization/82059
17015         * gimple-ssa-isolate-paths.c (isolate_path): Add profile and
17016         frequency only when an edge is redirected.
17017
17018 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17019
17020         * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
17021         * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
17022         (arc_conditional_register_usage): Remove ARC600 lp_count
17023         exception.
17024         (arc_file_start): Emit Tag_ARC_CPU_variation.
17025         (arc_can_use_doloop_p): New conditions to use ZOLs.
17026         (hwloop_fail): New function.
17027         (hwloop_optimize): Likewise.
17028         (hwloop_pattern_reg): Likewise.
17029         (arc_doloop_hooks): New struct, to be used with reorg_loops.
17030         (arc_reorg_loops): New function, calls reorg_loops.
17031         (arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
17032         (arc600_corereg_hazard): Remove ZOL checking, case handled by
17033         hwloop_optimize.
17034         (arc_loop_hazard): Remove function, functionality moved into
17035         hwloop_optimize.
17036         (arc_hazard): Remove arc_loop_hazard call.
17037         (arc_adjust_insn_length): Remove ZOL handling, functionality moved
17038         into hwloop_optimize.
17039         (arc_label_align): Remove ZOL handling.
17040         * config/arc/arc.h (LOOP_ALIGN): Changed to 0.
17041         * config/arc/arc.md (doloop_begin): Remove pattern.
17042         (doloop_begin_i): Likewise.
17043         (doloop_end_i): Likewise.
17044         (doloop_fallback): Likewise.
17045         (doloop_fallback_m): Likewise.
17046         (doloop_end): Reimplement expand.
17047         (arc_lp): New pattern for LP instruction.
17048         (loop_end): New pattern.
17049         (loop_fail): Likewise.
17050         (decrement_and_branch_until_zero): Likewise.
17051         * config/arc/arc.opt (mlpc-width): New option.
17052         * doc/invoke.texi (mlpc-width): Document option.
17053
17054 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17055
17056         * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
17057         (arc_ccfsm_advance): Fix checking for delay slots.
17058         (arc_reorg): Add rtl dump after each call to arc_ifcvt.
17059
17060 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17061
17062         * config/arc/arc.md (movqi_insn): Add stores to save constant long
17063         immediates.
17064         (movhi_insn): Update store instruction constraint which are saving
17065         6-bit short immediates.
17066         (movsi_insn): Consider also short scaled load operations.
17067         (zero_extendhisi2_i): Use Usd constraint instead of T.
17068         (extendhisi2_i): Add q constraint.
17069         (arc_clzsi2): Add type and length attributes.
17070         (arc_ctzsi2): Likewise.
17071         * config/arc/constraints.md (Usc): Update constraint, the
17072         assembler can parse two relocations for a single instruction.
17073
17074 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17075
17076         * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
17077         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
17078
17079 2017-08-31  Olivier Hainque  <hainque@adacore.com>
17080
17081         * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
17082         match as powerpc-wrs-vxworks*.
17083
17084 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
17085
17086         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
17087         register constraint for by-element operand.
17088         (aarch64_mls_elt_merge<mode>): Likewise.
17089
17090 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17091
17092         * config/arc/arc.c (arc_can_follow_jump): Check for short
17093         branches.
17094
17095 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17096
17097         * config.gcc: Use g.opt for arc.
17098         * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
17099         functionality moved to ...
17100         (legitimate_scaled_address_p): New function, ...here.
17101         (LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
17102         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
17103         (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
17104         condition.
17105         (arc_override_options): Handle G option.
17106         (arc_output_pic_addr_const): Correct function definition.
17107         (arc_legitimate_address_p): Use legitimate_scaled_address_p.
17108         (arc_decl_anon_ns_mem_p): Delete.
17109         (arc_in_small_data_p): Overhaul this function to take into
17110         consideration the value given via G option.
17111         (arc_rewrite_small_data_1): Renamed and corrected old
17112         arc_rewrite_small_data function.
17113         (arc_rewrite_small_data): New function.
17114         (small_data_pattern): Don't use pic_offset_table_rtx.
17115         * config/arc/arc.h (CC1_SPEC): Recognize G option.
17116         * config/arc/simdext.md (movmisalignv2hi): Use
17117         prepare_move_operands function.
17118         (mov*): Likewise.
17119         (movmisalign*): Likewise.
17120         * doc/invoke.texi (ARC options): Document -G option.
17121
17122 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17123
17124         * config/arc/arc-protos.h (compact_sda_memory_operand): Update
17125         prototype.
17126         * config/arc/arc.c (arc_print_operand): Output scalled address for
17127         sdata whenever is possible.
17128         (arc_in_small_data_p): Allow sdata for 64bit datum when double
17129         load/stores are available.
17130         (compact_sda_memory_operand): Check for the alignment required by
17131         code density instructions.
17132         * config/arc/arc.md (movsi_insn): Use newly introduced Us0
17133         constraint.
17134         * config/arc/constraints.md (Usd): Update constraint.
17135         (Us0): New constraint.
17136         (Usc): Update constraint.
17137
17138 2017-08-31  Richard Biener  <rguenther@suse.de>
17139
17140         PR middle-end/82054
17141         * dwarf2out.c (dwarf2out_early_global_decl): Process each
17142         function only once.
17143
17144 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
17145
17146         * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
17147         Resize type_signature.
17148
17149 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17150             Alan Hayward  <alan.hayward@arm.com>
17151             David Sherwood  <david.sherwood@arm.com>
17152
17153         * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
17154         subregs whose inner modes can be stored in GPRs.
17155         (aarch64_classify_index): Likewise.
17156
17157 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17158             Alan Hayward  <alan.hayward@arm.com>
17159             David Sherwood  <david.sherwood@arm.com>
17160
17161         * config/aarch64/iterators.md (V_cmp_result): Rename to...
17162         (V_INT_EQUIV): ...this.
17163         (v_cmp_result): Rename to...
17164         (v_int_equiv): ...this.
17165         * config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
17166         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
17167         (copysign<mode>3): Likewise.
17168         (aarch64_simd_bsl<mode>_internal): Likewise.
17169         (aarch64_simd_bsl<mode>): Likewise.
17170         (vec_cmp<mode><mode>): Likewise.
17171         (vcond<mode><mode>): Likewise.
17172         (vcond<v_cmp_mixed><mode>): Likewise.
17173         (vcondu<mode><v_cmp_mixed>): Likewise.
17174         (aarch64_cm<optab><mode>): Likewise.
17175         (aarch64_cmtst<mode>): Likewise.
17176         (aarch64_fac<optab><mode>): Likewise.
17177         (vec_perm_const<mode>): Likewise.
17178         (vcond_mask_<mode><v_cmp_result>): Rename to...
17179         (vcond_mask_<mode><v_int_equiv>): ...this.
17180         (vec_cmp<mode><v_cmp_result>): Rename to...
17181         (vec_cmp<mode><v_int_equiv>): ...this.
17182
17183 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17184             Alan Hayward  <alan.hayward@arm.com>
17185             David Sherwood  <david.sherwood@arm.com>
17186
17187         * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
17188         vector modes.
17189         * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
17190         * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
17191         (UNSPEC_LD4_DREG): New unspecs.
17192         * config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
17193         (aarch64_ld2<mode>_dreg_be): Replace with...
17194         (aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
17195         unspec.
17196         (aarch64_ld3<mode>_dreg_le)
17197         (aarch64_ld3<mode>_dreg_be): Replace with...
17198         (aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
17199         unspec.
17200         (aarch64_ld4<mode>_dreg_le)
17201         (aarch64_ld4<mode>_dreg_be): Replace with...
17202         (aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
17203         unspec.
17204
17205 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17206
17207         PR tree-optimization/81987
17208         * gimple-ssa-strength-reduction.c (insert_initializers): Don't
17209         insert an initializer in a location not dominated by the stride
17210         definition.
17211
17212 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17213
17214         * tree-eh.c (lower_try_finally_switch): Set the location of the finally
17215         on the entire header of the finally block in the fallthru case.
17216
17217 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17218
17219         * varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
17220
17221 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
17222
17223         * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
17224         rs6000_emit_move_from_cr and call renamed function.
17225         (rs6000_emit_prologue): Call renamed functions.
17226         * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
17227         movesi_from_cr, remove volatile CRs.
17228
17229 2017-08-30  Jon Beniston  <jon@beniston.com>
17230             Richard Biener  <rguenther@suse.de>
17231
17232         * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
17233         of VECTOR_MODE_P check.
17234         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
17235         element vector types.
17236
17237 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17238
17239         * df.h (df_read_modify_subreg_p): Remove in favor of...
17240         * rtl.h (read_modify_subreg_p): ...this new function.  Take a
17241         const_rtx instead of an rtx.
17242         * cprop.c (local_cprop_find_used_regs): Update accordingly.
17243         * df-problems.c (df_word_lr_mark_ref): Likewise.
17244         * ira-lives.c (mark_pseudo_reg_live): Likewise.
17245         (mark_pseudo_reg_dead): Likewise.
17246         (mark_ref_dead): Likewise.
17247         * reginfo.c (init_subregs_of_mode): Likewise.
17248         * sched-deps.c (sched_analyze_1): Likewise.
17249         * df-scan.c (df_def_record_1): Likewise.
17250         (df_uses_record): Likewise.
17251         (df_read_modify_subreg_p): Remove in favor of...
17252         * rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
17253         const_rtx instead of an rtx.
17254
17255 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17256             Alan Hayward  <alan.hayward@arm.com>
17257             David Sherwood  <david.sherwood@arm.com>
17258
17259         * rtl.h (partial_subreg_p): New function.
17260         * caller-save.c (save_call_clobbered_regs): Use it.
17261         * calls.c (expand_call): Likewise.
17262         * combine.c (combinable_i3pat): Likewise.
17263         (simplify_set): Likewise.
17264         (make_extraction): Likewise.
17265         (make_compound_operation_int): Likewise.
17266         (gen_lowpart_or_truncate): Likewise.
17267         (force_to_mode): Likewise.
17268         (make_field_assignment): Likewise.
17269         (reg_truncated_to_mode): Likewise.
17270         (record_truncated_value): Likewise.
17271         (move_deaths): Likewise.
17272         * cse.c (record_jump_cond): Likewise.
17273         (cse_insn): Likewise.
17274         * cselib.c (cselib_lookup_1): Likewise.
17275         * expmed.c (extract_bit_field_using_extv): Likewise.
17276         * function.c (assign_parm_setup_reg): Likewise.
17277         * ifcvt.c (noce_convert_multiple_sets): Likewise.
17278         * ira-build.c (create_insn_allocnos): Likewise.
17279         * lra-coalesce.c (merge_pseudos): Likewise.
17280         * lra-constraints.c (match_reload): Likewise.
17281         (simplify_operand_subreg): Likewise.
17282         (curr_insn_transform): Likewise.
17283         * lra-lives.c (process_bb_lives): Likewise.
17284         * lra.c (new_insn_reg): Likewise.
17285         (lra_substitute_pseudo): Likewise.
17286         * regcprop.c (mode_change_ok): Likewise.
17287         (maybe_mode_change): Likewise.
17288         (copyprop_hardreg_forward_1): Likewise.
17289         * reload.c (push_reload): Likewise.
17290         (find_reloads): Likewise.
17291         (find_reloads_subreg_address): Likewise.
17292         * reload1.c (alter_reg): Likewise.
17293         (eliminate_regs_1): Likewise.
17294         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17295
17296 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
17297
17298         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
17299         back to if statements, including unpack.
17300
17301 2017-08-30  Martin Liska  <mliska@suse.cz>
17302
17303         PR inline-asm/82001
17304         * ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
17305         Rename to ...
17306         (func_checker::compare_asm_inputs_outputs): ... this function.
17307         (func_checker::compare_gimple_asm): Use the function to compare
17308         also ASM constrains.
17309         * ipa-icf-gimple.h: Rename the function.
17310
17311 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17312             Alan Hayward  <alan.hayward@arm.com>
17313             David Sherwood  <david.sherwood@arm.com>
17314
17315         * coretypes.h (complex_mode): New type.
17316         * gdbhooks.py (build_pretty_printer): Handle it.
17317         * machmode.h (complex_mode): New class.
17318         (complex_mode::includes_p): New function.
17319         (is_complex_int_mode): Likewise.
17320         (is_complex_float_mode): Likewise.
17321         * genmodes.c (get_mode_class): Handle complex mode classes.
17322         * function.c (expand_function_end): Use is_complex_int_mode.
17323
17324 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17325             Alan Hayward  <alan.hayward@arm.com>
17326             David Sherwood  <david.sherwood@arm.com>
17327
17328         * coretypes.h (scalar_mode_pod): New typedef.
17329         * gdbhooks.py (build_pretty_printer): Handle it.
17330         * machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
17331         * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
17332         * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
17333         * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
17334         as_a <scalar_mode>.
17335
17336 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17337             Alan Hayward  <alan.hayward@arm.com>
17338             David Sherwood  <david.sherwood@arm.com>
17339
17340         * machmode.h (mode_for_vector): Take a scalar_mode instead
17341         of a machine_mode.
17342         * stor-layout.c (mode_for_vector): Likewise.
17343         * explow.c (promote_mode): Use as_a <scalar_mode>.
17344         * sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
17345
17346 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17347             Alan Hayward  <alan.hayward@arm.com>
17348             David Sherwood  <david.sherwood@arm.com>
17349
17350         * target.def (preferred_simd_mode): Take a scalar_mode
17351         instead of a machine_mode.
17352         * targhooks.h (default_preferred_simd_mode): Likewise.
17353         * targhooks.c (default_preferred_simd_mode): Likewise.
17354         * config/arc/arc.c (arc_preferred_simd_mode): Likewise.
17355         * config/arm/arm.c (arm_preferred_simd_mode): Likewise.
17356         * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
17357         * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
17358         * config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
17359         * config/mips/mips.c (mips_preferred_simd_mode): Likewise.
17360         * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
17361         * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
17362         Likewise.
17363         * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
17364         * config/s390/s390.c (s390_preferred_simd_mode): Likewise.
17365         * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
17366         * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
17367         (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
17368         * doc/tm.texi: Regenerate.
17369         * optabs-query.c (can_vec_mask_load_store_p): Return false for
17370         non-scalar modes.
17371
17372 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17373             Alan Hayward  <alan.hayward@arm.com>
17374             David Sherwood  <david.sherwood@arm.com>
17375
17376         * target.def (scalar_mode_supported_p): Take a scalar_mode
17377         instead of a machine_mode.
17378         * targhooks.h (default_scalar_mode_supported_p): Likewise.
17379         * targhooks.c (default_scalar_mode_supported_p): Likewise.
17380         * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
17381         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
17382         * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
17383         * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
17384         * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
17385         * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
17386         * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
17387         * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
17388         * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
17389         * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
17390         * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
17391         * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
17392         Likewise.
17393         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
17394         * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
17395         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
17396         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
17397         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
17398         Likewise.
17399         * doc/tm.texi: Regenerate.
17400
17401 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17402             Alan Hayward  <alan.hayward@arm.com>
17403             David Sherwood  <david.sherwood@arm.com>
17404
17405         * coretypes.h (opt_scalar_mode): New typedef.
17406         * gdbhooks.py (build_pretty_printers): Handle it.
17407         * machmode.h (mode_iterator::get_2xwider): Add overload for
17408         opt_mode<T>.
17409         * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
17410         over scalar modes.
17411         * expr.c (convert_mode_scalar): Likewise.
17412         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17413         * optabs.c (expand_float): Likewise.
17414         (expand_fix): Likewise.
17415         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17416
17417 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17418             Alan Hayward  <alan.hayward@arm.com>
17419             David Sherwood  <david.sherwood@arm.com>
17420
17421         * optabs.c (expand_float): Explicitly check for scalars before
17422         using a branching expansion.
17423         (expand_fix): Likewise.
17424
17425 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17426             Alan Hayward  <alan.hayward@arm.com>
17427             David Sherwood  <david.sherwood@arm.com>
17428
17429         * expr.c (convert_mode): Split scalar handling out into...
17430         (convert_mode_scalar): ...this new function.  Treat the modes
17431         as scalar_modes.
17432
17433 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17434             Alan Hayward  <alan.hayward@arm.com>
17435             David Sherwood  <david.sherwood@arm.com>
17436
17437         * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
17438         and scalar_mode.
17439         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
17440
17441 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17442             Alan Hayward  <alan.hayward@arm.com>
17443             David Sherwood  <david.sherwood@arm.com>
17444
17445         * fixed-value.h (fixed_from_double_int): Take a scalar_mode
17446         rather than a machine_mode.
17447         (fixed_from_string): Likewise.
17448         (fixed_convert): Likewise.
17449         (fixed_convert_from_int): Likewise.
17450         (fixed_convert_from_real): Likewise.
17451         (real_convert_from_fixed): Likewise.
17452         * fixed-value.c (fixed_from_double_int): Likewise.
17453         (fixed_from_string): Likewise.
17454         (fixed_convert): Likewise.
17455         (fixed_convert_from_int): Likewise.
17456         (fixed_convert_from_real): Likewise.
17457         (real_convert_from_fixed): Likewise.
17458         * config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
17459
17460 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17461             Alan Hayward  <alan.hayward@arm.com>
17462             David Sherwood  <david.sherwood@arm.com>
17463
17464         * emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
17465         of separate mode class checks.  Do not allow vector modes here.
17466         (immed_wide_int_const): Use as_a <scalar_mode>.
17467         * explow.c (trunc_int_for_mode): Likewise.
17468         * rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
17469         (wi::shwi): Likewise.
17470         (wi::min_value): Likewise.
17471         (wi::max_value): Likewise.
17472         * dwarf2out.c (loc_descriptor): Likewise.
17473         * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
17474         for CONST_WIDE_INT.
17475
17476 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17477             Alan Hayward  <alan.hayward@arm.com>
17478             David Sherwood  <david.sherwood@arm.com>
17479
17480         * tree.h (SCALAR_TYPE_MODE): New macro.
17481         * expr.c (expand_expr_addr_expr_1): Use it.
17482         (expand_expr_real_2): Likewise.
17483         * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
17484         (fold_convert_const_fixed_from_int): Likewise.
17485         (fold_convert_const_fixed_from_real): Likewise.
17486         (native_encode_fixed): Likewise
17487         (native_encode_complex): Likewise
17488         (native_encode_vector): Likewise.
17489         (native_interpret_fixed): Likewise.
17490         (native_interpret_real): Likewise.
17491         (native_interpret_complex): Likewise.
17492         (native_interpret_vector): Likewise.
17493         * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
17494         (simd_clone_adjust_argument_types): Likewise.
17495         (simd_clone_init_simd_arrays): Likewise.
17496         (simd_clone_adjust): Likewise.
17497         * stor-layout.c (layout_type): Likewise.
17498         * tree.c (build_minus_one_cst): Likewise.
17499         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17500         * tree-inline.c (estimate_move_cost): Likewise.
17501         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
17502         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
17503         (vectorizable_reduction): Likewise.
17504         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
17505         (vect_recog_mixed_size_cond_pattern): Likewise.
17506         (check_bool_pattern): Likewise.
17507         (adjust_bool_pattern): Likewise.
17508         (search_type_for_mask_1): Likewise.
17509         * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
17510         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17511         (vectorizable_load): Likewise.
17512         (vectorizable_store): Likewise.
17513         * ubsan.c (ubsan_encode_value): Likewise.
17514         * varasm.c (output_constant): Likewise.
17515
17516 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17517             Alan Hayward  <alan.hayward@arm.com>
17518             David Sherwood  <david.sherwood@arm.com>
17519
17520         * coretypes.h (scalar_mode): New class.
17521         * machmode.h (scalar_mode): Likewise.
17522         (scalar_mode::includes_p): New function.
17523         (mode_to_inner): Return a scalar_mode rather than a machine_mode.
17524         * gdbhooks.py (build_pretty_printers): Handle scalar_mode.
17525         * genmodes.c (get_mode_class): Handle remaining scalar modes.
17526         * cfgexpand.c (expand_debug_expr): Use scalar_mode.
17527         * expmed.c (store_bit_field_1): Likewise.
17528         (extract_bit_field_1): Likewise.
17529         * expr.c (write_complex_part): Likewise.
17530         (read_complex_part): Likewise.
17531         (emit_move_complex_push): Likewise.
17532         (expand_expr_real_2): Likewise.
17533         * function.c (assign_parm_setup_reg): Likewise.
17534         (assign_parms_unsplit_complex): Likewise.
17535         * optabs.c (expand_binop): Likewise.
17536         * rtlanal.c (subreg_get_info): Likewise.
17537         * simplify-rtx.c (simplify_immed_subreg): Likewise.
17538         * varasm.c (output_constant_pool_2): Likewise.
17539
17540 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17541             Alan Hayward  <alan.hayward@arm.com>
17542             David Sherwood  <david.sherwood@arm.com>
17543
17544         * expmed.c (extract_high_half): Use scalar_int_mode and remove
17545         assertion.
17546         (expmed_mult_highpart_optab): Likewise.
17547         (expmed_mult_highpart): Likewise.
17548
17549 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17550             Alan Hayward  <alan.hayward@arm.com>
17551             David Sherwood  <david.sherwood@arm.com>
17552
17553         * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
17554         instead of a machine_mode.
17555         (builtin_memset_read_str): Likewise.
17556         * builtins.c (c_readstr): Likewise.
17557         (builtin_memcpy_read_str): Likewise.
17558         (builtin_strncpy_read_str): Likewise.
17559         (builtin_memset_read_str): Likewise.
17560         (builtin_memset_gen_str): Likewise.
17561         (expand_builtin_signbit): Use scalar_int_mode for local variables.
17562         * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
17563         instead of a machine_mode.
17564         * combine.c (simplify_if_then_else): Use scalar_int_mode for local
17565         variables.
17566         (make_extraction): Likewise.
17567         (try_widen_shift_mode): Take and return scalar_int_modes instead
17568         of machine_modes.
17569         * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
17570         a scalar_int_mode instead of a machine_mode.
17571         * config/avr/avr.c (avr_addr_space_address_mode): Likewise.
17572         (avr_addr_space_pointer_mode): Likewise.
17573         * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
17574         * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
17575         (msp430_unwind_word_mode): Likewise.
17576         * config/spu/spu.c (spu_unwind_word_mode): Likewise.
17577         (spu_addr_space_pointer_mode): Likewise.
17578         (spu_addr_space_address_mode): Likewise.
17579         (spu_libgcc_cmp_return_mode): Likewise.
17580         (spu_libgcc_shift_count_mode): Likewise.
17581         * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
17582         (rl78_addr_space_pointer_mode): Likewise.
17583         (fl78_unwind_word_mode): Likewise.
17584         (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
17585         machine_mode.
17586         * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
17587         * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
17588         * config/mips/mips.c (mips_mode_rep_extended): Likewise.
17589         (mips_valid_pointer_mode): Likewise.
17590         * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
17591         * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
17592         (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
17593         of a machine_mode.
17594         (ft32_addr_space_address_mode): Likewise.
17595         * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
17596         scalar_int_mode instead of a machine_mode.
17597         (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
17598         of a machine_mode.
17599         (m32c_addr_space_address_mode): Likewise.
17600         * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
17601         (rs6000_eh_return_filter_mode): Likewise.
17602         * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
17603         (rs6000_eh_return_filter_mode): Likewise.
17604         * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
17605         (s390_libgcc_shift_count_mode): Likewise.
17606         (s390_unwind_word_mode): Likewise.
17607         (s390_valid_pointer_mode): Take a scalar_int_mode rather than a
17608         machine_mode.
17609         * target.def (mode_rep_extended): Likewise.
17610         (valid_pointer_mode): Likewise.
17611         (addr_space.valid_pointer_mode): Likewise.
17612         (eh_return_filter_mode): Return a scalar_int_mode rather than
17613         a machine_mode.
17614         (libgcc_cmp_return_mode): Likewise.
17615         (libgcc_shift_count_mode): Likewise.
17616         (unwind_word_mode): Likewise.
17617         (addr_space.pointer_mode): Likewise.
17618         (addr_space.address_mode): Likewise.
17619         * doc/tm.texi: Regenerate.
17620         * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
17621         a machine_mode.
17622         (do_jump): Use scalar_int_mode for local variables.
17623         * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
17624         rather than a machine_mode.
17625         * dwarf2out.c (convert_descriptor_to_mode): Likewise.
17626         (scompare_loc_descriptor_wide): Likewise.
17627         (scompare_loc_descriptor_narrow): Likewise.
17628         * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
17629         variables.
17630         * except.c (sjlj_emit_dispatch_table): Likewise.
17631         (expand_builtin_eh_copy_values): Likewise.
17632         * explow.c (convert_memory_address_addr_space_1): Likewise.
17633         Take a scalar_int_mode rather than a machine_mode.
17634         (convert_memory_address_addr_space): Take a scalar_int_mode rather
17635         than a machine_mode.
17636         (memory_address_addr_space): Use scalar_int_mode for local variables.
17637         * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
17638         rather than a machine_mode.
17639         * expmed.c (mask_rtx): Likewise.
17640         (init_expmed_one_conv): Likewise.
17641         (expand_mult_highpart_adjust): Likewise.
17642         (extract_high_half): Likewise.
17643         (expmed_mult_highpart_optab): Likewise.
17644         (expmed_mult_highpart): Likewise.
17645         (expand_smod_pow2): Likewise.
17646         (expand_sdiv_pow2): Likewise.
17647         (emit_store_flag_int): Likewise.
17648         (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
17649         variables.
17650         (extract_low_bits): Likewise.
17651         * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
17652         a machine_mode.
17653         * expr.c (pieces_addr::adjust):  Likewise.
17654         (can_store_by_pieces): Likewise.
17655         (store_by_pieces): Likewise.
17656         (clear_by_pieces_1): Likewise.
17657         (expand_expr_addr_expr_1): Likewise.
17658         (expand_expr_addr_expr): Use scalar_int_mode for local variables.
17659         (expand_expr_real_1): Likewise.
17660         (try_casesi): Likewise.
17661         * final.c (shorten_branches): Likewise.
17662         * fold-const.c (fold_convert_const_int_from_fixed): Change the
17663         type of "mode" to machine_mode.
17664         * internal-fn.c (expand_arith_overflow_result_store): Take a
17665         scalar_int_mode rather than a machine_mode.
17666         (expand_mul_overflow): Use scalar_int_mode for local variables.
17667         * loop-doloop.c (doloop_modify): Likewise.
17668         (doloop_optimize): Likewise.
17669         * optabs.c (expand_subword_shift): Take a scalar_int_mode rather
17670         than a machine_mode.
17671         (expand_doubleword_shift_condmove): Likewise.
17672         (expand_doubleword_shift): Likewise.
17673         (expand_doubleword_clz): Likewise.
17674         (expand_doubleword_popcount): Likewise.
17675         (expand_doubleword_parity): Likewise.
17676         (expand_absneg_bit): Use scalar_int_mode for local variables.
17677         (prepare_float_lib_cmp): Likewise.
17678         * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
17679         rather than a machine_mode.
17680         (convert_memory_address_addr_space): Likewise.
17681         (get_mode_bounds): Likewise.
17682         (get_address_mode): Return a scalar_int_mode rather than a
17683         machine_mode.
17684         * rtlanal.c (get_address_mode): Likewise.
17685         * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
17686         than a machine_mode.
17687         * targhooks.c (default_mode_rep_extended): Likewise.
17688         (default_valid_pointer_mode): Likewise.
17689         (default_addr_space_valid_pointer_mode): Likewise.
17690         (default_eh_return_filter_mode): Return a scalar_int_mode rather
17691         than a machine_mode.
17692         (default_libgcc_cmp_return_mode): Likewise.
17693         (default_libgcc_shift_count_mode): Likewise.
17694         (default_unwind_word_mode): Likewise.
17695         (default_addr_space_pointer_mode): Likewise.
17696         (default_addr_space_address_mode): Likewise.
17697         * targhooks.h (default_eh_return_filter_mode): Likewise.
17698         (default_libgcc_cmp_return_mode): Likewise.
17699         (default_libgcc_shift_count_mode): Likewise.
17700         (default_unwind_word_mode): Likewise.
17701         (default_addr_space_pointer_mode): Likewise.
17702         (default_addr_space_address_mode): Likewise.
17703         (default_mode_rep_extended): Take a scalar_int_mode rather than
17704         a machine_mode.
17705         (default_valid_pointer_mode): Likewise.
17706         (default_addr_space_valid_pointer_mode): Likewise.
17707         * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
17708         local variables.
17709         * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
17710         rather than a machine_mode.
17711         * tree-switch-conversion.c (array_value_type): Use scalar_int_mode
17712         for local variables.
17713         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
17714         * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
17715         than a machine_mode.
17716
17717 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17718             Alan Hayward  <alan.hayward@arm.com>
17719             David Sherwood  <david.sherwood@arm.com>
17720
17721         * dojump.c (do_jump_by_parts_greater_rtx): Change the type of
17722         the mode argument to scalar_int_mode.
17723         (do_jump_by_parts_zero_rtx): Likewise.
17724         (do_jump_by_parts_equality_rtx): Likewise.
17725         (do_jump_by_parts_greater): Take a mode argument.
17726         (do_jump_by_parts_equality): Likewise.
17727         (do_jump_1): Update calls accordingly.
17728
17729 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17730             Alan Hayward  <alan.hayward@arm.com>
17731             David Sherwood  <david.sherwood@arm.com>
17732
17733         * is-a.h (safe_dyn_cast): New function.
17734         * rtl.h (rtx_jump_table_data::get_data_mode): New function.
17735         (jump_table_for_label): Likewise.
17736         * final.c (final_addr_vec_align): Take an rtx_jump_table_data *
17737         instead of an rtx_insn *.
17738         (shorten_branches): Use dyn_cast instead of LABEL_P and
17739         JUMP_TABLE_DATA_P.  Use jump_table_for_label and
17740         rtx_jump_table_data::get_data_mode.
17741         (final_scan_insn): Likewise.
17742
17743 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17744             Alan Hayward  <alan.hayward@arm.com>
17745             David Sherwood  <david.sherwood@arm.com>
17746
17747         * combine.c (try_combine): Use is_a <scalar_int_mode> when
17748         trying to combine a full-register integer set with a subreg
17749         integer set.
17750
17751 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17752             Alan Hayward  <alan.hayward@arm.com>
17753             David Sherwood  <david.sherwood@arm.com>
17754
17755         * expr.c (expand_expr_addr_expr): Add a new_tmode local variable
17756         that is always either address_mode or pointer_mode.
17757
17758 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17759             Alan Hayward  <alan.hayward@arm.com>
17760             David Sherwood  <david.sherwood@arm.com>
17761
17762         * expr.c (expand_expr_real_2): Use word_mode instead of innermode
17763         when the two are known to be equal.
17764
17765 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17766             Alan Hayward  <alan.hayward@arm.com>
17767             David Sherwood  <david.sherwood@arm.com>
17768
17769         * simplify-rtx.c (simplify_const_unary_operation): Use
17770         is_a <scalar_int_mode> instead of checking for a nonzero
17771         precision.  Forcibly convert op_mode to a scalar_int_mode
17772         in that case.  More clearly differentiate the operand and
17773         result modes and use the former when deciding what the value
17774         of a count-bits operation should be.  Use is_int_mode instead
17775         of checking for a MODE_INT.  Remove redundant check for whether
17776         this mode has a zero precision.
17777
17778 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17779             Alan Hayward  <alan.hayward@arm.com>
17780             David Sherwood  <david.sherwood@arm.com>
17781
17782         * optabs.c (widen_leading): Change the type of the mode argument
17783         to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
17784         (widen_bswap): Likewise.
17785         (expand_parity): Likewise.
17786         (expand_ctz): Change the type of the mode argument to scalar_int_mode.
17787         (expand_ffs): Likewise.
17788         (epand_unop): Check for scalar integer modes before calling the
17789         above routines.
17790
17791 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17792             Alan Hayward  <alan.hayward@arm.com>
17793             David Sherwood  <david.sherwood@arm.com>
17794
17795         * expr.c (const_scalar_mask_from_tree): Add a mode argument.
17796         Expand commentary.
17797         (expand_expr_real_1): Update call accordingly.
17798
17799 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17800             Alan Hayward  <alan.hayward@arm.com>
17801             David Sherwood  <david.sherwood@arm.com>
17802
17803         * expmed.c (store_bit_field_using_insv): Add op0_mode and
17804         value_mode arguments.  Use scalar_int_mode internally.
17805         (store_bit_field_1): Rename the new integer mode from imode
17806         to op0_mode and use it instead of GET_MODE (op0).  Update calls
17807         to store_split_bit_field, store_bit_field_using_insv and
17808         store_fixed_bit_field.
17809         (store_fixed_bit_field): Add op0_mode and value_mode arguments.
17810         Use scalar_int_mode internally.  Use a bit count rather than a mode
17811         when calculating the largest bit size for get_best_mode.
17812         Update calls to store_split_bit_field and store_fixed_bit_field_1.
17813         (store_fixed_bit_field_1): Add mode and value_mode arguments.
17814         Remove assertion that OP0 has a scalar integer mode.
17815         (store_split_bit_field): Add op0_mode and value_mode arguments.
17816         Update calls to extract_fixed_bit_field.
17817         (extract_bit_field_using_extv): Add an op0_mode argument.
17818         Use scalar_int_mode internally.
17819         (extract_bit_field_1): Rename the new integer mode from imode to
17820         op0_mode and use it instead of GET_MODE (op0).  Update calls to
17821         extract_split_bit_field, extract_bit_field_using_extv and
17822         extract_fixed_bit_field.
17823         (extract_fixed_bit_field): Add an op0_mode argument.  Update calls
17824         to extract_split_bit_field and extract_fixed_bit_field_1.
17825         (extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
17826         that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
17827         on the target mode.
17828         (extract_split_bit_field): Add an op0_mode argument.  Update call
17829         to extract_fixed_bit_field.
17830
17831 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17832             Alan Hayward  <alan.hayward@arm.com>
17833             David Sherwood  <david.sherwood@arm.com>
17834
17835         * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
17836         * explow.c (hard_function_value): Likewise.
17837         * expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
17838         convert_to_mode call outside the loop.
17839         * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
17840         for the mode iterator.  Require the mode specified by max_pieces
17841         to exist.
17842         (emit_block_move_via_movmem): Use opt_scalar_int_mode for the
17843         mode iterator.
17844         (copy_blkmode_to_reg): Likewise.
17845         (set_storage_via_setmem): Likewise.
17846         * optabs.c (prepare_cmp_insn): Likewise.
17847         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
17848         * stor-layout.c (finish_bitfield_representative): Likewise.
17849
17850 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17851             Alan Hayward  <alan.hayward@arm.com>
17852             David Sherwood  <david.sherwood@arm.com>
17853
17854         * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
17855         * expr.c (convert_move): Use them.
17856         (convert_modes): Likewise.
17857         (store_expr_with_bounds): Likewise.
17858
17859 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17860             Alan Hayward  <alan.hayward@arm.com>
17861             David Sherwood  <david.sherwood@arm.com>
17862
17863         * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
17864         parameter for the mode of "x".  Remove the "known_x", "known_mode"
17865         and "known_ret" arguments.  Change the type of the mode argument
17866         to scalar_int_mode.
17867         (rtl_hooks:reg_num_sign_bit_copies): Likewise.
17868         * combine.c (reg_nonzero_bits_for_combine): Update accordingly.
17869         (reg_num_sign_bit_copies_for_combine): Likewise.
17870         * rtlanal.c (nonzero_bits1): Likewise.
17871         (num_sign_bit_copies1): Likewise.
17872         * rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
17873         (reg_num_sign_bit_copies_general): Likewise.
17874         * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
17875         (reg_nonzero_bits_general): Likewise.
17876
17877 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17878             Alan Hayward  <alan.hayward@arm.com>
17879             David Sherwood  <david.sherwood@arm.com>
17880
17881         * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
17882         than in subroutines.  Return 1 for non-integer modes.
17883         (cached_num_sign_bit_copies): Change the type of the mode parameter
17884         to scalar_int_mode.
17885         (num_sign_bit_copies1): Likewise.  Remove early exit for other mode
17886         classes.  Handle CONST_INT_P first and then check whether X also
17887         has a scalar integer mode.  Check the same thing for inner registers
17888         of a SUBREG and for values that are being extended or truncated.
17889
17890 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17891             Alan Hayward  <alan.hayward@arm.com>
17892             David Sherwood  <david.sherwood@arm.com>
17893
17894         * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
17895         in subroutines.  Return the mode mask for non-integer modes.
17896         (cached_nonzero_bits): Change the type of the mode parameter
17897         to scalar_int_mode.
17898         (nonzero_bits1): Likewise.  Remove early exit for other mode
17899         classes.  Handle CONST_INT_P first and then check whether X
17900         also has a scalar integer mode.
17901
17902 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17903             Alan Hayward  <alan.hayward@arm.com>
17904             David Sherwood  <david.sherwood@arm.com>
17905
17906         * expr.c (widest_int_mode_for_size): Make the comment match the code.
17907         Return a scalar_int_mode and assert that the size is greater than
17908         one byte.
17909         (by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
17910         (op_by_pieces_d::op_by_pieces_d): Likewise.
17911         (op_by_pieces_d::run): Likewise.
17912         (can_store_by_pieces): Likewise.
17913
17914 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17915             Alan Hayward  <alan.hayward@arm.com>
17916             David Sherwood  <david.sherwood@arm.com>
17917
17918         * combine.c (extract_left_shift): Add a mode argument and update
17919         recursive calls.
17920         (make_compound_operation_int): Change the type of the mode parameter
17921         to scalar_int_mode and update the call to extract_left_shift.
17922
17923 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17924             Alan Hayward  <alan.hayward@arm.com>
17925             David Sherwood  <david.sherwood@arm.com>
17926
17927         * combine.c (simplify_and_const_int): Change the type of the mode
17928         parameter to scalar_int_mode.
17929         (simplify_and_const_int_1): Likewise.  Update recursive call.
17930
17931 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17932             Alan Hayward  <alan.hayward@arm.com>
17933             David Sherwood  <david.sherwood@arm.com>
17934
17935         * combine.c (simplify_compare_const): Check that the mode is a
17936         scalar_int_mode (rather than VOIDmode) before testing its
17937         precision.
17938         (simplify_comparison): Move COMPARISON_P handling out of the
17939         loop and restrict the latter part of the loop to scalar_int_modes.
17940         Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
17941         and when considering SUBREG_REGs.  Use is_int_mode instead of
17942         checking GET_MODE_CLASS against MODE_INT.
17943
17944 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17945             Alan Hayward  <alan.hayward@arm.com>
17946             David Sherwood  <david.sherwood@arm.com>
17947
17948         * combine.c (try_widen_shift_mode): Move check for equal modes to...
17949         (simplify_shift_const_1): ...here.  Use scalar_int_mode for
17950         shift_unit_mode and for modes involved in scalar shifts.
17951
17952 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17953             Alan Hayward  <alan.hayward@arm.com>
17954             David Sherwood  <david.sherwood@arm.com>
17955
17956         * combine.c (force_int_to_mode): New function, split out from...
17957         (force_to_mode): ...here.  Keep xmode up-to-date and use it
17958         instead of GET_MODE (x).
17959
17960 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17961             Alan Hayward  <alan.hayward@arm.com>
17962             David Sherwood  <david.sherwood@arm.com>
17963
17964         * optabs-query.h (extraction_insn::struct_mode): Change type to
17965         opt_scalar_int_mode and update comment.
17966         (extraction_insn::field_mode): Change type to scalar_int_mode.
17967         (extraction_insn::pos_mode): Likewise.
17968         * combine.c (make_extraction): Update accordingly.
17969         * optabs-query.c (get_traditional_extraction_insn): Likewise.
17970         (get_optab_extraction_insn): Likewise.
17971         * recog.c (simplify_while_replacing): Likewise.
17972         * expmed.c (narrow_bit_field_mem): Change the type of the mode
17973         parameter to opt_scalar_int_mode.
17974
17975 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17976             Alan Hayward  <alan.hayward@arm.com>
17977             David Sherwood  <david.sherwood@arm.com>
17978
17979         * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer
17980         to a scalar_int_mode instead of a machine_mode.
17981         (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
17982         (get_best_mode): Return a boolean and use a pointer argument to store
17983         the selected mode.  Replace the limit mode parameter with a bit limit.
17984         * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
17985         for the values returned by bit_field_mode_iterator::next_mode.
17986         (store_bit_field): Update call to get_best_mode.
17987         (store_fixed_bit_field): Likewise.
17988         (extract_fixed_bit_field): Likewise.
17989         * expr.c (optimize_bitfield_assignment_op): Likewise.
17990         * fold-const.c (optimize_bit_field_compare): Likewise.
17991         (fold_truth_andor_1): Likewise.
17992         * stor-layout.c (bit_field_mode_iterator::next_mode): As above.
17993         Update for new type of m_mode.
17994         (get_best_mode): As above.
17995
17996 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17997             Alan Hayward  <alan.hayward@arm.com>
17998             David Sherwood  <david.sherwood@arm.com>
17999
18000         * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
18001         to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
18002         (store_bit_field): Check is_a <scalar_int_mode> before calling
18003         strict_volatile_bitfield_p.
18004         (extract_bit_field): Likewise.
18005
18006 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18007             Alan Hayward  <alan.hayward@arm.com>
18008             David Sherwood  <david.sherwood@arm.com>
18009
18010         * target.def (cstore_mode): Return a scalar_int_mode.
18011         * doc/tm.texi: Regenerate.
18012         * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
18013         * targhooks.h (default_cstore_mode): Likewise.
18014         * targhooks.c (default_cstore_mode): Likewise, using a forced
18015         conversion.
18016         * expmed.c (emit_cstore): Expect the target of the cstore to be
18017         a scalar_int_mode.
18018
18019 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18020             Alan Hayward  <alan.hayward@arm.com>
18021             David Sherwood  <david.sherwood@arm.com>
18022
18023         * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
18024         scalar_int_mode.
18025         (niter_desc): Likewise mode.
18026         (iv_analyze): Add a mode parameter.
18027         (biv_p): Likewise.
18028         (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
18029         and change its type to scalar_int_mode.
18030         * loop-iv.c: Update commentary at head of file.
18031         (iv_constant): Pass the mode paraeter before the rtx it describes
18032         and change its type to scalar_int_mode.  Remove VOIDmode handling.
18033         (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
18034         (iv_extend): Likewise.
18035         (shorten_into_mode): Likewise.
18036         (iv_add): Use scalar_int_mode.
18037         (iv_mult): Likewise.
18038         (iv_shift): Likewise.
18039         (canonicalize_iv_subregs): Likewise.
18040         (get_biv_step_1): Pass the outer_mode parameter before the rtx
18041         it describes and change its mode to scalar_int_mode.   Also change
18042         the type of the returned inner_mode to scalar_int_mode.
18043         (get_biv_step): Likewise, turning outer_mode from a pointer
18044         into a direct parameter.  Update call to get_biv_step_1.
18045         (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
18046         iv_constant and get_biv_step.
18047         (iv_analyze_expr): Pass the mode parameter before the rtx it describes
18048         and change its type to scalar_int_mode.  Don't initialise iv->mode
18049         to VOIDmode and remove later checks for its still being VOIDmode.
18050         Update calls to iv_analyze_op and iv_analyze_expr.  Check
18051         is_a <scalar_int_mode> when changing the mode under consideration.
18052         (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
18053         Update call to iv_analyze_expr.
18054         (iv_analyze_op): Add a mode parameter.  Reject subregs whose
18055         inner register is not also a scalar_int_mode.  Update call to
18056         iv_analyze_biv.
18057         (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
18058         (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
18059         (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
18060         separate mode class checks.  Update calls to iv_analyze.  Remove
18061         fix-up of VOIDmodes after iv_analyze_biv.
18062         * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
18063         don't have a scalar_int_mode.  Update call to biv_p.
18064
18065 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18066             Alan Hayward  <alan.hayward@arm.com>
18067             David Sherwood  <david.sherwood@arm.com>
18068
18069         * cfgexpand.c (convert_debug_memory_address): Use
18070         as_a <scalar_int_mode>.
18071         * combine.c (expand_compound_operation): Likewise.
18072         (make_extraction): Likewise.
18073         (change_zero_ext): Likewise.
18074         (simplify_comparison): Likewise.
18075         * cse.c (cse_insn): Likewise.
18076         * dwarf2out.c (minmax_loc_descriptor): Likewise.
18077         (mem_loc_descriptor): Likewise.
18078         (loc_descriptor): Likewise.
18079         * expmed.c (init_expmed_one_mode): Likewise.
18080         (synth_mult): Likewise.
18081         (emit_store_flag_1): Likewise.
18082         (expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
18083         of a comparison with size.
18084         * expr.c (expand_assignment): Use as_a <scalar_int_mode>.
18085         (reduce_to_bit_field_precision): Likewise.
18086         * function.c (expand_function_end): Likewise.
18087         * internal-fn.c (expand_arith_overflow_result_store): Likewise.
18088         * loop-doloop.c (doloop_modify): Likewise.
18089         * optabs.c (expand_binop): Likewise.
18090         (expand_unop): Likewise.
18091         (expand_copysign_absneg): Likewise.
18092         (prepare_cmp_insn): Likewise.
18093         (maybe_legitimize_operand): Likewise.
18094         * recog.c (const_scalar_int_operand): Likewise.
18095         * rtlanal.c (get_address_mode): Likewise.
18096         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18097         (simplify_cond_clz_ctz): Likewise.
18098         * tree-nested.c (get_nl_goto_field): Likewise.
18099         * tree.c (build_vector_type_for_mode): Likewise.
18100         * var-tracking.c (use_narrower_mode): Likewise.
18101
18102 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18103             Alan Hayward  <alan.hayward@arm.com>
18104             David Sherwood  <david.sherwood@arm.com>
18105
18106         * tree.h (SCALAR_INT_TYPE_MODE): New macro.
18107         * builtins.c (expand_builtin_signbit): Use it.
18108         * cfgexpand.c (expand_debug_expr): Likewise.
18109         * dojump.c (do_jump): Likewise.
18110         (do_compare_and_jump): Likewise.
18111         * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
18112         * expmed.c (make_tree): Likewise.
18113         * expr.c (expand_expr_real_2): Likewise.
18114         (expand_expr_real_1): Likewise.
18115         (try_casesi): Likewise.
18116         * fold-const-call.c (fold_const_call_ss): Likewise.
18117         * fold-const.c (unextend): Likewise.
18118         (extract_muldiv_1): Likewise.
18119         (fold_single_bit_test): Likewise.
18120         (native_encode_int): Likewise.
18121         (native_encode_string): Likewise.
18122         (native_interpret_int): Likewise.
18123         * gimple-fold.c (gimple_fold_builtin_memset): Likewise.
18124         * internal-fn.c (expand_addsub_overflow): Likewise.
18125         (expand_neg_overflow): Likewise.
18126         (expand_mul_overflow): Likewise.
18127         (expand_arith_overflow): Likewise.
18128         * match.pd: Likewise.
18129         * stor-layout.c (layout_type): Likewise.
18130         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
18131         * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
18132         * tree-ssanames.c (get_range_info): Likewise.
18133         * tree-switch-conversion.c (array_value_type) Likewise.
18134         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
18135         (vect_recog_divmod_pattern): Likewise.
18136         (vect_recog_mixed_size_cond_pattern): Likewise.
18137         * tree-vrp.c (extract_range_basic): Likewise.
18138         (simplify_float_conversion_using_ranges): Likewise.
18139         * tree.c (int_fits_type_p): Likewise.
18140         * ubsan.c (instrument_bool_enum_load): Likewise.
18141         * varasm.c (mergeable_string_section): Likewise.
18142         (narrowing_initializer_constant_valid_p): Likewise.
18143         (output_constant): Likewise.
18144
18145 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18146             Alan Hayward  <alan.hayward@arm.com>
18147             David Sherwood  <david.sherwood@arm.com>
18148
18149         * machmode.h (NARROWEST_INT_MODE): New macro.
18150         * expr.c (alignment_for_piecewise_move): Use it instead of
18151         GET_CLASS_NARROWEST_MODE (MODE_INT).
18152         (push_block): Likewise.
18153         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
18154         Likewise.
18155         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18156
18157 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18158             Alan Hayward  <alan.hayward@arm.com>
18159             David Sherwood  <david.sherwood@arm.com>
18160
18161         * postreload.c (move2add_valid_value_p): Change the type of the
18162         mode parameter to scalar_int_mode.
18163         (move2add_use_add2_insn): Add a mode parameter and use it instead
18164         of GET_MODE (reg).
18165         (move2add_use_add3_insn): Likewise.
18166         (reload_cse_move2add): Update accordingly.
18167
18168 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18169             Alan Hayward  <alan.hayward@arm.com>
18170             David Sherwood  <david.sherwood@arm.com>
18171
18172         * expr.c (expand_expr_real_2): Use scalar_int_mode for the
18173         double-word mode.
18174         * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
18175         * optabs.c (expand_unop): Likewise.
18176
18177 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18178             Alan Hayward  <alan.hayward@arm.com>
18179             David Sherwood  <david.sherwood@arm.com>
18180
18181         * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
18182         (clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
18183         (popcount_loc_descriptor): Likewise.
18184         (bswap_loc_descriptor): Likewise.
18185         (rotate_loc_descriptor): Likewise.
18186         (mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
18187         calling the functions above.
18188
18189 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18190             Alan Hayward  <alan.hayward@arm.com>
18191             David Sherwood  <david.sherwood@arm.com>
18192
18193         * combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
18194         checks.
18195         (try_combine): Likewise.
18196         (simplify_if_then_else): Likewise.
18197         * cse.c (cse_insn): Likewise.
18198         * dwarf2out.c (mem_loc_descriptor): Likewise.
18199         * emit-rtl.c (gen_lowpart_common): Likewise.
18200         * simplify-rtx.c (simplify_truncation): Likewise.
18201         (simplify_binary_operation_1): Likewise.
18202         (simplify_const_relational_operation): Likewise.
18203         (simplify_ternary_operation): Likewise.
18204         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
18205
18206 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18207             Alan Hayward  <alan.hayward@arm.com>
18208             David Sherwood  <david.sherwood@arm.com>
18209
18210         * cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
18211         * reload.c (push_reload): Likewise.
18212         (find_reloads): Likewise.
18213
18214 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18215             Alan Hayward  <alan.hayward@arm.com>
18216             David Sherwood  <david.sherwood@arm.com>
18217
18218         * combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
18219         (make_compound_operation_int): Likewise.
18220         (change_zero_ext): Likewise.
18221         * expr.c (convert_move): Likewise.
18222         (convert_modes): Likewise.
18223         * fwprop.c (forward_propagate_subreg): Likewise.
18224         * loop-iv.c (get_biv_step_1): Likewise.
18225         * optabs.c (widen_operand): Likewise.
18226         * postreload.c (move2add_valid_value_p): Likewise.
18227         * recog.c (simplify_while_replacing): Likewise.
18228         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18229         (simplify_binary_operation_1): Likewise.  Remove redundant
18230         mode equality check.
18231
18232 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18233             Alan Hayward  <alan.hayward@arm.com>
18234             David Sherwood  <david.sherwood@arm.com>
18235
18236         * combine.c (combine_simplify_rtx): Add checks for
18237         is_a <scalar_int_mode>.
18238         (simplify_if_then_else): Likewise.
18239         (make_field_assignment): Likewise.
18240         (simplify_comparison): Likewise.
18241         * ifcvt.c (noce_try_bitop): Likewise.
18242         * loop-invariant.c (canonicalize_address_mult): Likewise.
18243         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18244
18245 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18246             Alan Hayward  <alan.hayward@arm.com>
18247             David Sherwood  <david.sherwood@arm.com>
18248
18249         * gimple-fold.c (gimple_fold_builtin_memory_op): Use
18250         is_a <scalar_int_mode> instead of != BLKmode.
18251
18252 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18253             Alan Hayward  <alan.hayward@arm.com>
18254             David Sherwood  <david.sherwood@arm.com>
18255
18256         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
18257         instead of != VOIDmode.
18258         * combine.c (if_then_else_cond): Likewise.
18259         (change_zero_ext): Likewise.
18260         * dwarf2out.c (mem_loc_descriptor): Likewise.
18261         (loc_descriptor): Likewise.
18262         * rtlanal.c (canonicalize_condition): Likewise.
18263         * simplify-rtx.c (simplify_relational_operation_1): Likewise.
18264
18265 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18266             Alan Hayward  <alan.hayward@arm.com>
18267             David Sherwood  <david.sherwood@arm.com>
18268
18269         * simplify-rtx.c (simplify_binary_operation_1): Use
18270         is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
18271
18272 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18273             Alan Hayward  <alan.hayward@arm.com>
18274             David Sherwood  <david.sherwood@arm.com>
18275
18276         * wide-int.h (int_traits<unsigned char>) New class.
18277         (int_traits<unsigned short>) Likewise.
18278         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
18279         Use GET_MODE_UNIT_PRECISION and remove redundant test for
18280         SCALAR_INT_MODE_P.
18281         * combine.c (set_nonzero_bits_and_sign_copies): Use
18282         is_a <scalar_int_mode>.
18283         (find_split_point): Likewise.
18284         (combine_simplify_rtx): Likewise.
18285         (simplify_logical): Likewise.
18286         (expand_compound_operation): Likewise.
18287         (expand_field_assignment): Likewise.
18288         (make_compound_operation): Likewise.
18289         (extended_count): Likewise.
18290         (change_zero_ext): Likewise.
18291         (simplify_comparison): Likewise.
18292         * dwarf2out.c (scompare_loc_descriptor): Likewise.
18293         (ucompare_loc_descriptor): Likewise.
18294         (minmax_loc_descriptor): Likewise.
18295         (mem_loc_descriptor): Likewise.
18296         (loc_descriptor): Likewise.
18297         * expmed.c (init_expmed_one_mode): Likewise.
18298         * lra-constraints.c (lra_constraint_offset): Likewise.
18299         * optabs.c (prepare_libcall_arg): Likewise.
18300         * postreload.c (move2add_note_store): Likewise.
18301         * reload.c (operands_match_p): Likewise.
18302         * rtl.h (load_extend_op): Likewise.
18303         * rtlhooks.c (gen_lowpart_general): Likewise.
18304         * simplify-rtx.c (simplify_truncation): Likewise.
18305         (simplify_unary_operation_1): Likewise.
18306         (simplify_binary_operation_1): Likewise.
18307         (simplify_const_binary_operation): Likewise.
18308         (simplify_const_relational_operation): Likewise.
18309         (simplify_subreg): Likewise.
18310         * stor-layout.c (bitwise_mode_for_mode): Likewise.
18311         * var-tracking.c (adjust_mems): Likewise.
18312         (prepare_call_arguments): Likewise.
18313
18314 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18315             Alan Hayward  <alan.hayward@arm.com>
18316             David Sherwood  <david.sherwood@arm.com>
18317
18318         * machmode.h (is_int_mode): New fuction.
18319         * combine.c (find_split_point): Use it.
18320         (combine_simplify_rtx): Likewise.
18321         (simplify_if_then_else): Likewise.
18322         (simplify_set): Likewise.
18323         (simplify_shift_const_1): Likewise.
18324         (simplify_comparison): Likewise.
18325         * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
18326         * cse.c (notreg_cost): Likewise.
18327         (cse_insn): Likewise.
18328         * cselib.c (cselib_lookup_1): Likewise.
18329         * dojump.c (do_jump_1): Likewise.
18330         (do_compare_rtx_and_jump): Likewise.
18331         * dse.c (get_call_args): Likewise.
18332         * dwarf2out.c (rtl_for_decl_init): Likewise.
18333         (native_encode_initializer): Likewise.
18334         * expmed.c (emit_store_flag_1): Likewise.
18335         (emit_store_flag): Likewise.
18336         * expr.c (convert_modes): Likewise.
18337         (store_field): Likewise.
18338         (expand_expr_real_1): Likewise.
18339         * fold-const.c (fold_read_from_constant_string): Likewise.
18340         * gimple-ssa-sprintf.c (get_format_string): Likewise.
18341         * optabs-libfuncs.c (gen_int_libfunc): Likewise.
18342         * optabs.c (expand_binop): Likewise.
18343         (expand_unop): Likewise.
18344         (expand_abs_nojump): Likewise.
18345         (expand_one_cmpl_abs_nojump): Likewise.
18346         * simplify-rtx.c (mode_signbit_p): Likewise.
18347         (val_signbit_p): Likewise.
18348         (val_signbit_known_set_p): Likewise.
18349         (val_signbit_known_clear_p): Likewise.
18350         (simplify_relational_operation_1): Likewise.
18351         * tree.c (vector_type_mode): Likewise.
18352
18353 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18354             Alan Hayward  <alan.hayward@arm.com>
18355             David Sherwood  <david.sherwood@arm.com>
18356
18357         * machmode.h (smallest_mode_for_size): Fix formatting.
18358         (smallest_int_mode_for_size): New function.
18359         * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
18360         instead of smallest_mode_for_size.
18361         * combine.c (make_extraction): Likewise.
18362         * config/arc/arc.c (arc_expand_movmem): Likewise.
18363         * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
18364         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18365         * config/s390/s390.c (s390_expand_insv): Likewise.
18366         * config/sparc/sparc.c (assign_int_registers): Likewise.
18367         * config/spu/spu.c (spu_function_value): Likewise.
18368         (spu_function_arg): Likewise.
18369         * coverage.c (get_gcov_type): Likewise.
18370         (get_gcov_unsigned_t): Likewise.
18371         * dse.c (find_shift_sequence): Likewise.
18372         * expmed.c (store_bit_field_1): Likewise.
18373         * expr.c (convert_move): Likewise.
18374         (store_field): Likewise.
18375         * internal-fn.c (expand_arith_overflow): Likewise.
18376         * optabs-query.c (get_best_extraction_insn): Likewise.
18377         * optabs.c (expand_twoval_binop_libfunc): Likewise.
18378         * stor-layout.c (layout_type): Likewise.
18379         (initialize_sizetypes): Likewise.
18380         * targhooks.c (default_get_mask_mode): Likewise.
18381         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
18382
18383 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18384             Alan Hayward  <alan.hayward@arm.com>
18385             David Sherwood  <david.sherwood@arm.com>
18386
18387         * machmode.h (opt_mode::else_blk): New function.
18388         (int_mode_for_mode): Declare.
18389         * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
18390         * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
18391         return type.
18392         * cfgexpand.c (expand_debug_expr): Likewise.
18393         * combine.c (gen_lowpart_or_truncate): Likewise.
18394         (gen_lowpart_for_combine): Likewise.
18395         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
18396         * config/avr/avr.c (avr_to_int_mode): Likewise.
18397         (avr_out_plus_1): Likewise.
18398         (avr_out_plus): Likewise.
18399         (avr_out_round): Likewise.
18400         * config/i386/i386.c (ix86_split_to_parts): Likewise.
18401         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
18402         (s390_expand_vcond): Likewise.
18403         * config/spu/spu.c (spu_split_immediate): Likewise.
18404         (spu_expand_mov): Likewise.
18405         * dse.c (get_stored_val): Likewise.
18406         * expmed.c (store_bit_field_1): Likewise.
18407         (convert_extracted_bit_field): Use int_mode_for_mode instead of
18408         int_mode_for_size.
18409         (extract_bit_field_1): Adjust for new int_mode_for_mode return type.
18410         (extract_low_bits): Likewise.
18411         * expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
18412         handling rather than repeating the check.
18413         (emit_group_store): Likewise.
18414         (emit_move_via_integer): Adjust for new int_mode_for_mode return type.
18415         * optabs.c (expand_absneg_bit): Likewise.
18416         (expand_copysign_absneg): Likewise.
18417         (expand_copysign_bit): Likewise.
18418         * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
18419         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18420         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18421         * var-tracking.c (prepare_call_arguments):  Likewise.
18422         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
18423         int_mode_for_mode instead of mode_for_size.
18424         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
18425
18426 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18427             Alan Hayward  <alan.hayward@arm.com>
18428             David Sherwood  <david.sherwood@arm.com>
18429
18430         * machmode.h (int_mode_for_size): New function.
18431         * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
18432         instead of mode_for_size.
18433         * calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
18434         explicit.
18435         * combine.c (expand_field_assignment): Use int_mode_for_size
18436         instead of mode_for_size.
18437         (make_extraction): Likewise.
18438         (simplify_shift_const_1): Likewise.
18439         (simplify_comparison): Likewise.
18440         * dojump.c (do_jump): Likewise.
18441         * dwarf2out.c (mem_loc_descriptor): Likewise.
18442         * emit-rtl.c (init_derived_machine_modes): Likewise.
18443         * expmed.c (flip_storage_order): Likewise.
18444         (convert_extracted_bit_field): Likewise.
18445         * expr.c (copy_blkmode_from_reg): Likewise.
18446         * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
18447         * internal-fn.c (expand_mul_overflow): Likewise.
18448         * lower-subreg.c (simple_move): Likewise.
18449         * optabs-libfuncs.c (init_optabs): Likewise.
18450         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18451         * tree.c (vector_type_mode): Likewise.
18452         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18453         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
18454         * tree-vect-generic.c (expand_vector_parallel): Likewise.
18455         * tree-vect-stmts.c (vectorizable_load): Likewise.
18456         (vectorizable_store): Likewise.
18457
18458 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18459             Alan Hayward  <alan.hayward@arm.com>
18460             David Sherwood  <david.sherwood@arm.com>
18461
18462         * coretypes.h (pod_mode): New type.
18463         (scalar_int_mode_pod): New typedef.
18464         * machmode.h (pod_mode): New class.
18465         (int_n_data_t::m): Change type to scalar_int_mode_pod.
18466         * genmodes.c (emit_mode_int_n): Update accordingly.
18467         * lower-subreg.h (target_lower_subreg): Change type to
18468         scalar_int_mode_pod.
18469         * gdbhooks.py (build_pretty_printer): Handle pod_mode and
18470         scalar_int_mode_pod.
18471
18472 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18473             Alan Hayward  <alan.hayward@arm.com>
18474             David Sherwood  <david.sherwood@arm.com>
18475
18476         * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
18477         machine_mode to scalar_int_mode.
18478         * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
18479         (rs6000_option_override_internal): Remove cast to int.
18480         * config/rs6000/rs6000.h (rs6000_pmode): Change type from
18481         machine_mode to scalar_int_mode.
18482         * config/rs6000/rs6000.c (rs6000_pmode): Likewise.
18483         (rs6000_option_override_internal): Remove cast to int.
18484         * config/s390/s390.h (Pmode): Remove cast to machine_mode.
18485         * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
18486         to machine_mode.
18487         * config/s390/s390.c (s390_expand_builtin): Likewise.
18488         * coretypes.h (scalar_int_mode): New type.
18489         (opt_scalar_int_mode): New typedef.
18490         * machmode.h (scalar_int_mode): New class.
18491         (scalar_int_mode::includes_p): New function.
18492         (byte_mode): Change type to scalar_int_mode.
18493         (word_mode): Likewise.
18494         (ptr_mode): Likewise.
18495         * emit-rtl.c (byte_mode): Likewise.
18496         (word_mode): Likewise.
18497         (ptr_mode): Likewise.
18498         (init_derived_machine_modes): Update accordingly.
18499         * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
18500         and MODE_PARTIAL_INT.
18501         * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
18502         opt_scalar_int_mode.
18503
18504 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18505             Alan Hayward  <alan.hayward@arm.com>
18506             David Sherwood  <david.sherwood@arm.com>
18507
18508         * target.def (libgcc_floating_mode_supported_p): Take a
18509         scalar_float_mode.
18510         * doc/tm.texi: Regenerate.
18511         * targhooks.h (default_libgcc_floating_mode_supported_p): Take a
18512         scalar_float_mode.
18513         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18514         * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
18515         Likewise.
18516
18517 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18518             Alan Hayward  <alan.hayward@arm.com>
18519             David Sherwood  <david.sherwood@arm.com>
18520
18521         * target.def (default_floatn_mode): Return an opt_scalar_float_mode.
18522         * doc/tm.texi: Regenerate.
18523         * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
18524         * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
18525         * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
18526         * targhooks.h (default_floatn_mode): Likewise.
18527         * targhooks.c (default_floatn_mode): Likewise.
18528         * tree.c (build_common_tree_nodes): Update accordingly.
18529
18530 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18531             Alan Hayward  <alan.hayward@arm.com>
18532             David Sherwood  <david.sherwood@arm.com>
18533
18534         * machmode.h (mode_iterator::start): Provide overload for opt_modes.
18535         (mode_iterator::iterate_p): Likewise.
18536         (mode_iterator::get_wider): Likewise.
18537         * expr.c (init_expr_target): Use opt_scalar_float_mode.
18538
18539 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18540             Alan Hayward  <alan.hayward@arm.com>
18541             David Sherwood  <david.sherwood@arm.com>
18542
18543         * coretypes.h (opt_scalar_float_mode): New typedef.
18544         * machmode.h (float_mode_for_size): New function.
18545         * emit-rtl.c (double_mode): Delete.
18546         (init_emit_once): Use float_mode_for_size.
18547         * stor-layout.c (layout_type): Likewise.
18548         * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
18549
18550 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18551             Alan Hayward  <alan.hayward@arm.com>
18552             David Sherwood  <david.sherwood@arm.com>
18553
18554         * output.h (assemble_real): Take a scalar_float_mode.
18555         * config/arm/arm.c (arm_assemble_integer): Update accordingly.
18556         * config/arm/arm.md (consttable_4): Likewise.
18557         (consttable_8): Likewise.
18558         (consttable_16): Likewise.
18559         * config/mips/mips.md (consttable_float): Likewise.
18560         * config/s390/s390.c (s390_output_pool_entry): Likewise.
18561         * varasm.c (assemble_real): Take a scalar_float_mode.
18562         (output_constant_pool_2): Update accordingly.
18563         (output_constant): Likewise.
18564
18565 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18566             Alan Hayward  <alan.hayward@arm.com>
18567             David Sherwood  <david.sherwood@arm.com>
18568
18569         * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
18570         * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
18571         * fold-const.c (fold_convert_const_real_from_fixed): Likewise.
18572         (native_encode_real): Likewise.
18573         (native_interpret_real): Likewise.
18574         * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
18575         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18576
18577 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18578             Alan Hayward  <alan.hayward@arm.com>
18579             David Sherwood  <david.sherwood@arm.com>
18580
18581         * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
18582         <scalar_float_mode>.  Simplify.
18583         (gen_extend_conv_libfunc): Likewise.
18584
18585 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18586             Alan Hayward  <alan.hayward@arm.com>
18587             David Sherwood  <david.sherwood@arm.com>
18588
18589         * coretypes.h (scalar_float_mode): New type.
18590         * machmode.h (mode_traits::from_int): Use machine_mode if
18591         USE_ENUM_MODES is defined.
18592         (is_a): New function.
18593         (as_a): Likewise.
18594         (dyn_cast): Likewise.
18595         (scalar_float_mode): New class.
18596         (scalar_float_mode::includes_p): New function.
18597         (is_float_mode): Likewise.
18598         * gdbhooks.py (MachineModePrinter): New class.
18599         (build_pretty_printer): Use it for scalar_float_mode.
18600         * real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
18601         (format_helper::format_helper): Turn into a template.
18602         * genmodes.c (get_mode_class): New function.
18603         (emit_insn_modes_h): Give modes the class returned by get_mode_class,
18604         or machine_mode if none.
18605         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
18606         as_a <scalar_float_mode>.
18607         * dwarf2out.c (mem_loc_descriptor): Likewise.
18608         (insert_float): Likewise.
18609         (add_const_value_attribute): Likewise.
18610         * simplify-rtx.c (simplify_immed_subreg): Likewise.
18611         * optabs.c (expand_absneg_bit): Take a scalar_float_mode.
18612         (expand_unop): Update accordingly.
18613         (expand_abs_nojump): Likewise.
18614         (expand_copysign_absneg): Take a scalar_float_mode.
18615         (expand_copysign_bit): Likewise.
18616         (expand_copysign): Update accordingly.
18617
18618 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18619             Alan Hayward  <alan.hayward@arm.com>
18620             David Sherwood  <david.sherwood@arm.com>
18621
18622         * coretypes.h (opt_mode): New class.
18623         * machmode.h (opt_mode): Likewise.
18624         (opt_mode::else_void): New function.
18625         (opt_mode::require): Likewise.
18626         (opt_mode::exists): Likewise.
18627         (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
18628         (GET_MODE_2XWIDER_MODE): Likewise.
18629         (mode_iterator::get_wider): Update accordingly.
18630         (mode_iterator::get_2xwider): Likewise.
18631         (mode_iterator::get_known_wider): Likewise, turning into a template.
18632         * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
18633         forcing a wider mode to exist.
18634         * config/cr16/cr16.h (LONG_REG_P): Likewise.
18635         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18636         * config/c6x/c6x.c (c6x_rtx_costs): Update use of
18637         GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
18638         * lower-subreg.c (init_lower_subreg): Likewise.
18639         * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
18640         on the final iteration.
18641         * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
18642         a wider mode exists before asking for a move pattern.
18643         (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
18644         forcing a wider mode to exist.
18645         (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
18646         returning false if no such mode exists.
18647         * config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
18648         * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
18649         * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
18650         Avoid checking for a MODE_INT if we already know the mode is not a
18651         SCALAR_INT_MODE_P.
18652         (extract_high_half): Update use of GET_MODE_WIDER_MODE,
18653         forcing a wider mode to exist.
18654         (expmed_mult_highpart_optab): Likewise.
18655         (expmed_mult_highpart): Likewise.
18656         * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
18657         using else_void.
18658         * lto-streamer-in.c (lto_input_mode_table): Likewise.
18659         * optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
18660         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
18661         * internal-fn.c (expand_mul_overflow): Update use of
18662         GET_MODE_2XWIDER_MODE.
18663         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18664         * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
18665         GET_MODE_WIDER_MODE.
18666         (convert_plusminus_to_widen): Likewise.
18667         * tree-switch-conversion.c (array_value_type): Likewise.
18668         * var-tracking.c (emit_note_insn_var_location): Likewise.
18669         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18670         Return false inside rather than outside the loop if no wider mode
18671         exists
18672         * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
18673         and GET_MODE_2XWIDER_MODE
18674         (can_compare_p): Use else_void.
18675         * gdbhooks.py (OptMachineModePrinter): New class.
18676         (build_pretty_printer): Use it for opt_mode.
18677
18678 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18679             Alan Hayward  <alan.hayward@arm.com>
18680             David Sherwood  <david.sherwood@arm.com>
18681
18682         * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
18683         once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
18684
18685 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18686             Alan Hayward  <alan.hayward@arm.com>
18687             David Sherwood  <david.sherwood@arm.com>
18688
18689         * machmode.h (mode_traits): New structure.
18690         (get_narrowest_mode): New function.
18691         (mode_iterator::start): Likewise.
18692         (mode_iterator::iterate_p): Likewise.
18693         (mode_iterator::get_wider): Likewise.
18694         (mode_iterator::get_known_wider): Likewise.
18695         (mode_iterator::get_2xwider): Likewise.
18696         (FOR_EACH_MODE_IN_CLASS): New mode iterator.
18697         (FOR_EACH_MODE): Likewise.
18698         (FOR_EACH_MODE_FROM): Likewise.
18699         (FOR_EACH_MODE_UNTIL): Likewise.
18700         (FOR_EACH_WIDER_MODE): Likewise.
18701         (FOR_EACH_2XWIDER_MODE): Likewise.
18702         * builtins.c (expand_builtin_strlen): Use new mode iterators.
18703         * combine.c (simplify_comparison): Likewise
18704         * config/i386/i386.c (type_natural_mode): Likewise.
18705         * cse.c (cse_insn): Likewise.
18706         * dse.c (find_shift_sequence): Likewise.
18707         * emit-rtl.c (init_derived_machine_modes): Likewise.
18708         (init_emit_once): Likewise.
18709         * explow.c (hard_function_value): Likewise.
18710         * expmed.c (extract_fixed_bit_field_1): Likewise.
18711         (extract_bit_field_1): Likewise.
18712         (expand_divmod): Likewise.
18713         (emit_store_flag_1): Likewise.
18714         * expr.c (init_expr_target): Likewise.
18715         (convert_move): Likewise.
18716         (alignment_for_piecewise_move): Likewise.
18717         (widest_int_mode_for_size): Likewise.
18718         (emit_block_move_via_movmem): Likewise.
18719         (copy_blkmode_to_reg): Likewise.
18720         (set_storage_via_setmem): Likewise.
18721         (compress_float_constant): Likewise.
18722         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18723         * optabs-query.c (get_best_extraction_insn): Likewise.
18724         * optabs.c (expand_binop): Likewise.
18725         (expand_twoval_unop): Likewise.
18726         (expand_twoval_binop): Likewise.
18727         (widen_leading): Likewise.
18728         (widen_bswap): Likewise.
18729         (expand_parity): Likewise.
18730         (expand_unop): Likewise.
18731         (prepare_cmp_insn): Likewise.
18732         (prepare_float_lib_cmp): Likewise.
18733         (expand_float): Likewise.
18734         (expand_fix): Likewise.
18735         (expand_sfix_optab): Likewise.
18736         * postreload.c (move2add_use_add2_insn): Likewise.
18737         * reg-stack.c (reg_to_stack): Likewise.
18738         * reginfo.c (choose_hard_reg_mode): Likewise.
18739         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18740         * stor-layout.c (mode_for_size): Likewise.
18741         (smallest_mode_for_size): Likewise.
18742         (mode_for_vector): Likewise.
18743         (finish_bitfield_representative): Likewise.
18744         * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
18745         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
18746         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
18747         * var-tracking.c (prepare_call_arguments): Likewise.
18748
18749 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18750             Alan Hayward  <alan.hayward@arm.com>
18751             David Sherwood  <david.sherwood@arm.com>
18752
18753         * genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
18754         * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
18755         USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
18756         * machmode.h (mode_size): Move earlier in file.
18757         (mode_precision): Likewise.
18758         (mode_inner): Likewise.
18759         (mode_nunits): Likewise.
18760         (mode_unit_size): Likewise.
18761         (unit_unit_precision): Likewise.
18762         (mode_wider): Likewise.
18763         (mode_2xwider): Likewise.
18764         (machine_mode): New class.
18765         (mode_to_bytes): New function.
18766         (mode_to_bits): Likewise.
18767         (mode_to_precision): Likewise.
18768         (mode_to_inner): Likewise.
18769         (mode_to_unit_size): Likewise.
18770         (mode_to_unit_precision): Likewise.
18771         (mode_to_nunits): Likewise.
18772         (GET_MODE_SIZE): Use mode_to_bytes.
18773         (GET_MODE_BITSIZE): Use mode_to_bits.
18774         (GET_MODE_PRECISION): Use mode_to_precision.
18775         (GET_MODE_INNER): Use mode_to_inner.
18776         (GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
18777         (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
18778         (GET_MODE_NUNITS): Use mode_to_nunits.
18779         * system.h (ALWAYS_INLINE): New macro.
18780         * config/powerpcspe/powerpcspe-c.c
18781         (altivec_resolve_overloaded_builtin): Use machine_mode instead of
18782         int for arg1_mode and arg2_mode.
18783
18784 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18785             Alan Hayward  <alan.hayward@arm.com>
18786             David Sherwood  <david.sherwood@arm.com>
18787
18788         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
18789         Prefix mode names with E_ in case statements.
18790         * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18791         * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
18792         (aarch64_split_simd_move): Likewise.
18793         (aarch64_gen_storewb_pair): Likewise.
18794         (aarch64_gen_loadwb_pair): Likewise.
18795         (aarch64_gen_store_pair): Likewise.
18796         (aarch64_gen_load_pair): Likewise.
18797         (aarch64_get_condition_code_1): Likewise.
18798         (aarch64_constant_pool_reload_icode): Likewise.
18799         (get_rsqrte_type): Likewise.
18800         (get_rsqrts_type): Likewise.
18801         (get_recpe_type): Likewise.
18802         (get_recps_type): Likewise.
18803         (aarch64_gimplify_va_arg_expr): Likewise.
18804         (aarch64_simd_container_mode): Likewise.
18805         (aarch64_emit_load_exclusive): Likewise.
18806         (aarch64_emit_store_exclusive): Likewise.
18807         (aarch64_expand_compare_and_swap): Likewise.
18808         (aarch64_gen_atomic_cas): Likewise.
18809         (aarch64_emit_bic): Likewise.
18810         (aarch64_emit_atomic_swap): Likewise.
18811         (aarch64_emit_atomic_load_op): Likewise.
18812         (aarch64_evpc_trn): Likewise.
18813         (aarch64_evpc_uzp): Likewise.
18814         (aarch64_evpc_zip): Likewise.
18815         (aarch64_evpc_ext): Likewise.
18816         (aarch64_evpc_rev): Likewise.
18817         (aarch64_evpc_dup): Likewise.
18818         (aarch64_gen_ccmp_first): Likewise.
18819         (aarch64_gen_ccmp_next): Likewise.
18820         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
18821         (alpha_emit_xfloating_libcall): Likewise.
18822         (emit_insxl): Likewise.
18823         (alpha_arg_type): Likewise.
18824         * config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
18825         (arc_preferred_simd_mode): Likewise.
18826         (arc_secondary_reload): Likewise.
18827         (get_arc_condition_code): Likewise.
18828         (arc_print_operand): Likewise.
18829         (arc_legitimate_constant_p): Likewise.
18830         * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18831         * config/arc/arc.md (casesi_load): Likewise.
18832         (casesi_compact_jump): Likewise.
18833         * config/arc/predicates.md (proper_comparison_operator): Likewise.
18834         (cc_use_register): Likewise.
18835         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18836         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
18837         (arm_init_iwmmxt_builtins): Likewise.
18838         * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
18839         (neon_expand_vector_init): Likewise.
18840         (arm_attr_length_move_neon): Likewise.
18841         (maybe_get_arm_condition_code): Likewise.
18842         (arm_emit_vector_const): Likewise.
18843         (arm_preferred_simd_mode): Likewise.
18844         (arm_output_iwmmxt_tinsr): Likewise.
18845         (thumb1_output_casesi): Likewise.
18846         (thumb2_output_casesi): Likewise.
18847         (arm_emit_load_exclusive): Likewise.
18848         (arm_emit_store_exclusive): Likewise.
18849         (arm_expand_compare_and_swap): Likewise.
18850         (arm_evpc_neon_vuzp): Likewise.
18851         (arm_evpc_neon_vzip): Likewise.
18852         (arm_evpc_neon_vrev): Likewise.
18853         (arm_evpc_neon_vtrn): Likewise.
18854         (arm_evpc_neon_vext): Likewise.
18855         (arm_validize_comparison): Likewise.
18856         * config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
18857         * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
18858         * config/avr/avr.c (avr_rtx_costs_1): Likewise.
18859         * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
18860         (c6x_preferred_simd_mode): Likewise.
18861         * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
18862         (epiphany_rtx_costs): Likewise.
18863         * config/epiphany/predicates.md (proper_comparison_operator):
18864         Likewise.
18865         * config/frv/frv.c (condexec_memory_operand): Likewise.
18866         (frv_emit_move): Likewise.
18867         (output_move_single): Likewise.
18868         (output_condmove_single): Likewise.
18869         (frv_hard_regno_mode_ok): Likewise.
18870         (frv_matching_accg_mode): Likewise.
18871         * config/h8300/h8300.c (split_adds_subs): Likewise.
18872         (h8300_rtx_costs): Likewise.
18873         (h8300_print_operand): Likewise.
18874         (compute_mov_length): Likewise.
18875         (output_logical_op): Likewise.
18876         (compute_logical_op_length): Likewise.
18877         (compute_logical_op_cc): Likewise.
18878         (h8300_shift_needs_scratch_p): Likewise.
18879         (output_a_shift): Likewise.
18880         (compute_a_shift_length): Likewise.
18881         (compute_a_shift_cc): Likewise.
18882         (expand_a_rotate): Likewise.
18883         (output_a_rotate): Likewise.
18884         * config/i386/i386.c (classify_argument): Likewise.
18885         (function_arg_advance_32): Likewise.
18886         (function_arg_32): Likewise.
18887         (function_arg_64): Likewise.
18888         (function_value_64): Likewise.
18889         (ix86_gimplify_va_arg): Likewise.
18890         (ix86_legitimate_constant_p): Likewise.
18891         (put_condition_code): Likewise.
18892         (split_double_mode): Likewise.
18893         (ix86_avx256_split_vector_move_misalign): Likewise.
18894         (ix86_expand_vector_logical_operator): Likewise.
18895         (ix86_split_idivmod): Likewise.
18896         (ix86_expand_adjust_ufix_to_sfix_si): Likewise.
18897         (ix86_build_const_vector): Likewise.
18898         (ix86_build_signbit_mask): Likewise.
18899         (ix86_match_ccmode): Likewise.
18900         (ix86_cc_modes_compatible): Likewise.
18901         (ix86_expand_branch): Likewise.
18902         (ix86_expand_sse_cmp): Likewise.
18903         (ix86_expand_sse_movcc): Likewise.
18904         (ix86_expand_int_sse_cmp): Likewise.
18905         (ix86_expand_vec_perm_vpermi2): Likewise.
18906         (ix86_expand_vec_perm): Likewise.
18907         (ix86_expand_sse_unpack): Likewise.
18908         (ix86_expand_int_addcc): Likewise.
18909         (ix86_split_to_parts): Likewise.
18910         (ix86_vectorize_builtin_gather): Likewise.
18911         (ix86_vectorize_builtin_scatter): Likewise.
18912         (avx_vpermilp_parallel): Likewise.
18913         (inline_memory_move_cost): Likewise.
18914         (ix86_tieable_integer_mode_p): Likewise.
18915         (x86_maybe_negate_const_int): Likewise.
18916         (ix86_expand_vector_init_duplicate): Likewise.
18917         (ix86_expand_vector_init_one_nonzero): Likewise.
18918         (ix86_expand_vector_init_one_var): Likewise.
18919         (ix86_expand_vector_init_concat): Likewise.
18920         (ix86_expand_vector_init_interleave): Likewise.
18921         (ix86_expand_vector_init_general): Likewise.
18922         (ix86_expand_vector_set): Likewise.
18923         (ix86_expand_vector_extract): Likewise.
18924         (emit_reduc_half): Likewise.
18925         (ix86_emit_i387_round): Likewise.
18926         (ix86_mangle_type): Likewise.
18927         (ix86_expand_round_sse4): Likewise.
18928         (expand_vec_perm_blend): Likewise.
18929         (canonicalize_vector_int_perm): Likewise.
18930         (ix86_expand_vec_one_operand_perm_avx512): Likewise.
18931         (expand_vec_perm_1): Likewise.
18932         (expand_vec_perm_interleave3): Likewise.
18933         (expand_vec_perm_even_odd_pack): Likewise.
18934         (expand_vec_perm_even_odd_1): Likewise.
18935         (expand_vec_perm_broadcast_1): Likewise.
18936         (ix86_vectorize_vec_perm_const_ok): Likewise.
18937         (ix86_expand_vecop_qihi): Likewise.
18938         (ix86_expand_mul_widen_hilo): Likewise.
18939         (ix86_expand_sse2_abs): Likewise.
18940         (ix86_expand_pextr): Likewise.
18941         (ix86_expand_pinsr): Likewise.
18942         (ix86_preferred_simd_mode): Likewise.
18943         (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
18944         * config/i386/sse.md (*andnot<mode>3): Likewise.
18945         (<mask_codefor><code><mode>3<mask_name>): Likewise.
18946         (*<code><mode>3): Likewise.
18947         * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
18948         (ia64_expand_atomic_op): Likewise.
18949         (ia64_arg_type): Likewise.
18950         (ia64_mode_to_int): Likewise.
18951         (ia64_scalar_mode_supported_p): Likewise.
18952         (ia64_vector_mode_supported_p): Likewise.
18953         (expand_vec_perm_broadcast): Likewise.
18954         * config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
18955         (iq2000_function_arg_advance): Likewise.
18956         (iq2000_function_arg): Likewise.
18957         * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
18958         * config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
18959         (m68k_libcall_value): Likewise.
18960         (m68k_function_value): Likewise.
18961         (sched_attr_op_type): Likewise.
18962         * config/mcore/mcore.c (mcore_output_move): Likewise.
18963         * config/microblaze/microblaze.c (microblaze_function_arg_advance):
18964         Likewise.
18965         (microblaze_function_arg): Likewise.
18966         * config/mips/mips.c (mips16_build_call_stub): Likewise.
18967         (mips_print_operand): Likewise.
18968         (mips_mode_ok_for_mov_fmt_p): Likewise.
18969         (mips_vector_mode_supported_p): Likewise.
18970         (mips_preferred_simd_mode): Likewise.
18971         (mips_expand_vpc_loongson_even_odd): Likewise.
18972         (mips_expand_vec_unpack): Likewise.
18973         (mips_expand_vi_broadcast): Likewise.
18974         (mips_expand_vector_init): Likewise.
18975         (mips_expand_vec_reduc): Likewise.
18976         (mips_expand_msa_cmp): Likewise.
18977         * config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
18978         * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
18979         (cc_flags_for_mode): Likewise.
18980         * config/msp430/msp430.c (msp430_print_operand): Likewise.
18981         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
18982         (nds32_output_casesi_pc_relative): Likewise.
18983         * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18984         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
18985         (nvptx_gen_unpack): Likewise.
18986         (nvptx_gen_pack): Likewise.
18987         (nvptx_gen_shuffle): Likewise.
18988         (nvptx_gen_wcast): Likewise.
18989         (nvptx_preferred_simd_mode): Likewise.
18990         * config/pa/pa.c (pa_secondary_reload): Likewise.
18991         * config/pa/predicates.md (base14_operand): Likewise.
18992         * config/powerpcspe/powerpcspe-c.c
18993         (altivec_resolve_overloaded_builtin): Likewise.
18994         * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
18995         Likewise.
18996         (rs6000_preferred_simd_mode): Likewise.
18997         (output_vec_const_move): Likewise.
18998         (rs6000_expand_vector_extract): Likewise.
18999         (rs6000_split_vec_extract_var): Likewise.
19000         (reg_offset_addressing_ok_p): Likewise.
19001         (rs6000_legitimate_offset_address_p): Likewise.
19002         (rs6000_legitimize_address): Likewise.
19003         (rs6000_emit_set_const): Likewise.
19004         (rs6000_const_vec): Likewise.
19005         (rs6000_emit_move): Likewise.
19006         (spe_build_register_parallel): Likewise.
19007         (rs6000_darwin64_record_arg_recurse): Likewise.
19008         (swap_selector_for_mode): Likewise.
19009         (spe_init_builtins): Likewise.
19010         (paired_init_builtins): Likewise.
19011         (altivec_init_builtins): Likewise.
19012         (do_load_for_compare): Likewise.
19013         (rs6000_generate_compare): Likewise.
19014         (rs6000_expand_float128_convert): Likewise.
19015         (emit_load_locked): Likewise.
19016         (emit_store_conditional): Likewise.
19017         (rs6000_output_function_epilogue): Likewise.
19018         (rs6000_handle_altivec_attribute): Likewise.
19019         (rs6000_function_value): Likewise.
19020         (emit_fusion_gpr_load): Likewise.
19021         (emit_fusion_p9_load): Likewise.
19022         (emit_fusion_p9_store): Likewise.
19023         * config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
19024         (fusion_gpr_mem_load): Likewise.
19025         (fusion_addis_mem_combo_load): Likewise.
19026         (fusion_addis_mem_combo_store): Likewise.
19027         * config/rs6000/predicates.md (easy_fp_constant): Likewise.
19028         (fusion_gpr_mem_load): Likewise.
19029         (fusion_addis_mem_combo_load): Likewise.
19030         (fusion_addis_mem_combo_store): Likewise.
19031         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19032         Likewise.
19033         * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
19034         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
19035         (rs6000_preferred_simd_mode): Likewise.
19036         (output_vec_const_move): Likewise.
19037         (rs6000_expand_vector_extract): Likewise.
19038         (rs6000_split_vec_extract_var): Likewise.
19039         (reg_offset_addressing_ok_p): Likewise.
19040         (rs6000_legitimate_offset_address_p): Likewise.
19041         (rs6000_legitimize_address): Likewise.
19042         (rs6000_emit_set_const): Likewise.
19043         (rs6000_const_vec): Likewise.
19044         (rs6000_emit_move): Likewise.
19045         (rs6000_darwin64_record_arg_recurse): Likewise.
19046         (swap_selector_for_mode): Likewise.
19047         (paired_init_builtins): Likewise.
19048         (altivec_init_builtins): Likewise.
19049         (rs6000_expand_float128_convert): Likewise.
19050         (emit_load_locked): Likewise.
19051         (emit_store_conditional): Likewise.
19052         (rs6000_output_function_epilogue): Likewise.
19053         (rs6000_handle_altivec_attribute): Likewise.
19054         (rs6000_function_value): Likewise.
19055         (emit_fusion_gpr_load): Likewise.
19056         (emit_fusion_p9_load): Likewise.
19057         (emit_fusion_p9_store): Likewise.
19058         * config/rx/rx.c (rx_gen_move_template): Likewise.
19059         (flags_from_mode): Likewise.
19060         * config/s390/predicates.md (s390_alc_comparison): Likewise.
19061         (s390_slb_comparison): Likewise.
19062         * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
19063         (s390_vector_mode_supported_p): Likewise.
19064         (s390_cc_modes_compatible): Likewise.
19065         (s390_match_ccmode_set): Likewise.
19066         (s390_canonicalize_comparison): Likewise.
19067         (s390_emit_compare_and_swap): Likewise.
19068         (s390_branch_condition_mask): Likewise.
19069         (s390_rtx_costs): Likewise.
19070         (s390_secondary_reload): Likewise.
19071         (__SECONDARY_RELOAD_CASE): Likewise.
19072         (s390_expand_cs): Likewise.
19073         (s390_preferred_simd_mode): Likewise.
19074         * config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
19075         * config/sh/sh.c (sh_print_operand): Likewise.
19076         (dump_table): Likewise.
19077         (sh_secondary_reload): Likewise.
19078         * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19079         * config/sh/sh.md (casesi_worker_1): Likewise.
19080         (casesi_worker_2): Likewise.
19081         * config/sparc/predicates.md (icc_comparison_operator): Likewise.
19082         (fcc_comparison_operator): Likewise.
19083         * config/sparc/sparc.c (sparc_expand_move): Likewise.
19084         (emit_soft_tfmode_cvt): Likewise.
19085         (sparc_preferred_simd_mode): Likewise.
19086         (output_cbranch): Likewise.
19087         (sparc_print_operand): Likewise.
19088         (sparc_expand_vec_perm_bmask): Likewise.
19089         (vector_init_bshuffle): Likewise.
19090         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
19091         (spu_vector_mode_supported_p): Likewise.
19092         (spu_expand_insv): Likewise.
19093         (spu_emit_branch_or_set): Likewise.
19094         (spu_handle_vector_attribute): Likewise.
19095         (spu_builtin_splats): Likewise.
19096         (spu_builtin_extract): Likewise.
19097         (spu_builtin_promote): Likewise.
19098         (spu_expand_sign_extend): Likewise.
19099         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
19100         (tilegx_simd_int): Likewise.
19101         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
19102         (tilepro_simd_int): Likewise.
19103         * config/v850/v850.c (const_double_split): Likewise.
19104         (v850_print_operand): Likewise.
19105         (ep_memory_offset): Likewise.
19106         * config/vax/vax.c (vax_rtx_costs): Likewise.
19107         (vax_output_int_move): Likewise.
19108         (vax_output_int_add): Likewise.
19109         (vax_output_int_subtract): Likewise.
19110         * config/visium/predicates.md (visium_branch_operator): Likewise.
19111         * config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
19112         (visium_print_operand_address): Likewise.
19113         * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19114         * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
19115         (xtensa_expand_conditional_branch): Likewise.
19116         (xtensa_copy_incoming_a7): Likewise.
19117         (xtensa_output_literal): Likewise.
19118         * dfp.c (decimal_real_maxval): Likewise.
19119         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
19120
19121 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19122             Alan Hayward  <alan.hayward@arm.com>
19123             David Sherwood  <david.sherwood@arm.com>
19124
19125         * genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
19126         (mode_nunits_inline): Likewise.
19127         (mode_inner_inline): Likewise.
19128         (mode_unit_size_inline): Likewise.
19129         (mode_unit_precision_inline): Likewise.
19130         (emit_insn_modes_h): Likewise.  Also emit a #define of the
19131         unprefixed name.
19132         (emit_mode_wider): Add an E_ prefix to mode names.
19133         (emit_mode_complex): Likewise.
19134         (emit_mode_inner): Likewise.
19135         (emit_mode_adjustments): Likewise.
19136         (emit_mode_int_n): Likewise.
19137         * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
19138         (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
19139         (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
19140         (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
19141         (CRC32_BUILTIN, ENTRY): Likewise.
19142         * config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
19143         (aarch64_pop_regs): Likewise.
19144         (aarch64_process_components): Likewise.
19145         * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
19146         * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
19147         (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
19148         (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
19149         * config/arm/arm.c (arm_init_libfuncs): Likewise.
19150         * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
19151         Likewise.
19152         * config/i386/i386-builtin.def (pcmpestr): Likewise.
19153         (pcmpistr): Likewise.
19154         * config/microblaze/microblaze.c (double_memory_operand): Likewise.
19155         * config/mmix/mmix.c (mmix_output_condition): Likewise.
19156         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
19157         Likewise.
19158         * config/rl78/rl78.c (mduc_regs): Likewise.
19159         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19160         (htm_expand_builtin): Likewise.
19161         * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
19162         * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
19163         * config/xtensa/xtensa.c (print_operand): Likewise.
19164         * expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
19165         (NUM_MODE_VECTOR_INT): Likewise.
19166         * genoutput.c (null_operand): Likewise.
19167         (output_operand_data): Likewise.
19168         * genrecog.c (print_parameter_value): Likewise.
19169         * lra.c (debug_operand_data): Likewise.
19170
19171 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19172
19173         * dwarf2out.c (scompare_loc_descriptor_wide)
19174         (scompare_loc_descriptor_narrow): New functions, split out from...
19175         (scompare_loc_descriptor): ...here.
19176         * expmed.c (emit_store_flag_int): New function, split out from...
19177         (emit_store_flag): ...here.
19178
19179 2017-08-30  Richard Biener  <rguenther@suse.de>
19180
19181         * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
19182         (dwarf2out_early_finish): Move setting of AT_pubnames from
19183         early debug output to early finish.
19184
19185 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19186
19187         * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
19188         and -mdata-region to the assembler.
19189
19190 2017-08-30  Richard Biener  <rguenther@suse.de>
19191
19192         * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
19193         attributes.
19194         (gen_subprogram_die): Add DW_AT_object_pointer only early.
19195         (dwarf2out_early_global_decl): Only generate a DIE for the
19196         abstract origin if it doesn't already exist or is a declaration DIE.
19197         (resolve_addr): Do not add the linkage name twice when
19198         generating a stub DIE for the DW_TAG_GNU_call_site target.
19199
19200 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19201
19202         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19203         Use machine_mode rather than int for arg1_mode.
19204
19205 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
19206
19207         PR target/82015
19208         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
19209         that the second argument of the built-in functions to unpack
19210         128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
19211         switch statement instead a lot of if statements.
19212         * config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
19213         Allow 64-bit values to be in Altivec registers as well as
19214         traditional floating point registers.
19215         (pack<mode>, FMOVE128_VSX iterator): Likewise.
19216
19217 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
19218
19219         * ira-costs.c (record_address_regs): Handle both operands of PLUS for
19220         MAX_REGS_PER_ADDRESS == 1.
19221
19222 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
19223
19224         * config/i386/i386.opt (flag_fentry): Do not init to -1.
19225         * config/i386/i386.c (ix86_option_override_internal): Simplify
19226         setting of opts->x_flag_entry.
19227
19228 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19229             Jakub Jelinek  <jakub@redhat.com>
19230             Richard Biener  <rguenther@suse.de>
19231
19232         PR tree-optimization/81503
19233         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
19234         folded constant fits in the target type; reorder tests for clarity.
19235
19236 2017-08-29  Martin Liska  <mliska@suse.cz>
19237
19238         * passes.def: Include pass_lower_switch.
19239         * stmt.c (dump_case_nodes): Remove and move to
19240         tree-switch-conversion.
19241         (case_values_threshold): Likewise.
19242         (expand_switch_as_decision_tree_p): Likewise.
19243         (emit_case_decision_tree): Likewise.
19244         (expand_case): Likewise.
19245         (balance_case_nodes): Likewise.
19246         (node_has_low_bound): Likewise.
19247         (node_has_high_bound): Likewise.
19248         (node_is_bounded): Likewise.
19249         (emit_case_nodes): Likewise.
19250         (struct simple_case_node): New struct.
19251         (add_case_node): Remove.
19252         (emit_case_dispatch_table): Use vector instead of case_list.
19253         (reset_out_edges_aux): Remove.
19254         (compute_cases_per_edge): Likewise.
19255         (expand_case): Build list of simple_case_node.
19256         (expand_sjlj_dispatch_table): Use it.
19257         * tree-switch-conversion.c (struct case_node): Moved from
19258         stmt.c and adjusted.
19259         (emit_case_nodes): Likewise.
19260         (node_has_low_bound): Likewise.
19261         (node_has_high_bound): Likewise.
19262         (node_is_bounded): Likewise.
19263         (case_values_threshold): Likewise.
19264         (reset_out_edges_aux): Likewise.
19265         (compute_cases_per_edge): Likewise.
19266         (add_case_node): Likewise.
19267         (dump_case_nodes): Likewise.
19268         (balance_case_nodes): Likewise.
19269         (expand_switch_as_decision_tree_p): Likewise.
19270         (emit_jump): Likewise.
19271         (emit_case_decision_tree): Likewise.
19272         (try_switch_expansion): Likewise.
19273         (do_jump_if_equal): Likewise.
19274         (emit_cmp_and_jump_insns): Likewise.
19275         (fix_phi_operands_for_edge): New function.
19276         (record_phi_operand_mapping): Likewise.
19277         (class pass_lower_switch): New pass.
19278         (pass_lower_switch::execute): New function.
19279         (make_pass_lower_switch): Likewise.
19280         (conditional_probability):
19281         * timevar.def: Add TV_TREE_SWITCH_LOWERING.
19282         * tree-pass.h: Add make_pass_lower_switch.
19283
19284 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19285
19286         PR target/80993
19287         * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
19288         handlers as used.
19289
19290 2017-08-29  Richard Biener  <rguenther@suse.de>
19291
19292         * dwarf2out.c (add_dwarf_attr): When checking is enabled verify
19293         we do not add a DW_AT_inline attribute twice.
19294         (gen_subprogram_die): Remove code setting DW_AT_inline on
19295         DECL_ABSTRACT_P nodes.
19296
19297 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
19298
19299         * gimplify.c (gimplify_call_expr): Copy the nothrow flag to
19300         calls to internal functions.
19301         (gimplify_modify_expr): Likewise.
19302         * tree-call-cdce.c (use_internal_fn): Likewise.
19303         * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
19304         (convert_to_divmod): Set the nothrow flag.
19305         * tree-if-conv.c (predicate_mem_writes):  Likewise.
19306         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
19307         (vectorizable_call): Likewise.
19308         (vectorizable_store): Likewise.
19309         (vectorizable_load): Likewise.
19310         * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
19311         (vect_recog_mask_conversion_pattern): Likewise.
19312
19313 2017-08-29  Martin Liska  <mliska@suse.cz>
19314
19315         PR other/39851
19316         * gcc.c (driver_handle_option): Add new argument.
19317         * opts-common.c (handle_option): Pass
19318         target_option_override_hook.
19319         * opts-global.c (lang_handle_option): Add new option.
19320         (set_default_handlers):  Add new argument.
19321         (decode_options): Likewise.
19322         * opts.c (target_handle_option): Likewise.
19323         (common_handle_option): Call target_option_override_hook.
19324         * opts.h (struct cl_option_handler_func): Add hook for
19325         target option override.
19326         (struct cl_option_handlers): Likewise.
19327         (set_default_handlers): Add new argument.
19328         (decode_options): Likewise.
19329         (common_handle_option): Likewise.
19330         (target_handle_option): Likewise.
19331         * toplev.c (toplev::main): Pass targetm.target_option.override
19332         hook.
19333
19334 2017-08-29  Richard Biener  <rguenther@suse.de>
19335         Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
19336
19337         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
19338         life to the active subtree.
19339
19340 2017-08-28  Jeff Law  <law@redhat.com>
19341
19342         * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
19343         derive_equivalences.
19344         (derive_equivalences_from_bit_ior, record_temporary_equivalences):
19345         Code moved into....
19346         (edge_info::derive_equivalences): New private member function
19347
19348         * tree-ssa-dom.c (class edge_info): Changed from a struct
19349         to a class.  Add ctor/dtor, methods and data members.
19350         (edge_info::edge_info): Renamed from allocate_edge_info.
19351         Initialize additional members.
19352         (edge_info::~edge_info): New.
19353         (free_dom_edge_info): Delete the edge info.
19354         (record_edge_info): Use new class & associated member functions.
19355         Tighten forms for testing for edge equivalences.
19356         (record_temporary_equivalences): Iterate over the simple
19357         equivalences rather than assuming there's only one per edge.
19358         (cprop_into_successor_phis): Iterate over the simple
19359         equivalences rather than assuming there's only one per edge.
19360         (optimize_stmt): Use operand_equal_p rather than pointer
19361         equality for mini-DSE code.
19362
19363 2017-08-28  Nathan Sidwell  <nathan@acm.org>
19364
19365         * gcc.c (execute): Fold SIGPIPE handling into switch
19366         statement.  Adjust internal error message.
19367
19368 2017-08-28  Richard Biener  <rguenther@suse.de>
19369
19370         PR debug/81993
19371         * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
19372         Do nothing for removed DIEs.
19373
19374 2017-08-28  Richard Biener  <rguenther@suse.de>
19375
19376         PR tree-optimization/81977
19377         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
19378         memcpy.
19379
19380 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
19381
19382         PR target/80640
19383         * doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
19384         * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
19385         using targetm.gen_mem_thread_fence.
19386
19387 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
19388
19389         PR target/81995
19390         * config/i386/i386.md (*<btsc><mode>): Change operand 2
19391         predicate to register_operand.  Reorder operands.
19392         (*btr<mode>): Ditto.
19393         (*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
19394         (*btr<mode>_mask): Ditto.
19395
19396 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
19397
19398         * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
19399         * config/rs6000/xmmintrin.h: New file.
19400         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
19401
19402 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19403
19404         PR target/81504
19405         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
19406         parameter and_insn and return it.
19407         (recombine_lvx_pattern): Insert a copy to ensure availability of
19408         the base register of the copied masking operation at the point of
19409         the instruction replacement.
19410         (recombine_stvx_pattern): Likewise.
19411
19412 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
19413
19414         * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
19415         undocumented switches.
19416         (-mpower9-dform-vector): Likewise.
19417         (-mpower9-dform): Likewise.
19418         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
19419         comments to delete references to -mpower9-dform* switches.
19420         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
19421         Delete reference to -mpower9-dform* switches, test for
19422         -mpower9-vector instead.
19423         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
19424         (OTHER_P9_VECTOR_MASKS): Likewise.
19425         (POWERPC_MASKS): Likewise.
19426         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
19427         tests against -mpower9-dform* to -mpower9-vector.  Delete code
19428         that checked for -mpower9-dform* consistancy with other options.
19429         Add test for -mpower9-misc to enable other power9 switches.
19430         (rs6000_init_hard_regno_mode_ok): Likewise.
19431         (rs6000_option_override_internal): Likewise.
19432         (rs6000_emit_prologue): Likewise.
19433         (rs6000_emit_epilogue): Likewise.
19434         (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
19435         (rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
19436         (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
19437         -mpower9-vector.
19438         (emit_fusion_p9_store): Likewise.
19439         * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
19440         resetting these macros if the assembler does not support ISA 3.0
19441         instructions.
19442         (TARGET_P9_DFORM_VECTOR): Likewise.
19443         * config/rs6000/rs6000.md (peepholes to optimize altivec memory):
19444         Change to use -mpower9-vector instead of -mpower9-dform-scalar.
19445
19446 2017-08-25  Alan Modra  <amodra@gmail.com>
19447
19448         PR rtl-optimization/81747
19449         * cse.c (cse_extended_basic_block): Don't attempt to record
19450         equivalences for degenerate conditional branches that branch
19451         to their fall-through.
19452
19453 2017-08-24  Martin Sebor  <msebor@redhat.com>
19454
19455         PR middle-end/81908
19456         * gimple-fold.c (size_must_be_zero_p): New function.
19457         (gimple_fold_builtin_memory_op): Call it.
19458
19459 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
19460
19461         * config/rs6000/mm_malloc.h: New file.
19462
19463 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
19464
19465         PR tree-optimization/81913
19466         * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
19467         analysis when either IVs in condition can wrap.
19468
19469 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
19470
19471         * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
19472         * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
19473
19474 2017-08-24  Richard Biener  <rguenther@suse.de>
19475
19476         PR target/81921
19477         * targhooks.c (default_target_can_inline_p): Properly
19478         use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
19479         is present and always compare.
19480         * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
19481         infer -mfpmath=sse from TARGET_SSE_P.
19482         (ix86_can_inline_p): Properly use target_option_default_node when
19483         no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
19484
19485 2017-08-24  Richard Biener  <rguenther@suse.de>
19486
19487         PR debug/81936
19488         * dwarf2out.c (output_die): Handle flag_generate_offload like
19489         flag_generate_lto.
19490         (output_comp_unit): Likewise.
19491         (gen_array_type_die): Likewise.
19492         (dwarf2out_early_finish): Likewise.
19493         (note_variable_value_in_expr): Likewise.
19494         (dwarf2out_finish): Likewise.  Adjust assert.
19495         * cgraphunit.c (symbol_table::compile): Move setting of
19496         flag_generate_offload earlier ...
19497         (symbol_table::finalize_compilation_unit): ... here, before
19498         early debug finalization.
19499
19500 2017-08-24  Richard Biener  <rguenther@suse.de>
19501
19502         * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
19503         and ipa-fnsummary.h.
19504         (ix86_can_inline_p): When ix86_fpmath flags do not match
19505         check whether the callee uses FP math at all.
19506
19507 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
19508
19509         PR middle-end/81931
19510         * tree-ssanames.c (get_nonzero_bits): Use element_precision
19511         instead of TYPE_PRECISION.
19512
19513 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
19514             Alan Hayward  <alan.hayward@arm.com>
19515             David Sherwood  <david.sherwood@arm.com>
19516
19517         * combine.c (make_extraction): Use subreg_offset_from_lsb.
19518
19519 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
19520
19521         * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
19522         Remove field.
19523         (ix86_frame::stack_realign_allocate): New field.
19524         (struct machine_frame_state): Modify comments.
19525         (machine_frame_state::sp_realigned_fp_end): New field.
19526         * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
19527         layout calculation.
19528         (sp_valid_at): Add assertion to assure no attempt to access invalid
19529         offset of a realigned stack.
19530         (fp_valid_at): Likewise.
19531         (choose_baseaddr): Modify comments.
19532         (ix86_emit_outlined_ms2sysv_save): Adjust to changes in
19533         ix86_expand_prologue.
19534         (ix86_expand_prologue): Modify stack realignment and allocation.
19535         (ix86_expand_epilogue): Modify comments.
19536         * doc/sourcebuild.texi: Add documentation for target selectors avx2,
19537         avx2_runtime, avx512f, and avx512f_runtime.
19538
19539 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
19540
19541         * config/i386/i386.opt: Remove unneeded Init(0) initializations.
19542         (mstackrealign): Do not init to -1.
19543         * config/i386/i386.c (ix86_option_override_internal):
19544         Check opts_set, not opts when setting default value of
19545         opts->x_ix86_force_align_arg_pointer.
19546
19547 2017-08-23  Richard Biener  <rguenther@suse.de>
19548
19549         * function.c (fndecl_name): Use verbosity 1 (no arguments) for
19550         lang_hooks.decl_printable_name.
19551         * print-rtl-function.c (print_rtx_function): Likewise.
19552         * tree-pretty-print.c (dump_function_header): Likewise.
19553
19554 2017-08-23  Richard Biener  <rguenther@suse.de>
19555
19556         PR lto/81940
19557         * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
19558         -g0 at compile-time.
19559
19560 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19561
19562         PR middle-end/19706
19563         * doc/sourcebuild.texi (Other hardware attributes):
19564         Document xorsign.
19565
19566 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19567
19568         PR middle-end/19706
19569         * tree-ssa-math-opts.c (convert_expand_mult_copysign):
19570         Fix single-use check.
19571
19572 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
19573
19574         * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
19575
19576 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19577
19578         * doc/install.texi: Modify to add more details on running selected
19579         tests.
19580
19581 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19582
19583         * config/i386/i386.c (ix86_option_override_internal): Error when -mx32
19584         is combined with -mabi=ms.
19585         (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
19586         ms_abi.
19587
19588 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19589
19590         PR tree-optimization/81488
19591         * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
19592         and cached_basis fields.
19593         (MAX_SPREAD): New constant.
19594         (alloc_cand_and_find_basis): Initialize new fields.
19595         (clear_visited): New function.
19596         (create_phi_basis_1): Rename from create_phi_basis, set visited
19597         and cached_basis fields.
19598         (create_phi_basis): New wrapper function.
19599         (phi_add_costs_1): Rename from phi_add_costs, add spread
19600         parameter, set visited field, short-circuit when limits reached.
19601         (phi_add_costs): New wrapper function.
19602         (record_phi_increments_1): Rename from record_phi_increments, set
19603         visited field.
19604         (record_phi_increments): New wrapper function.
19605         (phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
19606         (phi_incr_cost): New wrapper function.
19607         (all_phi_incrs_profitable_1): Rename from
19608         all_phi_incrs_profitable, set visited field.
19609         (all_phi_incrs_profitable): New wrapper function.
19610
19611 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
19612             Alan Hayward  <alan.hayward@arm.com>
19613             David Sherwood  <david.sherwood@arm.com>
19614
19615         * rtl.h (paradoxical_subreg_p): Define inline, and add a version
19616         that takes the outer and inner modes.
19617         * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
19618         comparison as the canonical test for a paradoxical subreg.
19619         * combine.c (simplify_set): Use paradoxical_subreg_p.
19620         (make_extraction): Likewise.
19621         (force_to_mode): Likewise.
19622         (rtx_equal_for_field_assignment_p): Likewise.
19623         (gen_lowpart_for_combine): Likewise.
19624         (simplify_comparison): Likewise.
19625         * cse.c (equiv_constant): Likewise.
19626         * expmed.c (store_bit_field_1): Likewise.
19627         * final.c (alter_subreg): Likewise.
19628         * fwprop.c (propagate_rtx): Likewise.
19629         (forward_propagate_subreg): Likewise.
19630         * ira-conflicts.c (ira_build_conflicts): Likewise.
19631         * lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
19632         * lra-constraints.c (curr_insn_transform): Likewise.
19633         (split_reg): Likewise.
19634         * lra-eliminations.c (move_plus_up): Likewise.
19635         (lra_eliminate_regs_1): Likewise.
19636         * recog.c (general_operand): Likewise.
19637         * ree.c (combine_reaching_defs): Likewise.
19638         * reload.c (push_reload): Likewise.
19639         (find_reloads): Likewise.
19640         * reload1.c (elimination_effects): Likewise.
19641         (compute_reload_subreg_offset): Likewise.
19642         (choose_reload_regs): Likewise.
19643         * rtlanal.c (subreg_lsb_1): Likewise.
19644         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
19645         (simplify_subreg): Likewise.
19646         * var-tracking.c (track_loc_p): Likewise.
19647         * emit-rtl.c (byte_lowpart_offset): Likewise.
19648         (paradoxical_subreg_p): Delete out-of-line definition.
19649
19650 2017-08-22  Jeff Law  <law@redhat.com>
19651
19652         PR tree-optimization/81741
19653         PR tree-optimization/71947
19654         * tree-ssa-dom.c: Include tree-inline.h.
19655         (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
19656         equivalences if one is more expensive to compute than the other.
19657         * tree-ssa-scopedtables.h (class const_or_copies): Make
19658         record_const_or_copy_raw method private.
19659         (class avail_exprs_stack): New method simplify_binary_operation.
19660         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
19661         avail_exprs_stack::simplify_binary_operation as needed.
19662         (avail_exprs_stack::simplify_binary_operation): New function.
19663
19664 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
19665
19666         * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
19667         * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
19668         (DOT_SYMBOLS): Likewise.
19669         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
19670         (RELOCATABLE_NEEDS_FIXUP): Likewise.
19671         (RS6000_ABI_NAME): Likewise.
19672         (TARGET_CMODEL): Likewise.
19673         (TOC_SECTION_ASM_OP): Likewise.
19674         (SET_CMODEL): New macro.
19675         (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
19676
19677 2017-08-22  Richard Biener  <rguenther@suse.de>
19678
19679         * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
19680         to allow for free-lang-data replacements similar to verify_type_variant.
19681
19682 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
19683             Alan Hayward  <alan.hayward@arm.com>
19684             David Sherwood  <david.sherwood@arm.com>
19685
19686         * config/aarch64/aarch64.md (casesi): Use DImode rather than
19687         VOIDmode for the LABEL_REF.
19688
19689 2017-08-22  Richard Biener  <rguenther@suse.de>
19690
19691         * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
19692
19693 2017-08-22  Richard Biener  <rguenther@suse.de>
19694
19695         * common.opt (feliminate-dwarf2-dups): Ignore.
19696         * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
19697         * dwarf2out.c (push_new_compile_unit, pop_compile_unit,
19698         same_die_p_wrap, compute_section_prefix,
19699         is_symbol_die, assign_symbol_names, break_out_includes): Remove.
19700         (comdat_symbol_id, comdat_symbol_number): Likewise.
19701         (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
19702         Likewise.
19703         (check_duplicate_cu, record_comdat_symbol_number): Likewise.
19704         (output_die): Mark unreachable path unreachable.
19705         (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
19706         (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
19707         (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
19708         (dwarf2out_early_finish): Likewise.
19709
19710 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
19711
19712         * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
19713
19714 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
19715
19716         PR target/81910
19717         * config/avr/avr.c (avr_handle_addr_attribute): Early return if
19718         not VAR_P. Filter attribute warnings with OPT_Wattributes.
19719         (avr_attribute_table) <io, io_low, address>: Initialize
19720         .decl_required with true.
19721
19722 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19723
19724         * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
19725         undocumented debugging options.
19726         (-mvsx-scalar-double): Likewise.
19727         (-mallow-df-permute): Likewise.
19728         (-mvectorize-builtins): Likewise.
19729         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19730         (rs6000_builtin_vectorized_function): Likewise.
19731         (rs6000_builtin_md_vectorized_function): Likewise.
19732         (rs6000_opt_vars): Likewise.
19733
19734 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
19735
19736         PR target/46091
19737         * config/i386/i386.md (*btsq_imm): Rename from *btsq.
19738         (*btrq_imm): Rename from *btrq.
19739         (*btcq_imm): Rename from *btcq.
19740         (btsc): New code attribute.
19741         (*<btsc><mode>): New insn pattern.
19742         (*btr<mode>): Ditto.
19743         (*<btsc><mode>_mask): New insn_and_split pattern.
19744         (*btr<mode>_mask): Ditto.
19745
19746 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19747             Alan Hayward  <alan.hayward@arm.com>
19748             David Sherwood  <david.sherwood@arm.com>
19749
19750         * function.c (pad_below): Simplify padding calculation.
19751
19752 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19753             Alan Hayward  <alan.hayward@arm.com>
19754             David Sherwood  <david.sherwood@arm.com>
19755
19756         * target.def (function_prologue): Remove frame size argument.
19757         (function_epilogue): Likewise.
19758         * doc/tm.texi: Regenerate.
19759         * final.c (final_start_function): Update call to function_prologue.
19760         (final_end_function): Update call to function_epilogue.
19761         (default_function_pro_epilogue): Remove frame size argument.
19762         * output.h (default_function_pro_epilogue): Likewise.
19763         * config/arm/arm.c (arm_output_function_epilogue): Likewise.
19764         (arm_output_function_prologue): Likewise.
19765         * config/frv/frv.c (frv_function_prologue): Likewise.
19766         (frv_function_epilogue): Likewise.
19767         * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
19768         * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
19769         (ia64_output_function_epilogue): Likewise.
19770         * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
19771         (m32r_output_function_epilogue): Likewise.
19772         * config/microblaze/microblaze.c (microblaze_function_prologue)
19773         (microblaze_function_epilogue): Likewise.
19774         * config/mips/mips.c (mips_output_function_prologue): Likewise.
19775         (mips_output_function_epilogue): Likewise.
19776         * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
19777         (mmix_target_asm_function_epilogue): Likewise.
19778         * config/msp430/msp430.c (msp430_start_function): Likewise.
19779         * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
19780         (nds32_asm_function_epilogue): Likewise.
19781         * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
19782         * config/pa/pa.c (pa_output_function_prologue): Likewise.
19783         (pa_output_function_epilogue): Likewise.
19784         * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
19785         (rs6000_output_function_epilogue): Likewise.
19786         * config/rl78/rl78.c (rl78_start_function): Likewise.
19787         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
19788         (rs6000_output_function_epilogue): Likewise.
19789         * config/rx/rx.c (rx_output_function_prologue): Likewise.
19790         * config/sh/sh.c (sh_output_function_epilogue): Likewise.
19791         * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
19792         (sparc_asm_function_epilogue): Likewise.
19793
19794 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19795
19796         * tree.h (type_has_mode_precision_p): New function.
19797         * convert.c (convert_to_integer_1): Use it.
19798         * expr.c (expand_expr_real_2): Likewise.
19799         (expand_expr_real_1): Likewise.
19800         * fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
19801         * match.pd: Likewise.
19802         * tree-ssa-forwprop.c (simplify_rotate): Likewise.
19803         * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
19804         * tree-tailcall.c (process_assignment): Likewise.
19805         * tree-vect-loop.c (vectorizable_reduction): Likewise.
19806         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
19807         (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
19808         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
19809         (vectorizable_assignment): Likewise.
19810         (vectorizable_shift): Likewise.
19811         (vectorizable_operation): Likewise.
19812         * tree-vrp.c (register_edge_assert_for_2): Likewise.
19813
19814 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
19815
19816         * match.pd: Add pow (C, x) simplification.
19817
19818 2017-08-21  Richard Biener  <rguenther@suse.de>
19819
19820         PR tree-optimization/81900
19821         * tree-ssa-pre.c (compute_antic_aux): Properly compute changed
19822         for blocks with abnormal predecessors.
19823         (compute_antic): Do not set visited flag prematurely.
19824
19825 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
19826
19827         PR target/79883
19828         * config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
19829
19830 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19831
19832         * stor-layout.h (vector_type_mode): Move to...
19833         * tree.h (vector_type_mode): ...here.
19834         * stor-layout.c (vector_type_mode): Move to...
19835         * tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
19836
19837 2017-08-21  Richard Biener  <rguenther@suse.de>
19838
19839         * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
19840         register_external_die hooks.
19841         (debug_false_tree_charstarstar_uhwistar): Declare.
19842         (debug_nothing_tree_charstar_uhwi): Likewise.
19843         * debug.c (do_nothing_debug_hooks): Adjust.
19844         (debug_false_tree_charstarstar_uhwistar): New do nothing.
19845         (debug_nothing_tree_charstar_uhwi): Likewise.
19846         * dbxout.c (dbx_debug_hooks): Adjust.
19847         (xcoff_debug_hooks): Likewise.
19848         * sdbout.c (sdb_debug_hooks): Likewise.
19849         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
19850         * dwarf2out.c (macinfo_label_base): New global.
19851         (dwarf2out_register_external_die): New function for the
19852         register_external_die hook.
19853         (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
19854         (dwarf2_debug_hooks): Use them.
19855         (dwarf2_lineno_debug_hooks): Adjust.
19856         (struct die_struct): Add with_offset flag.
19857         (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
19858         DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
19859         DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
19860         DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
19861         DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
19862         DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
19863         defining section names for the early LTO debug variants.
19864         (reset_indirect_string): New helper.
19865         (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
19866         (print_dw_val): Add support for offsetted symbol references.
19867         (get_ultimate_context): Split out from is_cxx.
19868         (is_cxx): Use get_ultimate_context.
19869         (is_fortran): Add decl overload.
19870         (compute_comp_unit_symbol): Split out worker from
19871         compute_section_prefix.
19872         (compute_section_prefix): Call compute_comp_unit_symbol and
19873         set comdat_type_p here.
19874         (output_die): Skip DIE symbol output for the LTO added one.
19875         Handle DIE symbol references with offset.
19876         (output_comp_unit): Guard section name mangling properly.
19877         For LTO debug sections emit a symbol at the section beginning
19878         which we use to refer to its DIEs.
19879         (add_abstract_origin_attribute): For DIEs registered via
19880         dwarf2out_register_external_die directly refer to the early
19881         DIE rather than indirectly through the shadow one we created.
19882         Remove obsolete call to dwarf2out_abstract_function for
19883         non-function/block origins.
19884         (gen_array_type_die): When generating early LTO debug do
19885         not emit DW_AT_string_length.
19886         (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
19887         late when in LTO.  As suggested place a gcc_unreachable for
19888         the DECL_ABSTRACT_P case.
19889         (gen_subprogram_die): Avoid another specification DIE
19890         for early built declarations/definitions for the late LTO case.
19891         (gen_variable_die): Add type references for late duplicated VLA dies
19892         when in late LTO.
19893         (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
19894         we have the abstract instance already.
19895         (process_scope_var): Adjust decl DIE contexts in LTO which
19896         first puts them in limbo.
19897         (gen_decl_die): Do not generate type DIEs late apart from
19898         types for VLAs or for decls we do not yet have a DIE.  Do not
19899         call dwarf2out_abstract_function late.
19900         (dwarf2out_early_global_decl): Make sure to create DIEs
19901         for abstract instances of a decl first.
19902         (dwarf2out_late_global_decl): Adjust comment.
19903         (output_macinfo_op): With multiple macro sections use
19904         macinfo_label_base to distinguish labels.
19905         (output_macinfo): Likewise.  Update macinfo_label_base.
19906         Pass in the line info label.
19907         (note_variable_value_in_expr): When generating LTO resolve
19908         all variable values here by generating DIEs as needed.
19909         (init_sections_and_labels): Add early LTO debug flag parameter
19910         and generate different sections and names if set.  Add generation
19911         counter for the labels so we can have multiple of them.
19912         (reset_dies): Helper to allow DIEs to be output multiple times.
19913         (dwarf2out_finish): When outputting DIEs to the fat part of an
19914         LTO object first reset DIEs.
19915         (dwarf2out_early_finish): Output early DIEs when generating LTO.
19916         (modified_type_die): Check for decl_ultimate_origin being self
19917         before recursing.
19918         (gen_type_die_with_usage): Likewise.
19919         (gen_typedef_die): Allow decl_ultimate_origin being self.
19920         (set_decl_abstract_flags): Remove.
19921         (set_block_abstract_flags): Likewise.
19922         (dwarf2out_abstract_function): Treat the early generated DIEs
19923         as the abstract copy and only add DW_AT_inline and
19924         DW_AT_artificial here and call set_decl_origin_self.
19925         If the DIE has an abstract origin don't do anything.
19926         * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
19927         if we have none yet (Go fails to build one, PR78628).
19928         (variably_modified_type_p): Prevent endless recursion for Ada
19929         cyclic pointer types.
19930         * lto-streamer-in.c: Include debug.h.
19931         (dref_queue): New global.
19932         (lto_read_tree_1): Stream in DIE references.
19933         (lto_input_tree): Register DIE references.
19934         (input_function): Stream DECL_DEBUG_ARGS.
19935         * lto-streamer-out.c: Include debug.h.
19936         (lto_write_tree_1): Output DIE references.
19937         (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
19938         Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
19939         (output_function): Stream DECL_DEBUG_ARGS.
19940         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
19941         Stream DECL_ABSTRACT_ORIGIN.
19942         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
19943         (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
19944         DECL_CONTEXT for file-scope decls.
19945         * lto-streamer.h (struct dref_entry): Declare.
19946         (dref_queue): Likewise.
19947         * cfgexpand.c (pass_expand::execute): Do not call the
19948         outlining_inline_function hook here.
19949         * lto-wrapper.c (debug_obj): New global.
19950         (tool_cleanup): Unlink it if required.
19951         (debug_objcopy): New function.
19952         (run_gcc): Handle early debug sections in the IL files by
19953         extracting them to separate files, partially linkin them and
19954         feeding the result back as result to the linker.
19955         * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
19956         DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
19957         DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
19958         sections into a separate segment.
19959         * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
19960         segments.
19961         (darwin_asm_dwarf_section): Likewise.
19962         (darwin_asm_output_dwarf_offset): Likewise.
19963         * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
19964
19965 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19966             Alan Hayward  <alan.hayward@arm.com>
19967             David Sherwood  <david.sherwood@arm.com>
19968
19969         * read-md.h (md_reader::record_potential_iterator_use): Replace
19970         pointer argument with an rtx and an index.
19971         * read-rtl.c (iterator_group::apply_iterator): Likewise.
19972         (apply_mode_iterator): Likewise.
19973         (apply_code_iterator): Likewise.
19974         (apply_int_iterator): Likewise.
19975         (apply_subst_iterator): Likewise.
19976         (record_iterator_use): Likewise.
19977         (record_attribute_use): Likewise.
19978         (md_reader::record_potential_iterator_use): Likewise.  Update calls
19979         to record_iterator_use and apply_iterator.
19980         (iterator_use): Replace ptr with x and index.
19981         (attribute_use): Likewise.
19982         (apply_attribute_uses): Update calls to apply_iterator.
19983         (apply_iterators): Likewise.  Update initialization of iterator_use.
19984         (rtx_reader::read_rtx_code): Update calls to record_iterator_use
19985         and record_potential_iterator_use.
19986         (rtx_reader::read_rtx_operand): Likewise.
19987
19988 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19989             Alan Hayward  <alan.hayward@arm.com>
19990             David Sherwood  <david.sherwood@arm.com>
19991
19992         * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
19993         CONST_WIDE_INT.
19994
19995 2017-08-21  Richard Biener  <rguenther@suse.de>
19996
19997         PR middle-end/81884
19998         * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
19999         at struct end conservatively when comparing common bases.
20000
20001 2017-08-21  Richard Biener  <rguenther@suse.de>
20002
20003         * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
20004         (mem_ref_in_stmt): Remove.
20005         (determine_max_movement): Use ref index to get at the reference.
20006         (invariantness_dom_walker::before_dom_children): Deal with
20007         lim data already initialized.
20008         (gather_mem_refs_stmt): Initialize lim data and record ref index.
20009
20010 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20011
20012         * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
20013         (TARGET_ISA_ROUND): Ditto.
20014         (TARGET_ROUND): Ditto.
20015         * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
20016         * config/i386/i386.md: Ditto.
20017         * config/i386/sse.md: Ditto.
20018         * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
20019         with OPTION_MASK_ISA_SSE4_1.
20020
20021 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20022
20023         PR target/81894
20024         * doc/extend.texi (x86 Built-in Functions): Correct the name of
20025         __builtin_ia32_lzcnt_u16.
20026
20027 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
20028
20029         PR target/80210
20030         * config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
20031         (rs6000_set_current_function): Rewrite function to use it.
20032
20033 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
20034
20035         PR c/53037
20036         * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
20037         and TYPE_WARN_IF_NOT_ALIGN.
20038         * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
20039         (handle_warn_if_not_align): New.
20040         (place_union_field): Call handle_warn_if_not_align.
20041         (place_field): Call handle_warn_if_not_align.
20042         Copy TYPE_WARN_IF_NOT_ALIGN.
20043         (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
20044         (layout_type): Likewise.
20045         * tree-core.h (tree_type_common): Add warn_if_not_align.  Set
20046         spare to 18.
20047         (tree_decl_common): Add warn_if_not_align.
20048         * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
20049         * tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
20050         (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
20051         (DECL_WARN_IF_NOT_ALIGN): Likewise.
20052         (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
20053         * doc/extend.texi: Document warn_if_not_aligned attribute.
20054         * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
20055
20056 2017-08-17  Martin Liska  <mliska@suse.cz>
20057
20058         PR bootstrap/81864
20059         * tree-loop-distribution.c (ddrs_table): Change type to pointer type.
20060         (get_data_dependence): Use it as pointer type.
20061         (distribute_loop): Likewise.
20062
20063 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20064
20065         * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
20066         (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
20067         (p8_vmrgow_<mode>_direct): New define_insn.
20068         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
20069         handle endianness for vmrgew and vmrgow permute patterns.
20070
20071 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20072
20073         * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
20074         * config/rs6000/rs6000-cpus.def: Remove comment.
20075         (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
20076         (POWERPC_MASKS): Likewise.
20077         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
20078         use of TARGET_VSX_TIMODE.
20079         (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
20080         (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
20081         TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
20082         (rs6000_option_override_internal): Remove dead code.
20083         (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
20084         (rs6000_legitimize_reload_address): Likewise.
20085         (rs6000_legitimate_address_p): Likewise.
20086         (rs6000_opt_masks): Delete "vsx-timode".
20087         (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
20088         from function comment.
20089         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
20090         * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
20091         (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
20092         condition.
20093         * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
20094         * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
20095         * config/rs6000/vsx.md (VSX_LE_128): Likewise.
20096         (VSX_TI): Likewise.
20097         (VSX_M): Likewise.
20098         (define_peephole2): Likewise.
20099
20100 2017-08-17  Martin Sebor  <msebor@redhat.com>
20101
20102         PR c/81859
20103         * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
20104         past the end of an array.
20105         (test_pp_format): Add test cases.
20106
20107 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
20108
20109         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
20110         missing ECF_NOTHROW flags.
20111
20112 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20113
20114         PR target/72804
20115         * config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
20116         operands residing in integer registers.
20117         (*vsx_le_perm_load_<mode>): Likewise.
20118         (*vsx_le_perm_store_<mode>): Likewise.
20119         (define_peephole2): Add peepholes to optimize the above.
20120
20121 2017-08-17  Marek Polacek  <polacek@redhat.com>
20122
20123         PR middle-end/81814
20124         * fold-const.c (operand_equal_for_comparison_p): Remove code that used
20125         to mimic what shorten_compare did.  Change the return type to bool.
20126         (fold_cond_expr_with_comparison): Update call to
20127         operand_equal_for_comparison_p.
20128         (fold_ternary_loc): Likewise.
20129
20130 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
20131
20132         * aarch64-simd.md (mov<mode>): No longer force zero immediate into
20133         register.
20134         (*aarch64_simd_mov<mode>): Add new case for stp using zero immediate.
20135
20136 2017-08-17  Richard Biener  <rguenther@suse.de>
20137
20138         * tree-ssa-structalias.c (solve_graph): When propagating
20139         to successors update the graphs succ edges and avoid duplicate work.
20140
20141 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
20142
20143         PR target/81861
20144         * config/i386/i386.c (ix86_option_override_internal): Save target
20145         specific options after ix86_stack_protector_guard_reg was changed.
20146
20147 2017-08-17  Richard Biener  <rguenther@suse.de>
20148
20149         PR tree-optimization/81827
20150         * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
20151         (new_var_info): Initialize it conservatively.
20152         (get_call_vi): Mark register vars.
20153         (new_scalar_tmp_constraint_exp): Likewise.
20154         (handle_rhs_call): Likewise.
20155         (handle_const_call): Likewise.
20156         (create_function_info_for): Likewise.
20157         (solve_constraints): Sort varinfos to separate register from
20158         non-register vars to pack points-to solution bitmaps during
20159         iteration.
20160
20161 2017-08-17  Marek Polacek  <polacek@redhat.com>
20162
20163         * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
20164
20165 2017-08-17  Richard Biener  <rguenther@suse.de>
20166
20167         * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
20168         to true when overflow is undefined and we saturated the result.
20169
20170 2017-08-17  Alan Modra  <amodra@gmail.com>
20171
20172         PR target/80938
20173         * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
20174         Don't use store multiple if only one reg needs saving.
20175         (interesting_frame_related_regno): New function.
20176         (rs6000_frame_related): Don't emit frame info for regs that
20177         don't need saving.
20178         (rs6000_emit_epilogue): Likewise.
20179
20180 2017-08-16  Nathan Sidwell  <nathan@acm.org>
20181
20182         * tree-core.h (tree_type_non_common): Rename binfo to lang_1.
20183         * tree.h (TYPE_BINFO): Use type_non_common.maxval.
20184         (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
20185         * tree.c (free_lang_data_in_type): Use else-if chain.  Always
20186         clear TYPE_LANG_1.  Remove obsolete member-function stripping.
20187         (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
20188         (verify_type): Adjust for TYPE_BINFO move.
20189         * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
20190         process TYPE_BINFO directly.
20191         (hash_tree): Likewise.
20192         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
20193         Likewise.
20194         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
20195         Likewise.
20196
20197 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
20198
20199         * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
20200
20201 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
20202
20203         PR target/46091
20204         * config/i386/i386.md (*anddi_1_btr): Change predicates of
20205         operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
20206         Add ix86_binary_operator_ok to insn constraint.
20207         (*iordi_1_bts): Ditto.
20208         (*xordi_1_btc): Ditto.
20209         (*btsq): Change predicate of operand 0 to nonimmediate_operand.
20210         Update corresponding peephole2 pattern.
20211         (*btrq): Ditto.
20212         (*btcq): Ditto.
20213
20214 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
20215
20216         PR tree-optimization/81832
20217         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
20218         copy loop header which has IFN_LOOP_DIST_ALIAS call.
20219
20220 2017-08-16  Marek Polacek  <polacek@redhat.com>
20221
20222         PR middle/81695
20223         * fold-const.c (fold_indirect_ref_1): Restore original behavior
20224         regarding size_zero_node.
20225
20226 2017-08-16  Martin Liska  <mliska@suse.cz>
20227
20228         PR target/81753
20229         * config.gcc: Respect previously set extra_objs in case
20230         of darwin target.
20231
20232 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
20233
20234         PR tree-optimization/81835
20235         * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
20236         the phi SSA_NAME.  Check that the condition in a COND_EXPR does
20237         not depend on the phi.
20238
20239 2017-08-16  Alan Modra  <amodra@gmail.com>
20240
20241         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
20242         dead code.
20243
20244 2017-08-16  Alan Modra  <amodra@gmail.com>
20245
20246         * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
20247         (save_reg_p): ..into this.  Update all callers.
20248         (first_reg_to_save): Simplify.
20249
20250 2017-08-16  Alan Modra  <amodra@gmail.com>
20251
20252         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
20253         fixed regs.
20254
20255 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
20256
20257         PR target/78460
20258         PR target/67712
20259         * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
20260         constant count if that count is less than 32.
20261
20262 2017-08-15  Nathan Sidwell  <nathan@acm.org>
20263
20264         * gcc.c (execute): Emit friendlier message if inferior is killed
20265         by an external cause.
20266
20267 2017-08-15  Richard Biener  <rguenther@suse.de>
20268
20269         PR tree-optimization/81790
20270         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
20271         CONSTRUCTORs from simplifying and VN.
20272
20273 2017-08-14  Martin Sebor  <msebor@redhat.com>
20274
20275         * builtin-attrs.def: Add comments.
20276
20277 2017-08-14  Martin Sebor  <msebor@redhat.com>
20278
20279         PR c/81117
20280         * doc/extend.texi (attribute nonstring): Document new attribute.
20281
20282 2017-08-14  Martin Sebor  <msebor@redhat.com>
20283
20284         PR c/81117
20285         * tree-diagnostic.c (default_tree_printer): Handle %G.
20286         * gimple-pretty-print.h (percent_G_format): Declare new function.
20287         * gimple-pretty-print.c (percent_G_format): Define.
20288         * tree-pretty-print.c (percent_K_format): Add argument.
20289
20290 2017-08-14  Martin Sebor  <msebor@redhat.com>
20291
20292         PR translation/79998
20293         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
20294         Remove a stray space.
20295
20296 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
20297
20298         PR target/46091
20299         * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
20300         (*iordi_1_bts): Ditto.
20301         (*xordi_1_btc): Ditto.
20302
20303 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20304
20305         PR target/79845
20306         * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
20307         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20308         Likewise.
20309         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
20310         quoted strings, and make more translator-friendly.
20311         (darwin_rs6000_override_options): Likewise.
20312         (rs6000_option_override_internal): Likewise.
20313         (rs6000_return_in_memory): Fix overlong line.
20314         (init_cmulative_args): Use quoted strings, and make more
20315         translator-friendly.
20316         (rs6000_pass_by_reference): Fix overlong line.
20317         (def_builtin): Use quoted strings.
20318         (altivec_expand_predicate_builtin): Use quoted strings, and make
20319         more translator-friendly.
20320         (htm_expand_builtin): Use quoted strings.
20321         (cpu_expand_builtin): Use quoted strings, and make more
20322         translator-friendly.
20323         (altivec_expand_builtin): Likewise.
20324         (paired_expand_predicate_builtin): Likewise.
20325         (rs6000_invalid_builtin): Likewise.
20326         (builtin_function_type): Use quoted strings.
20327         (rs6000_expand_split_stack_prologue): Use quoted strings, and make
20328         more translator-friendly.
20329         (rs6000_trampoline_init): Likewise.
20330         (rs6000_handle_altivec_attribute): Likewise.
20331         (rs6000_inner_target_options): Use quoted strings.
20332         (rs6000_disable_incompatible_switches): Likewise.
20333         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
20334         strings, and make more translator-friendly.
20335         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
20336
20337 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
20338
20339         PR tree-optimization/81799
20340         * tree-loop-distribution.c (version_loop_by_alias_check): Force
20341         cond_expr to simple gimple operand.
20342
20343 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
20344
20345         PR middle-end/46932
20346         * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
20347
20348 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
20349
20350         PR target/81754
20351         PR target/81268
20352         * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
20353         * config/avr/avr.md (gasisr, *gasisr): Use it instead of
20354         TARGET_GASISR_PROLOGUES.
20355         * config/avr/avr.c (avr_option_override): Same.
20356         (avr_pass_pre_proep::execute): Same.
20357
20358 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
20359
20360         PR target/81820
20361         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
20362         frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
20363
20364 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
20365
20366         * config/i386/i386.md (*load_tp_<mode>): Redefine as
20367         define_insn_and_split.  Split to a memory load from 0 in
20368         DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
20369         using PTR mode iterator.
20370         (*load_tp_x32_zext"): Redefine as define_insn_and_split.
20371         Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
20372         (*add_tp_<mode>): Redefine as define_insn_and_split.
20373         Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
20374         address space.  Merge with *add_tp_x32 using PTR mode iterator.
20375         (*add_tp_x32_zext"): Redefine as define_insn_and_split.
20376         Split to an add with a  memory load from 0 in
20377         DEFAULT_TLS_SEG_REG address space.
20378
20379 2017-08-12  Andrew Pinski  <apinski@cavium.com>
20380
20381         * config/aarch64/aarch64-option-extensions.def (rdma):
20382         Fix feature string to what Linux prints out in /proc/cpuinfo.
20383
20384 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
20385
20386         PR ada/79542
20387         * dwarf2out.c (modified_type_die): For C typedef types that have
20388         an ultimate origin, process the ultimate origin instead of the
20389         input type.
20390         (gen_typedef_die): Assert that input DECLs have no ultimate
20391         origin.
20392         (gen_type_die_with_usage): For typedef variants that have an
20393         ultimate origin, just call gen_decl_die on the original DECL.
20394         (process_scope_var): Avoid creating DIEs for local typedefs and
20395         concrete static variables.
20396
20397 2017-08-12  Alan Modra  <amodra@gmail.com>
20398
20399         PR target/81170
20400         PR target/81295
20401         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
20402         match gnu-user.h startfile.
20403         (ENDFILE_LINUX_SPEC): Similarly.
20404
20405 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
20406
20407         PR lto/81430
20408         * config/nvptx/nvptx.c (nvptx_override_options_after_change):
20409         Remove function.
20410         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
20411
20412 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
20413         * config/aarch64/aarch64.md (mov<mode>): Change.
20414         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
20415         aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
20416         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
20417
20418 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
20419
20420         * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
20421         for storage order barriers.
20422
20423 2017-08-11  Martin Liska  <mliska@suse.cz>
20424
20425         PR tree-opt/79987
20426         * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
20427         variables of void type.
20428
20429 2017-08-11  Martin Liska  <mliska@suse.cz>
20430
20431         * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
20432         TARGET_SUPPORTS_ALIASES.
20433         * cgraph.c (cgraph_node::create_same_body_alias): Likewise.
20434         * ipa-visibility.c (can_replace_by_local_alias): Likewise.
20435         (optimize_weakref): Likewise.
20436         * symtab.c (symtab_node::noninterposable_alias): Likewise.
20437         * varpool.c (varpool_node::create_extra_name_alias): Likewise.
20438         * defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
20439
20440 2017-08-11  Martin Liska  <mliska@suse.cz>
20441
20442         PR ipa/81213
20443         * config/i386/i386.c (make_resolver_func): Do complete
20444         refactoring of the function.
20445
20446 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20447
20448         PR target/81708
20449         * config/i386/i386.opt (mstack-protector-guard-symbol=): New option
20450         * config/i386/i386.c (ix86_stack_protect_guard): Use
20451         ix86_stack_protect_guard_symbol_str to generate varible declaration.
20452         * doc/invoke.texi (x86 Options): Document
20453         -mstack-protector-guard-symbol= option.
20454
20455 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20456
20457         * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
20458         * config/i386/i386.c (ix86_split_stack_guard): New function.
20459         (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
20460         (ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
20461         (i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
20462         (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
20463         * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
20464         (split_stack_space_check): Call ix86_split_stack_guard.
20465
20466 2017-08-10  Martin Sebor  <msebor@redhat.com>
20467
20468         * print-tree.c (print_node): Print location using the established
20469         format %s:%i%i.
20470         Replace spaces with colons.
20471         (debug_raw, debug): Ditto.
20472
20473 2017-08-10  Martin Sebor  <msebor@redhat.com>
20474
20475         PR c++/81586
20476         * pretty-print.c (pp_format): Correct the handling of %s precision.
20477
20478 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
20479
20480         PR target/81736
20481         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20482         to ...
20483         (ix86_finalize_stack_frame_flags): This.  Also clear
20484         frame_pointer_needed if -fno-omit-frame-pointer is used without
20485         stack access.
20486         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20487         with ix86_finalize_stack_frame_flags.
20488         (ix86_expand_epilogue): Likewise.
20489         (ix86_expand_split_stack_prologue): Likewise.
20490         * doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
20491
20492 2017-08-10  Martin Liska  <mliska@suse.cz>
20493
20494         PR c++/81355
20495         * c-attribs.c (handle_target_attribute):
20496         Report warning for an empty string argument of target attribute.
20497
20498 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
20499
20500         PR c/81687
20501         * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
20502         LABEL_DECLs.
20503         * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
20504         or DECL_NONLOCAL labels.
20505         (move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
20506         or DECL_NONLOCAL labels here.
20507
20508 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
20509
20510         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
20511         to indicate when early gimple folding has been disabled.
20512         (rs6000_gimple_fold_builtin): Add debug content.
20513         (rs6000_invalid_builtin): Fix whitespace.
20514         (rs6000_expand_builtin): Fix whitespace.
20515         * config/rs6000/rs6000.opt: Add option for -mfold-gimple.
20516
20517 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
20518
20519         PR target/80938
20520         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
20521         SAVE_MULTIPLE if not all the registers that saves, should be saved.
20522
20523 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
20524
20525         * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
20526         (qdf24xx): Likewise.
20527         * config/aarch64/aarch64.md: Include falkor.md.
20528         * config/aarch64/falkor.md: New.
20529
20530 2017-08-09  Marek Polacek  <polacek@redhat.com>
20531
20532         PR c/81233
20533         * diagnostic-core.h (emit_diagnostic_valist): Add declaration.
20534         * diagnostic.c (emit_diagnostic): Add a comment.
20535         (emit_diagnostic_valist): New function.
20536
20537 2017-08-09  Marek Polacek  <polacek@redhat.com>
20538
20539         PR c/81417
20540         * input.c (make_location): New overload.
20541         * input.h (make_location): Declare.
20542
20543 2017-08-08  Alan Modra  <amodra@gmail.com>
20544             H.J. Lu  <hongjiu.lu@intel.com>
20545
20546         PR driver/81523
20547         * gcc.c (NO_PIE_SPEC): Delete.
20548         (PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
20549         exclusion..
20550         (LINK_PIE_SPEC): ..to here.
20551         (LINK_COMMAND_SPEC): Support -no-pie.
20552         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
20553         chain of crtbegin*.o selection, update for PIE_SPEC changes and
20554         format.
20555         (GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
20556         * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
20557         (ENDFILE_CRTEND_SPEC): Similarly.
20558
20559 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
20560
20561         PR target/81708
20562         * config/i386/i386.opt (mstack-protector-guard-reg=): New option
20563         (mstack-protector-guard-offset=): Ditto.
20564         * config/i386/i386.c (ix86_option_override): Handle
20565         -mstack-protector-guard-reg= and -mstack-protector-guard-offset=
20566         options.
20567         (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
20568         ix86_stack_protect_guard_offset variables.
20569         (TARGET_STACK_PROTECT_GUARD): Always define.
20570         * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
20571         and -mstack-protector-guard-offset= options.
20572
20573 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20574
20575         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
20576         boundary case for the last candidate.
20577
20578 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20579
20580         * doc/invoke.texi: Document -ftree-loop-distribution for O3.
20581         * opts.c (default_options_table): Add OPT_ftree_loop_distribution.
20582
20583 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20584
20585         PR middle-end/19706
20586         * config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
20587         * config/aarch64/aarch64-builtins.c
20588         (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
20589         * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
20590         * config/aarch64/aarch64-simd.md: Added xorsign<mode>3
20591
20592 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20593             Andrew Pinski <pinskia@gmail.com>
20594
20595         PR middle-end/19706
20596         * internal-fn.def (XORSIGN): New.
20597         * optabs.def (xorsign_optab): New.
20598         * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
20599         (convert_expand_mult_copysign): New.
20600         (pass_optimize_widening_mul::execute): Call
20601         convert_expand_mult_copysign.
20602
20603 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20604
20605         PR tree-optimization/81354
20606         * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
20607         Insert on edges rather than explicitly creating landing pads.
20608         (analyze_candidates_and_replace): Commit edge inserts.
20609
20610 2017-08-08  Richard Biener  <rguenther@suse.de>
20611
20612         PR middle-end/81719
20613         * tree-ssa-loop-niter.c: Include tree-dfa.h.
20614         (expand_simple_operations): Also look through ADDR_EXPRs with
20615         MEM_REF bases treating them as POINTER_PLUS_EXPR.
20616
20617 2017-08-08  Richard Biener  <rguenther@suse.de>
20618
20619         PR tree-optimization/81723
20620         * tree-vect-slp.c (struct bst_traits): New hash traits.
20621         (bst_fail): New global.
20622         (vect_build_slp_tree_2): New worker, split out from ...
20623         (vect_build_slp_tree): ... this now wrapping it with using
20624         bst_fail set to cache SLP tree build fails.  Properly handle
20625         max_tree_size.
20626         (vect_analyze_slp_instance): Allocate and free bst_fail.
20627
20628 2017-08-08  Martin Liska  <mliska@suse.cz>
20629
20630         PR tree-opt/81696
20631         * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
20632         LABEL_DECLs that can be from a different function.
20633
20634 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20635
20636         PR tree-optimization/81744
20637         * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
20638         loop's number of iterations.
20639
20640 2017-08-08  Martin Liska  <mliska@suse.cz>
20641
20642         * asan.c: Include header files.
20643         * attribs.c (build_decl_attribute_variant): New function moved
20644         from tree.[ch].
20645         (build_type_attribute_qual_variant): Likewise.
20646         (cmp_attrib_identifiers): Likewise.
20647         (simple_cst_list_equal): Likewise.
20648         (omp_declare_simd_clauses_equal): Likewise.
20649         (attribute_value_equal): Likewise.
20650         (comp_type_attributes): Likewise.
20651         (build_type_attribute_variant): Likewise.
20652         (lookup_ident_attribute): Likewise.
20653         (remove_attribute): Likewise.
20654         (merge_attributes): Likewise.
20655         (merge_type_attributes): Likewise.
20656         (merge_decl_attributes): Likewise.
20657         (merge_dllimport_decl_attributes): Likewise.
20658         (handle_dll_attribute): Likewise.
20659         (attribute_list_equal): Likewise.
20660         (attribute_list_contained): Likewise.
20661         * attribs.h (lookup_attribute): New function moved from tree.[ch].
20662         (lookup_attribute_by_prefix): Likewise.
20663         * bb-reorder.c: Include header files.
20664         * builtins.c: Likewise.
20665         * calls.c: Likewise.
20666         * cfgexpand.c: Likewise.
20667         * cgraph.c: Likewise.
20668         * cgraphunit.c: Likewise.
20669         * convert.c: Likewise.
20670         * dwarf2out.c: Likewise.
20671         * final.c: Likewise.
20672         * fold-const.c: Likewise.
20673         * function.c: Likewise.
20674         * gimple-expr.c: Likewise.
20675         * gimple-fold.c: Likewise.
20676         * gimple-pretty-print.c: Likewise.
20677         * gimple.c: Likewise.
20678         * gimplify.c: Likewise.
20679         * hsa-common.c: Likewise.
20680         * hsa-gen.c: Likewise.
20681         * internal-fn.c: Likewise.
20682         * ipa-chkp.c: Likewise.
20683         * ipa-cp.c: Likewise.
20684         * ipa-devirt.c: Likewise.
20685         * ipa-fnsummary.c: Likewise.
20686         * ipa-inline.c: Likewise.
20687         * ipa-visibility.c: Likewise.
20688         * ipa.c: Likewise.
20689         * lto-cgraph.c: Likewise.
20690         * omp-expand.c: Likewise.
20691         * omp-general.c: Likewise.
20692         * omp-low.c: Likewise.
20693         * omp-offload.c: Likewise.
20694         * omp-simd-clone.c: Likewise.
20695         * opts-global.c: Likewise.
20696         * passes.c: Likewise.
20697         * predict.c: Likewise.
20698         * sancov.c: Likewise.
20699         * sanopt.c: Likewise.
20700         * symtab.c: Likewise.
20701         * toplev.c: Likewise.
20702         * trans-mem.c: Likewise.
20703         * tree-chkp.c: Likewise.
20704         * tree-eh.c: Likewise.
20705         * tree-into-ssa.c: Likewise.
20706         * tree-object-size.c: Likewise.
20707         * tree-parloops.c: Likewise.
20708         * tree-profile.c: Likewise.
20709         * tree-ssa-ccp.c: Likewise.
20710         * tree-ssa-live.c: Likewise.
20711         * tree-ssa-loop.c: Likewise.
20712         * tree-ssa-sccvn.c: Likewise.
20713         * tree-ssa-structalias.c: Likewise.
20714         * tree-ssa.c: Likewise.
20715         * tree-streamer-in.c: Likewise.
20716         * tree-vectorizer.c: Likewise.
20717         * tree-vrp.c: Likewise.
20718         * tsan.c: Likewise.
20719         * ubsan.c: Likewise.
20720         * varasm.c: Likewise.
20721         * varpool.c: Likewise.
20722         * tree.c: Remove functions moved to attribs.[ch].
20723         * tree.h: Likewise.
20724         * config/aarch64/aarch64.c: Add attrs.h header file.
20725         * config/alpha/alpha.c: Likewise.
20726         * config/arc/arc.c: Likewise.
20727         * config/arm/arm.c: Likewise.
20728         * config/avr/avr.c: Likewise.
20729         * config/bfin/bfin.c: Likewise.
20730         * config/c6x/c6x.c: Likewise.
20731         * config/cr16/cr16.c: Likewise.
20732         * config/cris/cris.c: Likewise.
20733         * config/darwin.c: Likewise.
20734         * config/epiphany/epiphany.c: Likewise.
20735         * config/fr30/fr30.c: Likewise.
20736         * config/frv/frv.c: Likewise.
20737         * config/ft32/ft32.c: Likewise.
20738         * config/h8300/h8300.c: Likewise.
20739         * config/i386/winnt.c: Likewise.
20740         * config/ia64/ia64.c: Likewise.
20741         * config/iq2000/iq2000.c: Likewise.
20742         * config/lm32/lm32.c: Likewise.
20743         * config/m32c/m32c.c: Likewise.
20744         * config/m32r/m32r.c: Likewise.
20745         * config/m68k/m68k.c: Likewise.
20746         * config/mcore/mcore.c: Likewise.
20747         * config/microblaze/microblaze.c: Likewise.
20748         * config/mips/mips.c: Likewise.
20749         * config/mmix/mmix.c: Likewise.
20750         * config/mn10300/mn10300.c: Likewise.
20751         * config/moxie/moxie.c: Likewise.
20752         * config/msp430/msp430.c: Likewise.
20753         * config/nds32/nds32-isr.c: Likewise.
20754         * config/nds32/nds32.c: Likewise.
20755         * config/nios2/nios2.c: Likewise.
20756         * config/nvptx/nvptx.c: Likewise.
20757         * config/pa/pa.c: Likewise.
20758         * config/pdp11/pdp11.c: Likewise.
20759         * config/powerpcspe/powerpcspe.c: Likewise.
20760         * config/riscv/riscv.c: Likewise.
20761         * config/rl78/rl78.c: Likewise.
20762         * config/rx/rx.c: Likewise.
20763         * config/s390/s390.c: Likewise.
20764         * config/sh/sh.c: Likewise.
20765         * config/sol2.c: Likewise.
20766         * config/sparc/sparc.c: Likewise.
20767         * config/spu/spu.c: Likewise.
20768         * config/stormy16/stormy16.c: Likewise.
20769         * config/tilegx/tilegx.c: Likewise.
20770         * config/tilepro/tilepro.c: Likewise.
20771         * config/v850/v850.c: Likewise.
20772         * config/vax/vax.c: Likewise.
20773         * config/visium/visium.c: Likewise.
20774         * config/xtensa/xtensa.c: Likewise.
20775
20776 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
20777
20778         PR target/81593
20779         * config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
20780         constraints since the -mupper-regs-* switches have been
20781         eliminated.
20782         (vsx_concat_<mode>_1): New combiner insns to recognize inserting
20783         into a vector from a double word element that was extracted from
20784         another vector, and eliminate extra XXPERMDI instructions.
20785         (vsx_concat_<mode>_2): Likewise.
20786         (vsx_concat_<mode>_3): Likewise.
20787         (vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
20788         concat to allow optimizing inserts from previous extracts.
20789
20790 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
20791
20792         * config/i386/i386.c (ix86_stack_protect_guard): Generate
20793         memory reference to a SSP offset in TLS address space.
20794         (ix86_print_operand) <case '@'>: Remove.
20795         (ix86_print_operand_punct_valid_p): Remove '@' code.
20796         * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
20797         UNSPEC_SP_TLS_TEST.
20798         (stack_tls_protect_set_<mode>): Remove.
20799         (stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
20800         (stack_tls_protect_test_<mode>): Remove.
20801         (stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
20802
20803 2017-08-07  Olivier Hainque  <hainque@adacore.com>
20804
20805         PR target/81755
20806         * config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
20807
20808 2017-08-07  Douglas Rupp  <rupp@adacore.com>
20809
20810         * Makefile.in (install-mkheaders): Fix typo, where the multi_dir
20811         variable was referenced as multidir in command.
20812
20813 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20814
20815         PR c/69389
20816         * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
20817         BIT_FIELD_REF.
20818
20819 2017-08-07  Martin Liska  <mliska@suse.cz>
20820
20821         * config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
20822         * config/rl78/rl78.c: Add include of attribs.h.
20823         * config/sh/sh.c: Likewise.
20824         * config/v850/v850.c: Likewise.
20825
20826 2017-08-07  Tom de Vries  <tom@codesourcery.com>
20827
20828         PR middle-end/78266
20829         * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
20830
20831 2017-08-07  Martin Liska  <mliska@suse.cz>
20832
20833         * config/mips/mips.c: Include attribs.h.
20834
20835 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
20836
20837         PR fortran/68829
20838         * doc/invoke.texi: Document change in behvaior for -Ofast for
20839         Fortran.
20840
20841 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
20842
20843         * config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
20844         Use gen_frame_mem.
20845         (aarch64_pop_regs): Likewise.
20846         (aarch64_gen_load_pair): Likewise.
20847         (aarch64_save_callee_saves): Likewise.
20848         (aarch64_restore_callee_saves): Likewise.
20849
20850 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20851
20852         * config/i386/i386.c: Revert the last change.
20853
20854 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20855
20856         PR target/81736
20857         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20858         to ...
20859         (ix86_finalize_stack_frame_flags): This.  Also clear
20860         frame_pointer_needed if -fno-omit-frame-pointer is used without
20861         stack access.
20862         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20863         with ix86_finalize_stack_frame_flags.
20864         (ix86_expand_epilogue): Likewise.
20865         (ix86_expand_split_stack_prologue): Likewise.
20866
20867 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20868
20869         PR target/81743
20870         * config/i386/i386.c (get_builtin_code_for_version): Set priority
20871         to P_AES for Westmere.
20872
20873 2017-08-07  Jonathan Yong  <10walls@gmail.com>
20874
20875         * config/i386/mingw.opt (fset-stack-executable): Removed.
20876         * config/i386/cygming.opt (fset-stack-executable): Moved
20877         from mingw.opt.
20878         * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
20879
20880 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
20881
20882         * print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
20883
20884 2017-08-07  Marek Polacek  <polacek@redhat.com>
20885
20886         PR middle-end/81737
20887         * fold-const.c (fold_indirect_ref_1): Check type_domain.
20888
20889 2017-08-07  Martin Liska  <mliska@suse.cz>
20890
20891         * attribs.h (canonicalize_attr_name): New function.
20892         (cmp_attribs): Move from c-format.c and adjusted.
20893         (is_attribute_p): Moved from tree.h.
20894         * tree-inline.c: Add new includes.
20895         * tree.c (cmp_attrib_identifiers): Use cmp_attribs.
20896         (private_is_attribute_p): Remove.
20897         (private_lookup_attribute): Likewise.
20898         (private_lookup_attribute_by_prefix): Simplify.
20899         (remove_attribute): Use is_attribute_p.
20900         * tree.h: Remove removed declarations.
20901
20902 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20903
20904         PR middle-end/81698
20905         * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
20906         instead of computing it in the function.  Formatting fix.
20907         (expand_case): Don't rely on default_edge being the first edge,
20908         clear it if removing it, pass default_edge to
20909         emit_case_dispatch_table.
20910         (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
20911         fix.
20912
20913 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
20914
20915         * config/alpha/alpha.c (alpha_reorg): If trap is the last active
20916         insn in the function, emit NOP after the insn.
20917
20918 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20919
20920         * omp-expand.c (expand_oacc_for): Add missing edge probability for tile
20921         and element loops.
20922
20923 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20924
20925         * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
20926         loop.
20927
20928 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
20929
20930         PR tree-optimization/57371
20931         * match.pd: New pattern.
20932
20933 2017-08-04  Marek Polacek  <polacek@redhat.com>
20934
20935         PR middle-end/81695
20936         * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
20937         perform the computation in offset_int.
20938
20939 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20940
20941         PR tree-optimization/81136
20942         * tree-vectorizer.h: Include tree-hash-traits.h.
20943         (vec_base_alignments): New typedef.
20944         (vec_info): Add a base_alignments field.
20945         (vect_record_base_alignments): Declare.
20946         * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
20947         field.
20948         (DR_IS_CONDITIONAL_IN_STMT): New macro.
20949         (create_data_ref): Add an is_conditional_in_stmt argument.
20950         * tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
20951         the is_conditional_in_stmt field.
20952         (data_ref_loc): Add an is_conditional_in_stmt field.
20953         (get_references_in_stmt): Set the is_conditional_in_stmt field.
20954         (find_data_references_in_stmt): Update call to create_data_ref.
20955         (graphite_find_data_references_in_stmt): Likewise.
20956         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
20957         * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
20958         (vect_record_base_alignment): New function.
20959         (vect_record_base_alignments): Likewise.
20960         (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
20961         for nested statements even if we fail to compute a misalignment.
20962         Use pooled base alignments for unconditional references.
20963         (vect_find_same_alignment_drs): Compare base addresses instead
20964         of base objects.
20965         (vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
20966         * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
20967
20968 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20969
20970         * tree-vectorizer.h (vec_info): Add a constructor and destructor.
20971         Add an explicit name for the enum.  Use auto_vec for slp_instances
20972         and grouped_stores.
20973         (_loop_vec_info): Add a constructor and destructor.  Use auto_vec
20974         for all vectors.
20975         (_bb_vec_info): Add a constructor and destructor.
20976         (vinfo_for_stmt): Return NULL for uids of -1 as well.
20977         (destroy_loop_vec_info): Delete.
20978         (vect_destroy_datarefs): Likewise.
20979         * tree-vectorizer.c (vect_destroy_datarefs): Delete.
20980         (vec_info::vec_info): New function.
20981         (vec_info::~vec_info): Likewise.
20982         (vectorize_loops): Use delete instead of destroy_loop_vec_info.
20983         * tree-parloops.c (gather_scalar_reductions): Use delete instead of
20984         destroy_loop_vec_info.
20985         * tree-vect-loop.c (new_loop_vec_info): Replace with...
20986         (_loop_vec_info::_loop_vec_info): ...this.
20987         (destroy_loop_vec_info): Replace with...
20988         (_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
20989         the stmt_vec_infos.  Leave handling of vec_info information to its
20990         destructor.  Remove explicit vector releases.
20991         (vect_analyze_loop_form): Use new instead of new_loop_vec_info.
20992         (vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
20993         * tree-vect-slp.c (new_bb_vec_info): Replace with...
20994         (_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
20995         BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
20996         (destroy_bb_vec_info): Replace with...
20997         (_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
20998         information to its destructor.
20999         (vect_slp_analyze_bb_1): Use new and delete instead of
21000         new_bb_vec_info and destroy_bb_vec_info.
21001         (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
21002         single delete.
21003
21004 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21005
21006         * tree-data-ref.h (subscript): Add access_fn field.
21007         (data_dependence_relation): Add could_be_independent_p.
21008         (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
21009         (same_access_functions): Move to tree-data-ref.c.
21010         * tree-data-ref.c (ref_contains_union_access_p): New function.
21011         (access_fn_component_p): Likewise.
21012         (access_fn_components_comparable_p): Likewise.
21013         (dr_analyze_indices): Add a reference to access_fn_component_p.
21014         (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
21015         DR_ACCESS_FN.
21016         (constant_access_functions): Likewise.
21017         (add_other_self_distances): Likewise.
21018         (same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
21019         (initialize_data_dependence_relation): Use XCNEW and remove
21020         explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
21021         of access functions that have the same type.  Allow the
21022         subsequence to end with different bases in some circumstances.
21023         Record the chosen access functions in SUB_ACCESS_FN.
21024         (build_classic_dist_vector_1): Replace ddr_a and ddr_b with
21025         a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
21026         (subscript_dependence_tester_1): Likewise dra and drb.
21027         (build_classic_dist_vector): Update calls accordingly.
21028         (subscript_dependence_tester): Likewise.
21029         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
21030         DDR_COULD_BE_INDEPENDENT_P.
21031         * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
21032         comp_alias_ddrs instead of may_alias_ddrs.
21033         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
21034         New function.
21035         (vect_analyze_data_ref_dependence): Use it if
21036         DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
21037         distance vectors if that fails.
21038         (dependence_distance_ge_vf): New function.
21039         (vect_prune_runtime_alias_test_list): Use it.  Don't clear
21040         LOOP_VINFO_MAY_ALIAS_DDRS.
21041
21042 2017-08-04  Richard Biener  <rguenther@suse.de>
21043
21044         PR middle-end/81705
21045         * fold-const.c (fold_binary_loc): Properly restrict
21046         minus_var0 && minus_var1 case when associating undefined overflow
21047         entities.
21048
21049 2017-08-04  Tom de Vries  <tom@codesourcery.com>
21050
21051         * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
21052
21053 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
21054
21055         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21056         Don't start diagnostic messages with a capital letter.
21057         * config/rs6000/rs6000.c (rs6000_option_override_internal):
21058         Likewise.
21059         (rs6000_invalid_builtin): Likewise.
21060         (rs6000_trampoline_init): Likewise.
21061
21062 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21063
21064         PR target/81621
21065         * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
21066         after setting changeable df flags.
21067
21068 2017-08-03  Richard Biener  <rguenther@suse.de>
21069
21070         * tree-ssa-reassoc.c (should_break_up_subtract): Also break
21071         up if the use is in USE - X.
21072
21073 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
21074
21075         * toplev.c (dumpfile.h): New include.
21076         (internal_error_reentered): New static function.  Use it...
21077         (internal_error_function): ...here to handle reentered internal_error.
21078
21079 2017-08-03  Richard Biener  <rguenther@suse.de>
21080
21081         PR middle-end/81148
21082         * fold-const.c (split_tree): Add minus_var and minus_con
21083         arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
21084         here but always use minus_*.
21085         (associate_trees): Assert we never associate with MINUS_EXPR
21086         and NULL first operand.  Do not recurse for PLUS_EXPR operands
21087         when associating as MINUS_EXPR either.
21088         (fold_binary_loc): Track minus_var and minus_con.
21089
21090 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21091
21092         PR lto/81430
21093         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
21094         ACCEL_COMPILER, apply finish_options on
21095         DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
21096
21097 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21098
21099         PR target/81662
21100         * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
21101         function_entry_patch_area_size > 0.
21102
21103 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21104
21105         PR driver/81650
21106         * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
21107         instead of 10??LU, perform unit multiplication in wide_int,
21108         don't change alloc_object_size_limit if the limit is larger
21109         than SSIZE_MAX.
21110
21111         PR tree-optimization/81655
21112         PR tree-optimization/81588
21113         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
21114         the case when ranges[i].low and high are 1 for unsigned type with
21115         precision 1.
21116
21117         PR middle-end/81052
21118         * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
21119         (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
21120
21121 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
21122
21123         * tree-vrp.h: Add include guard.
21124
21125 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
21126
21127         PR target/81644
21128         * config/i386/i386.md (unspecv): Add UNSPECV_UD2.
21129         (ud2): New insn pattern.
21130         * config/i386/i386.c (ix86_expand_epilogue):
21131         For naked functions, generate ud2 instead of trap insn.
21132
21133 2017-08-02  Marek Polacek  <polacek@redhat.com>
21134
21135         PR other/81667
21136         * alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
21137
21138 2017-08-02  Tom de Vries  <tom@codesourcery.com>
21139             Cesar Philippidis  <cesar@codesourcery.com>
21140
21141         * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
21142         Add missing edge probabilities.
21143
21144 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
21145
21146         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
21147         Correct endianness.
21148
21149 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
21150
21151         PR middle-end/79499
21152         * function.c (thread_prologue_and_epilogue_insns): Determine blocks
21153         for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
21154         of first NONDEBUG_INSN_P in each of the split_prologue_seq and
21155         prologue_seq sequences - if any.
21156
21157 2017-08-02  Richard Biener  <rguenther@suse.de>
21158
21159         * tree-vect-stmts.c (vectorizable_store): Perform vector extracts
21160         via vectors if supported, integer extracts via punning if supported
21161         or otherwise vector extracts.
21162
21163 2017-08-02  Richard Biener  <rguenther@suse.de>
21164
21165         * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
21166         into ...
21167         (bitmap_insert_into_set): ... this.
21168
21169 2017-08-02  Richard Biener  <rguenther@suse.de>
21170
21171         PR tree-optimization/81633
21172         Revert
21173         2015-08-17  Alan Hayward  <alan.hayward@arm.com>
21174
21175         PR tree-optimization/71752
21176         * tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
21177
21178 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
21179
21180         * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
21181         (machine_function::call_ms2sysv_pad_out): Remove field.
21182         * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
21183         (ix86_compute_frame_layout): Likewise.
21184
21185 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
21186
21187         PR target/81654
21188         * config/i386/i386.c (ix86_set_func_type): Disallow naked
21189         attribute with interrupt attribute.
21190
21191 2017-08-01  Andrew Pinski  <apinski@cavium.com>
21192
21193         * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
21194         BIT_INSERT_EXPR's operand 1
21195         to see if the types precision matches.
21196
21197 2017-08-01  Martin Liska  <mliska@suse.cz>
21198
21199         PR middle-end/70140
21200         * builtins.c (expand_builtin_memcpy_args): Remove.
21201         (expand_builtin_memcpy): Call newly added function
21202         expand_builtin_memory_copy_args.
21203         (expand_builtin_memcpy_with_bounds): Likewise.
21204         (expand_builtin_mempcpy): Remove last argument.
21205         (expand_builtin_mempcpy_with_bounds): Likewise.
21206         (expand_builtin_memory_copy_args): New function created from
21207         expand_builtin_mempcpy_args with small modifications.
21208         (expand_builtin_mempcpy_args): Remove.
21209         (expand_builtin_stpcpy): Remove unused argument.
21210         (expand_builtin): Likewise.
21211         (expand_builtin_with_bounds): Likewise.
21212
21213 2017-08-01  Martin Liska  <mliska@suse.cz>
21214
21215         Revert r250771
21216         Make mempcpy more optimal (PR middle-end/70140).
21217
21218 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21219
21220         PR target/81622
21221         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
21222         __builtin_vec_cmpne verify both arguments are compatible vectors
21223         before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
21224         verify arg1_type is a pointer or array type.  For __builtin_vec_st,
21225         move computation of aligned to after checking the argument types.
21226         Formatting fixes.
21227
21228         PR target/80846
21229         * config/rs6000/vsx.md (vextract_fp_from_shorth,
21230         vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
21231         calls.
21232
21233 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
21234             Doug Rupp  <rupp@adacore.com>
21235             Olivier Hainque  <hainque@adacore.com>
21236
21237         * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
21238         well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
21239         arm8 (arch v4).
21240         * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
21241         for TARGET_OS_CPP_BUILTIN.
21242         (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
21243         refine CPU definitions for arm_arch5 and add those for arm_arch6 and
21244         arm_arch7.
21245         (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
21246         passing required abi options to the assembler for EABI configurations.
21247         (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
21248         of .text.hot and .text.unlikely sections for kernel modules when
21249         using ARM style exceptions.
21250         (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
21251         options. Add EXTRA_CC1_SPEC.
21252         (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
21253         toolchain options.
21254         (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
21255         transition.
21256         (ARM_TARGET2_DWARF_FORMAT): Define.
21257         * config/arm/t-vxworks: Adjust multilib control to removal of the
21258         Diab command line options.
21259
21260 2017-08-01  Martin Liska  <mliska@suse.cz>
21261
21262         PR gcov-profile/81561
21263         * gcov.c (unblock): Make unblocking safe as we need to preserve
21264         index correspondence of blocks and block_lists.
21265
21266 2017-08-01  Richard Biener  <rguenther@suse.de>
21267
21268         PR tree-optimization/81181
21269         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
21270         (compute_antic): ... end of iteration here.
21271
21272 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
21273
21274         * common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
21275         (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
21276         (ftree-slp-vectorize): Likewise.
21277         * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
21278         can no longer be set independent of flag_tree_loop_vectorize.
21279         * omp-general.c (emp_max_vf): Likewise.
21280         * opts.c (enable_fdo_optimizations): Remove references to
21281         flag_tree_vectorize, these are now implicit.
21282         (common_handle_option): Remove handling for OPT_ftree_vectorize,
21283         and leave it for the options machinery.
21284
21285 2017-08-01  Martin Liska  <mliska@suse.cz>
21286
21287         PR middle-end/70140
21288         * builtins.c (expand_builtin_memcpy_args): Remove.
21289         (expand_builtin_memcpy): Call newly added function
21290         expand_builtin_memory_copy_args.
21291         (expand_builtin_memcpy_with_bounds): Likewise.
21292         (expand_builtin_mempcpy): Remove last argument.
21293         (expand_builtin_mempcpy_with_bounds): Likewise.
21294         (expand_builtin_memory_copy_args): New function created from
21295         expand_builtin_mempcpy_args with small modifications.
21296         (expand_builtin_mempcpy_args): Remove.
21297         (expand_builtin_stpcpy): Remove unused argument.
21298         (expand_builtin): Likewise.
21299         (expand_builtin_with_bounds): Likewise.
21300
21301 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21302
21303         PR target/81641
21304         * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
21305         print "ds:" only for immediates in generic address space.
21306
21307 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21308
21309         PR target/81639
21310         * config/i386/i386.c (ix86_funciton_naked): New prototype.
21311         (ix86_function_ok_for_sibcall): Return false for naked functions.
21312
21313 2017-08-01  Richard Biener  <rguenther@suse.de>
21314
21315         * tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
21316         (compute_antic): Seed worklist with exit block predecessors.
21317         * cfganal.c (dfs_find_deadend): For a cycle return the source
21318         of the edge closing it.
21319
21320 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
21321
21322         * config/aarch64/aarch64.c
21323         (aarch64_can_const_movi_rtx_p): Move 0 check.
21324
21325 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21326
21327         * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
21328         * fold-const.c (fold_comparison, fold_binary_loc): Delete use of
21329         above macro.
21330         * match.pd: Ditto in address comparison pattern.
21331
21332 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21333
21334         PR tree-optimization/81627
21335         * tree-predcom.c (prepare_finalizers): Always rewrite into loop
21336         closed ssa form for store-store chain.
21337
21338 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21339
21340         PR tree-optimization/81620
21341         * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
21342         for store-store chain.
21343
21344 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21345
21346         PR tree-optimization/81588
21347         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
21348         ranges[i].in_p, invert comparison code ccode.  For >/>=,
21349         swap rhs1 and rhs2 and comparison code unconditionally,
21350         for </<= don't do that.  Don't swap rhs1/rhs2 again if
21351         ranges[i].in_p, instead invert comparison code ccode if
21352         opcode or oe->rank is BIT_IOR_EXPR.
21353
21354         PR target/80846
21355         * optabs.def (vec_extract_optab, vec_init_optab): Change from
21356         a direct optab to conversion optab.
21357         * optabs.c (expand_vector_broadcast): Use convert_optab_handler
21358         with GET_MODE_INNER as last argument instead of optab_handler.
21359         * expmed.c (extract_bit_field_1): Likewise.  Use vector from
21360         vector extraction if possible and optab is available.
21361         * expr.c (store_constructor): Use convert_optab_handler instead
21362         of optab_handler.  Use vector initialization from smaller
21363         vectors if possible and optab is available.
21364         * tree-vect-stmts.c (vectorizable_load): Likewise.
21365         * doc/md.texi (vec_extract, vec_init): Document that the optabs
21366         now have two modes.
21367         * config/i386/i386.c (ix86_expand_vector_init): Handle expansion
21368         of vec_init from half-sized vectors with the same element mode.
21369         * config/i386/sse.md (ssehalfvecmode): Add V4TI case.
21370         (ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
21371         (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
21372         reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
21373         reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
21374         after mode in gen_vec_extract* calls.
21375         (vec_extract<mode>): Renamed to ...
21376         (vec_extract<mode><ssescalarmodelower>): ... this.
21377         (vec_extract<mode><ssehalfvecmodelower>): New expander.
21378         (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
21379         element mode after mode in gen_vec_init* calls.
21380         (VEC_INIT_HALF_MODE): New mode iterator.
21381         (vec_init<mode>): Renamed to ...
21382         (vec_init<mode><ssescalarmodelower>): ... this.
21383         (vec_init<mode><ssehalfvecmodelower>): New expander.
21384         * config/i386/mmx.md (vec_extractv2sf): Renamed to ...
21385         (vec_extractv2sfsf): ... this.
21386         (vec_initv2sf): Renamed to ...
21387         (vec_initv2sfsf): ... this.
21388         (vec_extractv2si): Renamed to ...
21389         (vec_extractv2sisi): ... this.
21390         (vec_initv2si): Renamed to ...
21391         (vec_initv2sisi): ... this.
21392         (vec_extractv4hi): Renamed to ...
21393         (vec_extractv4hihi): ... this.
21394         (vec_initv4hi): Renamed to ...
21395         (vec_initv4hihi): ... this.
21396         (vec_extractv8qi): Renamed to ...
21397         (vec_extractv8qiqi): ... this.
21398         (vec_initv8qi): Renamed to ...
21399         (vec_initv8qiqi): ... this.
21400         * config/rs6000/vector.md (VEC_base_l): New mode attribute.
21401         (vec_init<mode>): Renamed to ...
21402         (vec_init<mode><VEC_base_l>): ... this.
21403         (vec_extract<mode>): Renamed to ...
21404         (vec_extract<mode><VEC_base_l>): ... this.
21405         * config/rs6000/paired.md (vec_initv2sf): Renamed to ...
21406         (vec_initv2sfsf): ... this.
21407         * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
21408         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21409         vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
21410         element mode after mode in gen_vec_init* calls.
21411         * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
21412         (vec_init<mode><Vel>): ... this.
21413         (vec_extract<mode>): Renamed to ...
21414         (vec_extract<mode><Vel>): ... this.
21415         * config/aarch64/iterators.md (Vel): New mode attribute.
21416         * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
21417         Add element mode after mode in gen_vec_extract* calls.
21418         * config/s390/vector.md (non_vec_l): New mode attribute.
21419         (vec_extract<mode>): Renamed to ...
21420         (vec_extract<mode><non_vec_l>): ... this.
21421         (vec_init<mode>): Renamed to ...
21422         (vec_init<mode><non_vec_l>): ... this.
21423         * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
21424         s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
21425         vec_extract mode.
21426         * config/arm/iterators.md (V_elem_l): New mode attribute.
21427         * config/arm/neon.md (vec_extract<mode>): Renamed to ...
21428         (vec_extract<mode><V_elem_l>): ... this.
21429         (vec_extractv2di): Renamed to ...
21430         (vec_extractv2didi): ... this.
21431         (vec_init<mode>): Renamed to ...
21432         (vec_init<mode><V_elem_l>): ... this.
21433         (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
21434         reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
21435         reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
21436         Add element mode after gen_vec_extract* calls.
21437         * config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
21438         (vec_init<mode><unitmode>): ... this.
21439         (vec_extract<mode>): Renamed to ...
21440         (vec_extract<mode><unitmode>): ... this.
21441         * config/mips/loongson.md (vec_init<mode>): Renamed to ...
21442         (vec_init<mode><unitmode>): ... this.
21443         * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
21444         (vec_initv2sfsf): ... this.
21445         (vec_extractv2sf): Renamed to ...
21446         (vec_extractv2sfsf): ... this.
21447         (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
21448         Add element mode after gen_vec_extract* calls.
21449         * config/mips/mips.md (unitmode): New mode iterator.
21450         * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
21451         spu_builtin_extract): Add element mode after gen_vec_extract* calls.
21452         * config/spu/spu.md (inner_l): New mode attribute.
21453         (vec_init<mode>): Renamed to ...
21454         (vec_init<mode><inner_l>): ... this.
21455         (vec_extract<mode>): Renamed to ...
21456         (vec_extract<mode><inner_l>): ... this.
21457         * config/sparc/sparc.md (veltmode): New mode iterator.
21458         (vec_init<VMALL:mode>): Renamed to ...
21459         (vec_init<VMALL:mode><VMALL:veltmode>): ... this.
21460         * config/ia64/vect.md (vec_initv2si): Renamed to ...
21461         (vec_initv2sisi): ... this.
21462         (vec_initv2sf): Renamed to ...
21463         (vec_initv2sfsf): ... this.
21464         (vec_extractv2sf): Renamed to ...
21465         (vec_extractv2sfsf): ... this.
21466         * config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
21467         (vec_init<mode>): Renamed to ...
21468         (vec_init<mode><VEC_base_l>): ... this.
21469         (vec_extract<mode>): Renamed to ...
21470         (vec_extract<mode><VEC_base_l>): ... this.
21471         * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
21472         (vec_initv2sfsf): ... this.
21473         * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
21474         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21475         vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
21476         gen_vec_init* calls.
21477
21478 2017-08-01  Richard Biener  <rguenther@suse.de>
21479
21480         PR tree-optimization/81297
21481         * tree-vrp.c (get_single_symbol): Remove assert, instead drop
21482         TREE_OVERFLOW from INTEGER_CSTs.
21483
21484 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
21485
21486         * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
21487
21488 2017-07-31  Carl Love  <cel@us.ibm.com>
21489
21490         * config/rs6000/rs6000-c: Add support for built-in functions
21491         vector signed char vec_xl_be (signed long long, signed char *);
21492         vector unsigned char vec_xl_be (signed long long, unsigned char *);
21493         vector signed int vec_xl_be (signed long long, signed int *);
21494         vector unsigned int vec_xl_be (signed long long, unsigned int *);
21495         vector signed long long vec_xl_be (signed long long, signed long long *);
21496         vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
21497         vector signed short vec_xl_be (signed long long, signed short *);
21498         vector unsigned short vec_xl_be (signed long long, unsigned short *);
21499         vector double vec_xl_be (signed long long, double *);
21500         vector float vec_xl_be (signed long long, float *);
21501         * config/rs6000/altivec.h (vec_xl_be): Add #define.
21502         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
21503         XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
21504         for the builtins.
21505         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
21506         (altivec_expand_builtin): Add switch statement to call
21507         altivec_expand_xl_be for each builtin.
21508         (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
21509         __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
21510         __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
21511         __builtin_vsx_le_be_v16qi.
21512         * doc/extend.texi: Update the built-in documentation file for the
21513         new built-in functions.
21514
21515 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21516
21517         PR target/25967
21518         * config/i386/i386.c (ix86_allocate_stack_slots_for_args):
21519         New function.
21520         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
21521
21522 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21523
21524         * config.gcc: Add z14.
21525         * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
21526         CPU model numbers for z13s and z14.
21527         * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
21528         arch12 with z14.
21529         * config/s390/s390-opts.h (enum processor_type): Rename
21530         PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21531         * config/s390/s390.c (processor_table): Add field for CPU name to
21532         be passed to Binutils.
21533         (s390_asm_output_machine_for_arch): Use the new field in
21534         processor_table for Binutils.
21535         (s390_expand_builtin): Replace arch12 with z14.
21536         (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21537         (s390_get_sched_attrmask): Likewise.
21538         (s390_get_unit_mask): Likewise.
21539         * config/s390/s390.opt: Add z14 to processor_type enum.
21540
21541 2017-07-31  Martin Jambor  <mjambor@suse.cz>
21542
21543         PR hsa/81477
21544         * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
21545         regardless of optimization level.
21546
21547 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
21548             Martin Liska  <mliska@suse.cz>
21549
21550         * predict.def: Remove old comment and adjust probability.
21551         * gimplify.c (should_warn_for_implicit_fallthrough): Ignore
21552         PREDICT statements.
21553
21554 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21555
21556         PR target/25967
21557         * config/i386/i386.c (ix86_function_naked): New function.
21558         (ix86_can_use_return_insn_p): Return false for naked functions.
21559         (ix86_expand_prologue): Skip prologue for naked functions.
21560         (ix86_expand_epilogue): Skip epilogue for naked functions
21561         and emit trap instruction.
21562         (ix86_warn_func_return): New function.
21563         (ix86_attribute_table): Add "naked" attribute specification.
21564         (TARGET_WARN_FUNC_RETURN): Define.
21565         * doc/extend.texi (x86 Function Attributes) <naked>: Document it.
21566
21567 2017-07-31  Martin Liska  <mliska@suse.cz>
21568
21569         * gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
21570         (dump_gimple_bb_header): Always dump BB info.
21571         (pp_cfg_jump): Do not append info about BB when dumping a jump.
21572
21573 2017-07-31  Martin Liska  <mliska@suse.cz>
21574
21575         PR sanitize/81530
21576         * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
21577         also with current_function_decl non-null equality.
21578
21579 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
21580
21581         PR sanitizer/81604
21582         * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
21583         change type to the element type, instead add eltype variable and
21584         use it where we are interested in the element type.
21585
21586         PR tree-optimization/81603
21587         * ipa-polymorphic-call.c
21588         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
21589         offset arithmetic in offset_int, bail out if the resulting bit offset
21590         doesn't fit into shwi.
21591
21592 2017-07-31  Martin Liska  <mliska@suse.cz>
21593
21594         * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
21595         (gimplify_save_expr): Fix comment.
21596
21597 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
21598
21599         PR target/79793
21600         * config/i386/i386.c (ix86_function_arg): Update arguments for
21601         exception handler.
21602         (ix86_compute_frame_layout): Set the initial stack offset to
21603         INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
21604         INCOMING_FRAME_SP_OFFSET.
21605         (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
21606         stack before exception handler returns.
21607         * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
21608         the 'ERROR_CODE' for exception handler.
21609
21610 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
21611
21612         * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
21613         (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
21614         (ASM_OUTPUT_REG_POP): Ditto.
21615         * config/i386/i386.c (ix86_asm_output_function_label): Use fputs
21616         instead of asm_fprintf to output pure string.
21617
21618 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
21619
21620         * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
21621         to imported_module_or_decl hook.
21622         (debug_nothing_tree_tree_tree_bool): Remove.
21623         (debug_nothing_tree_tree_tree_bool_bool): New declaration.
21624         * debug.c (do_nothing_debug_hooks): Use
21625         debug_nothing_tree_tree_tree_bool_bool instead of
21626         debug_nothing_tree_tree_tree_bool.
21627         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
21628         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
21629         * sdbout.c (sdb_debug_hooks): Likewise.
21630         * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
21631         (gen_namespace_die): Add DW_AT_export_symbols attribute if
21632         langhook wants it.
21633         (dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
21634         if true, -gdwarf-5 and decl will have DW_AT_export_symbols
21635         attribute, don't add anything.
21636
21637 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21638
21639         * fold-const.c (fold_build1_stat_loc): Remove _stat from name.
21640         (fold_build2_stat_loc): Likewise.
21641         (fold_build3_stat_loc): Likewise.
21642         * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
21643         (fold_build1_loc): Remove macro.
21644         (fold_build2_loc): Likewise.
21645         (fold_build3_loc): Likewise.
21646
21647 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21648
21649         * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
21650         (gimple_build_debug_bind_source_stat): Likewise.
21651         * gimple.h (gimple_build_debug_bind): Remove macro.
21652         (gimple_build_debug_bind_source): Likewise.
21653
21654 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21655
21656         * bitmap.c (bitmap_alloc): Adjust.
21657         (bitmap_gc_alloc): Likewise.
21658         * bitmap.h (bitmap_initialize_stat): Remove _stat from name.
21659
21660 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21661
21662         * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
21663         (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
21664         * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
21665         (bitmap_gc_alloc_stat): Likewise.
21666         (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
21667
21668 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21669
21670         * rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
21671         * rtl.h (shallow_copy_rtx): Remove macro.
21672
21673 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21674
21675         * emit-rtl.c (gen_raw_REG): Adjust.
21676         * gengenrtl.c (gendef): Likewise.
21677         * rtl.c (rtx_alloc_stat): Remove _stat from name.
21678         * rtl.h (rtx_alloc): Remove macro.
21679
21680 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21681
21682         * tree.c (build_tree_list_vec_stat): Remove _stat from name.
21683         (build_tree_list_stat): Likewise.
21684         * tree.h (build_tree_list): Remove macro.
21685         (build_tree_list_vec): Likewise.
21686
21687 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21688
21689         * tree.c (make_vector_stat): Remove _stat from name.
21690         (build_vector_stat): Likewise.
21691         * tree.h (make_vector_stat): Remove macro.
21692         (build_vector_stat): Likewise.
21693
21694 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21695
21696         * tree.h (build_var_debug_value): Remove prototype.
21697
21698 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21699
21700         * tree.c (tree_cons_stat): Remove _stat from name.
21701         * tree.h (tree_cons): Remove macro.
21702
21703 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21704
21705         * tree.c (build_vl_exp_stat): Remove _stat from name.
21706         * tree.h (build_vl_exp): Remove macro.
21707
21708 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21709
21710         * tree.c (build_decl_stat): Remove _stat from name.
21711         * tree.h (build_decl): Remove macro.
21712
21713 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21714
21715         * gimple.c (gimple_build_with_ops_stat): Adjust.
21716         (gimple_alloc_stat): Remove _stat from name.
21717         * gimple.h (gimple_alloc): Remove macro.
21718
21719 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21720
21721         * tree.c (make_tree_vec_stat): Remove _stat from name.
21722         (grow_tree_vec_stat): Likewise.
21723         * tree.h (make_tree_vec_stat): Adjust prototype.
21724         (grow_tree_vec_stat): Likewise.
21725         (make_tree_vec): Remove macro.
21726         (grow_tree_vec): Likewise.
21727
21728 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21729
21730         * fold-const.c (fold_build1_stat_loc): Adjust.
21731         (fold_build2_stat_loc): Likewise.
21732         (fold_build3_stat_loc): Likewise.
21733         * tree.c (build0_stat): Remove _stat from name.
21734         (build1_stat): Likewise.
21735         (build2_stat): Likewise.
21736         (build3_stat): Likewise.
21737         (build4_stat): Likewise.
21738         (build5_stat): Likewise.
21739         * tree.h (build1_loc): Remove macro, and rename _stat function
21740         to this.
21741         (build2_loc): Likewise.
21742         (build3_loc): Likewise.
21743         (build4_loc): Likewise.
21744         (build5_loc): Likewise.
21745
21746 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21747
21748         * tree.c (make_int_cst_stat): Remove _stat from name.
21749         * tree.h (make_int_cst_stat): Adjust prototype.
21750         (make_int_cst): Remove macro.
21751
21752 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21753
21754         * tree.c (make_tre_binfo_stat): Remove _stat from name.
21755         * tree.h (make_tree_binfo_stat): Adjust prototype.
21756         (make_tree_binfo): Remove.
21757
21758 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21759
21760         * tree.c (copy_node_stat): Rename to copy_node.
21761         (build_distinct_type_copy): Adjust.
21762         * tree.h (copy_node_stat): Adjust prototype.
21763         (copy_node): Remove macro.
21764
21765 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21766
21767         * tree.c (make_node_stat): rename to make_node.
21768         (build_tree_list_stat): Adjust.
21769         (build0_stat): Likewise.
21770         (build2_stat): Likewise.
21771         (build3_stat): Likewise.
21772         (build4_stat): Likewise.
21773         (build5_stat): Likewise.
21774         (build_decl_stat): Likewise.
21775         * tree.h (make_node_stat): Adjust prototype.
21776         (make_node): remove macro.
21777
21778 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
21779
21780         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
21781         (PPC_FEATURE2_SCV): Likewise.
21782         * config/rs6000/rs6000.c (cpu_supports_info): Use them.
21783
21784 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21785
21786         * config/aarch64/aarch64.c
21787         (aarch64_internal_mov_immediate): Add new special pattern.
21788         * config/aarch64/aarch64.md (*movdi_aarch64):
21789         Add reg/32bit const mov case.
21790
21791 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21792             Richard Sandiford <richard.sandiford@linaro.org>
21793
21794         * config/aarch64/aarch64.md (mov<mode>): Generalize.
21795         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
21796         Add integer and movi cases.
21797         (movi-split-hf-df-sf split, fp16): New.
21798         (enabled): Added TARGET_FP_F16INST.
21799         * config/aarch64/iterators.md (GPF_HF): New.
21800         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
21801
21802 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21803
21804         * config/aarch64/aarch64.c
21805         (aarch64_simd_container_mode): Add prototype.
21806         (aarch64_expand_mov_immediate): Add HI support.
21807         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
21808         (aarch64_can_const_movi_rtx_p): New.
21809         (aarch64_preferred_reload_class):
21810         Remove restrictions of using FP registers for certain SIMD operations.
21811         (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
21812         (aarch64_valid_floating_const): Add integer move validation.
21813         (aarch64_simd_imm_scalar_p): Remove.
21814         (aarch64_output_scalar_simd_mov_immediate): Generalize function.
21815         (aarch64_legitimate_constant_p): Expand list of supported cases.
21816         * config/aarch64/aarch64-protos.h
21817         (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
21818         (aarch64_reinterpret_float_as_int): New.
21819         (aarch64_simd_imm_scalar_p): Remove.
21820         * config/aarch64/constraints.md (Uvi): New.
21821         (Dd): Split into Ds and new Dd.
21822         * config/aarch64/aarch64.md (*movsi_aarch64):
21823         Add SIMD mov case.
21824         (*movdi_aarch64): Add SIMD mov case.
21825
21826 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21827
21828         * tree-predcom.c: (struct chain): Handle store-store chain in which
21829         stores for elimination only store loop invariant values.
21830         (execute_pred_commoning_chain): Ditto.
21831         (prepare_initializers_chain_store_elim): Ditto.
21832         (prepare_finalizers): Ditto.
21833         (is_inv_store_elimination_chain): New function.
21834         (initialize_root_vars_store_elim_1): New function.
21835
21836 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21837
21838         * tree-predcom.c: Revise general description of the pass.
21839         (enum chain_type): New enum type for store elimination.
21840         (struct chain): New field supporting store elimination.
21841         (struct component): Ditto.
21842         (dump_chain): Dump store-stores chain.
21843         (release_chain): Release resources.
21844         (split_data_refs_to_components): Compute and create component
21845         contains only stores for elimination.
21846         (get_chain_last_ref_at): New function.
21847         (make_invariant_chain): Initialization.
21848         (make_rooted_chain): Specify chain type in parameter and record it.
21849         (add_looparound_copies): Skip for store-stores chain.
21850         (determine_roots_comp): Compute type of chain and pass it to
21851         make_rooted_chain.
21852         (initialize_root_vars_store_elim_2): New function.
21853         (finalize_eliminated_stores): New function.
21854         (remove_stmt): Handle store for elimination.
21855         (execute_pred_commoning_chain): Execute predictive commoning on
21856         store-store chains.
21857         (determine_unroll_factor): Skip unroll for store-stores chain.
21858         (prepare_initializers_chain_store_elim): New function.
21859         (prepare_initializers_chain): Hanlde store-store chain.
21860         (prepare_finalizers_chain, prepare_finalizers): New function.
21861         (tree_predictive_commoning_loop): Return integer value indicating
21862         if loop is unrolled or lcssa form is corrupted.
21863         (tree_predictive_commoning): Rewrite for lcssa form if necessary.
21864
21865 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21866
21867         * tree-predcom.c (initialize_root): Delete.
21868         (execute_pred_commoning_chain): Initialize root vars and replace
21869         reference of non-combined chain directly, rather than call above
21870         function.
21871
21872 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21873
21874         * tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
21875         memory reference to DR at (NITERS + ITERS)-th iteration of loop.
21876
21877 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21878
21879         * tree-predcom.c (struct chain): New field init_seq.
21880         (release_chain): Release init_seq.
21881         (prepare_initializers_chain): Record intialization stmts in above
21882         field.
21883         (insert_init_seqs): New function.
21884         (tree_predictive_commoning_loop): Call insert_init_seqs.
21885
21886 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21887
21888         * tree-predcom.c (determine_roots_comp): Skip trivial components.
21889
21890 2017-07-28  Richard Biener  <rguenther@suse.de>
21891
21892         * match.pd: Remove superfluous :c.
21893         * genmatch.c (simplify::id): Add member.
21894         (lower_commutative, lower_opt_convert, lower_cond, lower_for):
21895         Copy id.
21896         (current_id): New global.
21897         (dt_node::parent): Move from ...
21898         (dt_operand::parent): ... here.  Add for_id member.
21899         (is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
21900         (decision_tree::find_node): Relax order requirement when
21901         merging DT_TRUE nodes to ones inbetween the current simplify
21902         and the one we try to merge with.  Add diagnostic whenever
21903         we need to enforce pattern order by not merging.
21904         (decision_tree::insert): Set current_id.
21905         (decision_tree::print_node): Dump parent node and for_id.
21906         (parser::last_id): Add member.
21907         (parser::push_simplify): Assign unique id.
21908         (parser::parser): Initialize last_id.
21909
21910 2017-07-28  Martin Liska  <mliska@suse.cz>
21911
21912         PR sanitizer/81340
21913         * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
21914         gimple_build_debug_bind.
21915
21916 2017-07-28  Richard Biener  <rguenther@suse.de>
21917
21918         PR tree-optimization/81502
21919         * match.pd: Add pattern combining BIT_INSERT_EXPR with
21920         BIT_FIELD_REF.
21921         * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
21922         size/pos operands.
21923         (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
21924         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
21925         for BIT_FIELD_REF args.
21926         * fold-const.c (make_bit_field_ref): Likewise.
21927         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
21928
21929 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21930
21931         PR sanitizer/80998
21932         * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
21933         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
21934         * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
21935         Or it into SANITIZER_UNDEFINED.
21936         * ubsan.c: Include gimple-fold.h and varasm.h.
21937         (ubsan_expand_ptr_ifn): New function.
21938         (instrument_pointer_overflow): New function.
21939         (maybe_instrument_pointer_overflow): New function.
21940         (instrument_object_size): Formatting fix.
21941         (pass_ubsan::execute): Call instrument_pointer_overflow
21942         and maybe_instrument_pointer_overflow.
21943         * internal-fn.c (expand_UBSAN_PTR): New function.
21944         * ubsan.h (ubsan_expand_ptr_ifn): Declare.
21945         * sanitizer.def (__ubsan_handle_pointer_overflow,
21946         __ubsan_handle_pointer_overflow_abort): New builtins.
21947         * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
21948         * internal-fn.def (UBSAN_PTR): New internal function.
21949         * opts.c (sanitizer_opts): Add pointer-overflow.
21950         * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
21951         * fold-const.c (build_range_check): Compute pointer range check in
21952         integral type if pointer arithmetics would be needed.  Formatting
21953         fixes.
21954
21955 2017-07-28  Martin Liska  <mliska@suse.cz>
21956
21957         PR sanitizer/81460
21958         * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
21959         parameters that are of a variable-length.
21960
21961 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21962
21963         * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
21964         rs6000/biarch64.h.
21965         * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
21966         (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
21967         (CRT_CALL_STATIC_FUNCTION): Likewise.
21968         (ASM_DEFAULT_SPEC): New define.
21969         (ASM_SPEC32): Likewise.
21970         (ASM_SPEC64): Likewise.
21971         (ASM_SPEC_COMMON): Likewise.
21972         (ASM_SPEC): Likewise.
21973         (INVALID_64BIT): Likewise.
21974         (LINK_OS_DEFAULT_SPEC): Likewise.
21975         (LINK_OS_SPEC32): Likewise.
21976         (LINK_OS_SPEC64): Likewise.
21977         (POWERPC_LINUX): Likewise.
21978         (PTRDIFF_TYPE): Likewise.
21979         (RESTORE_FP_PREFIX): Likewise.
21980         (RESTORE_FP_SUFFIX): Likewise.
21981         (SAVE_FP_PREFIX): Likewise.
21982         (SAVE_FP_SUFFIX): Likewise.
21983         (SIZE_TYPE): Likewise.
21984         (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
21985         (TARGET_64BIT): Likewise.
21986         (TARGET_64BIT): Likewise.
21987         (TARGET_AIX): Likewise.
21988         (WCHAR_TYPE_SIZE): Likewise.
21989         (WCHAR_TYPE): Undefine.
21990         (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
21991         (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
21992         (CPP_OS_RTEMS_SPEC): Delete.
21993         (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
21994         asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
21995         link_os_spec64.
21996         * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
21997
21998 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21999
22000         PR tree-optimization/81578
22001         * tree-parloops.c (build_new_reduction): Bail out if
22002         reduction_code isn't one of the standard OpenMP reductions.
22003         Move the details printing after that decision.
22004
22005 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22006
22007         * config/rs6000/predicates.md (volatile_mem_operand): Remove code
22008         related to reload_in_progress.
22009         (splat_input_operand): Likewise.
22010         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
22011         Delete prototype.
22012         * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
22013         field.
22014         (TARGET_EXPAND_TO_RTL_HOOK): Delete.
22015         (TARGET_INSTANTIATE_DECLS): Likewise.
22016         (legitimate_indexed_address_p): Delete reload_in_progress code.
22017         (rs6000_debug_legitimate_address_p): Likewise.
22018         (rs6000_eliminate_indexed_memrefs): Likewise.
22019         (rs6000_emit_le_vsx_store): Likewise.
22020         (rs6000_emit_move_si_sf_subreg): Likewise.
22021         (rs6000_emit_move): Likewise.
22022         (register_to_reg_type): Likewise.
22023         (rs6000_pre_atomic_barrier): Likewise.
22024         (rs6000_machopic_legitimize_pic_address): Likewise.
22025         (rs6000_allocate_stack_temp): Likewise.
22026         (rs6000_address_for_fpconvert): Likewise.
22027         (rs6000_address_for_altivec): Likewise.
22028         (rs6000_secondary_memory_needed_rtx): Delete function.
22029         (rs6000_check_sdmode): Likewise.
22030         (rs6000_alloc_sdmode_stack_slot): Likewise.
22031         (rs6000_instantiate_decls): Likewise.
22032         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
22033         * config/rs6000/rs6000.md (splitter for *movsi_got_internal):
22034         Delete reload_in_progress.
22035         (*vec_reload_and_plus_<mptrsize>): Likewise.
22036         * config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
22037         (vsx_div_v2di): Likewise.
22038         (vsx_udiv_v2di): Likewise.
22039
22040 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22041
22042         * config/rs6000/rs6000.opt (mlra): Replace with stub.
22043         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
22044         * config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
22045         (rs6000_debug_reg_global): Delete print of LRA status.
22046         (rs6000_option_override_internal): Delete dead LRA related code.
22047         (rs6000_lra_p): Delete function.
22048         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
22049
22050 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22051
22052         * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
22053         * config/riscv/rtems.h: New file.
22054
22055 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22056             Sudakshina Das  <sudi.das@arm.com>
22057
22058         * config/aarch64/aarch64.md
22059         (define_split for and<mode>3nr_compare): Move
22060         non aarch64_logical_operand to a register.
22061         (define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
22062         register immediate operand to a register.
22063         * config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
22064
22065 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22066
22067         PR middle-end/81564
22068         * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
22069
22070 2017-07-27  Richard Biener  <rguenther@suse.de>
22071
22072         PR tree-optimization/81573
22073         PR tree-optimization/81494
22074         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
22075         multi defuse cycle case.
22076
22077 2017-07-27  Richard Biener  <rguenther@suse.de>
22078
22079         PR tree-optimization/81571
22080         * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
22081         PHIs.
22082
22083 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
22084
22085         * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
22086         earlier and only if MASK_FPU is set.  Adjust formatting.
22087
22088 2017-07-27  Martin Liska  <mliska@suse.cz>
22089
22090         * opt-functions.awk: Add validation of value of Init.
22091         * optc-gen.awk: Pass new argument.
22092
22093 2017-07-27  Martin Liska  <mliska@suse.cz>
22094
22095         * auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
22096         Fix wrong condition.
22097
22098 2017-07-27  Martin Liska  <mliska@suse.cz>
22099
22100         * auto-profile.c (afdo_annotate_cfg): Assign zero counts to
22101         BBs and edges seen by autoFDO.
22102
22103 2017-07-27  Richard Biener  <rguenther@suse.de>
22104
22105         PR tree-optimization/81502
22106         * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
22107         with incompatible but same sized type.
22108         (execute_update_addresses_taken): Likewise.
22109
22110 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
22111
22112         * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
22113         flag_tree_loop_vectorize rather than flag_tree_vectorize.
22114
22115 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
22116
22117         PR target/81534
22118         * config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
22119         ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
22120         Change s_operand to memory_operand.
22121
22122 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
22123
22124         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
22125         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
22126         (rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
22127         Emit instructions rather than returning an expression.  Handle TFmode
22128         and KFmode by casting to TImode.
22129         (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
22130         (rs6000_emit_le_vsx_store): Likewise.
22131         * config/rs6000/vsx.md (VSX_TI): New iterator.
22132         (*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
22133         (*vsx_le_undo_permute_<mode>): Likewise.
22134         (*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
22135         emit the split sequence.
22136         (*vsx_le_perm_store_<mode>): Likewise.
22137
22138 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
22139
22140         PR tree-optimization/81555
22141         PR tree-optimization/81556
22142         * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
22143         if true, force CHANGED for the recursive invocation.
22144         (reassociate_bb): Remember original length of ops array, pass
22145         len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
22146
22147         * attribs.c (decl_attributes): Imply noinline, noclone and no_icf
22148         attributes for noipa attribute.  For naked attribute use
22149         lookup_attribute first before lookup_attribute_spec.
22150         * final.c (rest_of_handle_final): Disable IPA RA for functions with
22151         noipa attribute.
22152         * ipa-visibility.c (non_local_p): Fix comment typos.  Return true
22153         for functions with noipa attribute.
22154         (cgraph_externally_visible_p): Return true for functions with noipa
22155         attribute.
22156         * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
22157         for functions with noipa attribute.
22158         * doc/extend.texi: Document noipa function attribute.
22159         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
22160         also for functions with noipa attribute.
22161         (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
22162
22163 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22164
22165         * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
22166         vec_unalign_load_cost and vec_unalign_store_cost.
22167
22168 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
22169
22170         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
22171         -mvsx-small-integer option.
22172         (ISA_3_0_MASKS_IEEE): Likewise.
22173         (OTHER_VSX_VECTOR_MASKS): Likewise.
22174         (POWERPC_MASKS): Likewise.
22175         * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
22176         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
22177         code, only testing for DImode being allowed in non-VSX floating
22178         point registers.
22179         (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
22180         to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
22181         another VSX test.
22182         (rs6000_option_override_internal): Delete -mvsx-small-integer.
22183         (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
22184         TARGET_P8_VECTOR test.
22185         (rs6000_secondary_reload_simple_move): Likewise.
22186         (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
22187         since TARGET_P9_VECTOR was already tested.
22188         (rs6000_opt_masks): Remove -mvsx-small-integer.
22189         * config/rs6000/vsx.md (vsx_extract_<mode>): Delete
22190         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22191         used.
22192         (vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
22193         test for TARGET_VEXTRACTUB was used, and that uses
22194         TARGET_P9_VECTOR.
22195         (p9 extract splitter): Likewise.
22196         (vsx_extract_<mode>_di_p9): Likewise.
22197         (vsx_extract_<mode>_store_p9): Likewise.
22198         (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
22199         for TARGET_P9_VECTOR was used.  Delete code that is now dead with
22200         the elimination of TARGET_VSX_SMALL_INTEGER.
22201         (vsx_extract_<mode>_p8): Likewise.
22202         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
22203         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
22204         (vsx_set_<mode>_p9): Likewise.
22205         (vsx_set_v4sf_p9): Likewise.
22206         (vsx_set_v4sf_p9_zero): Likewise.
22207         (vsx_insert_extract_v4sf_p9): Likewise.
22208         (vsx_insert_extract_v4sf_p9_2): Likewise.
22209         * config/rs6000/rs6000.md (sign extend splitter): Change
22210         TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
22211         (floatsi<mode>2_lfiwax_mem): Likewise.
22212         (floatunssi<mode>2_lfiwzx_mem): Likewise.
22213         (float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
22214         since a test for TARGET_P9_VECTOR was used.
22215         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22216         (floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
22217         (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22218         (fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22219         TARGET_P8_VECTOR test.
22220         (fix_trunc<mode>si2_stfiwx): Likewise.
22221         (fix_trunc<mode>si2_internal): Likewise.
22222         (fix_trunc<SFDF:mode><QHI:mode>2): Delete
22223         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22224         used.
22225         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22226         (fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22227         TARGET_P8_VECTOR test.
22228         (fixuns_trunc<mode>si2_stfiwx): Likewise.
22229         (fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
22230         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22231         used.
22232         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22233         (fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
22234         since a test for TARGET_P9_VECTOR was used.
22235         (splitter for loading small constants): Likewise.
22236
22237 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22238
22239         * config/aarch64/aarch64.c (thunderx_vector_cost): Fix
22240         vec_fp_stmt_cost.
22241
22242 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
22243
22244         PR target/81563
22245         * config/i386/i386.c (sp_valid_at): Properly check CFA offset.
22246         (fp_valid_at): Likewise.
22247
22248 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22249
22250         * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
22251         (qdf24xx_addrcost_table): Likewise.
22252         (cortexa57_tunings): Update to use generic_branch_cost.
22253         (cortexa72_tunings): Likewise.
22254         (cortexa73_tunings): Likewise.
22255         (qdf24xx_tunings): Likewise.
22256
22257 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22258
22259         * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
22260         (thunderx2t99_branch_cost): Likewise.
22261         (cortexa35_tunings): Update to use generic_branch_cost.
22262         (cortexa53_tunings): Likewise.
22263         (cortexa57_tunings): Likewise.
22264         (cortexa72_tunings): Likewise.
22265         (cortexa73_tunings): Likewise.
22266         (thunderx2t99_tunings): Likewise.
22267
22268 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22269
22270         * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
22271         (sparc_option_override): Honour MASK_FSMULD.
22272         * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
22273         * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
22274         * config/sparc/sparc.opt (mfsmuld): New option.
22275         * doc/invoke.texi (mfsmuld): Document option.
22276
22277 2017-07-26  Marek Polacek  <polacek@redhat.com>
22278
22279         PR middle-end/70992
22280         * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
22281
22282 2017-07-26  Richard Biener  <rguenther@suse.de>
22283
22284         * gimple-match-head.c (do_valueize): Return OP if valueize
22285         returns NULL_TREE.
22286         (get_def): New helper to get at the def stmt of a SSA name
22287         if valueize allows.
22288         * genmatch.c (dt_node::gen_kids_1): Use get_def instead of
22289         do_valueize to get at the def stmt.
22290         (dt_operand::gen_gimple_expr): Simplify do_valueize calls.
22291
22292 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
22293
22294         PR middle-end/46932
22295         * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
22296
22297 2017-07-26  Martin Liska  <mliska@suse.cz>
22298
22299         PR sanitize/81186
22300         * function.c (expand_function_start): Make expansion of
22301         nonlocal_goto_save_area after parm_birth_insn.
22302
22303 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22304
22305         * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
22306         from all CPU target flags enable members.
22307
22308 2017-07-26  Richard Biener  <rguenther@suse.de>
22309
22310         * genmatch.c (dt_simplify::gen): Make iterator vars const.
22311         (decision_tree::gen): Make 'type' const.
22312         (write_predicate): Likewise.
22313
22314 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22315
22316         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
22317         Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
22318         (rs6000_option_override_internal): Likewise.
22319         (rs6000_expand_vector_set): Likewise.
22320         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
22321         (TARGET_UPPER_REGS_SF): Likewise.
22322         (TARGET_UPPER_REGS_DI): Likewise.
22323         (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
22324         (TARGET_DIRECT_MOVE_64BIT): Likewise.
22325         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
22326         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22327         (Splitters for DI constants in Altivec registers): Likewise.
22328         * config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
22329         (vsx_set_v4sf_p9): Likewise.
22330         (vsx_set_v4sf_p9_zero): Likewise.
22331         (vsx_insert_extract_v4sf_p9): Likewise.
22332         (vsx_insert_extract_v4sf_p9_2): Likewise.
22333
22334 2017-07-25  Carl Love  <cel@us.ibm.com>
22335
22336         * doc/extend.texi: Update the built-in documentation file for the
22337         existing built-in functions
22338         vector signed char vec_cnttz (vector signed char);
22339         vector unsigned char vec_cnttz (vector unsigned char);
22340         vector signed short vec_cnttz (vector signed short);
22341         vector unsigned short vec_cnttz (vector unsigned short);
22342         vector signed int vec_cnttz (vector signed int);
22343         vector unsigned int vec_cnttz (vector unsigned int);
22344         vector signed long long vec_cnttz (vector signed long long);
22345         vector unsigned long long vec_cnttz (vector unsigned long long);
22346
22347 2017-07-25  Andrew Pinski  <apinski@cavium.com>
22348
22349         * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
22350         accesses where the use is for the first operand of a BIT_INSERT.
22351
22352 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22353
22354         PR bootstrap/81521
22355         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22356         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22357
22358 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22359
22360         * config/i386/gstabs.h: Delete.
22361         * config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
22362
22363 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
22364
22365         * config/i386/i386.c (ix86_decompose_address): Do not check for
22366         register RTX when looking at index_reg or base_reg.
22367         * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
22368
22369 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
22370
22371         * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
22372         to update EH info here.
22373
22374 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22375
22376         * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
22377
22378 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22379
22380         * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
22381
22382 2017-07-25  Torsten Duwe  <duwe@suse.de>
22383
22384         * common.opt: Introduce -fpatchable-function-entry
22385         command line option, and its variables function_entry_patch_area_size
22386         and function_entry_patch_area_start.
22387         * opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
22388         including a two-value parser.
22389         * target.def (print_patchable_function_entry): New target hook.
22390         * targhooks.h (default_print_patchable_function_entry): New function.
22391         * targhooks.c (default_print_patchable_function_entry): Likewise.
22392         * toplev.c (process_options): Switch off IPA-RA if
22393         patchable function entries are being generated.
22394         * varasm.c (assemble_start_function): Look at the
22395         patchable-function-entry command line switch and current
22396         function attributes and maybe generate NOP instructions by
22397         calling the print_patchable_function_entry hook.
22398         * doc/extend.texi: Document patchable_function_entry attribute.
22399         * doc/invoke.texi: Document -fpatchable_function_entry
22400         command line option.
22401         * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
22402         New target hook.
22403         * doc/tm.texi: Re-generate.
22404
22405 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
22406
22407         PR target/81532
22408         * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
22409         TARGET_AVX512DQ rather than TARGET_AVX512BW.
22410
22411 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
22412
22413         * config/arm/parsecpu.awk (all_cores): Remove duplicates.
22414
22415 2017-07-25  Richard Biener  <rguenther@suse.de>
22416
22417         PR tree-optimization/81455
22418         * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
22419         not walk in cycles when looking for guards.
22420
22421 2017-07-25  Richard Biener  <rguenther@suse.de>
22422
22423         PR tree-optimization/81529
22424         * tree-vect-stmts.c (process_use): Disregard live induction PHIs
22425         when optimizing backedge uses.
22426
22427 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
22428
22429         * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
22430         character for AIX.
22431         * dwarf2out.c (output_macinfo): Copy debug_line_section_label
22432         to dl_section_ref.  On AIX, append an expression to subtract
22433         the size of the section length to dl_section_ref.
22434
22435 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
22436
22437         * configure.ac: If any of the config.* scripts fail, exit 1.
22438         * configure: Regenerate.
22439
22440 2017-07-25  Richard Biener  <rguenther@suse.de>
22441
22442         PR middle-end/81546
22443         * tree-ssa-operands.c (verify_imm_links): Remove cap on number
22444         of immediate uses, be more verbose on errors.
22445
22446 2017-07-25  Richard Biener  <rguenther@suse.de>
22447
22448         PR tree-optimization/81510
22449         * tree-vect-loop.c (vect_is_simple_reduction): When the
22450         reduction stmt is not inside the loop bail out.
22451
22452 2017-07-25  Richard Biener  <rguenther@suse.de>
22453
22454         PR tree-optimization/81303
22455         * tree-vect-loop-manip.c (vect_loop_versioning): Build
22456         profitability check against LOOP_VINFO_NITERSM1.
22457
22458 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22459
22460         * domwalk.c (cmp_bb_postorder): Simplify.
22461         (sort_bbs_postorder): New function.  Use it...
22462         (dom_walker::walk): ...here to optimize common cases.
22463
22464 2017-07-25  Martin Liska  <mliska@suse.cz>
22465
22466         PR ipa/81520
22467         * ipa-visibility.c (function_and_variable_visibility): Make the
22468         redirection just on target that supports aliasing.
22469         Fix GNU coding style.
22470
22471 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22472
22473         PR libgcc/61152
22474         * config/aarch64/rtems.h: Add GCC Runtime Library Exception.
22475         Format changes.
22476         * config/arm/rtems.h: Likewise.
22477         * config/bfin/rtems.h: Likewise.
22478         * config/i386/rtemself.h: Likewise.
22479         * config/lm32/rtems.h: Likewise.
22480         * config/m32c/rtems.h: Likewise.
22481         * config/m68k/rtemself.h: Likewise.
22482         * config/microblaze/rtems.h: Likewise.
22483         * config/mips/rtems.h: Likewise.
22484         * config/moxie/rtems.h: Likewise.
22485         * config/nios2/rtems.h: Likewise.
22486         * config/powerpcspe/rtems.h: Likewise.
22487         * config/rs6000/rtems.h: Likewise.
22488         * config/rtems.h: Likewise.
22489         * config/sh/rtems.h: Likewise.
22490         * config/sh/rtemself.h: Likewise.
22491         * config/sparc/rtemself.h: Likewise.
22492
22493 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22494
22495         PR 81487
22496         * hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
22497         * gimple-pretty-print.c (dump_profile, dump_probability): Same.
22498         * tree-ssa-structalias.c (alias_get_name): Same.
22499
22500 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
22501
22502         PR target/81414
22503         * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
22504         instructions if no du chain is found.
22505
22506 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22507
22508         * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
22509
22510 2017-07-25  Richard Biener  <rguenther@suse.de>
22511
22512         PR middle-end/81505
22513         * fold-const.c (fold_negate_const): TREE_OVERFLOW should be
22514         sticky.
22515
22516 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22517
22518         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
22519         upper-regs options.
22520         (ISA_2_7_MASKS_SERVER): Likewise.
22521         (ISA_3_0_MASKS_IEEE): Likewise.
22522         (OTHER_P8_VECTOR_MASKS): Likewise.
22523         (OTHER_VSX_VECTOR_MASKS): Likewise.
22524         (POWERPC_MASKS): Likewise.
22525         (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
22526         duplicate list of options.
22527         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
22528         explicit -mupper-regs options.
22529         * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
22530         -mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
22531         alias for -mupper-regs-df.
22532         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
22533         (rs6000_init_hard_regno_mode_ok): Likewise.
22534         (rs6000_option_override_internal): Likewise.
22535         (rs6000_opt_masks): Likewise.
22536         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
22537         options in terms of whether -mvsx or -mpower8-vector was used.
22538         (TARGET_UPPER_REGS_DI): Likewise.
22539         (TARGET_UPPER_REGS_SF): Likewise.
22540         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
22541         -mupper-regs-* options.
22542
22543 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22544
22545         * passes.c (emergency_dump_function): Print some empty lines and a
22546         header before the RTL dump.
22547
22548 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22549
22550         * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
22551
22552 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
22553
22554         PR target/79041
22555         * config/aarch64/aarch64.c (aarch64_classify_symbol):
22556         Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
22557
22558 2017-07-24  Carl Love  <cel@us.ibm.com>
22559
22560         * config/rs6000/rs6000-c.c: Add support for built-in functions
22561         vector float vec_extract_fp32_from_shorth (vector unsigned short);
22562         vector float vec_extract_fp32_from_shortl (vector unsigned short);
22563         * config/rs6000/altivec.h (vec_extract_fp_from_shorth,
22564         vec_extract_fp_from_shortl): Add defines for the two builtins.
22565         * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
22566         VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
22567         new builtins.
22568         * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
22569         (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
22570         * doc/extend.texi: Update the built-in documentation file for the
22571         new built-in function.
22572
22573 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
22574
22575         PR bootstrap/81521
22576         * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
22577         documentation.
22578         * doc/generic.texi: Likewise.
22579         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22580         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22581
22582 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
22583
22584         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
22585         (aarch64_mls_elt_merge<mode>): Likewise.
22586
22587 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
22588
22589         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
22590         having __cxa_atexit.
22591
22592 2017-07-23  Michael Collison  <michael.collison@arm.com>
22593
22594         * config/arm/arm.c (arm_option_override): Deprecate
22595         use of -mstructure-size-boundary.
22596         * config/arm/arm.opt: Deprecate -mstructure-size-boundary.
22597         * doc/invoke.texi: Deprecate -mstructure-size-boundary.
22598
22599 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
22600
22601         PR target/80695
22602         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
22603         Reduce cost estimate for direct moves.
22604
22605 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
22606
22607         PR target/80569
22608         * config/i386/i386.c (ix86_option_override_internal): Disable
22609         BMI, BMI2 and TBM instructions for -m16.
22610
22611 2017-07-21  Carl Love  <cel@us.ibm.com>
22612
22613         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22614         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
22615         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
22616         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
22617         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
22618         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
22619         VMULOSW): New enum "unspec" values.
22620         (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
22621         altivec_vmulosw): New patterns.
22622         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
22623         VMULOSW): Add definitions.
22624
22625 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
22626
22627         * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
22628         (qdf24xx): Likewise.
22629         * config/aarch64/aarch64-options-extensions.def (rdma); New.
22630         * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
22631         (AARCH64_FL_V8_1): Renumber.
22632         (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
22633         (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
22634         * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
22635         * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
22636         rdma to feature modifiers list.
22637
22638 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
22639
22640         PR middle-end/56727
22641         * ipa-visibility (function_and_variable_visibility): Convert
22642         recursive PLT call to direct call if appropriate.
22643
22644 2017-07-21  Andrew Pinski  <apinski@cavium.com>
22645
22646         * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
22647         operand 1 to see if the types precision matches.
22648         * fold-const.c (operand_equal_p): Likewise.
22649
22650 2017-07-21  Richard Biener  <rguenther@suse.de>
22651
22652         PR tree-optimization/81303
22653         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
22654         in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
22655         (vect_peeling_hash_get_lowest_cost): Adjust.
22656         (vect_enhance_data_refs_alignment): Likewise.  Use
22657         vect_get_peeling_costs_all_drs to compute the penalty for no
22658         peeling to match up costs.
22659
22660 2017-07-21  Richard Biener  <rguenther@suse.de>
22661
22662         PR tree-optimization/81500
22663         * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
22664         we didn't identify a reduction path.
22665
22666 2017-07-21  Tom de Vries  <tom@codesourcery.com>
22667             Cesar Philippidis  <cesar@codesourcery.com>
22668
22669         PR gcov-profile/81442
22670         * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
22671         probabilities.
22672
22673 2017-07-21  Tom de Vries  <tom@codesourcery.com>
22674
22675         PR lto/81430
22676         * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
22677         function.
22678         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
22679         nvptx_override_options_after_change.
22680
22681 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
22682
22683         * dwarf2out.c (output_file_names): Avoid double testing for
22684         dwarf_version >= 5.
22685
22686 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
22687
22688         * doc/invoke.texi (AVR Built-in Functions): Re-layout section.
22689
22690 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
22691
22692         * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
22693         hot/cold regions.
22694         (try_crossjump_to_edge): Do not punt on partitioned functions.
22695
22696 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
22697
22698         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
22699         Put all BBs reachable only via paths crossing cold region to cold
22700         region.
22701         * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
22702
22703 2016-07-21  Richard Biener  <rguenther@suse.de>
22704
22705         PR tree-optimization/81303
22706         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
22707         into account prologue and epilogue iterations when raising
22708         min_profitable_iters to sth at least covering one vector iteration.
22709
22710 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
22711
22712         * config/arm/arm.c (arm_test_cpu_arch_dat):
22713         Check for overlap.
22714
22715 2017-07-20  Nathan Sidwell  <nathan@acm.org>
22716
22717         Remove TYPE_METHODS.
22718         * tree.h (TYPE_METHODS): Delete.
22719         * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
22720         * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
22721         (dbxout_type_methods): Scan TYPE_FIELDS.
22722         (dbxout_type): Don't check TYPE_METHODS here.
22723         * function.c (use_register_for_decl): Always ignore register for
22724         class types when not optimizing.
22725         * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
22726         * tree.c (free_lang_data_in_type): Stitch out member functions and
22727         templates from TYPE_FIELDS.
22728         (build_distinct_type_copy, verify_type_variant,
22729         verify_type): Member fns are on TYPE_FIELDS.
22730         * tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
22731         * tree-pretty-print.c (dump_generic_node): Likewise.
22732
22733 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
22734
22735         PR target/80846
22736         * config/i386/i386.c (ix86_expand_vector_init_general): Handle
22737         V2TImode and V4TImode.
22738         (ix86_expand_vector_extract): Likewise.
22739         * config/i386/sse.md (VMOVE): Enable V4TImode even for just
22740         TARGET_AVX512F, instead of only for TARGET_AVX512BW.
22741         (ssescalarmode): Handle V4TImode and V2TImode.
22742         (VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
22743         (*vec_extractv2ti, *vec_extractv4ti): New insns.
22744         (VEXTRACTI128_MODE): New mode iterator.
22745         (splitter for *vec_extractv?ti first element): New.
22746         (VEC_INIT_MODE): New mode iterator.
22747         (vec_init<mode>): Consolidate 3 expanders into one using
22748         VEC_INIT_MODE mode iterator.
22749
22750 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
22751
22752         * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
22753         non_spilled_static_chain_regno_p.
22754
22755 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
22756
22757         * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
22758
22759 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
22760
22761         * bb-reorder.c (connect_traces): Allow copying of blocks within
22762         single partition.
22763
22764 2017-07-20  Richard Biener  <rguenther@suse.de>
22765
22766         * gimple.h (gimple_phi_result): Add gphi * overload.
22767         (gimple_phi_result_ptr): Likewise.
22768         (gimple_phi_arg): Likewise.  Adjust index assert to only
22769         allow actual argument accesses rather than all slots available
22770         by capacity.
22771         (gimple_phi_arg_def): Add gphi * overload.
22772         * tree-phinodes.c (make_phi_node): Initialize only actual
22773         arguments.
22774         (resize_phi_node): Clear memory not covered by old node,
22775         do not initialize excess argument slots.
22776         (reserve_phi_args_for_new_edge): Initialize new argument slot
22777         completely.
22778
22779 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
22780
22781         PR tree-optimization/81388
22782         Revert r238585:
22783         2016-07-21  Bin Cheng  <bin.cheng@arm.com>
22784
22785         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
22786         by removing computation of may_be_zero.
22787
22788 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22789             Tom de Vries  <tom@codesourcery.com>
22790
22791         PR middle-end/81030
22792         * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
22793         when gimple level profile disagrees with what RTL expander did.
22794
22795 2017-07-20  Richard Biener  <rguenther@suse.de>
22796
22797         PR tree-optimization/61171
22798         * tree-vectorizer.h (slp_instance): Add reduc_phis member.
22799         (vect_analyze_stmt): Add slp instance parameter.
22800         (vectorizable_reduction): Likewise.
22801         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
22802         (vect_is_simple_reduction): Deal with chains not detected
22803         as SLP reduction chain, specifically not properly associated
22804         chains containing a mix of plus/minus.
22805         (get_reduction_op): Remove.
22806         (get_initial_defs_for_reduction): Simplify, pass in whether
22807         this is a reduction chain, pass in the SLP node for the PHIs.
22808         (vect_create_epilog_for_reduction): Get the SLP instance as
22809         arg and adjust.
22810         (vectorizable_reduction): Get the SLP instance as arg.
22811         During analysis remember the SLP node with the PHIs in the
22812         instance.  Simplify getting at the vectorized reduction PHIs.
22813         * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
22814         through SLP instance.
22815         (vect_slp_analyze_operations): Likewise.
22816         * tree-vect-stms.c (vect_analyze_stmt): Likewise.
22817         (vect_transform_stmt): Likewise.
22818
22819 2017-07-20  Tom de Vries  <tom@codesourcery.com>
22820
22821         PR tree-optimization/81489
22822         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
22823         read of phi arg location to before loop that modifies phi.
22824
22825 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
22826
22827         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
22828         New pattern.
22829
22830 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22831
22832         PR middle-end/81331
22833         * except.c (execute): Fix ordering issue.
22834
22835 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22836
22837         PR rtl-optimization/81423
22838         * combine.c (make_compound_operation_int): Don't try to optimize
22839         the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
22840
22841 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22842
22843         PR rtl-optimization/81423
22844         * simplify-rtx.c (simplify_truncation): Handle truncating an IOR
22845         with a constant that is -1 in the truncated to mode.
22846
22847 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22848
22849         * predict.c (propagate_unlikely_bbs_forward): Break out from ...
22850         (determine_unlikely_bbs): ... here.
22851         * predict.h (propagate_unlikely_bbs_forward): Declare.
22852         * cfgexpand.c (pass_expand::execute): Use it.
22853         * bb-reorder.c (sanitize_hot_paths): Do not consider known to be
22854         unlikely edges.
22855         (find_rarely_executed_basic_blocks_and_crossing_edges): Use
22856         propagate_unlikely_bbs_forward.
22857
22858 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22859
22860         PR middle-end/81331
22861         * except.c (maybe_add_nop_after_section_switch): New function.
22862         (execute): Use it.
22863
22864 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22865
22866         * gimple.h (gimple_phi_set_arg): Make assert more strict.
22867
22868 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22869
22870         * gimple.h (gimple_phi_arg): Make assert more strict.
22871
22872 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
22873
22874         * config.gcc (powerpc*-*-*): Add mmintrin.h.
22875         * config/rs6000/mmintrin.h: New file.
22876         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
22877
22878 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22879
22880         PR tree-optimization/81346
22881         * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
22882
22883 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22884
22885         * config/nvptx/nvptx.md (VECIM): Add V2DI.
22886
22887 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22888
22889         * config/nvptx/nvptx-modes.def: Add V2DImode.
22890         * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
22891         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
22892         (nvptx_output_mov_insn): Handle lack of mov.b128.
22893         (nvptx_print_operand): Handle 'H' and 'L' codes.
22894         (nvptx_vector_mode_supported): Allow V2DImode.
22895         (nvptx_preferred_simd_mode): New function.
22896         (nvptx_data_alignment): New function.
22897         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
22898         nvptx_preferred_simd_mode.
22899         * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
22900         64 to 128 bits.
22901         (DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
22902
22903 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22904
22905         * config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
22906         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
22907         (nvptx_vector_mode_supported): New function.  Allow V2SImode.
22908         (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
22909         * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
22910         (mov<VECIM>_insn): New define_insn.
22911         (define_expand "mov<VECIM>): New define_expand.
22912
22913 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22914
22915         * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
22916
22917 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22918
22919         PR tree-optimization/81346
22920         * fold-const.h (fold_div_compare, range_check_type): Declare.
22921         * fold-const.c (range_check_type): New function.
22922         (build_range_check): Use range_check_type.
22923         (fold_div_compare): No longer static, rewritten into
22924         a match.pd helper function.
22925         (fold_comparison): Don't call fold_div_compare here.
22926         * match.pd (X / C1 op C2): New optimization using fold_div_compare
22927         as helper function.
22928
22929 2017-07-19  Nathan Sidwell  <nathan@acm.org>
22930
22931         * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
22932         (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
22933         * tree.c (find_decls_types_r, verify_type): Use
22934         TYPE_{MIN,MAX}_VALUE_RAW.
22935         * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
22936         (hash_tree): Likewise.
22937         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
22938         Likewise.
22939         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
22940         Likewise.
22941
22942 2017-07-18  Tom de Vries  <tom@codesourcery.com>
22943
22944         PR middle-end/81464
22945         * omp-expand.c (expand_omp_for_static_chunk): Handle
22946         equal-argument loop exit phi.
22947
22948 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
22949
22950         PR target/81471
22951         * config/i386/i386.md (rorx_immediate_operand): New mode attribute.
22952         (*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
22953         operand 2 predicate.
22954         (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
22955         operand 2 predicate.
22956         (ror,rol -> rorx splitters): Use const_int_operand as
22957         operand 2 predicate.
22958
22959 2017-06-18  Richard Biener  <rguenther@suse.de>
22960
22961         PR tree-optimization/81410
22962         * tree-vect-stmts.c (vectorizable_load): Properly adjust for
22963         the gap in the ! slp_perm SLP case after each group.
22964
22965 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22966
22967         PR middle-end/81463
22968         * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
22969         again.
22970
22971 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22972
22973         PR middle-end/81462
22974         * predict.c (set_even_probabilities): Cleanup; do not affect
22975         probabilities that are already known.
22976         (combine_predictions_for_bb): Call even when count is set.
22977
22978 2017-07-18  Nathan Sidwell  <nathan@acm.org>
22979
22980         * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
22981         TYPE_MAX_VALUE.
22982
22983 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
22984
22985         PR target/81408
22986         * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
22987         optimization for loop niter analysis.
22988
22989 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
22990
22991         PR target/81473
22992         * config/avr/avr.c (avr_optimize_casesi): Don't use
22993         INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
22994
22995 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
22996
22997         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
22998         body_cost_vec from _vect_peel_extended_info.
22999         (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
23000         (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
23001         npeel.
23002
23003 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
23004
23005         * config/arm/arm.c (emit_unlikely_jump): Remove unused var.
23006
23007 2017-07-18  Richard Biener  <rguenther@suse.de>
23008
23009         PR tree-optimization/80620
23010         PR tree-optimization/81403
23011         * tree-ssa-pre.c (phi_translate_1): Clear range and points-to
23012         info when re-using a VN table entry.
23013
23014 2017-07-18  Richard Biener  <rguenther@suse.de>
23015
23016         PR tree-optimization/81418
23017         * tree-vect-loop.c (vectorizable_reduction): Properly compute
23018         vectype_in.  Verify that with lane-reducing reduction operations
23019         we have a single def-use cycle.
23020
23021 2017-07-17  Carl Love  <cel@us.ibm.com>
23022
23023         Revert commit r249424   2017-06-20  Carl Love  <cel@us.ibm.com>
23024
23025         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23026         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
23027         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
23028         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
23029         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
23030         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
23031         VMULOSW): New enum "unspec" values.
23032         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
23033         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
23034         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
23035         altivec_vmulosw): New patterns.
23036         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
23037         VMULOSW): Add definitions.
23038
23039 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
23040
23041         * config/alpha/alpha.c: Include predict.h.
23042
23043 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
23044
23045         * tree-vrp.c (compare_assert_loc): Fix comparison function
23046         to return predictable results.
23047
23048 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23049
23050         * config/arc/arc.md (adddi3): Remove support for mexpand-adddi
23051         option.
23052         (subdi3): Likewise.
23053         * config/arc/arc.opt (mexpand-adddi): Deprecate it.
23054         * doc/invoke.texi (mexpand-adddi): Update text.
23055
23056 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23057
23058         * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
23059         that also clobbers the CC register. The old expand code is moved
23060         to ...
23061         (*arc_clzsi2): ... here.
23062         (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
23063         the CC register. The old expand code is moved to ...
23064         (arc_ctzsi2): ... here.
23065
23066 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23067
23068         * config/arc/arc.opt (mindexed-loads): Use initial value
23069         TARGET_INDEXED_LOADS_DEFAULT.
23070         (mauto-modify-reg): Use initial value
23071         TARGET_AUTO_MODIFY_REG_DEFAULT.
23072         * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23073         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23074         * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23075         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23076
23077 2017-07-17  Martin Liska  <mliska@suse.cz>
23078
23079         PR sanitizer/81302
23080         * opts.c (finish_options): Do not allow -fgnu-tm
23081         w/ -fsanitize={kernel-,}address.  Say sorry.
23082
23083 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23084
23085         PR target/81369
23086         * tree-loop-distribution.c (classify_partition): Only assert on
23087         numer of iterations.
23088         (merge_dep_scc_partitions): Delete prameter.  Update function call.
23089         (distribute_loop): Remove code handling loop with unknown niters.
23090         (pass_loop_distribution::execute): Skip loop with unknown niters.
23091
23092 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23093
23094         PR target/81369
23095         * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
23096         function sort_partitions_by_post_order.
23097
23098 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23099
23100         PR tree-optimization/81374
23101         * tree-loop-distribution.c (pass_loop_distribution::execute): Record
23102         the max index of basic blocks, rather than number of basic blocks.
23103
23104 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23105
23106         * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
23107         proto.
23108         (arc_legitimate_pic_operand_p): Likewise.
23109         * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
23110         function.
23111         (arc_needs_pcl_p): Likewise.
23112         (arc_legitimate_pc_offset_p): Likewise.
23113         (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
23114         function is also used in constrains.md.
23115         (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
23116         validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
23117         PLUS.  Only return true/false in known cases, otherwise assert.
23118         (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
23119         is already called in arc_legitimate_constant_p.
23120         * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
23121         pic addresses.
23122         (LEGITIMATE_PIC_OPERAND_P): Use
23123         arc_raw_symbolic_reference_mentioned_p function.
23124         * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
23125         function.
23126         (Cal): Likewise.
23127         (C32): Likewise.
23128
23129 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23130         Andrew Burgess  <andrew.burgess@embecosm.com>
23131
23132         * config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
23133         (arc_return_address_register): New function.
23134         * config/arc/arc.c (arc_handle_fndecl_attribute): New function.
23135         (arc_handle_fndecl_attribute): Add naked attribute.
23136         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
23137         (TARGET_WARN_FUNC_RETURN): Likewise.
23138         (arc_allocate_stack_slots_for_args): New function.
23139         (arc_warn_func_return): Likewise.
23140         (machine_function): Change type fn_type.
23141         (arc_compute_function_type): Consider new naked function type,
23142         change function return type.
23143         (arc_must_save_register): Adapt to handle new
23144         arc_compute_function_type's return type.
23145         (arc_expand_prologue): Likewise.
23146         (arc_expand_epilogue): Likewise.
23147         (arc_return_address_regs): Delete.
23148         (arc_return_address_register): New function.
23149         (arc_epilogue_uses): Use above function.
23150         * config/arc/arc.h (arc_return_address_regs): Delete prototype.
23151         (arc_function_type): Change encoding, add naked type.
23152         (ARC_INTERRUPT_P): Change to handle the new encoding.
23153         (ARC_FAST_INTERRUPT_P): Likewise.
23154         (ARC_NORMAL_P): Define.
23155         (ARC_NAKED_P): Likewise.
23156         (arc_compute_function_type): Delete prototype.
23157         * config/arc/arc.md (in_ret_delay_slot): Use
23158         arc_return_address_register function.
23159         (simple_return): Likewise.
23160         (p_return_i): Likewise.
23161
23162 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23163
23164         PR tree-optimization/81428
23165         * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
23166         can't be built for those types.
23167
23168 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23169
23170         Remove stuff dead since r239246.
23171
23172         * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
23173         * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
23174         (avr_inform_devices): Remove dead stuff.
23175
23176 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
23177
23178         * config/arm/arm_neon.h: Fix softp typo.
23179
23180 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23181
23182         PR tree-optimization/81365
23183         * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
23184         aggregate moves onto bb predecessor edges, make sure there are no
23185         loads that could alias the lhs in between the start of bb and the
23186         loads from *phi.
23187
23188 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23189
23190         PR 80929
23191         * config/avr/avr.c (avr_mul_highpart_cost): New static function.
23192         (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
23193         [LSHIFTRT, outer_code = TRUNCATE]: Same.
23194
23195 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23196
23197         PR tree-optimization/81396
23198         * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
23199         (init_symbolic_number): Initialize it to 1.
23200         (perform_symbolic_merge): Add n_ops from both operands into the new
23201         n_ops.
23202         (find_bswap_or_nop): Don't consider n->n == cmpnop computations
23203         without base_addr as useless if they need more than one operation.
23204         (bswap_replace): Handle !bswap case for NULL base_addr.
23205
23206 2017-07-17  Tom de Vries  <tom@codesourcery.com>
23207
23208         PR target/81069
23209         * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
23210         as possible.
23211
23212 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
23213
23214         * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
23215         conditional builtin define __FIX_LEON3FT_B2BST.
23216
23217 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
23218
23219         * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
23220         MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
23221         with -mfix-ut700.
23222
23223 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23224
23225         PR rtl-optimization/81424
23226         * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
23227         to remove potential trapping from operands if -fnon-call-exceptions.
23228
23229 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23230
23231         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
23232         profile_proability for scalling.
23233         * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
23234
23235 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23236
23237         * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
23238
23239 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23240
23241         * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
23242         fixpoint arithmetics.
23243
23244 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23245
23246         * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
23247         fixpoint arithmetics.
23248
23249 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23250
23251         * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
23252         fixpoint arithmetics.
23253
23254 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23255
23256         * profile-count.h (profile_probability::from_reg_br_prob_note,
23257         profile_probability::to_reg_br_prob_note): New functions.
23258         * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
23259         * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
23260         * predict.c (probability_reliable_p): Update.
23261         (edge_probability_reliable_p): Update.
23262         (br_prob_note_reliable_p): Update.
23263         (invert_br_probabilities): Update.
23264         (add_reg_br_prob_note): New function.
23265         (combine_predictions_for_insn): Update.
23266         * asan.c (asan_clear_shadow): Update.
23267         * cfgbuild.c (compute_outgoing_frequencies): Update.
23268         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
23269         (update_br_prob_note): Update.
23270         (rtl_verify_edges): Update.
23271         (purge_dead_edges): Update.
23272         (fixup_reorder_chain): Update.
23273         * emit-rtl.c (try_split): Update.
23274         * ifcvt.c (cond_exec_process_insns): Update.
23275         (cond_exec_process_if_block): Update.
23276         (dead_or_predicable): Update.
23277         * internal-fn.c (expand_addsub_overflow): Update.
23278         (expand_neg_overflow): Update.
23279         (expand_mul_overflow): Update.
23280         * loop-doloop.c (doloop_modify): Update.
23281         * loop-unroll.c (compare_and_jump_seq): Update.
23282         * optabs.c (emit_cmp_and_jump_insn_1): Update.
23283         * predict.h: Update.
23284         * reorg.c (mostly_true_jump): Update.
23285         * rtl.h: Update.
23286         * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
23287         * config/alpha/alpha.c (emit_unlikely_jump): Update.
23288         * config/arc/arc.c: (emit_unlikely_jump): Update.
23289         * config/arm/arm.c: (emit_unlikely_jump): Update.
23290         * config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
23291         * config/frv/frv.c (frv_print_operand_jump_hint): Update.
23292         * config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
23293         (ix86_print_operand): Update.
23294         (ix86_split_fp_branch): Update.
23295         (predict_jump): Update.
23296         * config/ia64/ia64.c (ia64_print_operand): Update.
23297         * config/mmix/mmix.c (mmix_print_operand): Update.
23298         * config/powerpcspe/powerpcspe.c (output_cbranch): Update.
23299         (rs6000_expand_split_stack_prologue): Update.
23300         * config/rs6000/rs6000.c: Update.
23301         * config/s390/s390.c (s390_expand_vec_strlen): Update.
23302         (s390_expand_vec_movstr): Update.
23303         (s390_expand_cs_tdsi): Update.
23304         (s390_expand_split_stack_prologue): Update.
23305         * config/sh/sh.c (sh_print_operand): Update.
23306         (expand_cbranchsi4): Update.
23307         (expand_cbranchdi4): Update.
23308         * config/sparc/sparc.c (output_v9branch): Update.
23309         * config/spu/spu.c (get_branch_target): Update.
23310         (ea_load_store_inline): Update.
23311         * config/tilegx/tilegx.c (cbranch_predicted_p): Update.
23312         * config/tilepro/tilepro.c: Update.
23313
23314 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23315
23316         * gimplify.c (mostly_copy_tree_r): Revert latest change.
23317         (gimplify_save_expr): Likewise.
23318
23319 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23320
23321         * ipa-visibility.c (function_and_variable_visibility): Fix pasto.
23322
23323 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23324
23325         * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
23326         TV_IPA_FNSUMMARY.
23327         * timevar.def (TV_IPA_FNSUMMARY): Define.
23328
23329 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
23330
23331         * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
23332         to back store errata sensitive sequence from being generated.
23333         (sqrtdf2_fix): Likewise.
23334
23335 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23336
23337         * tree-ssa-threadupdate.c (compute_path_counts,
23338         update_joiner_offpath_counts): Use profile_probability.
23339
23340 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23341
23342         Revert:
23343         2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23344
23345         * config/arm/arm-c.c (arm_cpu_builtins): Define
23346         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23347
23348 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
23349
23350         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23351         array entries to represent __ieee128 versions of the
23352         scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
23353         scalar_extract_sig, and scalar_insert_exp built-in functions.
23354         (altivec_resolve_overloaded_builtin): Add special case handling
23355         for the __builtin_scalar_insert_exp function, as represented by
23356         the P9V_BUILTIN_VEC_VSIEDP constant.
23357         * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
23358         exponent support for __ieee128 argument.
23359         (VSESQP): Add scalar extract signature support for __ieee128
23360         argument.
23361         (VSTDCNQP): Add scalar test negative support for __ieee128
23362         argument.
23363         (VSIEQP): Add scalar insert exponent support for __int128 argument
23364         with __ieee128 result.
23365         (VSIEQPF): Add scalar insert exponent support for __ieee128
23366         argument with __ieee128 result.
23367         (VSTDCQP): Add scalar test data class support for __ieee128
23368         argument.
23369         (VSTDCNQP): Add overload support for scalar test negative with
23370         __ieee128 argument.
23371         (VSTDCQP): Add overload support for scalar test data class
23372         __ieee128 argument.
23373         * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
23374         UNSPEC_VSX_SXSIGDP.
23375         (UNSPEC_VSX_SIEXPQP): New constant.
23376         (xsxexpqp): New insn for VSX scalar extract exponent quad
23377         precision.
23378         (xsxsigqp): New insn for VSX scalar extract significand quad
23379         precision.
23380         (xsiexpqpf): New insn for VSX scalar insert exponent quad
23381         precision with floating point argument.
23382         (xststdcqp): New expand for VSX scalar test data class quad
23383         precision.
23384         (xststdcnegqp): New expand for VSX scalar test negative quad
23385         precision.
23386         (xststdcqp): New insn to match expansions for VSX scalar test data
23387         class quad precision and VSX scalar test negative quad precision.
23388         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
23389         special case operand checking to enforce that second operand of
23390         VSX scalar test data class with quad precision argument is a 7-bit
23391         unsigned literal.
23392         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
23393         prototypes and descriptions of __ieee128 versions of
23394         scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
23395         scalar_test_data_class, and scalar_test_neg built-in functions.
23396
23397 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
23398
23399         PR tree-optimization/81162
23400         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
23401         replace a negate with an add.
23402
23403 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
23404
23405         * doc/invoke.texi (arm/-mcpu): Document +crypto.
23406
23407 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23408
23409         * config/arm/arm-c.c (arm_cpu_builtins): Define
23410         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23411
23412 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23413
23414         * config/arm/arm-cpus.in (cortex-r52): Add new entry.
23415         (armv8-r): Set ARM Cortex-R52 as default CPU.
23416         * config/arm/arm-tables.opt: Regenerate.
23417         * config/arm/arm-tune.md: Regenerate.
23418         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
23419         Cortex-R52.
23420         * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
23421         extension for -mcpu=cortex-r52.
23422
23423 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23424
23425         * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
23426         (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
23427         * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
23428         (fp-armv8): Define it as FP_ARMv8 only.
23429         config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
23430         (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
23431         TARGET_FPU_ARMV8.
23432         config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
23433         TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
23434         * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
23435         first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
23436         than TARGET_FPU_ARMV8.
23437         * config/arm/arm-c.c (arm_cpu_builtins): Likewise for
23438         __ARM_FEATURE_NUMERIC_MAXMIN macro definition.
23439         * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
23440         TARGET_FPU_ARMV8.
23441         * config/arm/neon.md (neon_vrint): Likewise.
23442         (neon_vcvt): Likewise.
23443         (neon_<fmaxmin_op><mode>): Likewise.
23444         (<fmaxmin><mode>3): Likewise.
23445         * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
23446         * config/arm/predicates.md (arm_cond_move_operator): Check against
23447         TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
23448
23449 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
23450
23451         * config/aarch64/aarch64.c (aarch64_print_operand): Move comments
23452         to top of function.
23453
23454 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23455
23456         * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
23457         loop in comment with memset.
23458
23459 2017-07-14  Martin Liska  <mliska@suse.cz>
23460
23461         * cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
23462         * dwarf2out.c (is_java): Remove the function.
23463         (output_pubname): Remove usage of the function.
23464         (lower_bound_default): Remove usage of DW_LANG_Java.
23465         (gen_compile_unit_die): Likewise.
23466         * gcc.c: Remove compiler defaults for .java and .zip files.
23467         * gimple-expr.c (remove_suffix): Change as there's no longer
23468         extension than 4-letter one.
23469         * gimplify.c (mostly_copy_tree_r): Remove Java-special part.
23470         (gimplify_save_expr): Likewise.
23471         * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
23472         as it's possible even for other languages than Java.
23473         * langhooks.h (struct lang_hooks): Remove Java from a comment.
23474         * lto-opts.c (lto_write_options): Remove reference to Java.
23475         * opts.c (strip_off_ending): Update file extension handling.
23476         * tree-cfg.c (verify_gimple_call): Remove comment with Java.
23477         * tree-eh.c (lower_resx): Likewise.
23478         * tree.c (free_lang_data_in_type): Remove dead code.
23479         (find_decls_types_r): Likewise.
23480         (build_common_builtin_nodes): Remove Java from a comment.
23481         (verify_type): Remove dead code.
23482         * varasm.c (assemble_external): Remove Java from a comment.
23483
23484 2017-07-14  Martin Liska  <mliska@suse.cz>
23485
23486         * opts.c (finish_options): Add quotes.
23487         (common_handle_option): Likewise.
23488
23489 2017-07-14  Martin Liska  <mliska@suse.cz>
23490
23491         * dbxout.c (get_lang_number): Do not handle GNU Pascal.
23492         * dbxout.h (extern void dbxout_stab_value_internal_label_diff):
23493         Remove N_SO_PASCAL.
23494         * dwarf2out.c (lower_bound_default): Do not handle
23495         DW_LANG_Pascal83.
23496         (gen_compile_unit_die): Likewise.
23497         * gcc.c: Remove default extension binding for GNU Pascal.
23498         * stmt.c: Remove Pascal language from a comment.
23499         * xcoffout.c: Likewise.
23500
23501 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
23502
23503         PR c/81405
23504         * diagnostic-show-locus.c (fixit_cmp): New function.
23505         (layout::layout): Sort m_fixit_hints.
23506         (column_range::column_range): Assert that the values are valid.
23507         (struct char_span): New struct.
23508         (correction::overwrite): New method.
23509         (struct source_line): New struct.
23510         (line_corrections::add_hint): Add assertions.  Reimplement memcpy
23511         calls in terms of classes source_line and char_span, and
23512         correction::overwrite.
23513         (selftest::test_overlapped_fixit_printing_2): New function.
23514         (selftest::diagnostic_show_locus_c_tests): Call it.
23515
23516 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
23517
23518         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
23519         early if there is no lhs.
23520
23521 2017-07-13  Martin Liska  <mliska@suse.cz>
23522
23523         * dwarf2out.c (gen_pointer_type_die): Remove dead code.
23524         (gen_reference_type_die): Likewise.
23525         * stor-layout.c: Remove Pascal-related comment.
23526
23527 2017-07-13  Martin Liska  <mliska@suse.cz>
23528
23529         * opts.c (finish_options): Add quotes to error messages.
23530         (parse_sanitizer_options): Likewise.
23531
23532 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23533
23534         * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
23535
23536 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
23537
23538         * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
23539
23540 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
23541
23542         * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
23543         during expansion.
23544         * builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
23545
23546 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
23547
23548         PR target/81193
23549         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
23550         provides the hardware capability bits, define the macro
23551         __BUILTIN_CPU_SUPPORTS__.
23552         * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
23553         if GLIBC does not provide the hardware capability bits.  Add a
23554         gcc_unreachable call if the built-in cpu function is neither
23555         __builtin_cpu_is nor __builtin_cpu_supports.
23556         (rs6000_get_function_versions_dispatcher): Change the warning
23557         that an old GLIBC is used which does not export the capability
23558         bits to be an error.
23559         * doc/extend.texi (target_clones attribute): Document the
23560         restriction that GLIBC 2.23 or newer is needed on the PowerPC.
23561         (PowerPC built-in functions): Document that GLIBC 2.23 or newer is
23562         needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
23563         the macros defined by GCC if the newer GLIBC is available.
23564
23565 2017-07-12  Jeff Law  <law@redhat.com>
23566
23567         * config/riscv/riscv.c: Remove unnecessary includes.  Reorder
23568         remaining includes slightly.
23569         * config/riscv/riscv-builtins.c: Include profile-count.h.
23570
23571 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23572
23573         PR target/79883
23574         * config/avr/avr.c (avr_set_current_function): In diagnostic
23575         messages: Quote keywords and (parts of) identifiers.
23576         [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
23577         "INTERUPT".
23578
23579 2017-07-12  Carl Love  <cel@us.ibm.com>
23580
23581         * config/rs6000/rs6000-c.c: Add support for built-in functions
23582         vector bool char vec_revb (vector bool char);
23583         vector bool short vec_revb (vector short char);
23584         vector bool int vec_revb (vector bool int);
23585         vector bool long long vec_revb (vector bool long long);
23586         * doc/extend.texi: Update the built-in documentation file for the
23587         new built-in functions.
23588
23589 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23590
23591         * config/s390/s390.md: Remove movcc splitter.
23592
23593 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23594
23595         * config/s390/s390.c (s390_rtx_costs): Return proper costs for
23596         load/store on condition.
23597
23598 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23599
23600         PR target/81407
23601         * config/avr/avr.c (avr_encode_section_info)
23602         [progmem && !TREE_READONLY]: Error if progmem object needs
23603         constructing.
23604
23605 2017-07-11  Michael Collison  <michael.collison@arm.com>
23606
23607         * config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
23608         New pattern.
23609
23610 2017-07-11  Carl Love  <cel@us.ibm.com>
23611
23612         * config/rs6000/rs6000-c.c: Add support for builtins
23613         vector unsigned int vec_parity_lsbb (vector signed int);
23614         vector unsigned int vec_parity_lsbb (vector unsigned int);
23615         vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
23616         vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
23617         vector unsigned long long vec_parity_lsbb (vector signed long long);
23618         vector unsigned long long vec_parity_lsbb (vector unsigned long long);
23619         * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
23620         * config/rs6000/altivec.h (vec_parity_lsbb): Add define.
23621         * doc/extend.texi: Update the built-in documentation file for the
23622         new built-in functions.
23623
23624 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
23625
23626         * diagnostic-show-locus.c: Include "gcc-rich-location.h".
23627         (layout::m_primary_loc): New field.
23628         (layout::layout): Initialize new field.  Move location filtering
23629         logic from here to...
23630         (layout::maybe_add_location_range): ...this new method.  Add
23631         support for filtering to just the lines already specified by other
23632         locations.
23633         (layout::will_show_line_p): New method.
23634         (gcc_rich_location::add_location_if_nearby): New method.
23635         (selftest::test_add_location_if_nearby): New test function.
23636         (selftest::diagnostic_show_locus_c_tests): Call it.
23637         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
23638         New method.
23639
23640 2017-07-11  Tom de Vries  <tom@codesourcery.com>
23641
23642         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
23643         (bb_first_real_insn): New function.
23644         (nvptx_single): Add extra initialization of broadcasted condition
23645         variables.
23646
23647 2017-07-11  Nathan Sidwell  <nathan@acm.org>
23648
23649         * dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
23650
23651 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
23652
23653         * doc/extend.texi (AVR Function Attributes): Remove weblink to
23654         Binutils doc as TEXI will mess them up.
23655         * doc/invoke.texi (AVR Options): Same here.
23656
23657 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
23658
23659         * config/sparc/sparc.opt (mfix-ut700): New option.
23660         (mfix-gr712rc): Likewise.
23661         (sparc_fix_b2bst): New variable.
23662         * doc/invoke.texi (SPARC options): Document them.
23663         (ARM options): Fix warnings.
23664         * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
23665         instructions to prevent sequences that can trigger the store-store
23666         errata for certain LEON3FT processors.
23667         (pass_work_around_errata::gate): Also test sparc_fix_b2bst.
23668         (sparc_option_override): Set sparc_fix_b2bst appropriately.
23669         * config/sparc/sparc.md (fix_b2bst): New attribute.
23670         (in_branch_delay): Prevent stores in delay slot if fix_b2bst.
23671
23672 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
23673
23674         PR target/81375
23675         * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
23676         (rcpps): Ditto.
23677         (*rsqrtsf2_sse): Ditto.
23678         (rsqrtsf2): Ditto.
23679         (div<mode>3): Macroize insn from divdf3 and divsf3
23680         using MODEF mode iterator.
23681
23682 2017-07-10  Martin Sebor  <msebor@redhat.com>
23683
23684         PR tree-optimization/80397
23685         * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
23686         instead of testing for equality to INTEGER_TYPE.
23687
23688 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
23689
23690         * config.gcc: Remove uclibc from arc target spec.
23691
23692 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
23693
23694         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
23695
23696 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23697
23698         PR lto/80838
23699         * lto-wrapper.c (remove_option): New function.
23700         (merge_and_complain): Merge PIC/PIE options more realistically.
23701
23702 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
23703
23704         Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
23705
23706         PR target/20296
23707         PR target/81268
23708         * configure.ac [target=avr]: Add GAS check for -mgcc-isr.
23709         (HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
23710         * config.in: Regenerate.
23711         * configure: Regenerate.
23712         * doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
23713         * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
23714         * config/avr/avr.opt (-mgas-isr-prologues): New option and...
23715         (TARGET_GASISR_PROLOGUES): ...target mask.
23716         * common/config/avr/avr-common.c
23717         (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
23718         Set -mgas-isr-prologues.
23719         * config/avr/avr-passes.def (avr_pass_pre_proep): Add
23720         INSERT_PASS_BEFORE for it.
23721         * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
23722         * config/avr/avr.c (avr_option_override)
23723         [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
23724         (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
23725         (avr_attribute_table) <no_gccisr>: Add new function attribute.
23726         (avr_set_current_function) <is_no_gccisr>: Init machine field.
23727         (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
23728         and rtl_opt_pass.
23729         (make_avr_pass_pre_proep): New function.
23730         (emit_push_sfr) <treg>: Add argument to function and use it
23731         instead of TMP_REG.
23732         (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
23733         and set machine->gasisr.yes.
23734         (avr_expand_epilogue) [machine->gasisr.yes]: Similar.
23735         (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
23736         __gcc_isr.n_pushed to .L__stack_usage.
23737         (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
23738         (avr_asm_final_postscan_insn): ...this new static function.
23739         * config/avr/avr.h (machine_function)
23740         <is_no_gccisr, use_L__stack_usage>: New fields.
23741         <gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
23742         * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
23743         (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
23744         (gasisr, *gasisr): New expander and insn.
23745         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
23746         [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
23747         * config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
23748
23749 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
23750
23751         * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
23752         in quoted strings.
23753
23754 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
23755
23756         Move jump-tables out of .text again.
23757
23758         PR target/81075
23759         * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
23760         (ASM_OUTPUT_ADDR_VEC): New function.
23761         (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
23762         (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
23763         INSN_ADDRESSes as asm comment.
23764         * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
23765         (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
23766         (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
23767         * config/avr/avr.md (*tablejump): Adjust comment.
23768         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
23769         * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
23770         New detail.
23771         * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
23772         (avr_output_addr_vec): New proto.
23773         (avr_log_t) <insn_addresses>: New field.
23774
23775 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
23776
23777         PR target/81313
23778         * config/i386/i386.c (ix86_function_arg_advance): Set
23779         outgoing_args_on_stack to true if there are outgoing arguments
23780         on stack.
23781         (ix86_function_arg): Likewise.
23782         (ix86_get_drap_rtx): Use DRAP only if there are outgoing
23783         arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
23784         * config/i386/i386.h (machine_function): Add
23785         outgoing_args_on_stack.
23786
23787 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
23788
23789         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
23790         supporting pthreds.
23791         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
23792
23793 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
23794
23795         * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
23796         (REAL_H): Remove $(MACHMODE_H).
23797         (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
23798         double-int.h.
23799         (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
23800         $(MACHMODE_H) and double-int.h.
23801         (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
23802         $(MACHMODE_H).
23803         (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
23804         double-int.h.
23805
23806 2017-07-07  Andrew Pinski  <apinski@cavium.com>
23807
23808         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
23809         prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
23810
23811 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23812
23813         * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
23814         Add warning if GCC was not configured to link against a GLIBC that
23815         exports the hardware capability bits.
23816         (make_resolver_func): Make resolver function private and not a
23817         COMDAT function.  Create the name with clone_function_name instead
23818         of make_unique_name.
23819
23820         PR target/81348
23821         * config/rs6000/rs6000.md (HI sign_extend splitter): Use the
23822         correct operand in doing the split.
23823
23824 2017-07-07 Carl Love  <cel@us.ibm.com>
23825
23826         * config/rs6000/rs6000-c: Add support for built-in function
23827         vector unsigned short vec_pack_to_short_fp32 (vector float,
23828                                                       vector float).
23829         * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
23830         BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
23831         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
23832         * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
23833         (convert_4f32_8i16): Add define_expand.
23834         * doc/extend.texi: Update the built-in documentation file for the
23835         new built-in function.
23836
23837 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23838
23839         * config/sparc/m8.md: New file.
23840         * config/sparc/sparc.md: Include m8.md.
23841
23842 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23843
23844         * config/sparc/sparc.opt: New option -mvis4b.
23845         * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
23846         (sparc_option_override): Handle VIS4B.
23847         (enum sparc_builtins): Define
23848         SPARC_BUILTIN_DICTUNPACK{8,16,32},
23849         SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
23850         SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
23851         SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
23852         SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
23853         (check_constant_argument): New function.
23854         (sparc_vis_init_builtins): Define builtins
23855         __builtin_vis_dictunpack{8,16,32},
23856         __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
23857         __builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
23858         __builtin_vis_fpcmpde{8,16,32}shl and
23859         __builtin_vis_fpcmpur{8,16,32}shl.
23860         (sparc_expand_builtin): Check that the constant operands to
23861         __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
23862         constant and in range.
23863         * config/sparc/sparc-c.c (sparc_target_macros): Handle
23864         TARGET_VIS4B.
23865         * config/sparc/sparc.h (SPARC_IMM2_P): Define.
23866         (SPARC_IMM5_P): Likewise.
23867         * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
23868         (enabled): Handle vis4b.
23869         (UNSPEC_DICTUNPACK): New unspec.
23870         (UNSPEC_FPCMPSHL): Likewise.
23871         (UNSPEC_FPUCMPSHL): Likewise.
23872         (UNSPEC_FPCMPDESHL): Likewise.
23873         (UNSPEC_FPCMPURSHL): Likewise.
23874         (cpu_feature): New CPU feature `vis4b'.
23875         (dictunpack{8,16,32}): New insns.
23876         (FPCSMODE): New mode iterator.
23877         (fpcscond): New code iterator.
23878         (fpcsucond): Likewise.
23879         (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
23880         (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
23881         (fpcmpde{8,16,32}{si,di}shl): Likewise.
23882         (fpcmpur{8,16,32}{si,di}shl): Likewise.
23883         * config/sparc/constraints.md: Define constraints `q' for unsigned
23884         2-bit integer constants and `t' for unsigned 5-bit integer
23885         constants.
23886         * config/sparc/predicates.md (imm5_operand_dictunpack8): New
23887         predicate.
23888         (imm5_operand_dictunpack16): Likewise.
23889         (imm5_operand_dictunpack32): Likewise.
23890         (imm2_operand): Likewise.
23891         * doc/invoke.texi (SPARC Options): Document -mvis4b.
23892         * doc/extend.texi (SPARC VIS Built-in Functions): Document the
23893         ditunpack* and fpcmp*shl builtins.
23894
23895 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23896
23897         * config.gcc: Handle m8 in --with-{cpu,tune} options.
23898         * config.in: Add HAVE_AS_SPARC6 define.
23899         * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
23900         M8.
23901         * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
23902         TARGET_CPU_m8.
23903         (ASM_CPU32_DEFAUILT_SPEC): Likewise.
23904         (CPP_CPU_SPEC): Handle m8.
23905         (ASM_CPU_SPEC): Likewise.
23906         * config/sparc/sparc-opts.h (enum processor_type): Add
23907         PROCESSOR_M8.
23908         * config/sparc/sparc.c (m8_costs): New struct.
23909         (sparc_option_override): Handle TARGET_CPU_m8.
23910         (sparc32_initialize_trampoline): Likewise.
23911         (sparc64_initialize_trampoline): Likewise.
23912         (sparc_issue_rate): Likewise.
23913         (sparc_register_move_cost): Likewise.
23914         * config/sparc/sparc.h (TARGET_CPU_m8): Define.
23915         (CPP_CPU64_DEFAULT_SPEC): Define for M8.
23916         (ASM_CPU64_DEFAULT_SPEC): Likewise.
23917         (CPP_CPU_SPEC): Handle M8.
23918         (ASM_CPU_SPEC): Likewise.
23919         (AS_M8_FLAG): Define.
23920         * config/sparc/sparc.md: Add m8 to the cpu attribute.
23921         * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
23922         * configure.ac (HAVE_AS_SPARC6): Check for assembler support for
23923         M8 instructions.
23924         * configure: Regenerate.
23925         * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
23926         -mtune=m8.
23927
23928 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23929
23930         * config/sparc/niagara7.md: Rework the DFA scheduler to use insn
23931         subtypes.
23932         * config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
23933         ("*movdi_insn_sp32"): Do not set v3pipe.
23934         ("*movsi_insn"): Likewise.
23935         ("*movdi_insn_sp64"): Likewise.
23936         ("*movsf_insn"): Likewise.
23937         ("*movdf_insn_sp32"): Likewise.
23938         ("*movdf_insn_sp64"): Likewise.
23939         ("*zero_extendsidi2_insn_sp64"): Likewise.
23940         ("*sign_extendsidi2_insn"): Likewise.
23941         ("*mov<VM32:mode>_insn"): Likewise.
23942         ("*mov<VM64:mode>_insn_sp64"): Likewise.
23943         ("*mov<VM64:mode>_insn_sp32"): Likewise.
23944         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23945         ("<vlop:code><VL:mode>3"): Likewise.
23946         ("*not_<vlop:code><VL:mode>3"): Likewise.
23947         ("*nand<VL:mode>_vis"): Likewise.
23948         ("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
23949         ("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
23950         ("one_cmpl<VL:mode>2"): Likewise.
23951         ("faligndata<VM64:mode>_vis"): Likewise.
23952         ("alignaddrsi_vis"): Likewise.
23953         ("alignaddrdi_vis"): Likweise.
23954         ("alignaddrlsi_vis"): Likewise.
23955         ("alignaddrldi_vis"): Likewise.
23956         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
23957         ("bmaskdi_vis"): Likewise.
23958         ("bmasksi_vis"): Likewise.
23959         ("bshuffle<VM64:mode>_vis"): Likewise.
23960         ("cmask8<P:mode>_vis"): Likewise.
23961         ("cmask16<P:mode>_vis"): Likewise.
23962         ("cmask32<P:mode>_vis"): Likewise.
23963         ("pdistn<P:mode>_vis"): Likewise.
23964         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23965
23966 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23967
23968         * config/sparc/sparc.md ("subtype"): New insn attribute.
23969         ("*wrgsr_sp64"): Set insn subtype.
23970         ("*rdgsr_sp64"): Likewise.
23971         ("alignaddrsi_vis"): Likewise.
23972         ("alignaddrdi_vis"): Likewise.
23973         ("alignaddrlsi_vis"): Likewise.
23974         ("alignaddrldi_vis"): Likewise.
23975         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23976         ("fexpand_vis"): Likewise.
23977         ("fpmerge_vis"): Likewise.
23978         ("faligndata<VM64:mode>_vis"): Likewise.
23979         ("bshuffle<VM64:mode>_vis"): Likewise.
23980         ("cmask8<P:mode>_vis"): Likewise.
23981         ("cmask16<P:mode>_vis"): Likewise.
23982         ("cmask32<P:mode>_vis"): Likewise.
23983         ("fchksm16_vis"): Likewise.
23984         ("v<vis3_shift_patname><GCM:mode>3"): Likewise.
23985         ("fmean16_vis"): Likewise.
23986         ("fp<plusminus_insn>64_vis"): Likewise.
23987         ("<plusminus_insn>v8qi3"): Likewise.
23988         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23989         ("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
23990         ("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
23991         ("<vis3_addsub_ss_patname>v8qi3"): Likewise.
23992         ("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
23993         ("*movqi_insn"): Likewise.
23994         ("*movhi_insn"): Likewise.
23995         ("*movsi_insn"): Likewise.
23996         ("movsi_pic_gotdata_op"): Likewise.
23997         ("*movdi_insn_sp32"): Likewise.
23998         ("*movdi_insn_sp64"): Likewise.
23999         ("movdi_pic_gotdata_op"): Likewise.
24000         ("*movsf_insn"): Likewise.
24001         ("*movdf_insn_sp32"): Likewise.
24002         ("*movdf_insn_sp64"): Likewise.
24003         ("*zero_extendhisi2_insn"): Likewise.
24004         ("*zero_extendqihi2_insn"): Likewise.
24005         ("*zero_extendqisi2_insn"): Likewise.
24006         ("*zero_extendqidi2_insn"): Likewise.
24007         ("*zero_extendhidi2_insn"): Likewise.
24008         ("*zero_extendsidi2_insn_sp64"): Likewise.
24009         ("ldfsr"): Likewise.
24010         ("prefetch_64"): Likewise.
24011         ("prefetch_32"): Likewise.
24012         ("tie_ld32"): Likewise.
24013         ("tie_ld64"): Likewise.
24014         ("*tldo_ldub_sp32"): Likewise.
24015         ("*tldo_ldub1_sp32"): Likewise.
24016         ("*tldo_ldub2_sp32"): Likewise.
24017         ("*tldo_ldub_sp64"): Likewise.
24018         ("*tldo_ldub1_sp64"): Likewise.
24019         ("*tldo_ldub2_sp64"): Likewise.
24020         ("*tldo_ldub3_sp64"): Likewise.
24021         ("*tldo_lduh_sp32"): Likewise.
24022         ("*tldo_lduh1_sp32"): Likewise.
24023         ("*tldo_lduh_sp64"): Likewise.
24024         ("*tldo_lduh1_sp64"): Likewise.
24025         ("*tldo_lduh2_sp64"): Likewise.
24026         ("*tldo_lduw_sp32"): Likewise.
24027         ("*tldo_lduw_sp64"): Likewise.
24028         ("*tldo_lduw1_sp64"): Likewise.
24029         ("*tldo_ldx_sp64"): Likewise.
24030         ("*mov<VM32:mode>_insn"): Likewise.
24031         ("*mov<VM64:mode>_insn_sp64"): Likewise.
24032         ("*mov<VM64:mode>_insn_sp32"): Likewise.
24033
24034 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24035
24036         * config/sparc/sparc.md ("type"): New insn type viscmp.
24037         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
24038         viscmp.
24039         ("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
24040         ("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
24041         ("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
24042         * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
24043         viscmp.
24044         ("n7_vis_logical_11cycle"): Likewise.
24045         * config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
24046         * config/sparc/niagara2.md ("niag3_vis": Likewise.
24047         * config/sparc/niagara.md ("niag_vis"): Likewise.
24048         * config/sparc/ultra3.md ("us3_fga"): Likewise.
24049         * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
24050
24051 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24052
24053         * config/sparc/sparc.md: New instruction type `bmask'.
24054         (bmaskdi_vis): Use the `bmask' type.
24055         (bmasksi_vis): Likewise.
24056         * config/sparc/ultra3.md (us3_array): Likewise.
24057         * config/sparc/niagara7.md (n7_array): Likewise.
24058         * config/sparc/niagara4.md (n4_array): Likewise.
24059         * config/sparc/niagara2.md (niag2_vis): Likewise.
24060         (niag3_vis): Likewise.
24061         * config/sparc/niagara.md (niag_vis): Likewise.
24062
24063 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24064
24065         * ipa-comdats.c: Remove optimize check from gate.
24066         * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
24067         for functions not optimized.
24068         (ipa_fn_summary_read): Skip optimize check.
24069         (ipa_fn_summary_write): Likewise.
24070         * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
24071         is optimized.
24072         * ipa-inline.c (can_inline_edge_p): Not optimized functions are
24073         uninlinable.
24074         (can_inline_edge_p): Check flag_pcc_struct_return for match.
24075         (check_callers): Give up on caller which is not optimized.
24076         (inline_small_functions): Likewise.
24077         (ipa_inline): Do not give up when not optimizing.
24078         * ipa-visbility.c (function_and_variable_visibility): Do not optimize
24079         away unoptimizes cdtors.
24080         (whole_program_function_and_variable_visibility): Do
24081         ipa_discover_readonly_nonaddressable_vars in LTO mode.
24082         * ipa.c (process_references): Do not check optimize.
24083         (symbol_table::remove_unreachable_nodes): Update optimize check.
24084         (set_writeonly_bit): Update optimize check.
24085         (pass_ipa_cdtor_merge::gate): Do not check optimize.
24086         (pass_ipa_single_use::gate): Remove.
24087
24088 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
24089
24090         * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
24091         insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
24092         rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
24093         mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
24094         permute_load, permute_store, adjust_extract, adjust_splat,
24095         adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
24096         replace_swap_with_copy, dump_swap_insn_table,
24097         alignment_with_canonical_addr, alignment_mask, find_alignment_op,
24098         recombine_lvx_pattern, recombine_stvx_pattern,
24099         recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
24100         make_pass_analyze_swaps): Move all code related to p8 swap optimizations
24101         to file rs6000-p8swap.c.
24102         * config/rs6000/rs6000-p8swap.c: New file.
24103         * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
24104         * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
24105         and rs6000*-*-* targets.
24106
24107 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24108
24109         * Makefile.in (selftest): Remove dependency on s-selftest-c++.
24110
24111 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24112
24113         * lto-wrapper.c (merge_and_complain): Do not merge
24114         fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
24115         fsigned_zeros, ftrapping_math, fwrapv.
24116         (append_compiler_options): Do not track these options.
24117         (append_linker_options): Likewie
24118
24119 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24120
24121         * cgraphunit.c (cgraph_node::finalize_function): When
24122         !flag_toplevel_reorde set no_reorder flag.
24123         (varpool_node::finalize_decl): Likewise.
24124         (symbol_table::compile): Drop no toplevel reorder path.
24125
24126 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24127
24128         * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
24129         edges; zero probability is not better than uninitialized.
24130
24131 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24132
24133         * asan.h (asan_sanitize_allocas_p): Declare.
24134         * asan.c (asan_sanitize_allocas_p): New function.
24135         (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
24136         (handle_builtin_alloca): Likewise.
24137         * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
24138         if !asan_sanitize_allocas_p.
24139         * params.def (asan-instrument-allocas): Add new option.
24140         * params.h (ASAN_PROTECT_ALLOCAS): Define.
24141         * opts.c (common_handle_option): Disable allocas sanitization for
24142         KASan by default.
24143
24144 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24145
24146         * asan.c: Include gimple-fold.h.
24147         (get_last_alloca_addr): New function.
24148         (handle_builtin_stackrestore): Likewise.
24149         (handle_builtin_alloca): Likewise.
24150         (asan_emit_allocas_unpoison): Likewise.
24151         (get_mem_refs_of_builtin_call): Add new parameter, remove const
24152         quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
24153         BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
24154         (instrument_builtin_call): Pass gimple iterator to
24155         get_mem_refs_of_builtin_call.
24156         (last_alloca_addr): New global.
24157         * asan.h (asan_emit_allocas_unpoison): Declare.
24158         * builtins.c (expand_asan_emit_allocas_unpoison): New function.
24159         (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
24160         * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
24161         if function calls alloca.
24162         * gimple-fold.c (replace_call_with_value): Remove static keyword.
24163         * gimple-fold.h (replace_call_with_value): Declare.
24164         * internal-fn.c: Include asan.h.
24165         * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
24166         BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
24167
24168 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24169
24170         * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
24171         (C_SELFTEST_FLAGS): New.
24172         (CPP_SELFTEST_FLAGS): New.
24173         (SELFTEST_DEPS): New, from deps of s-selftest.
24174         (C_SELFTEST_DEPS): New, from deps of s-selftest.
24175         (CPP_SELFTEST_DEPS): New.
24176         (selftest): Add dependency on s-selftest-c++.
24177         (s-selftest): Rename to...
24178         (s-selftest-c): ...this, moving deps to SELFTEST_DEPS
24179         and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
24180         than SELFTEST_FLAGS.
24181         (selftest-gdb): Rename to...
24182         (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
24183         C_SELFTEST_FLAGS.
24184         (selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
24185         (selftest-valgrind): Rename to...
24186         (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
24187         C_SELFTEST_FLAGS.
24188         (selftest-valgrind): Reintroduce as an alias for
24189         selftest-c-valgrind.
24190         (s-selftest-c++): New.
24191         (selftest-c++-gdb): New.
24192         (selftest-c++-valgrind): New.
24193
24194 2017-07-06  Olivier Hainque  <hainque@adacore.com>
24195
24196         * gcc.c (process_command): When deciding if undefined variables
24197         should be ignored when processing specs, accept "gcc -v" as well.
24198
24199 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24200
24201         * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
24202         afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
24203
24204 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24205
24206         * config/arm/arm-cpus.in (armv8-r): Add new entry.
24207         * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
24208         * config/arm/arm-tables.opt: Regenerate.
24209         * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
24210         enumerator.
24211         * doc/invoke.texi: Mention -march=armv8-r and its extensions.
24212
24213 2017-07-06  Carl Love  <cel@us.ibm.com>
24214
24215         * ChangeLog: Clean up from mid air collision
24216
24217 2017-07-06  Carl Love  <cel@us.ibm.com>
24218
24219         * config/rs6000/rs6000-c.c: Add support for built-in functions
24220         vector signed int vec_subc (vector signed int, vector signed int);
24221         vector signed __int128 vec_subc (vector signed __int128,
24222                                          vector signed __int128);
24223         vector unsigned __int128 vec_subc (vector unsigned __int128,
24224                                            vector unsigned __int128);
24225         vector signed int vec_sube (vector signed int, vector signed int,
24226                                     vector signed int);
24227         vector unsigned int vec_sube (vector unsigned int,
24228                                       vector unsigned int,
24229                                       vector unsigned int);
24230         vector signed __int128 vec_sube (vector signed __int128,
24231                                          vector signed __int128,
24232                                          vector signed__int128);
24233         vector unsigned __int128 vec_sube (vector unsigned __int128,
24234                                            vector unsigned __int128,
24235                                            vector unsigned __int128);
24236         vector signed int vec_subec (vector signed int, vector signed int,
24237                                      vector signed int);
24238         vector unsigned int vec_subec (vector unsigned int,
24239                                        vector unsigned int,
24240                                        vector unsigned int);
24241         vector signed __int128 vec_subec (vector signed __int128,
24242                                           vector signed __int128,
24243                                           vector signed__int128);
24244         vector unsigned __int128 vec_subec (vector unsigned __int128,
24245                                             vector unsigned __int128,
24246                                             vector unsigned __int128);
24247         * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
24248         ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
24249         * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
24250         BU_ALTIVEC_OVERLOAD_X definitions.
24251         * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
24252         * doc/extend.texi: Update the built-in documentation file for the new
24253         built-in functions.
24254
24255 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24256
24257         PR c++/79300
24258         * diagnostic-show-locus.c (layout::layout): Use start and finish
24259         spelling location for the start and finish of each range.
24260         * genmatch.c (linemap_client_expand_location_to_spelling_point):
24261         Add unused aspect param.
24262         * input.c (expand_location_1): Add "aspect" param, and use it
24263         to access the correct part of the location.
24264         (expand_location): Pass LOCATION_ASPECT_CARET to new param of
24265         expand_location_1.
24266         (expand_location_to_spelling_point): Likewise.
24267         (linemap_client_expand_location_to_spelling_point): Add "aspect"
24268         param, and pass it to expand_location_1.
24269
24270 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
24271
24272         * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
24273         _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
24274         _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
24275         _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
24276         _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
24277         _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
24278         _mm_maskz_getmant_sd, _mm_mask_getmant_ss,
24279         _mm_maskz_getmant_ss): New intrinsics.
24280         (__builtin_ia32_getexpss128_mask): Changed to ...
24281         __builtin_ia32_getexpss128_round ... this.
24282         (__builtin_ia32_getexpsd128_mask): Changed to ...
24283         __builtin_ia32_getexpsd128_round ... this.
24284         * config/i386/i386-builtin-types.def
24285         ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
24286         (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
24287         * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
24288         __builtin_ia32_getexpss_mask_round,     __builtin_ia32_getmantsd_mask_round,
24289         __builtin_ia32_getmantss_mask_round): New builtins.
24290         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
24291         V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
24292         (CODE_FOR_avx512f_vgetmantv2df_mask_round,
24293         CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
24294         * config/i386/sse.md
24295         (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
24296         avx512f_sgetexp<mode><mask_scalar_name>
24297         <round_saeonly_scalar_name> ... this.
24298         (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
24299         %0, %1, %2<round_saeonly_op3>}): Changed to ...
24300         vgetexp<ssescalarmodesuffix>
24301         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24302         %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
24303         (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
24304         avx512f_vgetmant<mode><mask_scalar_name>
24305         <round_saeonly_scalar_name> ... this.
24306         (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
24307         %0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
24308         vgetmant<ssescalarmodesuffix>
24309         \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
24310         %0<mask_scalar_operand4>, %1, %2
24311         <round_saeonly_scalar_mask_op4>, %3} ... this.
24312         * config/i386/subst.md (mask_scalar_operand4,
24313         round_saeonly_scalar_mask_operand4,     round_saeonly_scalar_mask_op4,
24314         round_saeonly_scalar_nimm_predicate): New subst attributes.
24315
24316 2017-07-06  Julia Koval  <julia.koval@intel.com>
24317
24318         * config/i386/i386.c (ix86_erase_embedded_rounding):
24319         Remove code for old rounding pattern.
24320
24321 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
24322
24323         * config/arm/t-arm (GTM_H): Add arm-cpu.h.
24324
24325 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
24326
24327         * doc/sourcebuild.texi (Test Directives, Variants of
24328         dg-require-support): Add documentation for dg-require-stack-check.
24329
24330 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
24331
24332         * config/i386/subst.md (mask_scalar, round_scalar,
24333         round_saeonly_scalar): New meta-templates.
24334         (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
24335         round_scalar_mask_operand3, round_scalar_mask_op3,
24336         round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
24337         round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
24338         round_saeonly_scalar_constraint,
24339         round_saeonly_scalar_prefix): New subst attribute.
24340         * config/i386/sse.md
24341         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
24342         <sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
24343         <round_scalar_name> ... this.
24344         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
24345         <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
24346         <round_scalar_name> ... this.
24347         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
24348         <sse>_vm<code><mode>3<mask_scalar_name>
24349         <round_saeonly_scalar_name> ... this.
24350         (v<plusminus_mnemonic><ssescalarmodesuffix>
24351         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24352         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24353         v<plusminus_mnemonic><ssescalarmodesuffix>
24354         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24355         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24356         (v<multdiv_mnemonic><ssescalarmodesuffix>
24357         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24358         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24359         v<multdiv_mnemonic><ssescalarmodesuffix>
24360         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24361         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24362         (v<maxmin_float><ssescalarmodesuffix>
24363         \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
24364         %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
24365         v<maxmin_float><ssescalarmodesuffix>
24366         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24367         %0<mask_scalar_operand3>, %1, %<iptr>2
24368         <round_saeonly_scalar_mask_op3>} ... this.
24369
24370 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
24371
24372         * config/arm/arm.c (arm_fixed_condition_code_regs): New function.
24373         (TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
24374
24375 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
24376             Alan Hayward  <alan.hayward@arm.com>
24377             David Sherwood  <david.sherwood@arm.com>
24378
24379         * combine.c (simplify_if_then_else): Remove "enum" before
24380         "machine_mode".
24381         * compare-elim.c (can_eliminate_compare): Likewise.
24382         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
24383         Likewise.
24384         (aarch64_lookup_simd_builtin_type): Likewise.
24385         (aarch64_simd_builtin_type): Likewise.
24386         (aarch64_init_simd_builtin_types): Likewise.
24387         (aarch64_simd_expand_args): Likewise.
24388         * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
24389         Likewise.
24390         (aarch64_reverse_mask): Likewise.
24391         (aarch64_simd_emit_reg_reg_move): Likewise.
24392         (aarch64_gen_adjusted_ldpstp): Likewise.
24393         (aarch64_ccmp_mode_to_code): Likewise.
24394         (aarch64_operands_ok_for_ldpstp): Likewise.
24395         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24396         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
24397         Likewise.
24398         (aarch64_min_divisions_for_recip_mul): Likewise.
24399         (aarch64_reassociation_width): Likewise.
24400         (aarch64_get_condition_code_1): Likewise.
24401         (aarch64_simd_emit_reg_reg_move): Likewise.
24402         (aarch64_simd_attr_length_rglist): Likewise.
24403         (aarch64_reverse_mask): Likewise.
24404         (aarch64_operands_ok_for_ldpstp): Likewise.
24405         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24406         (aarch64_gen_adjusted_ldpstp): Likewise.
24407         * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
24408         Likewise.
24409         * config/arc/arc.c (legitimate_offset_address_p): Likewise.
24410         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
24411         (arm_lookup_simd_builtin_type): Likewise.
24412         (arm_simd_builtin_type): Likewise.
24413         (arm_init_simd_builtin_types): Likewise.
24414         (arm_expand_builtin_args): Likewise.
24415         * config/arm/arm-protos.h (arm_expand_builtin): Likewise.
24416         * config/ft32/ft32.c (ft32_libcall_value): Likewise.
24417         (ft32_setup_incoming_varargs): Likewise.
24418         (ft32_function_arg): Likewise.
24419         (ft32_function_arg_advance): Likewise.
24420         (ft32_pass_by_reference): Likewise.
24421         (ft32_arg_partial_bytes): Likewise.
24422         (ft32_valid_pointer_mode): Likewise.
24423         (ft32_addr_space_pointer_mode): Likewise.
24424         (ft32_addr_space_legitimate_address_p): Likewise.
24425         * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
24426         Likewise.
24427         * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
24428         (ix86_emit_outlined_ms2sysv_restore): Likewise.
24429         (iamcu_alignment): Likewise.
24430         (canonicalize_vector_int_perm): Likewise.
24431         (ix86_noce_conversion_profitable_p): Likewise.
24432         (ix86_mpx_bound_mode): Likewise.
24433         (ix86_operands_ok_for_move_multiple): Likewise.
24434         * config/microblaze/microblaze-protos.h
24435         (microblaze_expand_conditional_branch_reg): Likewise.
24436         * config/microblaze/microblaze.c
24437         (microblaze_expand_conditional_branch_reg): Likewise.
24438         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
24439         Likewise.
24440         (rs6000_reassociation_width): Likewise.
24441         (rs6000_invalid_binary_op): Likewise.
24442         (fusion_p9_p): Likewise.
24443         (emit_fusion_p9_load): Likewise.
24444         (emit_fusion_p9_store): Likewise.
24445         * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
24446         Likewise.
24447         (riscv_hard_regno_mode_ok_p): Likewise.
24448         (riscv_address_insns): Likewise.
24449         (riscv_split_symbol): Likewise.
24450         (riscv_legitimize_move): Likewise.
24451         (riscv_function_value): Likewise.
24452         (riscv_hard_regno_nregs): Likewise.
24453         (riscv_expand_builtin): Likewise.
24454         * config/riscv/riscv.c (riscv_build_integer_1): Likewise.
24455         (riscv_build_integer): Likewise.
24456         (riscv_split_integer): Likewise.
24457         (riscv_legitimate_constant_p): Likewise.
24458         (riscv_cannot_force_const_mem): Likewise.
24459         (riscv_regno_mode_ok_for_base_p): Likewise.
24460         (riscv_valid_base_register_p): Likewise.
24461         (riscv_valid_offset_p): Likewise.
24462         (riscv_valid_lo_sum_p): Likewise.
24463         (riscv_classify_address): Likewise.
24464         (riscv_legitimate_address_p): Likewise.
24465         (riscv_address_insns): Likewise.
24466         (riscv_load_store_insns): Likewise.
24467         (riscv_force_binary): Likewise.
24468         (riscv_split_symbol): Likewise.
24469         (riscv_force_address): Likewise.
24470         (riscv_legitimize_address): Likewise.
24471         (riscv_move_integer): Likewise.
24472         (riscv_legitimize_const_move): Likewise.
24473         (riscv_legitimize_move): Likewise.
24474         (riscv_address_cost): Likewise.
24475         (riscv_subword): Likewise.
24476         (riscv_output_move): Likewise.
24477         (riscv_canonicalize_int_order_test): Likewise.
24478         (riscv_emit_int_order_test): Likewise.
24479         (riscv_function_arg_boundary): Likewise.
24480         (riscv_pass_mode_in_fpr_p): Likewise.
24481         (riscv_pass_fpr_single): Likewise.
24482         (riscv_pass_fpr_pair): Likewise.
24483         (riscv_get_arg_info): Likewise.
24484         (riscv_function_arg): Likewise.
24485         (riscv_function_arg_advance): Likewise.
24486         (riscv_arg_partial_bytes): Likewise.
24487         (riscv_function_value): Likewise.
24488         (riscv_pass_by_reference): Likewise.
24489         (riscv_setup_incoming_varargs): Likewise.
24490         (riscv_print_operand): Likewise.
24491         (riscv_elf_select_rtx_section): Likewise.
24492         (riscv_save_restore_reg): Likewise.
24493         (riscv_for_each_saved_reg): Likewise.
24494         (riscv_register_move_cost): Likewise.
24495         (riscv_hard_regno_mode_ok_p): Likewise.
24496         (riscv_hard_regno_nregs): Likewise.
24497         (riscv_class_max_nregs): Likewise.
24498         (riscv_memory_move_cost): Likewise.
24499         * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
24500         * config/rl78/rl78.c (rl78_split_movsi): Likewise.
24501         (rl78_addr_space_address_mode): Likewise.
24502         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24503         Likewise.
24504         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
24505         (rs6000_reassociation_width): Likewise.
24506         (rs6000_invalid_binary_op): Likewise.
24507         (fusion_p9_p): Likewise.
24508         (emit_fusion_p9_load): Likewise.
24509         (emit_fusion_p9_store): Likewise.
24510         * config/visium/visium-protos.h (prepare_move_operands): Likewise.
24511         (ok_for_simple_move_operands): Likewise.
24512         (ok_for_simple_move_strict_operands): Likewise.
24513         (ok_for_simple_arith_logic_operands): Likewise.
24514         (visium_legitimize_reload_address): Likewise.
24515         (visium_select_cc_mode): Likewise.
24516         (output_cbranch): Likewise.
24517         (visium_split_double_move): Likewise.
24518         (visium_expand_copysign): Likewise.
24519         (visium_expand_int_cstore): Likewise.
24520         (visium_expand_fp_cstore): Likewise.
24521         * config/visium/visium.c (visium_pass_by_reference): Likewise.
24522         (visium_function_arg): Likewise.
24523         (visium_function_arg_advance): Likewise.
24524         (visium_libcall_value): Likewise.
24525         (visium_setup_incoming_varargs): Likewise.
24526         (visium_legitimate_constant_p): Likewise.
24527         (visium_legitimate_address_p): Likewise.
24528         (visium_legitimize_address): Likewise.
24529         (visium_secondary_reload): Likewise.
24530         (visium_register_move_cost): Likewise.
24531         (visium_memory_move_cost): Likewise.
24532         (prepare_move_operands): Likewise.
24533         (ok_for_simple_move_operands): Likewise.
24534         (ok_for_simple_move_strict_operands): Likewise.
24535         (ok_for_simple_arith_logic_operands): Likewise.
24536         (visium_function_value_1): Likewise.
24537         (rtx_ok_for_offset_p): Likewise.
24538         (visium_legitimize_reload_address): Likewise.
24539         (visium_split_double_move): Likewise.
24540         (visium_expand_copysign): Likewise.
24541         (visium_expand_int_cstore): Likewise.
24542         (visium_expand_fp_cstore): Likewise.
24543         (visium_split_cstore): Likewise.
24544         (visium_select_cc_mode): Likewise.
24545         (visium_split_cbranch): Likewise.
24546         (output_cbranch): Likewise.
24547         (visium_print_operand_address): Likewise.
24548         * expmed.c (flip_storage_order): Likewise.
24549         * expmed.h (emit_cstore): Likewise.
24550         (flip_storage_order): Likewise.
24551         * genrecog.c (validate_pattern): Likewise.
24552         * hsa-gen.c (gen_hsa_addr): Likewise.
24553         * internal-fn.c (expand_arith_overflow): Likewise.
24554         * ira-color.c (allocno_copy_cost_saving): Likewise.
24555         * lra-assigns.c (find_hard_regno_for_1): Likewise.
24556         * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
24557         (process_invariant_for_inheritance): Likewise.
24558         * lra-eliminations.c (move_plus_up): Likewise.
24559         * omp-low.c (lower_oacc_reductions): Likewise.
24560         * simplify-rtx.c (simplify_subreg): Likewise.
24561         * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
24562         (TARGET_CHKP_BOUND_MODE): Likewise..
24563         * targhooks.c (default_chkp_bound_mode): Likewise.
24564         (default_setup_incoming_vararg_bounds): Likewise.
24565         * targhooks.h (default_chkp_bound_mode): Likewise.
24566         (default_setup_incoming_vararg_bounds): Likewise.
24567         * tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
24568         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
24569         (have_whole_vector_shift): Likewise.
24570         * tree-vect-stmts.c (vectorizable_load): Likewise.
24571         * doc/tm.texi: Regenerate.
24572
24573 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24574
24575         Graceful degrade if Binutils PR21472 is not available.
24576
24577         PR target/81072
24578         * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
24579         .rodata in flash test fails.
24580         (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
24581         * confgure: Regenerate.
24582         * config.in: Regenerate.
24583         * config/avr/avr.c (avr_asm_named_section)
24584         [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
24585         __do_copy_data for stuff in .rodata if flash_pm_offset = 0.
24586         (avr_asm_init_sections): Same.
24587
24588 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24589
24590         * config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
24591         (fma<VH:mode>4_intrinsic): Likewise.
24592         (*fmsub<VCVTF:mode>4): Likewise.
24593         (*fmsub<VH:mode>4_intrinsic): Likewise.
24594
24595 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24596
24597         PR target/81305
24598         * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
24599         Don't depend on "optimize > 0".
24600         (out_movhi_r_mr, out_movqi_mr_r): Same.
24601         (out_movhi_mr_r, out_movqi_r_mr): Same.
24602         (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
24603         io_address_operand on "optimize > 0".
24604
24605 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24606
24607         * tree-loop-distribution.c: Add general explanantion on the pass.
24608         (generate_loops_for_partition): Mark distributed loop.
24609         (pg_add_dependence_edges): New parameter.  Handle alias data
24610         dependence specially and record it in the parameter if asked.
24611         (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
24612         (init_partition_graph_vertices, add_partition_graph_edge): New.
24613         (pg_skip_alias_edge, free_partition_graph_edata_cb): New.
24614         (free_partition_graph_vdata, build_partition_graph): New.
24615         (sort_partitions_by_post_order, merge_dep_scc_partitions): New.
24616         (pg_collect_alias_ddrs, break_alias_scc_partitions): New.
24617         (data_ref_segment_size, latch_dominated_by_data_ref): New.
24618         (compute_alias_check_pairs, version_loop_by_alias_check): New.
24619         (version_for_distribution_p, finalize_partitions): New.
24620         (distribute_loop): Handle alias data dependence specially.  Factor
24621         out loop fusion code as functions and call these functions.
24622
24623 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24624
24625         * tree-loop-distribution.c (classify_partition): New parameter and
24626         better handle reduction statement.
24627         (rdg_build_partitions): Revise comment.
24628         (distribute_loop): Compute statements in all partitions and pass it
24629         to classify_partition.
24630
24631 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24632
24633         * tree-loop-distribution.c (enum partition_type): New.
24634         (struct partition): New field type.
24635         (partition_merge_into): Add parameter.  Update partition type.
24636         (data_dep_in_cycle_p, update_type_for_merge): New functions.
24637         (build_rdg_partition_for_vertex): Compute partition type.
24638         (rdg_build_partitions): Dump partition type.
24639         (distribute_loop): Update calls to partition_merge_into.
24640
24641 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24642
24643         * tree-loop-distribution.c (struct ddr_hasher): New.
24644         (ddr_hasher::hash, ::equal, get_data_dependence): New function.
24645         (ddrs_table): New.
24646         (classify_partition): Call get_data_dependence.
24647         (pg_add_dependence_edges): Ditto.
24648         (distribute_loop): Release data dependence hash table.
24649
24650 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24651
24652         * tree-loop-distribution.c (ref_base_address): Delete.
24653         (similar_memory_accesses): Rename ...
24654         (share_memory_accesses): ... to this.  Check if partitions access
24655         the same memory reference.
24656         (distribute_loop): Call share_memory_accesses.
24657
24658 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24659
24660         * tree-loop-distribution.c (struct partition): New field recording
24661         its data reference.
24662         (partition_alloc, partition_free): Init and release data refs.
24663         (partition_merge_into): Merge data refs.
24664         (build_rdg_partition_for_vertex): Collect data refs for partition.
24665         (pg_add_dependence_edges): Change parameters from vector to bitmap.
24666         Update uses.
24667         (distribute_loop): Remve data refs from vertice data of partition
24668         graph.
24669
24670 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24671
24672         * tree-loop-distribution.c (params.h): Include header file.
24673         (MAX_DATAREFS_NUM, DR_INDEX): New macro.
24674         (datarefs_vec): New global var.
24675         (create_rdg_vertices): Use datarefs_vec directly.
24676         (free_rdg): Don't free data references.
24677         (build_rdg): Update use.  Don't free data references.
24678         (distribute_loop): Compute global variable for data references.
24679         Bail out if there are too many data references.
24680
24681 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24682
24683         * tree-loop-distribution.c (loop_nest): New global var.
24684         (build_rdg): Use loop directly, rather than loop nest.
24685         (pg_add_dependence_edges): Remove loop nest parameter.  Use global
24686         variable directly.
24687         (distribute_loop): Compute global variable loop nest.  Update use.
24688
24689 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24690
24691         * tree-loop-distribution.c (enum fuse_type, fuse_message): New.
24692         (partition_merge_into): New parameter.  Dump reason for fusion.
24693         (distribute_loop): Update use of partition_merge_into.
24694
24695 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24696
24697         * tree-loop-distribution.c (bb_top_order_index): New.
24698         (bb_top_order_index_size, bb_top_order_cmp): New.
24699         (stmts_from_loop): Use topological order.
24700         (pass_loop_distribution::execute): Compute and release topological
24701         order for basic blocks.
24702
24703 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24704
24705         * tree-loop-distribution.c (pass_loop_distribution::execute): Skip
24706         if no loops.
24707
24708 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24709
24710         * cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
24711         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
24712         * internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
24713         * internal-fn.def (LOOP_DIST_ALIAS): New.
24714         * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
24715         (fold_loop_internal_call): ... this.
24716         (vect_loop_dist_alias_call): New function.
24717         (set_uid_loop_bbs): Call fold_loop_internal_call.
24718         (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
24719         internal calls.
24720
24721 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
24722
24723         PR target/81300
24724         * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
24725         Require dead FLAGS_REG at the beginning of a peephole.
24726
24727 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
24728
24729         PR target/81294
24730         * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
24731         arguments in the call to __builtin_ia32_sbb_u32.
24732         (_subborrow_u64): Swap _X and _Y arguments in the call to
24733         __builtin_ia32_sbb_u64.
24734
24735 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
24736
24737         PR debug/81278
24738         * tree-vrp.c (compare_assert_loc): Turn into a function template
24739         with stable template parameter.  Only test if a->e is NULL,
24740         !a->e == !b->e has been verified already.  Use e == NULL or
24741         e != NULL instead of e or ! e tests.  If stable is true, don't use
24742         iterative_hash_expr, on the other side allow a or b or both NULL
24743         and sort the NULLs last.
24744         (process_assert_insertions): Sort using compare_assert_loc<false>
24745         instead of compare_assert_loc, later sort using
24746         compare_assert_loc<true> before calling process_assert_insertions_for
24747         in a loop.  Use break instead of continue once seen NULL pointer.
24748
24749 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24750
24751         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
24752         Cortex-R7 and Cortex-R8 processors.
24753
24754 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24755
24756         * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
24757         uninitialized while src is not.
24758
24759 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
24760
24761         * common/config/arm/arm-common.c: Adjust include path for
24762         arm-cpu-cdata.h
24763         * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
24764         (arm-cpu.h): Create in build directory.  Adjust dependency rules.
24765         (arm-cpu-data.h): Likewise.
24766         (arm-cpu-cdata.h): Likewise.
24767         * config/arm/arm-cpu.h: Delete.
24768         * config/arm/arm-cpu-cdata.h: Delete.
24769         * config/arm/arm-cpu-data.h: Delete.
24770
24771 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
24772
24773         * config/arm/arm-cpus.in (cortex-a55): New.
24774         (cortex-a75): Likewise.
24775         (cortex-a75.cortex-a55): Likewise.
24776         * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
24777         cortex-a75.
24778         * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
24779         * config/arm/arm-cpu-cdata.h: Regenerate.
24780         * config/arm/arm-cpu-data.h: Regenerate.
24781         * config/arm/arm-cpu.h: Regenerate.
24782         * config/arm/arm-tables.opt: Regenerate.
24783         * config/arm/arm-tune.md: Regenerate.
24784
24785 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24786
24787         * haifa-sched.c (sched_create_recovery_edges): Update profile.
24788
24789 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24790
24791         * bb-reorder.c (better_edge_p): Fix handling of uninitialized
24792         probability.
24793
24794 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
24795
24796         PR tree-optimization/81292
24797         * tree-ssa-strlen.c (handle_builtin_strlen): When setting
24798         full_string_p, also call adjust_related_strinfos if the adjustment
24799         is simple, otherwise invalidate related strinfos.
24800
24801 2017-07-04  Martin Liska  <mliska@suse.cz>
24802
24803         PR sanitizer/81040
24804         * sanopt.c (sanitize_rewrite_addressable_params): Mark the
24805         newly created variable as DECL_IGNORED_P.
24806
24807 2017-07-04  Martin Liska  <mliska@suse.cz>
24808
24809         PR ipa/81293
24810         * ipa-inline.c (inline_small_functions):
24811         Use xstrdup_for_dump.
24812
24813 2017-07-04  Tom de Vries  <tom@codesourcery.com>
24814
24815         * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
24816
24817 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24818
24819         PR target/81033
24820         * config/darwin.c (darwin_function_switched_text_sections):
24821         Fix spaces.
24822
24823 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
24824
24825         * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
24826
24827 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24828
24829         * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
24830
24831 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24832
24833         * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
24834         min_profitable_iters, and th as inclusive lower bounds.
24835         Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
24836         (vect_estimate_min_profitable_iters): Return inclusive lower bounds
24837         for min_profitable_iters and min_profitable_estimate.
24838         (vect_transform_loop): Treat th as an inclusive lower bound.
24839         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
24840
24841 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24842
24843         PR target/81033
24844         * config/darwin.c (darwin_function_switched_text_sections):
24845         Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
24846         in two pieces, and suppress the use of buf.
24847
24848 2017-07-03  Nathan Sidwell  <nathan@acm.org>
24849
24850         * hash-table.h (hash_table_mod1): Fix indentation.
24851
24852 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24853
24854         PR middle-end/81290
24855         * predict.c (force_edge_cold): Be more careful about propagation
24856         backward.
24857         * profile-count.h (profile_probability::guessed,
24858         profile_probability::fdo, profile_count::guessed, profile_count::fdo):
24859         New.
24860         * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
24861
24862 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
24863
24864         * doc/invoke.texi (rcpc architecture extension): Document it.
24865
24866 2017-07-03  Richard Biener  <rguenther@suse.de>
24867
24868         PR tree-optimization/60510
24869         * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
24870         the scalar reduction PHI and use it.
24871         (vectorizable_reduction): Properly guard the single_defuse_cycle
24872         path for non-SLP reduction chains where we cannot use it.
24873         Rework reduc_def/index and vector type deduction.  Rework
24874         vector operand gathering during reduction op code-gen.
24875         * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
24876         chains dissolve the chain and leave it to non-SLP reduction
24877         handling.
24878
24879 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24880
24881         * tree-data-ref.h (dr_alignment): Declare.
24882         * tree-data-ref.c (dr_alignment): New function.
24883         * tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
24884         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
24885         set it.
24886         * tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
24887
24888 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24889
24890         * tree-data-ref.h (innermost_loop_behavior): Add base_alignment
24891         and base_misalignment fields.
24892         (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
24893         * tree-data-ref.c: Include builtins.h.
24894         (dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
24895         * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
24896         (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
24897         * tree-vect-data-refs.c: Include tree-cfg.h.
24898         (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
24899         fields instead of calculating an alignment here.
24900         (vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
24901         innermost_loop_behavior fields.
24902
24903 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24904
24905         * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
24906         field.
24907         (DR_STEP_ALIGNMENT): New macro.
24908         * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
24909         * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
24910         (create_data_ref): Print it.
24911         * tree-vect-stmts.c (vectorizable_load): Use the step alignment
24912         to tell whether the step preserves vector (mis)alignment.
24913         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24914         Move the check for an integer step and generalise to all INTEGER_CST.
24915         (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
24916         Print the outer step alignment.
24917
24918 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24919
24920         * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
24921         with offset_alignment.
24922         (DR_ALIGNED_TO): Delete.
24923         (DR_OFFSET_ALIGNMENT): New macro.
24924         * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
24925         (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
24926         * tree-data-ref.c (dr_analyze_innermost): Update after above changes.
24927         (create_data_ref): Likewise.
24928         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24929         (vect_analyze_data_refs): Likewise.
24930         * tree-if-conv.c (if_convertible_loop_p_1): Use memset before
24931         creating dummy innermost behavior.
24932
24933 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24934
24935         * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
24936         with a "innermost_loop_behavior *" and refeence tree.
24937         * tree-data-ref.c (dr_analyze_innermost): Likewise.
24938         (create_data_ref): Update call accordingly.
24939         * tree-predcom.c (find_looparound_phi): Likewise.
24940
24941 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24942
24943         * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
24944         fields with dr_wrt_vec_loop.
24945         (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
24946         (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
24947         (STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
24948         (vect_dr_behavior): New function.
24949         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24950         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
24951         vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
24952         track whether the step preserves the misalignment.
24953         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24954         Use vect_dr_behavior.
24955         (vect_setup_realignment): Update call accordingly.
24956         (vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
24957         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
24958         call to vect_create_addr_base_for_vector_ref.
24959         (vect_create_cond_for_align_checks): Likewise.
24960         * tree-vect-patterns.c (vect_recog_bool_pattern): Copy
24961         STMT_VINFO_DR_WRT_VEC_LOOP as a block.
24962         (vect_recog_mask_conversion_pattern): Likewise.
24963         * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
24964         (new_stmt_vec_info): Remove redundant zeroing.
24965
24966 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24967
24968         * common/config/arm/arm-common.c (arm_be8_option): New function.
24969         * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
24970         (ISA_ARMv6): Add isa_bit_be8.
24971         * config/arm/arm.h (arm_be8_option): Add prototype.
24972         (BE8_SPEC_FUNCTION): New define.
24973         (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
24974         * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
24975         (mlittle-endian): Similarly.
24976         (mbe8, mbe32): New options.
24977         * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
24978         * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
24979
24980 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24981
24982         * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
24983
24984 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24985
24986         * tree-cfgcleanup.c (want_merge_blocks_p): New function.
24987         (cleanup_tree_cfg_bb): Use it.
24988         * profile-count.h (profile_count::of_for_merging, profile_count::merge):
24989         New functions.
24990         * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
24991
24992 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24993
24994         PR bootstrap/81285
24995         * loop-doloop.c (add_test): Update profile.
24996
24997 2017-07-03  Martin Liska  <mliska@suse.cz>
24998
24999         PR sanitize/81040
25000         * sanopt.c (rewrite_usage_of_param): New function.
25001         (sanitize_rewrite_addressable_params): Likewise.
25002         (pass_sanopt::execute): Call rewrite_usage_of_param.
25003
25004 2017-07-03  Richard Biener  <rguenther@suse.de>
25005
25006         * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
25007         back to using VIEW_CONVERT_EXPR.
25008
25009 2017-07-03  Martin Liska  <mliska@suse.cz>
25010
25011         PR other/78366
25012         * doc/extend.texi: Document when a resolver function is
25013         generated for target_clones.
25014
25015 2017-07-03  Martin Liska  <mliska@suse.cz>
25016
25017         * asan.c (asan_emit_stack_protection): Unpoison just red zones
25018         and shadow memory of auto variables which are subject of
25019         use-after-scope sanitization.
25020         (asan_expand_mark_ifn): Add do set only when is_poison.
25021
25022 2016-07-03  Richard Biener  <rguenther@suse.de>
25023
25024         * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
25025         reduction PHIs.
25026         (vect_force_simple_reduction): Record reduction def -> phi mapping.
25027         (vectorizable_reduction): Perform reduction PHI creation when
25028         visiting a reduction PHI and adjust and simplify code generation
25029         phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
25030         (vect_transform_loop): Visit reduction PHIs.
25031         * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
25032         defs into the SLP tree.
25033         (vect_build_slp_tree): Reduction defs terminate the recursion.
25034         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
25035         of reduction defs.
25036         (vect_get_vec_defs_for_stmt_copy): Export.
25037         (vect_get_vec_defs): Likewise.
25038         * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
25039         purpose.
25040         (vect_get_vec_defs_for_stmt_copy): Declare.
25041         (vect_get_vec_defs): Likewise.
25042
25043 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25044
25045         * tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
25046         parameter with a "loop" parameter and use it instead of the
25047         loop containing DR_STMT.  Don't check simple_iv when doing
25048         BB analysis.  Describe the two analysis modes in the comment.
25049
25050 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25051
25052         PR tree-optimization/69468
25053         * tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
25054         (find_same_succ_bb): Handle ignore_edge_flags.
25055
25056 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25057
25058         PR tree-optimization/81192
25059         * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
25060         hash.
25061         (same_succ::equal): Don't find bbs to be equal if bb->loop_father
25062         differs.
25063         (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
25064
25065 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25066
25067         PR tree-optimization/81192
25068         * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
25069         BB_SAME_SUCC (bb) == NULL.
25070
25071 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25072
25073         * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
25074         consistency.
25075
25076 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25077
25078         * dumpfile.c: Include profile-count.h
25079         * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
25080         update profile.
25081         (insert_cond_bb): Update profile.
25082         * tree-cfg.h (insert_cond_bb): Update prototype.
25083         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
25084         * tree-dump.c: Do not include tree-cfg.
25085
25086 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25087
25088         * bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
25089
25090 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25091
25092         * expect.c (dw2_build_landing_pads): Update profile of the landing pad
25093         bb.
25094
25095 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25096
25097         * tree-complex.c (expand_complex_div_wide): update profile.
25098
25099 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25100             Alan Hayward  <alan.hayward@arm.com>
25101             David Sherwood  <david.sherwood@arm.com>
25102
25103         * Makefile.in (MACHMODE_H): Remove insn-modes.h
25104         (CORETYPES_H): New define.
25105         (MOSTLYCLEANFILES): Add insn-modes-inline.h.
25106         (insn-modes-inline.h, s-modes-inline-h): New rules.
25107         (generated_files): Add insn-modes-inline.h.
25108         (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
25109         (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
25110         (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
25111         (build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
25112         (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
25113         (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
25114         (build/gencodes.o, build/genconditions.o): Likewise.
25115         (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
25116         (build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
25117         (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
25118         (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
25119         (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
25120         (build/gencfn-macros.o, build/gcov-iov.o): Likewise.
25121         * coretypes.h: Include everything up to real.h for generators.
25122         Include insn-modes.h first.  Include wide-int-print.h after
25123         wide-int.h.  Include insn-modes-inline.h and then machmode.h.
25124         * machmode.h: Don't include insn-modes.h here.
25125         * function-tests.c: Remove includes of signop.h, machmode.h,
25126         double-int.h and wide-int.h.
25127         * rtl.h: Likewise.
25128         * gcc-rich-location.c: Remove includes of machmode.h, double-int.h
25129         and wide-int.h.
25130         * optc-save-gen.awk: Likewise.
25131         * gencheck.c (BITS_PER_UNIT): Delete dummy definition.
25132         * godump.c: Remove include of wide-int-print.h.
25133         * pretty-print.h: Likewise.
25134         * wide-int-print.cc: Likewise.
25135         * wide-int.cc: Likewise.
25136         * hash-map-tests.c: Remove include of signop.h.
25137         * hash-set-tests.c: Likewise.
25138         * rtl-tests.c: Likewise.
25139         * mkconfig.sh: Remove include of machmode.h.
25140         * genmodes.c (emit_insn_modes_h): Split emission of inline functions
25141         into...
25142         (emit_insn_modes_inline_h): ...this new function.  Emit the code
25143         into an insn-modes-inline.h header file, adding appropriate
25144         include guards and end comments.
25145         (emit_insn_modes_c_header): Remove include of machmode.h.
25146         (emit_min_insn_modes_c_header): Include coretypes.h rather than
25147         machmode.h.
25148         (main): Handle -i flag and call emit_insn_modes_inline_h when
25149         it is passed.
25150
25151 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25152
25153         * tree-ssa-strlen.c (strinfo): Rename the length field to
25154         nonzero_chars.  Add a full_string_p field.
25155         (compare_nonzero_chars, zero_length_string_p): New functions.
25156         (get_addr_stridx): Add an offset_out parameter.
25157         Use compare_nonzero_chars.
25158         (get_stridx): Update accordingly.  Use compare_nonzero_chars.
25159         (new_strinfo): Update after above changes to strinfo.
25160         (set_endptr_and_length): Set full_string_p.
25161         (get_string_length): Update after above changes to strinfo.
25162         (unshare_strinfo): Update call to new_strinfo.
25163         (maybe_invalidate): Likewise.
25164         (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
25165         Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
25166         as a uhwi instead of an shwi.  Update after above changes to
25167         strinfo and new_strinfo.
25168         (zero_length_string): Assert that chainsi contains full strings.
25169         Use zero_length_string_p.  Update call to new_strinfo.
25170         (adjust_related_strinfos): Update after above changes to strinfo.
25171         Copy full_string_p from origsi.
25172         (adjust_last_stmt): Use zero_length_string_p.
25173         (handle_builtin_strlen): Update after above changes to strinfo and
25174         new_strinfo.  Install the lhs as the string length if the previous
25175         entry didn't describe a full string.
25176         (handle_builtin_strchr): Update after above changes to strinfo
25177         and new_strinfo.
25178         (handle_builtin_strcpy): Likewise.
25179         (handle_builtin_strcat): Likewise.
25180         (handle_builtin_malloc): Likewise.
25181         (handle_pointer_plus): Likewise.
25182         (handle_builtin_memcpy): Likewise.  Track nonzero characters
25183         that aren't necessarily followed by a nul terminator.
25184         (handle_char_store): Likewise.
25185
25186 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25187
25188         PR tree-optimization/80769
25189         * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
25190         for malloc and calloc.  Document the new invariant that all related
25191         strinfos have delayed lengths or none do.
25192         (verify_related_strinfos): Move earlier in file.
25193         (set_endptr_and_length): New function, split out from...
25194         (get_string_length): ...here.  Also set the lengths of related
25195         strinfos.
25196         (zero_length_string): Assert that chainsi has known (rather than
25197         delayed) lengths.
25198         (adjust_related_strinfos): Likewise.
25199
25200 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25201
25202         PR tree-optimization/81136
25203         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
25204         assert that two references with the same misalignment have the same
25205         compile-time misalignment if those compile-time misalignments
25206         are known.
25207
25208 2017-07-01  Andi Kleen  <ak@linux.intel.com>
25209
25210         * print-tree.c (print_node): Print all attributes.
25211
25212 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25213
25214         * cfg.c (scale_bbs_frequencies): New function.
25215         * cfg.h (scale_bbs_frequencies): Declare it.
25216         * cfgloopanal.c (single_likely_exit): Cleanup.
25217         * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
25218         as parameter.
25219         (scale_loop_profile): Likewise.
25220         (loop_version): Likewise.
25221         (create_empty_loop_on_edge): Update.
25222         * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
25223         scale_loop_frequencies, scale_loop_profile, loopify,
25224         loop_version): Update prototypes.
25225         * modulo-sched.c (sms_schedule): Update.
25226         * predict.c (unlikely_executed_edge_p): Also check probability.
25227         (probably_never_executed_edge_p): Fix typo.
25228         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25229         * tree-parloops.c (gen_parallel_loop): Update.
25230         * tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
25231         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25232         * tree-ssa-loop-split.c (split_loop): Update.
25233         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25234         * tree-vect-loop-manip.c (vect_do_peeling): Update.
25235         (vect_loop_versioning): Update.
25236         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25237
25238 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25239
25240         * trans-mem.c (split_bb_make_tm_edge): Update profile.
25241
25242 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25243
25244         * tree-if-conv.c (combine_blocks): Use make_single_succ_edge
25245         to keep profile consistent.
25246
25247 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25248
25249         * cfgrtl.c (rtl_flow_call_edges_add): Update profile.
25250         * tree-cfg.c (gimple_flow_call_edges_add): Likewise.
25251         * profile-count.h (max_safe_multiplier): Make unsigned.
25252         (profile_count::guessed_zero): New.
25253
25254 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25255
25256         * bb-reorder.c (fix_up_crossing_landing_pad,
25257         fix_crossing_conditional_branches): Use make_single_succ_edge
25258         to keep profile consistent.
25259
25260 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25261
25262         * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
25263         to update profile.
25264
25265 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
25266
25267         PR sanitizer/81262
25268         * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
25269         the right scopes, make sure cond_jump isn't preserved between multiple
25270         iterations.  Search for fallthru edge whenever there are 3+ edges and
25271         use find_fallthru_edge for it.
25272
25273 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25274
25275         Patch by Alexander Monakov <amonakov@ispras.ru>
25276         * sel-sched-ir.c (compute_succs_info): Handle uninitialized
25277         probabilities consistently.
25278
25279 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25280
25281         * pa.c (pa_expand_compare_and_swap_loop): Update call of
25282         emit_cmp_and_jump_insns.
25283
25284 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25285
25286         PR ipa/81261
25287         * tree-inline.c (expand_call_inline): Combine profile statuses.
25288
25289 2017-06-30  Andrew Pinski  <apinski@cavium.com>
25290
25291         * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
25292         fold_stmt returned true.
25293
25294 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25295
25296         * ggc.h (empty_string): Delete.
25297         * cfgexpand.c (expand_asm_stmt): Use plain "".
25298         * optabs.c (expand_asm_memory_barrier): Likewise.
25299         * stringpool.c (empty_string): Delete.
25300         (digit_vector, digit_string): Delete.
25301         (ggc_alloc_string): Use plain "", don't optimize single digit
25302         strings.  Use ggc_alloc_atomic.
25303
25304 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
25305
25306         * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
25307         comparison set and one other set, use the cost of the non-comparison
25308         set.
25309
25310 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25311
25312         * ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
25313         some formatting.
25314
25315 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
25316
25317         * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
25318         loops.  Remove now unneeded calls to gimple_switch_set_label() that
25319         just set removed labels to NULL_TREE.
25320
25321 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
25322
25323         * tree-ssanames.c (set_range_info_raw): Abstract from ...
25324         (set_range_info): ...here.  Only call set_range_info_raw if domain
25325         is useful.
25326         (set_nonzero_bits): Call set_range_info_raw.
25327         * tree-ssanames.h (set_range_info_raw): New.
25328
25329 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
25330
25331         PR target/81225
25332         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
25333         V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
25334         of nonimmediate_operand and <store_mask_constraint> instead of m
25335         for the input operand.  For V8FI iterator, always split if input
25336         is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
25337         operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
25338         <store_mask_predicate> instead of register_operand and
25339         <store_mask_constraint> instead of v for the input operand.  Make
25340         sure both operands aren't MEMs for if not <mask_applied>.
25341
25342 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
25343
25344         * lto-wrapper.c (copy_file) Close both file descriptors before
25345         exiting normally.
25346
25347 2017-06-30  Martin Liska  <mliska@suse.cz>
25348
25349         PR ipa/81214
25350         * multiple_target.c (create_dispatcher_calls): Make ifunc
25351         also for function that don't have calls or are not referenced.
25352
25353 2017-06-30  Richard Biener  <rguenther@suse.de>
25354
25355         * tree-vect-slp.c (vect_slp_analyze_node_operations): Only
25356         analyze the first scalar stmt.  Move vector type computation
25357         for the BB case here from ...
25358         * tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
25359         live operation processing in the SLP case properly.
25360
25361 2017-06-30  Richard Biener  <rguenther@suse.de>
25362
25363         * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
25364
25365 2017-06-30  Martin Liska  <mliska@suse.cz>
25366
25367         PR sanitizer/81021
25368         * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
25369         before BUILT_IN_UNWIND_RESUME when ASAN is used.
25370
25371 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
25372
25373         * doc/invoke.texi (AArch64): Add missing options and remove redundant
25374         ones.
25375
25376 2017-06-30  Richard Biener  <rguenther@suse.de>
25377
25378         PR tree-optimization/81249
25379         * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
25380         condition reduction result to original scalar type.
25381
25382 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25383
25384         * profile-count.h (enum profile_quality): Fix typos and whitespace
25385         issues.
25386
25387 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25388
25389         * config/s390/s390.c (s390_expand_setmem): Adjust to the new data
25390         type for branch probabilities.
25391
25392 2017-06-29  Julian Brown  <julian@codesourcery.com>
25393             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25394
25395         * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
25396         * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
25397         (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
25398         (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
25399
25400 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25401
25402         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
25403         check for CC usage into AARCH64_FUSE_CMP_BRANCH.
25404         * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
25405         CC usage from generic code to here.
25406         * sched-deps.c (sched_macro_fuse_insns): Move the condition for
25407         CC usage into the target macros.
25408
25409 2017-06-29  Maya Rashish  <coypu@sdf.org>
25410
25411         * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
25412         objects.
25413
25414 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25415
25416         * arm/arm-builtins.c: Include profile-count.h
25417         * except.c (sjlj_emit_function_enter): Use
25418         profile_probability::unlikely.
25419
25420 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
25421
25422         * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
25423         and tocrel_offset be pointer args rather than implicitly using
25424         static versions.
25425         (legitimate_constant_pool_address_p, rs6000_emit_move,
25426         const_load_sequence_p, adjust_vperm): Add local tocrel_base and
25427         tocrel_offset and use in toc_relative_expr_p call.
25428         (print_operand, print_operand_address): Use static tocrel_base_oac
25429         and tocrel_offset_oac.
25430         (rs6000_output_addr_const_extra): Use static tocrel_base_oac and
25431         tocrel_offset_oac.
25432
25433 2017-06-29  Maya Rashish  <coypu@sdf.org>
25434
25435         * config/vax/builtins.md (ffssi2_internal): Correct constraint.
25436
25437 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
25438
25439         * expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
25440         objects, take into account only the alignment of 'op0' and 'mode1' if
25441         'op0' is a MEM.
25442
25443 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
25444
25445         * ccmp.c (ccmp_tree_comparison_p): New function.
25446         (ccmp_candidate_p): Update to use above function.
25447         (get_compare_parts): New function.
25448         (expand_ccmp_next): Update to use new functions.
25449         (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
25450         new functions.
25451         (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
25452         take mode as argument.
25453         * ccmp.h (expand_ccmp_expr): Add mode as argument.
25454         * expr.c (expand_expr_real_1): Pass mode as argument.
25455
25456 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
25457
25458         * combine.c (combine_instructions): Print insns to dump_file, together
25459         with their costs.
25460
25461 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25462
25463         * asan.c (asan_emit_stack_protection): Update.
25464         (create_cond_insert_point): Update.
25465         * auto-profile.c (afdo_propagate_circuit): Update.
25466         * basic-block.h (struct edge_def): Turn probability to
25467         profile_probability.
25468         (EDGE_FREQUENCY): Update.
25469         * bb-reorder.c (find_traces_1_round): Update.
25470         (better_edge_p): Update.
25471         (sanitize_hot_paths): Update.
25472         * cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
25473         (make_single_succ_edge): Update.
25474         (check_bb_profile): Update.
25475         (dump_edge_info): Update.
25476         (update_bb_profile_for_threading): Update.
25477         * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
25478         probabilitycount to 0.
25479         * cfgbuild.c (compute_outgoing_frequencies): Update.
25480         * cfgcleanup.c (try_forward_edges): Update.
25481         (outgoing_edges_match): Update.
25482         (try_crossjump_to_edge): Update.
25483         * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
25484         (expand_gimple_tailcall): Update.
25485         (construct_init_block): Use make_single_succ_edge.
25486         (construct_exit_block): Use make_single_succ_edge.
25487         * cfghooks.c (verify_flow_info): Update.
25488         (redirect_edge_succ_nodup): Update.
25489         (split_edge): Update.
25490         (account_profile_record): Update.
25491         * cfgloopanal.c (single_likely_exit): Update.
25492         * cfgloopmanip.c (scale_loop_profile): Update.
25493         (set_zero_probability): Remove.
25494         (duplicate_loop_to_header_edge): Update.
25495         * cfgloopmanip.h (loop_version): Update prototype.
25496         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
25497         (force_nonfallthru_and_redirect): Update.
25498         (update_br_prob_note): Update.
25499         (rtl_verify_edges): Update.
25500         (purge_dead_edges): Update.
25501         (rtl_lv_add_condition_to_bb): Update.
25502         * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
25503         * cgraphunit.c (init_lowered_empty_function): Update.
25504         (cgraph_node::expand_thunk): Update.
25505         * cilk-common.c: Include profile-count.h
25506         * dojump.c (inv): Remove.
25507         (jumpifnot): Update.
25508         (jumpifnot_1): Update.
25509         (do_jump_1): Update.
25510         (do_jump): Update.
25511         (do_jump_by_parts_greater_rtx): Update.
25512         (do_compare_rtx_and_jump): Update.
25513         * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
25514         do_jump_1. do_compare_rtx_and_jump): Update prototype.
25515         * dwarf2cfi.c: Include profile-count.h
25516         * except.c (dw2_build_landing_pads): Use make_single_succ_edge.
25517         (sjlj_emit_dispatch_table): Likewise.
25518         * explow.c: Include profile-count.h
25519         * expmed.c (emit_store_flag_force): Update.
25520         (do_cmp_and_jump): Update.
25521         * expr.c (compare_by_pieces_d::generate): Update.
25522         (compare_by_pieces_d::finish_mode): Update.
25523         (emit_block_move_via_loop): Update.
25524         (store_expr_with_bounds): Update.
25525         (store_constructor): Update.
25526         (expand_expr_real_2): Update.
25527         (expand_expr_real_1): Update.
25528         * expr.h (try_casesi, try_tablejump): Update prototypes.
25529         * gimple-pretty-print.c (dump_probability): Update.
25530         (dump_profile): New.
25531         (dump_gimple_label): Update.
25532         (dump_gimple_bb_header): Update.
25533         * graph.c (draw_cfg_node_succ_edges): Update.
25534         * hsa-gen.c (convert_switch_statements): Update.
25535         * ifcvt.c (cheap_bb_rtx_cost_p): Update.
25536         (find_if_case_1): Update.
25537         (find_if_case_2): Update.
25538         * internal-fn.c (expand_arith_overflow_result_store): Update.
25539         (expand_addsub_overflow): Update.
25540         (expand_neg_overflow): Update.
25541         (expand_mul_overflow): Update.
25542         (expand_vector_ubsan_overflow): Update.
25543         * ipa-cp.c (good_cloning_opportunity_p): Update.
25544         * ipa-split.c (split_function): Use make_single_succ_edge.
25545         * ipa-utils.c (ipa_merge_profiles): Update.
25546         * loop-doloop.c (add_test): Update.
25547         (doloop_modify): Update.
25548         * loop-unroll.c (compare_and_jump_seq): Update.
25549         (unroll_loop_runtime_iterations): Update.
25550         * lra-constraints.c (lra_inheritance): Update.
25551         * lto-streamer-in.c (input_cfg): Update.
25552         * lto-streamer-out.c (output_cfg): Update.
25553         * mcf.c (adjust_cfg_counts): Update.
25554         * modulo-sched.c (sms_schedule): Update.
25555         * omp-expand.c (expand_omp_for_init_counts): Update.
25556         (extract_omp_for_update_vars): Update.
25557         (expand_omp_ordered_sink): Update.
25558         (expand_omp_for_ordered_loops): Update.
25559         (expand_omp_for_generic): Update.
25560         (expand_omp_for_static_nochunk): Update.
25561         (expand_omp_for_static_chunk): Update.
25562         (expand_cilk_for): Update.
25563         (expand_omp_simd): Update.
25564         (expand_omp_taskloop_for_outer): Update.
25565         (expand_omp_taskloop_for_inner): Update.
25566         * omp-simd-clone.c (simd_clone_adjust): Update.
25567         * optabs.c (expand_doubleword_shift): Update.
25568         (expand_abs): Update.
25569         (emit_cmp_and_jump_insn_1): Update.
25570         (expand_compare_and_swap_loop): Update.
25571         * optabs.h (emit_cmp_and_jump_insns): Update prototype.
25572         * predict.c (predictable_edge_p): Update.
25573         (edge_probability_reliable_p): Update.
25574         (set_even_probabilities): Update.
25575         (combine_predictions_for_insn): Update.
25576         (combine_predictions_for_bb): Update.
25577         (propagate_freq): Update.
25578         (estimate_bb_frequencies): Update.
25579         (force_edge_cold): Update.
25580         * profile-count.c (profile_count::dump): Add missing space into dump.
25581         (profile_count::debug): Add newline.
25582         (profile_count::differs_from_p): Explicitly convert to unsigned.
25583         (profile_count::stream_in): Update.
25584         (profile_probability::dump): New member function.
25585         (profile_probability::debug): New member function.
25586         (profile_probability::differs_from_p): New member function.
25587         (profile_probability::differs_lot_from_p): New member function.
25588         (profile_probability::stream_in): New member function.
25589         (profile_probability::stream_out): New member function.
25590         * profile-count.h (profile_count_quality): Rename to ...
25591         (profile_quality): ... this one.
25592         (profile_probability): New.
25593         (profile_count): Update.
25594         * profile.c (compute_branch_probabilities): Update.
25595         * recog.c (peep2_attempt): Update.
25596         * sched-ebb.c (schedule_ebbs): Update.
25597         * sched-rgn.c (find_single_block_region): Update.
25598         (compute_dom_prob_ps): Update.
25599         (schedule_region): Update.
25600         * sel-sched-ir.c (compute_succs_info): Update.
25601         * stmt.c (struct case_node): Update.
25602         (do_jump_if_equal): Update.
25603         (get_outgoing_edge_probs): Update.
25604         (conditional_probability): Update.
25605         (emit_case_dispatch_table): Update.
25606         (expand_case): Update.
25607         (expand_sjlj_dispatch_table): Update.
25608         (emit_case_nodes): Update.
25609         * targhooks.c: Update.
25610         * tracer.c (better_p): Update.
25611         (find_best_successor): Update.
25612         * trans-mem.c (expand_transaction): Update.
25613         * tree-call-cdce.c: Update.
25614         * tree-cfg.c (gimple_split_edge): Upate.
25615         (move_sese_region_to_fn): Upate.
25616         * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
25617         * tree-eh.c (lower_resx): Upate.
25618         (cleanup_empty_eh_move_lp): Upate.
25619         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25620         * tree-inline.c (copy_edges_for_bb): Update.
25621         (copy_cfg_body): Update.
25622         * tree-parloops.c (gen_parallel_loop): Update.
25623         * tree-profile.c (gimple_gen_ic_func_profiler): Update.
25624         (gimple_gen_time_profiler): Update.
25625         * tree-ssa-dce.c (remove_dead_stmt): Update.
25626         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
25627         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
25628         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
25629         (unloop_loops): Update.
25630         (try_peel_loop): Update.
25631         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25632         * tree-ssa-loop-split.c (connect_loops): Update.
25633         (split_loop): Update.
25634         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25635         (hoist_guard): Update.
25636         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
25637         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
25638         (value_replacement): Update.
25639         * tree-ssa-reassoc.c (branch_fixup): Update.
25640         * tree-ssa-tail-merge.c (replace_block_by): Update.
25641         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
25642         (create_edge_and_update_destination_phis): Update.
25643         (compute_path_counts): Update.
25644         (recompute_probabilities): Update.
25645         (update_joiner_offpath_counts): Update.
25646         (freqs_to_counts_path): Update.
25647         (duplicate_thread_path): Update.
25648         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
25649         (struct switch_conv_info): Update.
25650         (gen_inbound_check): Update.
25651         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
25652         (vect_do_peeling): Update.
25653         (vect_loop_versioning): Update.
25654         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25655         (optimize_mask_stores): Update.
25656         * ubsan.c (ubsan_expand_null_ifn): Update.
25657         * value-prof.c (gimple_divmod_fixed_value): Update.
25658         (gimple_divmod_fixed_value_transform): Update.
25659         (gimple_mod_pow2): Update.
25660         (gimple_mod_pow2_value_transform): Update.
25661         (gimple_mod_subtract): Update.
25662         (gimple_mod_subtract_transform): Update.
25663         (gimple_ic): Update.
25664         (gimple_stringop_fixed_value): Update.
25665         (gimple_stringops_transform): Update.
25666         * value-prof.h: Update.
25667
25668 2017-06-29  Carl Love  <cel@us.ibm.com>
25669
25670         * config/rs6000/rs6000-c.c: Add support for built-in functions
25671         vector signed int vec_signed (vector float);
25672         vector signed long long vec_signed (vector double);
25673         vector signed int vec_signed2 (vector double, vector double);
25674         vector signed int vec_signede (vector double);
25675         vector signed int vec_signedo (vector double);
25676         * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
25677         instruction generator.
25678         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
25679         UNSPEC_VSX_VSIGNED2): Add UNSPECS.
25680         (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
25681         Add define_insn.
25682         (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
25683         vunsignede_v2df): Add define_expands.
25684         * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
25685         VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
25686         VEC_UNSIGNEDO): Add definitions.
25687         * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
25688         UNSPEC_VSX_VSIGNED2): Add UNSPECs.
25689         (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
25690         (vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
25691         vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
25692         * config/rs6000/altivec.h (vec_signed, vec_signed2,
25693         vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
25694         vec_unsignede, vec_unsignedo): Add builtin defines.
25695         * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
25696         declaration.
25697         * doc/extend.texi: Update the built-in documentation file for the
25698         new built-in functions.
25699
25700 2017-06-29  Richard Biener  <rguenther@suse.de>
25701
25702         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
25703         reduction chains to LOOP_VINFO_REDUCTIONS.
25704         * tree-vect-slp.c (vect_analyze_slp): Continue looking for
25705         SLP reductions after processing reduction chains.
25706
25707 2017-06-29  Nathan Sidwell  <nathan@acm.org>
25708
25709         * builtins.c (fold_builtin_FUNCTION): Use
25710         lang_hooks.decl_printable_name.
25711
25712 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
25713
25714         PR middle-end/81194
25715         * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
25716         with only one label.
25717         * stmt.c (expand_case): Assert NCASES is greater than one.
25718
25719 2017-06-29  Richard Biener  <rguenther@suse.de>
25720
25721         * tree-cfg.c (group_case_labels_stmt): Return whether we changed
25722         anything.
25723         (group_case_labels): Likewise.
25724         (find_taken_edge): Push sanity checking on val to workers...
25725         (find_taken_edge_cond_expr): ... here
25726         (find_taken_edge_switch_expr): ... and here, handle cases
25727         with just a default label.
25728         * tree-cfg.h (group_case_labels_stmt): Adjust prototype.
25729         (group_case_labels): Likewise.
25730         * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
25731         group_case_labels does anything cleanup the CFG again.
25732
25733 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
25734
25735         PR tree-optimization/81196
25736         * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
25737         exit condition comparing two IVs.
25738
25739 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
25740
25741         * config/arm/parsecpu.awk (gen_comm_data): Add initializer for
25742         profile to the dummy entry at the end of the list of architectures.
25743         * config/arm/arm-cpu-cdata.h: Regenerated.
25744
25745 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25746             Michael Collison <michael.collison@arm.com>
25747
25748         PR target/70119
25749         * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
25750         New pattern.
25751         (*aarch64_reg_<mode>3_neg_mask2): New pattern.
25752         (*aarch64_reg_<mode>3_minus_mask): New pattern.
25753         (*aarch64_<optab>_reg_di3_mask2): New pattern.
25754         * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
25755         of shift when the shift amount is masked with constant equal to
25756         the size of the mode.
25757         * config/aarch64/predicates.md (subreg_lowpart_operator): New
25758         predicate.
25759
25760 2017-06-29  Martin Liska  <mliska@suse.cz>
25761
25762         * config/i386/i386.opt: Change range from [1,5] to [0,5].
25763
25764 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
25765
25766         PR bootstrap/80565
25767         * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
25768         code.
25769         * ipa-inline.h
25770         (edge_growth_cache_entry::edge_growth_cache_entry): New
25771         function.
25772         (reset_edge_growth_cache): Update to use constructor.
25773
25774 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25775
25776         * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
25777         (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
25778         (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
25779
25780 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
25781
25782         * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
25783         (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
25784
25785 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
25786
25787         * config.gcc (*-linux-musl*): Add t-musl tmake_file.
25788         (*-linux-uclibc*): Add t-uclibc tmake_file.
25789         * config/t-musl: New.
25790         * config/t-uclibc: New.
25791
25792 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
25793
25794         * config/arm/parsecpu.awk (profile): Parse new keyword in an arch
25795         context.
25796         (gen_comm_data): Emit architectural setting of arch_prof.
25797         * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
25798         profile.
25799         (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
25800         (armv8-m.base, armv8-m.main): Likewise.
25801         * arm-protos.h (arm_build_target): Add profile field.
25802         (arch_option): Likewise.
25803         * config/arm/arm.c (arm_configure_build_target): Copy the profile to
25804         the active target.
25805         * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
25806         arm_active_target.profile.
25807
25808 2017-06-28  Richard Biener  <rguenther@suse.de>
25809
25810         PR middle-end/81227
25811         * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
25812         TYPE_OVERFLOW_WRAPS.
25813         * match.pd (negate_expr_p): Likewise.
25814         * tree-ssa-reassoc.c (optimize_range_tests_diff): Use
25815         fold_build2, not fold_binary.
25816
25817 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25818
25819         * config/aarch64/aarch64 (aarch64_expand_mov_immediate):
25820         Convert memory address to Pmode.
25821         (aarch64_print_operand): Assert MEM operands are always Pmode.
25822
25823 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25824
25825         PR target/79665
25826         * config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
25827         Remove redundant if.
25828         (aarch_forward_to_shift_is_not_shifted_reg): Remove.
25829         * config/arm/aarch-common-protos.h
25830         (aarch_forward_to_shift_is_not_shifted_re): Remove.
25831         * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
25832
25833 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
25834
25835         PR ipa/81238
25836         * multiple_target.c (create_dispatcher_calls): Set the default
25837         clone to be static, not public.
25838
25839 2017-06-28  Richard Biener  <rguenther@suse.de>
25840
25841         * tree-vect-loop.c (vectorizable_reduction): Move special
25842         cond reduction IV var creation ...
25843         (vect_create_epilog_for_reduction): ... here.  Remove induction_index
25844         parameter.  Use STMT_VINFO_VECTYPE.
25845         * tree-vect-slp.c (vect_get_constant_vectors): Properly reset
25846         constant_p.
25847
25848 2017-06-28  Martin Liska  <mliska@suse.cz>
25849
25850         PR ipa/81128
25851         * ipa-visibility.c (non_local_p): Handle visibility.
25852
25853 2017-06-28  Martin Liska  <mliska@suse.cz>
25854
25855         PR driver/79659
25856         * common.opt: Add IntegerRange to various options.
25857         * opt-functions.awk (integer_range_info): New function.
25858         * optc-gen.awk: Add integer_range_info to cl_options struct.
25859         * opts-common.c (decode_cmdline_option): Handle
25860         CL_ERR_INT_RANGE_ARG.
25861         (cmdline_handle_error): Likewise.
25862         * opts.c (print_filtered_help): Show valid interval in
25863         when --help is provided.
25864         * opts.h (struct cl_option): Add range_min and range_max fields.
25865         * config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
25866
25867 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
25868
25869         * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
25870         (x * C EQ/NE y * C): New transformation.
25871
25872 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
25873
25874         * genmultilib (combination_space): Accept '+' in option names.
25875
25876 2017-06-28  Martin Liska  <mliska@suse.cz>
25877
25878         PR sanitizer/81224
25879         * asan.c (instrument_derefs): Bail out inner references
25880         that are hard register variables.
25881
25882 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
25883
25884         PR target/81175
25885         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
25886         rather than def_builtin_pure for __builtin_ia32_gatherpf*.
25887
25888 2017-06-28  Richard Biener  <rguenther@suse.de>
25889
25890         * tree-vectorizer.h (vect_get_vec_defs): Remove.
25891         (vect_get_slp_defs): Adjust.
25892         * tree-vect-loop.c (get_initial_defs_for_reduction): Split
25893         out from ...
25894         * tree-vect-slp.c (vect_get_constant_vectors): ... here and
25895         simplify.
25896         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
25897         get_initial_defs_for_reduction instead of vect_get_vec_defs.
25898         (vectorizable_reduction): Adjust.
25899         * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
25900         handling.
25901         (vect_get_slp_defs): Likewise.
25902         * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
25903         (vectorizable_bswap): Adjust.
25904         (vectorizable_call): Likewise.
25905         (vectorizable_conversion): Likewise.
25906         (vectorizable_assignment): Likewise.
25907         (vectorizable_shift): Likewise.
25908         (vectorizable_operation): Likewise.
25909         (vectorizable_store): Likewise.
25910         (vectorizable_condition): Likewise.
25911         (vectorizable_comparison): Likewise.
25912
25913 2017-06-28  Michael Collison  <michael.collison@arm.com>
25914
25915         PR target/68535
25916         * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
25917         set of base_reg
25918         (arm_gen_movmemqi): Removed unused variable 'i'.
25919         Convert 'for' loop into 'while' loop.
25920         (arm_expand_prologue): Remove last unnecessary set of insn.
25921         (thumb_pop): Remove unused variable 'pushed_words'.
25922         (thumb_exit): Remove last unnecessary set of regs_to_pop.
25923
25924 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25925
25926         * config/s390/predicates.md: Use s390_rel_address_ok_p.
25927         * config/s390/s390-protos.h: Add prototype of
25928         s390_rel_address_ok_p.
25929         * config/s390/s390.c (s390_got_symbol): New function.
25930         (s390_rel_address_ok_p): New function.
25931         (legitimize_pic_address): Use s390_rel_address_ok_p.
25932         (s390_load_got): Use s390_got_symbol.
25933         (s390_option_override): Issue error if
25934         -mno-pic-data-is-text-relative is used without -fpic/-fPIC.
25935         * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
25936         New macro.
25937         * config/s390/s390.opt: New option mpic-data-is-text-relative.
25938
25939 2017-06-27  Andrew Pinski  <apinski@cavium.com>
25940
25941         * match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
25942         (X * copysign (1.0, X)): New pattern.
25943         (X * copysign (1.0, -X)): New pattern.
25944         (copysign (-1.0, CST)): New pattern.
25945
25946 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
25947
25948         * genmultilib (combination_space): Remove variable.
25949         Validate reuse rules against regular expression for any sequence
25950         of multilib options in any order.
25951
25952 2017-06-27  Michael Collison  <michael.collison@arm.com>
25953
25954         * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
25955         call aarch64_split_simd_combine.
25956         * (aarch64_combine_internal<mode>): Delete pattern.
25957         * config/aarch64/aarch64.c (aarch64_split_simd_combine):
25958         Allow register and subreg operands.
25959
25960 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25961
25962         * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
25963         specific need, just fallback on defaults.
25964         (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
25965
25966 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25967             Olivier Hainque  <hainque@adacore.com>
25968
25969         * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
25970         map for 64bits.
25971         (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
25972         targets. Pick a default if no particular attempt applied.
25973         (STACK_CHECK_PROTECT): Double for 64bit targets, which have
25974         larger contexts.
25975
25976 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25977
25978         * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
25979         (x86_64-wrs-vxworks7): Likewise.
25980
25981 2017-06-27  Marek Polacek  <polacek@redhat.com>
25982
25983         PR sanitizer/81223
25984         * ubsan.c (instrument_null): Check get_base_address's result for null.
25985
25986 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25987
25988         * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
25989
25990 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25991
25992         * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
25993         BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
25994         (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
25995         BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
25996         New function types.
25997         * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
25998         BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
25999         BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
26000         BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
26001         BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
26002         BUILT_IN_FEUPDATEENV): New builtins.
26003         * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
26004         TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
26005         * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
26006         fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
26007         macros.
26008         (builtin_structptr_types): Adjust size.
26009         * tree.c (builtin_structptr_types): Add four entries.
26010
26011 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26012             Olivier Hainque  <hainque@adacore.com>
26013
26014         * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
26015         (TLS_SYM): New local macro, forcing reference to __tls__ on
26016         link command lines for VxWorks 7 RTPs, triggering initialization
26017         of tlsLib.
26018         (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
26019         OS features TLS support, true for RTPs on VxWorks 7.
26020         * config/vxworks.c (vxworks_override_options): Setup emutls
26021         accordingly.
26022
26023 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26024
26025         * predict.c (test_prediction_value_range): Use -1U instead of -1
26026         to avoid narrowing conversion warning.
26027         * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
26028         to avoid narrowing conversion warning.
26029         * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
26030         -1.
26031         * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
26032
26033 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26034
26035         * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
26036         64bit configurations.
26037         (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
26038         (SIZE_TYPE): Likewise.
26039         * config/vxworks.c (vxworks_emutls_var_fields): Use
26040         long_unsigned_type_node instead of unsigned_type_node as the offset
26041         field type, which is "pointer" mode in emutls.c.
26042
26043 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26044
26045         PR sanitizer/81209
26046         * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
26047
26048         PR middle-end/81207
26049         * gimple-fold.c (replace_call_with_call_and_fold): Handle
26050         gimple_vuse copying separately from gimple_vdef copying.
26051
26052 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26053
26054         * value-prof.c (free_hist): Remove call to memset and the enclosing if
26055         condition.
26056
26057 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26058             Olivier Hainque  <hainque@adacore.com>
26059
26060         * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
26061         for all vxworks7 targets.
26062         * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
26063         (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
26064         (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
26065         variations for VX6/VX7 and 32/64bits later on in ...
26066         (VXWORKS_LIB_SPEC): Leverage new macros.
26067         (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
26068         as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
26069
26070 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26071
26072         * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
26073         _VX_TOOL_FAMILY and _VX_TOOL to gnu.
26074
26075 2017-06-26  Carl Love  <cel@us.ibm.com>
26076
26077         * config/rs6000/rs6000-c.c: Add support for built-in functions
26078         vector bool char vec_reve (vector bool char);
26079         vector signed char vec_reve (vector signed char);
26080         vector unsigned char vec_reve (vector unsigned char);
26081         vector bool int vec_reve (vector bool int);
26082         vector signed int vec_reve (vector signed int);
26083         vector unsigned int vec_reve (vector unsigned int);
26084         vector bool long long vec_reve (vector bool long long);
26085         vector signed long long vec_reve (vector signed long long);
26086         vector unsigned long long vec_reve (vector unsigned long long);
26087         vector bool short vec_reve (vector bool short);
26088         vector signed short vec_reve (vector signed short);
26089         vector double vec_reve (vector double);
26090         vector float vec_reve (vector float);
26091         * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
26092         VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
26093         * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
26094         (altivec_vreve): New pattern.
26095         * config/rs6000/altivec.h (vec_reve): New define.
26096         * doc/extend.texi (vec_rev): Update the built-in documentation file
26097         for the new built-in functions.
26098
26099 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
26100
26101         PR tree-optimization/71815
26102         * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
26103         function.
26104         (find_basis_for_candidate): Call uses_consumed_by_stmt rather than
26105         has_single_use.
26106         (slsr_process_phi): Likewise.
26107         (replace_uncond_cands_and_profitable_phis): Don't replace a
26108         multiply candidate with a stride of 1 (copy or cast).
26109         (phi_incr_cost): Call uses_consumed_by_stmt rather than
26110         has_single_use.
26111         (lowest_cost_path): Likewise.
26112         (total_savings): Likewise.
26113
26114 2017-06-26  Richard Biener  <rguenther@suse.de>
26115
26116         PR target/81175
26117         * config/i386/i386.c (ix86_init_mmx_sse_builtins):
26118         Use def_builtin_pure for all gather builtins.
26119
26120 2017-06-26  Richard Biener  <rguenther@suse.de>
26121
26122         PR tree-optimization/81203
26123         * tree-tailcall.c (find_tail_calls): Do not move stmts into
26124         non-dominating BBs.
26125
26126 2017-06-26  Marek Polacek  <polacek@redhat.com>
26127
26128         PR c/80116
26129         * doc/invoke.texi: Document -Wmultistatement-macros.
26130
26131 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
26132
26133         * doc/sourcebuild.texi (ARM-specific attributes): Document new
26134         arm_neon_ok_no_float_abi effective target.
26135
26136 2017-06-26  Richard Biener  <rguenther@suse.de>
26137
26138         PR tree-optimization/80928
26139         * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
26140         (copy_bbs): Set BB_DUPLICATED flag early.
26141         (execute_on_growing_pred): Do not execute for BB_DUPLICATED
26142         marked blocks.
26143         (execute_on_shrinking_pred): Likewise.
26144         * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
26145         BB_DUPLICATED blocks.
26146         * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
26147         iterate over all PHIs considering removal of *gsi.
26148
26149 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
26150
26151         * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
26152         qdf24xx.
26153
26154 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
26155
26156         * config/rs6000/rs6000-string.c: (expand_block_clear,
26157         do_load_for_compare, select_block_compare_mode,
26158         compute_current_alignment, expand_block_compare,
26159         expand_strncmp_align_check, expand_strn_compare,
26160         expand_block_move, rs6000_output_load_multiple)
26161         Move functions related to string/block move/compare
26162         to a separate file.
26163         * config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
26164         * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
26165         for this function which is now used in two files.
26166         * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
26167         * config.gcc: Add rs6000-string.o to extra_objs for
26168         targets powerpc*-*-* and rs6000*-*-*.
26169
26170 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
26171
26172         PR target/80510
26173         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
26174         32-bit, since indexed is not valid for DImode.
26175         (mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
26176         3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
26177         (define_peephole2 for Altivec d-form load): Add 32-bit support.
26178         (define_peephole2 for Altivec d-form store): Likewise.
26179
26180         PR ipa/81185
26181         * multiple_target.c (create_dispatcher_calls): Only create the
26182         dispatcher call if the function is the default clone of a
26183         versioned function.
26184
26185 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
26186
26187         PR middle-end/80902
26188         * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
26189         a call, force the call to not be a tail call.
26190
26191 2017-06-23  Jeff Law  <law@redhat.com>
26192
26193         * doc/contrib.texi: Add entry for Steven Pemberton's work on
26194         enquire.
26195
26196 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
26197
26198         * config/rs6000/rs6000.c: Add include of ssa-propagate.h for
26199         update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
26200         handling for early expansion of vector shifts (sl,sr,sra,rl).
26201         (builtin_function_type): Add vector shift right instructions
26202         to the unsigned argument list.
26203
26204 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
26205
26206         rtl-optimizatoin/79286
26207         * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
26208         * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
26209         trap.  PIC register plus a const unspec without offset can never trap.
26210
26211 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
26212
26213         * tree.h (builtin_structptr_type): New type.
26214         (builtin_structptr_types): Declare new array.
26215         * tree.c (builtin_structptr_types): New array.
26216         (free_lang_data, build_common_tree_nodes): Use it.
26217
26218 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
26219
26220         PR c++/81187
26221         * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
26222         -Wnoexcept.
26223
26224 2017-06-22  Matt Turner  <mattst88@gmail.com>
26225
26226         * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
26227         Lake models to skylake case.  Assume skylake for unknown
26228         models with clflushopt.
26229
26230 2017-06-22  Jeff Law  <law@redhat.com>
26231
26232         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
26233         frame sizes that do not satisfy aarch64_uimm12_shift.
26234
26235 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
26236
26237         * profile-count.h (apply_probability,
26238         apply_scale, probability_in): Fix checks for zero.
26239
26240 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26241
26242         * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
26243         * doc/cppdiropts.texi (-I @var{dir}): Document it.
26244
26245 2016-06-22  Richard Biener  <rguenther@suse.de>
26246
26247         * tree-vect-loop.c (vect_model_reduction_cost): Handle
26248         COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
26249         REDUC_MAX_EXPR support.
26250         (vectorizable_reduction): Likewise.
26251         (vect_create_epilog_for_reduction): Likewise.
26252
26253 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
26254
26255         * match.pd (A / (1 << B) -> A >> B): New.
26256         * generic-match-head.c: Include optabs-tree.h.
26257         * gimple-match-head.c: Likewise.
26258         * optabs-tree.h (target_supports_op_p): New.
26259         * optabs-tree.c (target_supports_op_p): New.
26260
26261 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26262
26263         * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
26264         $gcc_cv_ld --help output.
26265         (gcc_cv_ld_demangle): Likewise.
26266         (gcc_cv_ld_eh_frame_hdr): Likewise.
26267         (gcc_cv_ld_pie): Likewise.
26268         (gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
26269         (gcc_cv_ld_buildid): Likewise.
26270         (gcc_cv_ld_sysroot): Likewise.
26271         (ld_bndplt_support): Likewise.
26272         (ld_pushpopstate_support): Likewise.
26273         * configure: Regenerate.
26274         * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
26275
26276 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26277
26278         PR target/81151
26279         * config/i386/sse.md (round<mode>2): Renumber match_dup and
26280         operands indexes to avoid gap between operands and match_dups.
26281
26282 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26283
26284         * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
26285         Increment Arith_shift and Arith_shift_reg by 1.
26286         * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
26287         New tuning flag.
26288         * config/aarch64/aarch64.c (thunderx_tunings): Enable
26289         AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
26290         (aarch64_strip_extend): Add new argument and test for it.
26291         (aarch64_cheap_mult_shift_p): New function.
26292         (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
26293         add a cost if it is true.
26294         Update calls to aarch64_strip_extend.
26295         (aarch64_rtx_costs): Update calls to aarch64_strip_extend.
26296
26297 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26298
26299         * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
26300         tunings.
26301         (thunderxt88): Likewise.
26302         * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
26303         (thunderx_prefetch_tune): New variable.
26304         (thunderx2t99_prefetch_tune): Update for the correct values.
26305         (thunderxt88_tunings): New variable.
26306         (thunderx_tunings): Use thunderx_prefetch_tune instead of
26307         generic_prefetch_tune.
26308         (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
26309
26310 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26311
26312         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
26313         SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
26314         (aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
26315         (aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
26316         (aarch64_atomic_cas<mode>, GPI): Likewise.
26317
26318 2017-06-21  Martin Liska  <mliska@suse.cz>
26319
26320         * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
26321         statements on cold and hot labels.
26322         * predict.c (tree_estimate_probability_bb): Remove the
26323         prediction from this place.
26324
26325 2017-06-21  Martin Liska  <mliska@suse.cz>
26326
26327         PR tree-optimization/79489
26328         * gimplify.c (maybe_add_early_return_predict_stmt): New
26329         function.
26330         (gimplify_return_expr): Call the function.
26331         * predict.c (tree_estimate_probability_bb): Remove handling
26332         of early return.
26333         * predict.def: Update comment about early return predictor.
26334         * gimple-predict.h (is_gimple_predict): New function.
26335         * predict.def: Change default value of early return to 66.
26336         * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
26337         statements.
26338         * passes.def: Put pass_strip_predict_hints to the beginning of
26339         IPA passes.
26340
26341 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
26342
26343         * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
26344         FUNCTION_DECL declarations.
26345         (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
26346         declarations.
26347         (dwaf2out_decl): Likewise.
26348         * godump.c (go_early_global_decl): Skip call to the real debug hook
26349         for FUNCTION_DECL declarations.
26350         * passes.c (rest_of_decl_compilation): Skip call to the
26351         early_global_decl debug hook for FUNCTION_DECL declarations, unless
26352         -fdump-go-spec is passed.
26353
26354 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26355
26356         * config/i386/i386.c (struct builtin_isa): New field pure_p.
26357         Reorder for compactness.
26358         (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
26359         (def_builtin_pure, def_builtin_pure2): New functions.
26360         (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
26361
26362 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26363
26364         * match.pd (nop_convert): New predicate.
26365         ((A +- CST1) +- CST2): Allow some NOP conversions.
26366
26367 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26368
26369         PR c++/81130
26370         * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
26371         with ctors/dtors if GOVD_SHARED is set.
26372
26373 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26374
26375         * config/aarch64/aarch64.md (movti_aarch64):
26376         Emit mov rather than orr.
26377         (movtf_aarch64): Likewise.
26378         * config/aarch64/aarch64-simd.md (aarch64_simd_mov):
26379         Emit mov rather than orr.
26380
26381 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26382
26383         * config/aarch64/aarch64-simd.md (aarch64_simd_dup):
26384         Swap alternatives, make integer dup more expensive.
26385
26386 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26387
26388         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
26389         Return true for non-tls symbols.
26390
26391 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
26392
26393         * config/aarch64/aarch64-cores.def (cortex-a55): New.
26394         (cortex-a75): Likewise.
26395         (cortex-a75.cortex-a55): Likewise.
26396         * config/aarch64/aarch64-tune.md: Regenerate.
26397         * doc/invoke.texi (-mtune): Document new values for -mtune.
26398
26399 2017-06-21  Tom de Vries  <tom@codesourcery.com>
26400
26401         * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
26402         stack_size feature.
26403         (Effective-Target Keywords, Other attributes): Suggest using
26404         dg-add-options stack_size feature to get stack limit in stack_size
26405         effective target documentation.
26406
26407 2017-06-21  Julian Brown  <julian@codesourcery.com>
26408             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
26409
26410         * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
26411         (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
26412         * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
26413         reservation.
26414         * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
26415         attribute type list for neon_multiply.
26416         * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
26417         attribute type list for neon_multiply.
26418         * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
26419         * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
26420         attribute type list for neon_multiply.
26421         * config/arm/types.md (crypto_pmull): Add.
26422         * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
26423         attribute type list.
26424
26425 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
26426
26427         * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
26428         arm1176jzf-s.
26429
26430 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26431
26432         * ira-costs.c (find_costs_and_classes): Initialize cost_classes later
26433         to make sure not to dereference a NULL cost_classes_ptr pointer.
26434
26435 2017-06-20  Carl Love  <cel@us.ibm.com>
26436
26437         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26438         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
26439         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
26440         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
26441         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
26442         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
26443         VMULOSW): New enum "unspec" values.
26444         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
26445         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
26446         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
26447         altivec_vmulosw): New patterns.
26448         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
26449         VMULOSW): Add definitions.
26450
26451 2017-06-20  Julia Koval  <julia.koval@intel.com>
26452
26453         * config/i386/i386.c: Fix rounding expand for new pattern.
26454         * config/i386/subst.md: Fix pattern (parallel -> unspec).
26455
26456 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26457
26458         * config/aarch64/aarch64-option-extensions.def (rcpc): New.
26459         * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
26460
26461 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26462
26463         * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
26464         feature string.
26465
26466 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26467
26468         * config/aarch64/aarch64-cores.def: Rearrange to sort by
26469         architecture, then by implementer ID.
26470         * config/aarch64/aarch64-tune.md: Regenerate.
26471
26472 2017-06-20  Richard Biener  <rguenther@suse.de>
26473
26474         PR middle-end/81097
26475         * fold-const.c (split_tree): Fold to type before negating.
26476
26477 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
26478
26479         * diagnostic-show-locus.c
26480         (selftest::test_fixit_deletion_affecting_newline): New function.
26481         (selftest::diagnostic_show_locus_c_tests): Call it.
26482
26483 2017-06-20  Andreas Schwab  <schwab@suse.de>
26484
26485         PR target/80970
26486         * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
26487         instead of "+d".
26488
26489 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
26490
26491         * config/arm/arm-c.c (arm_cpu_builtins): New block to define
26492         __ARM_FEATURE_COPROC according to support.
26493
26494 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26495
26496         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
26497         Rewritten to avoid overflow for > 32-bit pointers.
26498
26499         PR sanitizer/81125
26500         * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
26501         by removing enum keyword.
26502         (ubsan_type_descriptor): Likewise.  Formatting fix.
26503
26504         PR target/81121
26505         * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
26506         splitter): Require TARGET_SSE2 in the condition.
26507
26508 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
26509
26510         PR target/79799
26511         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
26512         for doing vector set of SFmode on ISA 3.0.
26513         * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
26514         (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
26515         element.
26516         (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
26517         SFmode value into a V4SF variable that was extracted from another
26518         V4SF variable without converting the element to double precision
26519         and back to single precision vector format.
26520         (vsx_insert_extract_v4sf_p9_2): Likewise.
26521
26522 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
26523
26524         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
26525         in UWHI to avoid undefined overflow.
26526
26527         PR sanitizer/81125
26528         * ubsan.h (enum ubsan_encode_value_phase): New.
26529         (ubsan_encode_value): Change second argument to
26530         enum ubsan_encode_value_phase with default value of
26531         UBSAN_ENCODE_VALUE_GENERIC.
26532         * ubsan.c (ubsan_encode_value): Change second argument to
26533         enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
26534         adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
26535         create_tmp_var_raw instead of create_tmp_var and use a
26536         TARGET_EXPR.
26537         (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
26538         instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
26539         ubsan_encode_value callers.
26540
26541         PR sanitizer/81111
26542         * ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
26543         use create_tmp_var_raw instead of create_tmp_var, mark it addressable
26544         just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
26545
26546 2017-06-19  Richard Biener  <rguenther@suse.de>
26547
26548         PR middle-end/81118
26549         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
26550         estimates if we changed anything.
26551
26552 2017-06-19  Richard Biener  <rguenther@suse.de>
26553
26554         PR tree-optimization/80887
26555         * tree-ssa-sccvn.c (mprts_hook_cnt): New global.
26556         (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
26557         simplified lookups, then reset mprts_hook.
26558         (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
26559         simplifying.
26560         (try_to_simplify): Likewise.
26561
26562 2017-06-19  Martin Liska  <mliska@suse.cz>
26563
26564         PR sanitizer/80879
26565         * gimplify.c (gimplify_switch_expr):
26566         Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
26567
26568 2017-06-19  Martin Liska  <mliska@suse.cz>
26569
26570         * doc/install.texi: Document that PGO runs in 4 stages.
26571
26572 2017-06-19  Martin Liska  <mliska@suse.cz>
26573
26574         PR ipa/80732
26575         * attribs.c (make_dispatcher_decl): Do not append '.ifunc'
26576         to dispatcher function name.
26577         * multiple_target.c (replace_function_decl): New function.
26578         (create_dispatcher_calls): Redirect both edges and references.
26579
26580 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
26581
26582         * profile-count.c (profile_count::dump): Dump quality.
26583         (profile_count::differs_from_p): Update for unsigned val.
26584         * profile-count.h (profile_count_quality): New enum.
26585         (profile_count): Turn m_val to 62bit unsigned, add quality tracking.
26586
26587 2017-06-19  Richard Biener  <rguenther@suse.de>
26588
26589         * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
26590         struct function as arg.
26591         (estimate_numbers_of_iterations): Export overload with loop arg.
26592         (free_numbers_of_iterations_estimates_loop): Use an overload of
26593         free_numbers_of_iterations_estimates instead.
26594         * tree-cfg.c (remove_bb): Adjust.
26595         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
26596         * tree-parloops.c (gen_parallel_loop): Likewise.
26597         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
26598         Likewise.
26599         (tree_unroll_loops_completely): Likewise.
26600         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
26601         Use an overload instead and export.
26602         (estimated_loop_iterations): Adjust.
26603         (max_loop_iterations): Likewise.
26604         (likely_max_loop_iterations): Likewise.
26605         (estimate_numbers_of_iterations): Take struct function as arg
26606         and adjust.
26607         (loop_exits_before_overflow): Adjust.
26608         (free_numbers_of_iterations_estimates_loop): Use an overload.
26609         * tree-vect-loop.c (vect_analyze_loop_form): Adjust.
26610         * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
26611
26612 2017-06-19  Richard Biener  <rguenther@suse.de>
26613
26614         PR ipa/81112
26615         * ipa-prop.c (find_constructor_constant_at_offset): Handle
26616         RANGE_EXPR conservatively.
26617
26618 2017-06-16  Carl Love  <cel@us.ibm.com>
26619
26620         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26621         definitions for vec_float, vec_float2, vec_floato,
26622         vec_floate built-ins.
26623         * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
26624         for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
26625         floate.
26626         * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
26627         FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
26628         UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
26629         * config/altivec.md (define_insn "p8_vmrgew_<mode>",
26630         define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
26631         * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
26632         vec_floato): Add builtin defines.
26633         * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
26634         Update the built-in documentation file for the new built-in
26635         functions.
26636
26637 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26638
26639         * config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
26640         (mthumb): Mark as the negative of -marm.
26641
26642 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26643
26644         * doc/invoke.texi (ARM Options, -mcpu): Document supported
26645         extension options.
26646         (ARM Options, -mtune): Document that this accepts the same
26647         extension options as -mcpu.
26648         (ARM Options, -mfpu): Document addition of -mfpu=auto.
26649
26650 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26651
26652         * doc/invoke.texi (ARM Options, -march=): Document new syntax and
26653         permitted extensions.
26654
26655 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26656
26657         * config/arm/arm-cpus.in (armv7): Add extension +nofp.
26658         (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
26659         (armv8-m.main): Add option +nodsp.
26660         * config/arm/arm-cpu-cdata.h: Regenerated.
26661
26662 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26663
26664         * config/arm/t-fuchsia: New file.
26665         * config.gcc (arm*-*-fuchsia*): Use it.
26666
26667 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26668
26669         * config/arm/t-symbian: Rewrite for new option infrastructure.
26670
26671 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26672
26673         * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
26674         (MULTILIB_REQUIRED): Likewise.
26675
26676 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26677
26678         * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
26679         (MULTILIB_RESUE): Likewise.
26680         (MULTILIB_MATCHES): Likewise.
26681         (MULTLIB_REQUIRED): Likewise.
26682
26683 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26684
26685         * config/arm/t-rtems: Rewrite for new option framework.
26686
26687 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26688
26689         * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
26690         (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
26691         (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
26692         (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
26693         * config/arm/t-multilib: ... here.
26694         (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
26695         (MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
26696         armv7-a and armv8*-a when A-profile libraries have not been built.
26697         * config/arm/t-rmprofile: Rewrite.
26698
26699 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26700
26701         * genmultilib (multilib_reuse): Allow an explicit period to be escaped
26702         with a backslash.  Remove the backslash after substituting unescaped
26703         periods.
26704         * doc/fragments.texi (MULTILIB_REUSE): Document it.
26705
26706 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26707
26708         * config.gcc: (arm*-*-*): When building a-profile libraries, force
26709         the driver to pass through the default setting of -mfloat-abi.
26710         * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
26711         rather than NULL.
26712         * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
26713         (all_feat_combs): New rule.
26714         (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
26715         default libraries.
26716         * config/arm/t-aprofile: Rewrite.
26717
26718 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26719
26720         * config/arm/arm.h (FPUTYPE_AUTO): Define.
26721         * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
26722         fpu is not specified by the user/command-line.
26723         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
26724         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
26725         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
26726         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
26727         * common/config/arm/arm-common.c (arm_canon_arch_option): Use
26728         FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
26729
26730 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26731
26732         * config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
26733         * config/arm/t-arm-elf: Rewritten.
26734
26735 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26736
26737         * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
26738         have some floating-point instructions.
26739         (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
26740         (TARGET_MAYBE_HARD_FLOAT): New macro.
26741         * config/arm/arm-builtins.c (arm_init_builtins): Use
26742         TARGET_MAYBE_HARD_FLOAT.
26743         * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
26744
26745 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26746
26747         * common/config/arm/arm-common.c: Define INCLUDE_LIST.
26748         (configargs.h): Include it.
26749         (arm_print_hint_for_fpu_option): New function.
26750         (arm_parse_fpu_option): New function.
26751         (candidate_extension): New class.
26752         (arm_canon_for_multilib): New function.
26753         * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
26754         (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
26755         (ARCH_CANONICAL_SPECS): New macro.
26756         (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
26757
26758 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26759
26760         * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
26761         are set after handling multilib fragments.  Set target_cpu_default2
26762         from with_cpu.
26763
26764 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26765
26766         * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
26767         cpu name.
26768         (arm*-*-*): Set target_cpu_default2 to a quoted string.
26769         * config/arm/parsecpu.awk (check_cpu): Validate any extension
26770         options.
26771         (check_arch): Likewise.
26772         * config/arm/arm.c (arm_configure_build_target): Handle
26773         TARGET_CPU_DEFAULT being a string constant.  Scan any feature
26774         options in the default.
26775
26776 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26777
26778         * config/arm/arm-protos.h (cpu_arch_extension): Add field to record
26779         when an option is an alias of another.
26780         * config/arm/parsecpu.awk (optalias): New parser token.
26781         (gen_comm_data): Mark non-alias options as such.  Emit entries
26782         for extension aliases.
26783         * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
26784         (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
26785         (armv6kz, armv6zk, armv6t2): Likewise.
26786         (armv7): Make vfpv3-d16 an alias.
26787         (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
26788         canonical order.
26789         (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
26790         Sort in canonical order.
26791         (armv8-a): Sort in canonical order.
26792         (armv8.1-a, armv8.2-a):  Likewise.
26793         (generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
26794         canonical order.
26795         (cortex-a9): Sort in canonical order.
26796         * config/arm/arm.c (selftests.h): Include it.
26797         (arm_test_cpu_arch_data): New function.
26798         (arm_run_self_tests): New function.
26799         (TARGET_RUN_TARGET_SELFTESTS): Redefine.
26800         (targetm): Move declaration to the end of the file.
26801         * arm-cpu-cdata.h: Regenerated.
26802
26803 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26804
26805         * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
26806         call to target_mode_check describing the type of option passed.
26807         * common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
26808         (arm_target_thumb_only): Use arm_parse_arch_option_name or
26809         arm_parse_cpu_option_name to match parameters against list of
26810         available targets.
26811         * config/arm/parsecpu.awk (gen_comm_data): Don't generate
26812         arm_arch_core_flags data structure.
26813         * config/arm/arm-cpu_cdata.h: Regenerated.
26814
26815 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26816
26817         * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
26818         config/arm/arm.c.
26819         (arm_print_hint_for_cpu_option): Likewise.
26820         (arm_print_hint_for_arch_option): Likewise.
26821         (arm_parse_cpu_option_name): Likewise.
26822         (arm_parse_arch_option_name): Likewise.
26823         * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
26824         of entries in the all_fpus list.
26825         * config/arm/arm-protos.h (all_architectures, all_cores): Declare.
26826         (arm_parse_cpu_option_name): Declare.
26827         (arm_parse_arch_option_name): Declare.
26828         (arm_parse_option_features): Declare.
26829         (arm_intialize_isa): Declare.
26830         * config/arm/parsecpu.awk (gen_data): Move CPU and architecture
26831         data tables to ...
26832         (gen_comm_data): ... here.  Make definitions non-static.
26833         * config/arm/arm-cpu-data.h: Regenerated.
26834         * config/arm/arm-cpu-cdata.h: Regenerated.
26835
26836 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26837
26838         * config/arm/arm-protos.h (arm_build_target): Remove arch_core.
26839         (cpu_arch_extension): New structure.
26840         (cpu_arch_option, arch_option, cpu_option): New structures.
26841         * config/arm/parsecpu.awk (gen_headers): Build an enumeration of
26842         architecture types.
26843         (gen_data): Generate new format data tables.
26844         * config/arm/arm.c (cpu_tune): New structure.
26845         (cpu_option, processors): Delete.
26846         (arm_print_hint_for_core_or_arch): Delete.  Replace with ...
26847         (arm_print_hint_for_cpu_option): ... this and ...
26848         (arm_print_hint_for_arch_option): ... this.
26849         (arm_parse_arch_cpu_name): Delete.  Replace with ...
26850         (arm_parse_cpu_option_name): ... this and ...
26851         (arm_parse_arch_option_name): ... this.
26852         (arm_unrecognized_feature): Change type of target parameter to
26853         cpu_arch_option.
26854         (arm_parse_arch_cpu_features): Delete.  Replace with ...
26855         (arm_parse_option_features): ... this.
26856         (arm_configure_build_target): Rework to use new configuration data
26857         tables.
26858         (arm_print_tune_info): Rework for new configuration data tables.
26859         * config/arm/arm-cpu-data.h: Regenerated.
26860         * config/arm/arm-cpu.h: Regenerated.
26861
26862 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26863
26864         * Makefile.in (OBJS): Move sbitmap.o from here ...
26865         (OBJS-libcommon): ... to here.
26866
26867 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26868
26869         * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
26870         (ISA_ALL_CRYPTO): New macro.
26871         (ISA_ALL_SIMD): New macro
26872         (ISA_ALL_FP): New macro.
26873         * config/arm/arm.c (fpu_bitlist): Update initializer.
26874         * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
26875         simd or fp.
26876         (arm9e): Add fpu.  Add option for nofp
26877         (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
26878         (arm926ej-s, arm1026ej-s): Likewise.
26879         (generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
26880         vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
26881         neon-fp16, neon-vfpv4, nofp and nosimd.
26882         (cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
26883         (cortex-a8): Add fpu.  Add option for nofp.
26884         (cortex-a9): Add fpu.  Add options for nosimd and nofp.
26885         (cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
26886         (cortex-r4f): Add fpu.
26887         (cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
26888         (cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
26889         for nofp.
26890         (cortex-r8): Likewise.
26891         (cortex-m4): Add fpu.  Add option for nofp.
26892         (cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
26893         (cortex-a17.cortex-a7): Likewise.
26894         (cortex-a32): Add fpu.  Add options for crypto and nofp.
26895         (cortex-a35, cortex-a53): Likewise.
26896         (cortex-a57): Add fpu.  Add option for crypto.
26897         (cortex-a72, cortex-a73): Likewise.
26898         (exynos-m1): Likewise.
26899         (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
26900         (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
26901         (cortex-m33): Add fpu.  Add option for nofp.
26902         * config/arm/arm-cpu-cdata.h: Regenerated
26903         * config/arm/arm-cpu-data.h: Regenerated.
26904
26905 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26906
26907         * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
26908         (armv5te, armv5tej): Likewise.
26909         (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
26910         (armv7): Add options fp and vfpv3-d16.
26911         (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
26912         vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
26913         nofp and nosimd.
26914         (armv7ve): Likewise.
26915         (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
26916         (armv7e-m): Add options fp, fpv5, fp.dp and nofp.
26917         (armv8-a): Add nocrypto option.
26918         (armv8.1-a, armv8.2-a): Likewise.
26919         (armv8-m.main): add options fp, fp.dp and nofp.
26920
26921 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26922
26923         * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
26924         nofp.
26925         (armv8-a+crc): Delete.
26926         (armv8.1-a): Add options simd, crypto and nofp.
26927         (armv8.2-a): Add options fp16, simd, crypto and nofp.
26928         (armv8.2-a+fp16): Delete.
26929         (armv8-m.main): Add option dsp.
26930         (armv8-m.main+dsp): Delete.
26931         (cortex-a8): Add fpu.  Add nofp option.
26932         (cortex-a9): Add fpu.  Add nofp and nosimd options.
26933         * config/arm/parsecpu.awk (gen_data): Generate option tables and
26934         link to main cpu and architecture data structures.
26935         (gen_comm_data): Only put isa attributes from the main architecture
26936         in common tables.
26937         (option): New statement for architecture and CPU entries.
26938         * arm.c (struct cpu_option): New structure.
26939         (struct processors): Add entry for options.
26940         (arm_unrecognized_feature): New function.
26941         (arm_parse_arch_cpu_name): Ignore any characters after the first
26942         '+' character.
26943         (arm_parse_arch_cpu_feature): New function.
26944         (arm_configure_build_target): Separate out any CPU and architecture
26945         features and parse separately.  Don't error out if -mfpu=auto is
26946         used with only an architecture string.
26947         (arm_print_asm_arch_directives): New function.
26948         (arm_file_start): Call it.
26949         * config/arm/arm-cpu-cdata.h: Regenerated.
26950         * config/arm/arm-cpu-data.h: Likewise.
26951         * config/arm/arm-tables.opt: Likewise.
26952
26953 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26954
26955         * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
26956         assembler when it is not -mfpu=auto.
26957
26958 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26959
26960         * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
26961         (ASM_REWRITE_SPEC_FUNCTIONS): New macro.
26962         (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
26963         (ASM_CPU_SPEC): Rewrite.
26964         (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
26965         (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
26966         MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
26967         reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
26968         * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
26969         copied string is NUL-terminated.  Also strip any characters prefixed
26970         by '+'.
26971         (arm_rewrite_selected_arch): New function.
26972         (arm_rewrite_march): New function.
26973
26974 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26975
26976         * config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
26977         (x_arm_cpu_string, x_arm_tune_string): Likewise.
26978         (march, mcpu, mtune): Convert to string-based options.
26979         * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
26980         (arm_parse_arch_cpu_name): New function.
26981         (arm_configure_build_target): Use arm_parse_arch_cpu_name to
26982         identify selected architecture or CPU.
26983         (arm_option_save): New function.
26984         (TARGET_OPTION_SAVE): Redefine.
26985         (arm_option_restore): Restore string options.
26986         (arm_option_print): Print string options.
26987
26988 2017-06-16  Martin Sebor  <msebor@redhat.com>
26989
26990         PR tree-optimization/80933
26991         PR tree-optimization/80934
26992         * builtins.c (fold_builtin_3): Do not handle bcmp here.
26993         * gimple-fold.c (gimple_fold_builtin_bcmp): New function.
26994         (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
26995         (gimple_fold_builtin): Call them.
26996
26997 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26998
26999         * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
27000         as unlikely; update profile.
27001
27002 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27003
27004         * predict.c (force_edge_cold): Handle declaring edges impossible
27005         more aggresively.
27006
27007 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27008
27009         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
27010         profile.
27011         (try_unroll_loop_completely): Fix reporting.
27012
27013 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27014
27015         * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
27016
27017 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
27018
27019         PR target/71778
27020         * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
27021         if given a non-constant argument for an intrinsic which requires a
27022         constant.
27023
27024 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27025
27026         * profile.c (compare_freqs): New function.
27027         (branch_prob): Sort edge list.
27028         (find_spanning_tree): Assume that the list is priority sorted.
27029
27030 2017-06-16  Richard Biener  <rguenther@suse.de>
27031
27032         PR tree-optimization/81090
27033         * passes.def (pass_record_bounds): Remove.
27034         * tree-pass.h (make_pass_record_bounds): Likewise.
27035         * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
27036         make_pass_record_bounds): Likewise.
27037         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
27038         not free niter estimates at the beginning but at the end.
27039         * tree-scalar-evolution.c (scev_finalize): Free niter estimates.
27040
27041 2017-06-16  Richard Biener  <rguenther@suse.de>
27042
27043         * tree-switch-conversion.c (emit_case_bit_tests): Adjust
27044         initializer to workaround ICE in host GCC 4.8.
27045
27046 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27047
27048         * ipa-inline-transform.c (update_noncloned_frequencies): Update also
27049         counts.
27050         (clone_inlined_nodes): Update.
27051
27052 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27053
27054         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
27055         prefetch settings, and enable prefetching by default at -O3.
27056
27057 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27058
27059         * config/aarch64/aarch64.c (aarch64_override_options_internal):
27060         Set flag_prefetch_loop_arrays according to tuning data.
27061
27062 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27063
27064         * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
27065         New tune structure.
27066         (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
27067         [Unrelated to main purpose of the patch] Place the pointer field last
27068         to enable type checking errors when tune structure are wrongly merged.
27069         * config/aarch64/aarch64.c (generic_prefetch_tune,)
27070         (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
27071         (thunderx2t99_prefetch_tune): New tune constants.
27072         (tune_params *_tunings): Update all tunings (no functional change).
27073         (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
27074         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
27075         from tunings structures.
27076
27077 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
27078
27079         PR sanitizer/81094
27080         * ubsan.c (instrument_null): Add T argument, use it instead
27081         of computing it based on IS_LHS.
27082         (instrument_object_size): Likewise.
27083         (pass_ubsan::execute): Adjust instrument_null and
27084         instrument_object_size callers to pass gimple_get_lhs or
27085         gimple_assign_rhs1 result to it.  Use instrument_null instead of
27086         calling get_base_address and instrument_mem_ref.  Handle
27087         aggregate call arguments for object-size sanitization.
27088
27089 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
27090
27091         PR tree-optimization/81089
27092         * tree-vrp.c (is_masked_range_test): Validate operands of
27093         subexpression.
27094
27095 2017-06-15  Martin Sebor  <msebor@redhat.com>
27096
27097         PR c++/80560
27098         * dumpfile.c (dump_register): Avoid calling memset to initialize
27099         a class with a default ctor.
27100         * gcc.c (struct compiler): Remove const qualification.
27101         * genattrtab.c (gen_insn_reserv): Replace memset with initialization.
27102         * hash-table.h: Ditto.
27103         * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
27104           assignment.
27105         * ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
27106         * omp-low.c (lower_omp_ordered_clauses): Replace memset with
27107         default ctor.
27108         * params.h (struct param_info): Make struct members non-const.
27109         * tree-switch-conversion.c (emit_case_bit_tests): Replace memset
27110         with default initialization.
27111         * vec.h (vec_copy_construct, vec_default_construct): New helper
27112         functions.
27113         (vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
27114         with vec_copy_construct.
27115         (vect<T>::quick_grow_cleared): Replace memset with default ctor.
27116         (vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
27117         * doc/invoke.texi (-Wclass-memaccess): Document.
27118
27119 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27120
27121         * emit-rtl.h (is_leaf): Update comment about local
27122         register allocator.
27123
27124 2017-06-15  Jozef Lawrynowicz   <jozef.l@somniumtech.com>
27125
27126         PR target/78818
27127         * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
27128         for a variable to have a section before checking if the section has a
27129         name.
27130         Set section to.persistent if persistent attribute is set.
27131         Warn if .persistent attribute is used on an automatic variable.
27132
27133 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
27134
27135         PR rtl-optimization/80474
27136         * reorg.c (update_block): Do not ignore instructions in a delay slot.
27137
27138 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
27139
27140         * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
27141         of REGNO.
27142
27143 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
27144
27145         * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
27146         (casesi): Emit bounds checking as RTL.
27147         (casesi_internal_mips16_<mode>): Remove bounds checking.
27148
27149 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
27150
27151         * config/xtensa/xtensa.c (xtensa_option_override): Append
27152         MASK_CONST16 to target_flags in the absence of TARGET_L32R.
27153         (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
27154          xtensa_doloop_hooks): Define unconditionally.
27155         (xtensa_reorg_loops): Only call reorg_loops in the presence of
27156         TARGET_LOOPS.
27157         * config/xtensa/xtensa.h (TARGET_L32R): New definition.
27158         (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
27159         for it in xtensa_option_override.
27160         (HARD_FRAME_POINTER_IS_FRAME_POINTER,
27161          HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
27162
27163 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
27164
27165         * doc/cppopts.texi: Document '-' special value to -MF.
27166
27167 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
27168
27169         * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
27170         (cortex_a53_fconst): Likewise.
27171         (cortex_a53_fpmul): Likewise.
27172         (cortex_a53_f_load_64): Likewise.
27173         (cortex_a53_f_load_many): Likewise.
27174         (cortex_a53_advsimd_alu): Likewise.
27175         (cortex_a53_advsimd_alu_q): Likewise.
27176         (cortex_a53_advsimd_mul): Likewise.
27177         (cortex_a53_advsimd_mul_q): Likewise.
27178         (fpmac bypass): Add new bypass for fpmac-fpmac case.
27179         Add missing fmul, r2f_cvt and fconst cases.
27180
27181 2017-06-14  Richard Biener  <rguenther@suse.de>
27182
27183         PR middle-end/81088
27184         * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
27185         literal constants.
27186         (fold_binary_loc): When associating do not treat pre-existing
27187         TREE_OVERFLOW on literal constants as a reason to allow
27188         TREE_OVERFLOW on associated literal constants.
27189
27190 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27191
27192         * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
27193         (MASK_FEATURES): New macro.
27194         * config/sparc/sparc.c (sparc_option_override): Remove the special
27195         handling of -mfpu and generalize it to all MASK_FEATURES switches.
27196
27197 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27198
27199         * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
27200         a division of 0 if non-call exceptions are enabled.
27201
27202 2017-06-14  Andrew Pinski  <apinski@cavium.com>
27203             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
27204
27205         PR target/71663
27206         * config/aarch64/aarch64.c (aarch64_expand_vector_init):
27207         Improve vector initialization code gen for only variable case.
27208
27209 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27210
27211         * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
27212
27213 2017-06-14  Richard Biener  <rguenther@suse.de>
27214
27215         PR tree-optimization/81083
27216         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
27217         as values.
27218
27219 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27220
27221         * config/rs6000/rs6000.c: Update all comments that mentioned SPE.
27222         (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
27223         * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
27224         * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
27225         * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
27226         * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
27227
27228 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27229
27230         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
27231         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
27232
27233 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27234
27235         * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
27236
27237 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27238
27239         * config/rs6000/t-rtems: Don't handle SPE.
27240
27241 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27242
27243         * config/rs6000/t-linux: Don't handle SPE.
27244
27245 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27246
27247         * config/rs6000/eabispe.h: Delete file.
27248
27249 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27250
27251         * config/rs6000/t-spe: Delete file.
27252
27253 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27254
27255         * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
27256         (rs6000_legitimate_offset_address_p): Return false for anything in
27257         V2SImode or V2SFmode.
27258
27259 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27260
27261         * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
27262         except V2SF and V2SI.  Rearrange the vector modes, and add comments.
27263         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
27264         and V4HImode.
27265         (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
27266         (rs6000_legitimate_offset_address_p): Ditto.
27267         (rs6000_emit_move): Ditto.
27268         (rs6000_init_builtins): Remove V4HI_type_node.
27269
27270 2017-06-13  Martin Liska  <mliska@suse.cz>
27271
27272         PR sanitize/78204
27273         * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
27274         (gate_asan): Likewise.
27275         * asan.h (asan_no_sanitize_address_p): Remove the function.
27276         (sanitize_flags_p): New function.
27277         * builtins.def: Fix coding style.
27278         * common.opt: Use renamed enum value.
27279         * convert.c (convert_to_integer_1): Use sanitize_flags_p.
27280         * doc/extend.texi: Document no_sanitize attribute.
27281         * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
27282         to SANITIZE_UNDEFINED_NONDEFAULT.
27283         * gcc.c (sanitize_spec_function): Use the renamed enum value.
27284         * gimple-fold.c (optimize_atomic_compare_exchange_p):
27285         Use sanitize_flags_p.
27286         * gimplify.c (gimplify_function_tree): Likewise.
27287         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
27288         * opts.c (parse_no_sanitize_attribute): New function.
27289         (common_handle_option): Use renamed enum value.
27290         * opts.h (parse_no_sanitize_attribute): Declare.
27291         * tree.c (sanitize_flags_p): New function.
27292         * tree.h: Declared here.
27293         * tsan.c: Use sanitize_flags_p.
27294         * ubsan.c (ubsan_expand_null_ifn): Likewise.
27295         (instrument_mem_ref): Likewise.
27296         (instrument_bool_enum_load): Likewise.
27297         (do_ubsan_in_current_function): Remove the function.
27298         (pass_ubsan::execute): Use sanitize_flags_p.
27299         * ubsan.h: Remove do_ubsan_in_current_function
27300         * tree-cfg.c (print_no_sanitize_attr_value): New function.
27301         (dump_function_to_file): Use it here.
27302
27303 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27304
27305         PR tree-optimization/80803
27306         PR tree-optimization/81063
27307         * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
27308         (propagate_subaccesses_across_link): Enqueue subtree whenever
27309         necessary instead of relying on the caller.
27310
27311 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27312
27313         * tree-sra.c (add_access_to_work_queue): Only enqueue accesses
27314         that have a first_link.
27315         (sort_and_splice_var_accesses): Do not check first_link before
27316         enquing.
27317         (subtree_mark_written_and_enqueue): Likewise.
27318         (propagate_all_subaccesses): Likewise and do not stop at first
27319         parent with a first_link.
27320
27321 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27322
27323         * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
27324         instead of f.
27325
27326 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27327
27328         * match.pd: New pattern.
27329
27330 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27331
27332         * tree-vrp.c (is_masked_range_test): New function.
27333         (register_edge_assert_for): Determine ranges for
27334         some bit tests.
27335
27336 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27337
27338         PR tree-optimization/67328
27339         * fold-const.c (maskable_range_p): New function.
27340         (build_range_check): Generate bittests if possible.
27341
27342 2017-06-13  Martin Liska  <mliska@suse.cz>
27343
27344         * gimple-pretty-print.c (dump_probability): Add new argument.
27345         (dump_edge_probability): Dump both probability and count.
27346         (dump_gimple_label): Likewise.
27347         (dump_gimple_bb_header): Likewise.
27348
27349 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
27350
27351         PR target/81072
27352         * config/avr/avr-devices.c: Fix indentation.
27353         * config/avr/gen-avr-mmcu-specs.c: Dito.
27354
27355 2017-06-13  Richard Biener  <rguenther@suse.de>
27356
27357         * tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
27358         instead get vector type from stmt_info.
27359         (vectorizable_reduction): Adjust.  Remove dead code.
27360
27361 2017-06-13  Richard Biener  <rguenther@suse.de>
27362
27363         PR middle-end/81065
27364         * fold-const.c (extract_muldiv_1): Remove bogus distribution
27365         case of C * (x * C2 + C3).
27366         (fold_addr_of_array_ref_difference): Properly fold index difference.
27367
27368 2017-06-12  David S. Miller  <davem@davemloft.net>
27369
27370         PR target/80968
27371         * config/sparc/sparc.md (return expander): Emit frame blockage if
27372         function uses alloca.
27373
27374 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
27375
27376         * combine.c (make_field_assignment): Check len rather than the mode
27377         precision when calling force_to_mode.
27378
27379 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
27380
27381         Support multilibs and devices that see flash in RAM address range.
27382
27383         PR target/81072
27384         * config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
27385         (avr_mcu_t) <flash_pm_offset>: New field.
27386         (avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
27387         * config/avr/avr.h (AVR_SHORT_CALLS): New define.
27388         (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
27389         (AVR_TINY_PM_OFFSET): Remove macro.
27390         * config/avr/avr.opt (-mshort-calls): New option.
27391         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
27392         [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
27393         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
27394         <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
27395         <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
27396         instead of avr_arch->have_jmp_call.
27397         <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
27398         [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
27399         avr_arch->flash_pm_offset to define.
27400         * config/avr/avr-devices.c (avr_arch_types): Add initializers for
27401         new field flash_pm_offset.  Add entry for avrxmega3.
27402         (avr_texinfo): Add entry for avrxmega3.
27403         * config/avr/avr-mcus.def: Add entries for: avrxmega3,
27404         attiny212, attiny214,
27405         attiny412, attiny414, attiny416, attiny417,
27406         attiny814, attiny816, attiny817,
27407         attiny1614, attiny1616, attiny1617,
27408         attiny3214, attiny3216, attiny3217.
27409         * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
27410         avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
27411         (avr_print_operand_address) [AVR_TINY]: Same.
27412         (avr_asm_init_sections) <readonly_data_section>: Only patch
27413         callback if avr_arch->flash_pm_offset = 0.
27414         (avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
27415         for rodata if avr_arch->flash_pm_offset != 0.
27416         (avr_encode_section_info) [AVR_TINY]: Adjust comment.
27417         * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
27418         (opts) [AVR_ISA_RCALL]: Append opt_rcall.
27419         (m_options): Append opt_rcall.
27420         (m_dirnames): Append dir_rcall.
27421         * config/avr/t-multilib: Regenerate.
27422
27423         * configure.ac [target=avr]: Check whether avrxmega3 default
27424         linker description file works as needed.
27425         * configure: Regenerate.
27426         * doc/avr-mmcu.texi: Regenerate.
27427         * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
27428         <__AVR_ARCH__>: Document avrxmega3 and 103.
27429         <__AVR_HAVE_JMP_CALL__>: Adjust documentation.
27430         <__AVR_SHORT_CALLS__>: Document it.
27431         <__AVR_PM_BASE_ADDRESS__>: Document it.
27432         * doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
27433         (AVR Variable Attributes) <progmem>: Document this is
27434         not needed for avrxmega3.
27435         (AVR Named Address Spaces) <__flash>: Dito.
27436
27437 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
27438
27439         * cgraph.c (cgraph_node::dump): Complain about profile insanities.
27440
27441 2017-06-12  Doug Rupp  <rupp@adacore.com>
27442
27443         * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
27444         Append vxworks-stdint.h to the tm_file list.
27445         * config/vxworks-stdint.h: New file.
27446
27447 2017-06-12  Martin Liska  <mliska@suse.cz>
27448
27449         PR tree-optimization/81041
27450         * tree-profile.c (gimple_gen_ic_func_profiler):
27451         Create an extra BB in profile-generate
27452         (gimple_gen_time_profiler): Likewise.
27453
27454 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
27455
27456         PR tree-optimization/81003
27457         * tree-ssa-reassoc.c (force_into_ssa_name): New function.
27458         (update_range_test): Use it instead of force_gimple_operand_gsi.
27459
27460 2017-06-12  Richard Biener  <rguenther@suse.de>
27461
27462         PR tree-optimization/81053
27463         * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
27464         with backedge value not defined in loop.  Simplify def stmt
27465         compute.
27466
27467 2017-06-11  Tom de Vries  <tom@codesourcery.com>
27468
27469         PR target/79939
27470         * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
27471         Return true.
27472         (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
27473         nvptx_cannot_force_const_mem.
27474
27475 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27476
27477         * opts.c (finish_options): Move test for flag_split_stack after
27478         it has been initialized.
27479
27480 2017-06-11  Jason Merrill  <jason@redhat.com>
27481
27482         * tree.h (id_equal): New.
27483         * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
27484         omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
27485         instead of strcmp of IDENTIFIER_POINTER.
27486
27487 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27488
27489         * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
27490         (mark_all_inlined_calls_cdtor): Fix formating.
27491         (inline_transform): Rescale profile before inlining.
27492
27493 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27494
27495         * cgraph.h (cgraph_edge::clone): Update prototype.
27496         * cgraphclones.c (cgraph_edge::clone): Update profile scaling.
27497         (cgraph_node::create_clone): Update.
27498         (cgraph_node::create_version_clone): Update.
27499         * tree-inline.c (copy_bb): Update.
27500         (expand_call_inline): Update.
27501
27502 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27503
27504         * config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
27505         factored out from ...
27506         (rs6000_emit_prologue): ... here.
27507
27508 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27509
27510         * config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
27511         factored out from ...
27512         (rs6000_emit_prologue): ... here.
27513
27514 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27515
27516         * predict.c (drop_profile): Also drop individual bb/edge and cgraph
27517         edge counts.
27518         (handle_missing_profiles): Fix computation of tp_first_run.
27519         (counts_to_freqs): Do not touch freqs when count is 0.
27520
27521 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27522
27523         * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
27524         profile.
27525
27526 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27527
27528         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
27529         attributes): Document signal effective target.
27530
27531 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27532
27533         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
27534         Document effective target stack_size.
27535
27536 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
27537
27538         * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
27539         to the edit_context if they can be auto-applied.
27540
27541 2017-06-9  Ian Lance Taylor  <iant@golang.org>
27542
27543         * opts.c (finish_options): If -fsplit-stack, disable implicit
27544         -forder-blocks-and-partition.
27545         * doc/invoke.texi (Optimize Options): Document that when using
27546         -fsplit-stack -forder-blocks-and-partition is not implicitly
27547         enabled.
27548
27549 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27550
27551         * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
27552         ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
27553         ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
27554         * builtins.def (abort, trap, unreachable): Declare cold.
27555         * calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
27556         * tree-core.h (ECF_COLD): New.
27557         * tree.c (set_call_expr_flags): Handle ECF_COLD.
27558         (build_common_builtin_nodes): Mark unreachable and abort as cold.
27559
27560 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27561
27562         * predict.c (unlikely_executed_stmt_p): Cleanup.
27563
27564 2017-06-09  Richard Biener  <rguenther@suse.de>
27565
27566         * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
27567         model if the ref is always written to.
27568
27569 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27570
27571         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
27572
27573 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27574
27575         * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
27576         than udiv.
27577
27578 2017-06-09  Tom de Vries  <tom@codesourcery.com>
27579
27580         PR target/80855
27581         * config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
27582         "target cannot support label values" when encountering LABEL_REF.
27583
27584 2017-06-09  Martin Liska  <mliska@suse.cz>
27585
27586         * tree-profile.c (gimple_gen_ic_profiler): Update comment.
27587         (gimple_gen_ic_func_profiler): Emit direct comparison
27588         of __gcov_indirect_call_callee with NULL.
27589         (gimple_gen_time_profiler): Change probability from
27590         PROB_VERY_UNLIKELY to PROB_UNLIKELY.
27591
27592 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27593
27594         * profile.c (edge_gcov_counts): Turn to pointer.
27595         (compute_branch_probabilities, compute_branch_probabilities): Update.
27596         (branch_prob): Do not clear edge_gcov_count.
27597         * profile.h (edge_gcov_counts): Turn to pointer.
27598         (edge_gcov_count): Update.
27599
27600 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27601
27602         * gimple.h (gimple_check_failed): Mark cold.
27603
27604 2017-06-09  Richard Biener  <rguenther@suse.de>
27605
27606         PR tree-optimization/66623
27607         * tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
27608         refactor check_reduction into two parts, properly computing
27609         whether we have to check reduction validity for outer loop
27610         vectorization.
27611
27612 2017-06-09  Richard Biener  <rguenther@suse.de>
27613
27614         PR tree-optimization/79483
27615         * graphite-scop-detection.c (order): New global.
27616         (get_order): Compute bb to order mapping that satisfies code
27617         generation constraints.
27618         (cmp_pbbs): New helper.
27619         (build_scops): Start domwalk at entry block, sort generated
27620         pbbs.
27621
27622 2017-06-09  Richard Biener  <rguenther@suse.de>
27623
27624         PR middle-end/81007
27625         * ipa-polymorphic-call.c
27626         (ipa_polymorphic_call_context::restrict_to_inner_class):
27627         Skip FIELD_DECLs with error_mark_node type.
27628         * passes.def (all_lowering_passes): Run pass_build_cgraph_edges
27629         last again.
27630
27631 2017-06-09  Martin Liska  <mliska@suse.cz>
27632
27633         * predict.c (struct branch_predictor): New struct.
27634         (test_prediction_value_range): New test.
27635         (predict_c_tests): New function.
27636         * selftest-run-tests.c (selftest::run_tests): Run the function.
27637         * selftest.h: Declare new tests.
27638
27639 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
27640
27641         PR target/80966
27642         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
27643         gen_add3_insn did not fail.
27644         * config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
27645         r0, construct that number in a temporary reg and add that reg to r0.
27646         If asked to put the result in r0 as well, fail.
27647
27648 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
27649
27650         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
27651         for early expansion of vec_eqv.
27652
27653 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
27654
27655         PR middle-end/81005
27656         * ubsan.c (instrument_null): Avoid pointless code temporary.
27657         (pass_ubsan::execute): Instrument aggregate arguments of calls.
27658
27659 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
27660
27661         PR target/81015
27662         Revert:
27663         2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
27664
27665         PR target/59874
27666         * config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
27667         (*clzhi2): Ditto.
27668
27669 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27670
27671         * predict.c (unlikely_executed_edge_p): Move ahead.
27672         (probably_never_executed_edge_p): Use it.
27673
27674 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
27675
27676         PR middle-end/79988
27677         * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
27678         gimple_call_builtin_p call.
27679
27680 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27681
27682         * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
27683         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
27684         rtl_check_failed_type2, rtl_check_failed_code1,
27685         rtl_check_failed_code2, rtl_check_failed_code_mode,
27686         rtl_check_failed_block_symbol, cwi_check_failed_bounds,
27687         rtvec_check_failed_bounds, rtl_check_failed_flag,
27688         _fatal_insn_not_found, _fatal_insn): Likewise.
27689         * tree.h (tree_contains_struct_check_failed,
27690         tree_check_failed, tree_not_check_failed,
27691         tree_class_check_failed, tree_range_check_failed,
27692         tree_not_class_check_failed, tree_int_cst_elt_check_failed,
27693         tree_vec_elt_check_failed, phi_node_elt_check_failed,
27694         tree_operand_check_failed, omp_clause_check_failed,
27695         omp_clause_operand_check_failed, omp_clause_range_check_failed):
27696         Likewise.
27697
27698 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27699
27700         * cgraph.c (cgraph_edge::maybe_hot_p): Do not check
27701         flag_branch_probabilities.
27702         * ipa-inline.c (edge_badness): Likewise.
27703         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
27704         * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
27705         * predict.c (maybe_hot_frequency_p): Likewise.
27706         (probably_never_executed): Likewise.
27707         * sched-ebb.c (schedule_ebbs): Likewise.
27708         * sched-rgn.c (find_single_block_region): Likewise.
27709         * tracer.c (tail_duplicate): Likewise.
27710
27711 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27712
27713         * opts.c (finish_options): x_flag_reorder_blocks_and_partition no
27714         longer requires x_flag_profile_use.
27715
27716 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27717
27718         * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
27719         instead of flag_reorder_blocks_and_partition.
27720         * dbxout.c (dbxout_function_end): Likewise.
27721         * dwarf2out.c (gen_subprogram_die): Likewise.
27722         * haifa-sched.c (sched_create_recovery_edges): Likewise.
27723         * hw-doloop.c (reorg_loops): Likewise.
27724         * varasm.c (assemble_start_function,
27725         assemble_end_function): Likewise.
27726         (decide_function_section): Do not check for
27727         flag_reorder_blocks_and_partition.
27728
27729 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
27730
27731         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
27732         New function.
27733         (chkp_get_hard_register_fake_addr_expr): Ditto.
27734         (chkp_build_addr_expr): Add check for hard reg case.
27735         (chkp_parse_array_and_component_ref): Ditto.
27736         (chkp_find_bounds_1): Ditto.
27737         (chkp_process_stmt): Don't generate bounds store for
27738         hard reg case.
27739
27740 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27741
27742         * predict.c (maybe_hot_bb_p): Do not check profile status.
27743         (maybe_hot_edge_p): Likewise.
27744         (probably_never_executed): Check for zero counts even if profile
27745         is not read.
27746         (unlikely_executed_edge_p): New function.
27747         (unlikely_executed_stmt_p): New function.
27748         (unlikely_executed_bb_p): New function.
27749         (set_even_probabilities): Use unlikely predicates.
27750         (combine_predictions_for_bb): Likewise.
27751         (predict_paths_for_bb): Likewise.
27752         (predict_paths_leading_to_edge): Likewise.
27753         (determine_unlikely_bbs): New function.
27754         (estimate_bb_frequencies): Use it.
27755         (compute_function_frequency): Use zero counts even if profile is
27756         not read.
27757         * profile-count.h: Fix typo.
27758
27759 2017-08-08  Julia Koval  <julia.koval@intel.com>
27760
27761         * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
27762         _mm512_mask_cvtsepi16_storeu_epi8,
27763         _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
27764         * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
27765         _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
27766         _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
27767         _mm_mask_cvtepi16_storeu_epi8): New intrinsics.
27768         * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
27769         (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
27770         VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
27771         * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
27772         __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
27773         __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
27774         __builtin_ia32_pmovuswb256mem_mask,
27775         __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
27776         __builtin_ia32_pmovwb512mem_mask): New builtins.
27777
27778 2017-08-08  Julia Koval  <julia.koval@intel.com>
27779
27780         PR target/73350,80862
27781         * config/i386/subst.md (round): Fix round pattern.
27782         * config/i386/i386.c (ix86_erase_embedded_rounding):
27783         Fix erasing rounding for the fixed pattern.
27784
27785 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27786
27787         * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
27788
27789 2017-06-08  Martin Liska  <mliska@suse.cz>
27790
27791         PR gcov-profile/80911
27792         * gcov.c (block_info::block_info): New constructor.
27793
27794 2017-06-07  Carl Love  <cel@us.ibm.com>
27795
27796         * config/rs6000/rs6000-c: The return type of the following
27797         built-in functions was implemented as int not long long.  Fix sign
27798         of return value for the unsigned version of vec_mulo and vec_mule.
27799         vector unsigned long long vec_bperm (vector unsigned long long,
27800                                              vector unsigned char)
27801         vector signed long long vec_mule (vector signed int,
27802                                           vector signed int)
27803         vector unsigned long long vec_mule (vector unsigned int,
27804                                             vector unsigned int)
27805         vector signed long long vec_mulo (vector signed int,
27806                                           vector signed int)
27807         vector unsigned long long vec_mulo (vector unsigned int,
27808                                             vector unsigned int)
27809         * doc/extend.texi: Fix the documentation for the built-in
27810         functions.
27811
27812 2017-06-07  Carl Love  <cel@us.ibm.com>
27813
27814         PR target/80982
27815         * config/rs6000/altivec.md (double<mode>2): Fix the implementation of
27816         for BE.
27817
27818 2017-06-07  Carl Love  <cel@us.ibm.com>
27819
27820         * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
27821         support, Generate       doublehv for signed int/float for BE case only.
27822
27823 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
27824
27825         * doc/invoke.texi (mcx16): Rewrite.
27826
27827 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27828
27829         * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
27830         * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
27831         *mov<mode>_softfloat, and an anonymous splitter): Use
27832         nonimmediate_operand instead of rs6000_nonimmediate_operand.
27833
27834 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27835
27836         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
27837         SPEFSCR registers.
27838         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27839         (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
27840         (rs6000_debug_reg_global): Adjust.
27841         (rs6000_init_hard_regno_mode_ok): Adjust.
27842         (rs6000_dbx_register_number): Adjust.
27843         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
27844         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27845         Remove SPE_ACC and SPEFSCR.
27846         (REG_ALLOC_ORDER): Ditto.
27847         (FRAME_POINTER_REGNUM): Change to 111.
27848         (enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
27849         (REG_CLASS_NAMES): Ditto.
27850         (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
27851         (REGISTER_NAMES): Ditto.
27852         (ADDITIONAL_REG_NAMES): Ditto.
27853         (rs6000_reg_names): Ditto.
27854         * config/rs6000/rs6000.md: Renumber some register number
27855         define_constants.
27856
27857 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27858
27859         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
27860         registers.
27861         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27862         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
27863         to 117.
27864         (DWARF_REG_TO_UNWIND_COLUMN): Do not define.
27865         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27866         Delete the SPE high registers.
27867         (REG_ALLOC_ORDER): Ditto.
27868         (enum reg_class): Remove SPE_HIGH_REGS.
27869         (REG_CLASS_NAMES): Ditto.
27870         (REG_CLASS_CONTENTS): Delete the SPE high registers.
27871         (REGISTER_NAMES): Ditto.
27872         (rs6000_reg_names): Ditto.
27873         * doc/tm.texi.in: Remove SPE as example.
27874         * doc/tm.texi: Regenerate.
27875
27876 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27877
27878         * config/rs6000/8540.md (ppc8540_brinc): Delete.
27879         * config/rs6000/e500mc.md (e500mc_brinc): Delete.
27880         * config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
27881         * config/rs6000/rs6000.md (type): Remove "brinc".
27882
27883 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27884
27885         * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
27886         (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
27887         * config/rs6000/linuxspe.h: Delete file.
27888         * config/rs6000/rs6000.md: Don't include spe.md.
27889         * config/rs6000/spe.h: Delete file.
27890         * config/rs6000/spe.md: Delete file.
27891         * config/rs6000/t-rs6000: Remove spe.md.
27892
27893 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27894
27895         * config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
27896         (reg_or_none500mem_operand): Delete.
27897         * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
27898         instead of reg_or_none500mem_operand.
27899
27900 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27901
27902         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
27903         handling of SPE flags.
27904         * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
27905
27906 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27907
27908         * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
27909         SPE ABI handling.
27910         * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
27911         (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
27912         paired_divv2sf3): Similar.
27913         * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
27914         SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
27915         * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
27916         RS6000_BUILTIN_S.
27917         Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
27918         Rename the paired_* instruction patterns.
27919         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
27920         define __SPE__.
27921         * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
27922         * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
27923         (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
27924         spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
27925         TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
27926         PAIRED_VECTOR_MODE.
27927         (struct machine_function): Delete field spe_insn_chain_scanned_p.
27928         (spe_func_has_64bit_regs_p): Delete.
27929         (spe_expand_predicate_builtin): Delete.
27930         (spe_expand_evsel_builtin): Delete.
27931         (TARGET_DWARF_REGISTER_SPAN): Do not define.
27932         (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
27933         (invalid_e500_subreg): Delete.
27934         (rs6000_legitimize_address): Always force_reg op2 as well, for
27935         paired single memory accesses.
27936         (rs6000_member_type_forces_blk): Delete.
27937         (rs6000_spe_function_arg): Delete.
27938         (rs6000_expand_unop_builtin): Delete SPE handling.
27939         (rs6000_expand_binop_builtin): Ditto.
27940         (spe_expand_stv_builtin): Delete.
27941         (bdesc_2arg_spe): Delete.
27942         (spe_expand_builtin): Delete.
27943         (spe_expand_predicate_builtin): Delete.
27944         (spe_expand_evsel_builtin): Delete.
27945         (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
27946         (spe_init_builtins): Delete.
27947         (spe_func_has_64bit_regs_p): Delete.
27948         (savres_routine_name): Delete "info" parameter.  Adjust callers.
27949         (rs6000_emit_stack_reset): Ditto.
27950         (rs6000_dwarf_register_span): Delete.
27951         * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
27952         UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
27953         SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
27954         Delete.
27955         * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
27956         Delete.
27957         * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
27958         * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
27959         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
27960         mulv2sf3, divv2sf3): Delete expanders.
27961
27962 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27963
27964         config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
27965
27966 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27967
27968         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
27969         * config/rs6000/rs6000.c: Ditto.
27970
27971 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27972
27973         * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
27974         * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
27975         comparison_operator.
27976
27977 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27978
27979         * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
27980         * config/rs6000/rs6000.opt: Ditto.
27981         * config/rs6000/t-rtems: Ditto.
27982
27983 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27984
27985         * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
27986         TARGET_E500_SINGLE by 0, simplify.
27987         * config/rs6000/rs6000.c: Ditto.
27988         (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
27989         (spe_build_register_parallel): Delete.
27990         * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
27991         TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
27992         * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
27993         TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
27994         (E500_CONVERT): Delete.
27995         * config/rs6000/spe.md: Remove many patterns and all define_constants.
27996
27997 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27998
27999         * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
28000         * config/rs6000/dfp.md: Ditto.
28001         (negdd2, *negdd2_fpr): Merge.
28002         (absdd2, *absdd2_fpr): Merge.
28003         (negtd2, *negtd2_fpr): Merge.
28004         (abstd2, *abstd2_fpr): Merge.
28005         * config/rs6000/e500.h: Delete file.
28006         * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
28007         TARGET_FPRS by 1 and simplify.
28008         * config/rs6000/rs6000-c.c: Ditto.
28009         * config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
28010         TARGET_DF_SPE by 0.
28011         * config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
28012         TARGET_DF_SPE.
28013         * config/rs6000/rs6000.md: Ditto.
28014         (floatdidf2, *floatdidf2_fpr): Merge.
28015         (move_from_CR_gt_bit): Delete.
28016         * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
28017         (E500_CR_IOR_COMPARE): Delete.
28018         (All patterns that require !TARGET_FPRS): Delete.
28019         * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
28020
28021 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28022
28023         * passes.def (pass_iv_canon): Move before pass_loop_distribution.
28024
28025 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28026
28027         * graphds.c (add_edge): Intitialize edge's attached data.
28028         (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
28029         pointer parameter.  Call pointed function on each edge during
28030         graph traversing.  Skip traversing the edge when the function
28031         returns true.
28032         (graphds_dfs, graphds_scc): Ditto.
28033         (for_each_edge): New parameter.  Pass the new parameter to callback
28034         function.
28035         * graphds.h (skip_edge_callback): New function pointer type.
28036         (graphds_dfs, graphds_scc): New function pointer parameter.
28037         (graphds_edge_callback, for_each_edge): New parameter.
28038
28039 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28040
28041         * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
28042         out code checking if runtime alias check is possible to below ...
28043         Call the new function.
28044         * tree-data-ref.c (runtime_alias_check_p): ... to new function.
28045         * tree-data-ref.h (runtime_alias_check_p): New decalaration.
28046
28047 2017-06-07  Marek Polacek  <polacek@redhat.com>
28048
28049         PR sanitizer/80932
28050         * fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
28051         TYPE_OVERFLOW_WRAPS check.
28052
28053 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28054
28055         * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
28056         if versioning is required.
28057         * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
28058         peeling with the check for versioning.
28059
28060 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28061
28062         * tree-vectorizer.h (vect_build_loop_niters): New parameter.
28063         * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
28064         Set true to new parameter if new ssa variable is defined.
28065         (vect_gen_vector_loop_niters): Refactor.  Set range information
28066         for the new vector loop bound variable.
28067         (vect_do_peeling): Ditto.
28068
28069 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28070
28071         * tree-affine.c (ssa.h): Include header file.
28072         (tree_to_aff_combination): Handle (T1)(X - CST) when inner type
28073         has wrapping overflow behavior.
28074
28075 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28076
28077         * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
28078
28079 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28080
28081         (aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
28082         (tree_to_aff_combination): ... here.
28083
28084 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28085
28086         * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
28087         reg_pressure model function.
28088         (ivopts_global_cost_for_size): Delete.
28089         (determine_set_costs, iv_ca_recount_cost): Call new model function
28090         ivopts_estimate_reg_pressure.
28091
28092 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28093
28094         * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
28095         expensive than udiv.  Remove floating point cases from mod.
28096
28097 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28098
28099         * config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
28100         Increase idiv cost.
28101
28102 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28103
28104         * config/aarch64/aarch64.md
28105         (copysignsf3): Fix mask generation.
28106
28107 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
28108
28109         * dumpfile.h (enum tree_dump_index): Rename TDI_generic to
28110         TDI_gimple.
28111         (class dump_manager): Add register_dumps method.
28112         * dumpfile.c: Include langhooks.h.
28113         (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
28114         (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
28115         (FIRST_ME_AUTO_NUMBERED_DUMP): Define.
28116         (dump_manager::dump_register): Start with 512 entries instead of 32.
28117         (dump_manager::register_dumps): New method.
28118         * toplev.c (general_init): Instead of invoking register_dumps
28119         langhook, invoke register_dumps method on the dump manager.
28120         * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
28121         TDI_generic.
28122
28123 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
28124
28125         * doc/md.texi: Clarify the restrictions on a define_insn condition.
28126         Say that # requires an associated define_split to exist, and that
28127         the define_split must be suitable for use after register allocation.
28128
28129 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28130
28131         * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
28132         (compute_outgoing_frequencies): Also initialize zero counts.
28133         (find_many_sub_basic_blocks): Do not produce uninitialized profile
28134         around loops; preserve more of profile when nothing changes.
28135
28136 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
28137
28138         * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
28139         here.
28140         * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
28141         * config/arm/arm-cpu-cdata.h: Regenerate.
28142         * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
28143         * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
28144         * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
28145         * config/arm/arm.c (arm_qdf24xx_tune): Delete.
28146         * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
28147         support.
28148         * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
28149         support.
28150         * config/arm/t-rmprofile: Likewise.
28151         * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
28152
28153 2017-06-06  David S. Miller  <davem@davemloft.net>
28154
28155         PR target/80968
28156         * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
28157         blockage if function uses alloca.
28158
28159 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28160
28161         * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
28162         New "uid" fields to hold pretty-print IDs of group and ref.
28163         Memory references are now identified as <group_id>:<ref_id>
28164         instead of using [random] addresses.
28165         (dump_mem_details): Simplify, no functional change.
28166         (dump_mem_ref): Simplify and make output more concise.
28167         Replace couple of fprintf's throughout code with calls to dump_mem_ref.
28168         (find_or_create_group): Initialize group uid.
28169         (record_ref): Initialize ref uid.  Improve debug output.
28170         (prune_group_by_reuse, should_issue_prefetch_p,)
28171         (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
28172         (mark_nontemporal_store, determine_loop_nest_reuse):
28173         Improve debug output.
28174
28175 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28176
28177         * dbgcnt.def (prefetch): New debug counter.
28178         * tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
28179         (schedule_prefetches): Stop issueing prefetches if debug counter
28180         tripped.
28181
28182 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28183
28184         * doc/sourcebuild.texi (Testsuites, C Language Testsuites,
28185         gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
28186
28187 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28188
28189         * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
28190         Use aarch64_reg_or_zero predicate for operand 4.
28191         (aarch64_compare_and_swap<mode> define_insn_and_split):
28192         Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
28193         (aarch64_store_exclusive<mode>): Likewise for operand 2.
28194
28195 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28196
28197         * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
28198         (arm_compute_save_core_reg_mask): This.
28199         (thumb1_compute_save_reg_mask): Rename into ...
28200         (thumb1_compute_save_core_reg_mask): This.
28201         (arm_compute_save_reg0_reg12_mask): Adapt comment.
28202         (arm_compute_frame_layout): Likewise.
28203
28204 2017-06-06  Richard Biener  <rguenther@suse.de>
28205
28206         PR tree-optimization/80974
28207         * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
28208         keep or clear leaders SSA info.
28209
28210 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28211
28212         * config/nvptx/nvptx.c (split_mode_p): New function.
28213         (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
28214
28215 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28216
28217         * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
28218
28219 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28220
28221         PR bootstrap/80978
28222         * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
28223         profile.
28224
28225 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28226
28227         * shrink-wrap.c (handle_simple_exit): Update profile.
28228         (try_shrink_wrapping): Upate profile.
28229
28230 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28231
28232         * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
28233         (tree_guess_outgoing_edge_probabilities): New.
28234         * predict.h (tree_guess_outgoing_edge_probabilities): Declare.
28235         * tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
28236
28237 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28238
28239         * ipa-split.c (split_function): Initialize return bb profile.
28240
28241 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28242
28243         * profile.c (compute_branch_probabilities): Also initialize
28244         EXIT_BLOCK profile.
28245
28246 2017-06-06  Richard Biener  <rguenther@suse.de>
28247
28248         PR tree-optimization/80928
28249         * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
28250         (vect_analyze_loop_operations): Properly guard analysis for
28251         pure SLP case.
28252         (vect_transform_loop): Likewise.
28253         (vect_analyze_loop_2): Also reset SLP type on PHIs.
28254         (vect_model_induction_cost): Do not cost for pure SLP.
28255         (vectorizable_induction): Pass in SLP node, implement SLP vectorization
28256         of induction in inner loop vectorization.
28257         * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
28258         (vect_get_and_check_slp_defs): Handle vect_induction_def.
28259         (vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
28260         recursion.
28261         (vect_analyze_slp_cost_1): Cost induction.
28262         (vect_detect_hybrid_slp_stmts): Handle PHIs.
28263         (vect_get_slp_vect_defs): Likewise.
28264         * tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
28265         (vect_transform_stmt): Handle SLP reductions.
28266         * tree-vectorizer.h (vectorizable_induction): Adjust.
28267
28268 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28269
28270         * config/rs6000/rs6000.c (make_resolver_func): Update
28271         init_lowered_empty_function call.
28272
28273 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28274
28275         * doc/invoke.texi: Document the -fprofile-abs-path option.
28276         * common.opt (fprofile-abs-path): New option.
28277         * gcov-io.h (gcov_write_filename): Declare.
28278         * gcov-io.c (gcov_write_filename): New function.
28279         * coverage.c (coverage_begin_function): Use gcov_write_filename.
28280         * profile.c (output_location): Likewise.
28281
28282 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28283
28284         * shring-wrap.c: Revert accidental commit.
28285
28286 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
28287
28288         * doc/invoke.texi (-Wduplicated-branches): Add to warning list.
28289
28290 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28291
28292         * cfgexpand.c (expand_gimple_tailcall): Initialize profile of
28293         new edge.
28294         * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
28295         profile in callgraph edge.
28296         * profile-count.h (apply_probability): If THIS is 0, then result is 0
28297         (apply_scale): Likewise.
28298         * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
28299         Also scale profile when inlining function with zero profile.
28300         (initialize_cfun): Update exit block profile even when it is zero.
28301         * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
28302         when profile is read.
28303
28304 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28305
28306         * config/rs6000/rs6000.c (toplevel): Include attribs.h.
28307         (CLONE_*): New constants to define the processors we can generate
28308         code for with the target_clone attribute.
28309         (rs6000_clone_map): New array to identify which clone processors
28310         the current program is running on.
28311         (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
28312         target_clone attribute.
28313         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
28314         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
28315         (TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
28316         (cpu_expand_builtin): Add support for target_clone attribute.
28317         (rs6000_valid_attribute_p): Allow "default" attribute.
28318         (get_decl_name): New debug function to simplify printing the
28319         current function name in debugging statements.
28320         (rs6000_clone_priority): New functions to support the target_clone
28321         attribute, and be able to generate code to switch between ISA 2.05
28322         through ISA 3.0 (power6 through power9).
28323         (rs6000_compare_version_priority): Likewise.
28324         (rs6000_get_function_versions_dispatcher): Likewise.
28325         (make_resolver_func): Likewise.
28326         (add_condition_to_bb): Likewise.
28327         (dispatch_function_versions): Likewise.
28328         (rs6000_generate_version_dispatcher_body): Likewise.
28329         (rs6000_can_inline_p): Call get_decl_name for debugging usage.
28330         (fusion_gpr_load_p): Fix a spacing issue.
28331         * doc/extend.texi (Common Function Attributes): Document that the
28332         PowerPC supports the target_clone attribute.
28333
28334 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28335
28336         * config/arm/arm.h: explain F symbol found in description of ARM
28337         register allocation in its legend.
28338
28339 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28340
28341         * config/mips/frame-header-opt.c: Include profile-count.h.
28342         * config/riscv/riscv.c: Include profile-count.h
28343
28344 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28345
28346         * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
28347         update profile.
28348         (sm_set_flag_if_changed): Add bbs field.
28349         (execute_sm_if_changed_flag_set): Pass BBS.
28350         (execute_sm): Update.
28351
28352 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28353
28354         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
28355         New pattern.
28356
28357 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28358
28359         * config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
28360         (peephole2): New peephole2 to emit the above.
28361         * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
28362
28363 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28364
28365         * config/aarch64/aarch64.c (define_peephole2 above
28366         *sub_<shift>_<mode>): New peephole.
28367
28368 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28369
28370         * config/i386/i386.c (make_resolver_func): Update.
28371         * Makefile.in: Add profile-count.h and profile-count.o
28372         * auto-profile.c (afdo_indirect_call): Update to new API.
28373         (afdo_set_bb_count): Update.
28374         (afdo_propagate_edge): Update.
28375         (afdo_propagate_circuit): Update.
28376         (afdo_calculate_branch_prob): Update.
28377         (afdo_annotate_cfg): Update.
28378         * basic-block.h: Include profile-count.h
28379         (struct edge_def): Turn count to profile_count.
28380         (struct basic_block_def): Likewie.
28381         (REG_BR_PROB_BASE): Move to profile-count.h
28382         (RDIV): Move to profile-count.h
28383         * bb-reorder.c (max_entry_count): Turn to profile_count.
28384         (find_traces): Update.
28385         (rotate_loop):Update.
28386         (connect_traces):Update.
28387         (sanitize_hot_paths):Update.
28388         * bt-load.c (migrate_btr_defs): Update.
28389         * cfg.c (RDIV): Remove.
28390         (init_flow): Use alloc_block.
28391         (alloc_block): Uninitialize count.
28392         (unchecked_make_edge): Uninitialize count.
28393         (check_bb_profile): Update.
28394         (dump_edge_info): Update.
28395         (dump_bb_info): Update.
28396         (update_bb_profile_for_threading): Update.
28397         (scale_bbs_frequencies_int): Update.
28398         (scale_bbs_frequencies_gcov_type): Update.
28399         (scale_bbs_frequencies_profile_count): New.
28400         * cfg.h (update_bb_profile_for_threading): Update.
28401         (scale_bbs_frequencies_profile_count): Declare.
28402         * cfgbuild.c (compute_outgoing_frequencies): Update.
28403         (find_many_sub_basic_blocks): Update.
28404         * cfgcleanup.c (try_forward_edges): Update.
28405         (try_crossjump_to_edge): Update.
28406         * cfgexpand.c (expand_gimple_tailcall): Update.
28407         (construct_exit_block): Update.
28408         * cfghooks.c (verify_flow_info): Update.
28409         (dump_bb_for_graph): Update.
28410         (split_edge): Update.
28411         (make_forwarder_block): Update.
28412         (duplicate_block): Update.
28413         (account_profile_record): Update.
28414         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
28415         (get_estimated_loop_iterations): Update.
28416         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
28417         (single_likely_exit): Update.
28418         * cfgloopmanip.c (scale_loop_profile): Update.
28419         (loopify): Update.
28420         (set_zero_probability): Update.
28421         (lv_adjust_loop_entry_edge): Update.
28422         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
28423         (purge_dead_edges): Update.
28424         (rtl_account_profile_record): Update.
28425         * cgraph.c (cgraph_node::create): Uninitialize count.
28426         (symbol_table::create_edge): Uninitialize count.
28427         (cgraph_update_edges_for_call_stmt_node): Update.
28428         (cgraph_edge::dump_edge_flags): Update.
28429         (cgraph_node::dump): Update.
28430         (cgraph_edge::maybe_hot_p): Update.
28431         * cgraph.h: Include profile-count.h
28432         (create_clone), create_edge, create_indirect_edge): Update.
28433         (cgraph_node): Turn count to profile_count.
28434         (cgraph_edge0: Likewise.
28435         (make_speculative, clone): Update.
28436         (create_edge): Update.
28437         (init_lowered_empty_function): Update.
28438         * cgraphclones.c (cgraph_edge::clone): Update.
28439         (duplicate_thunk_for_node): Update.
28440         (cgraph_node::create_clone): Update.
28441         * cgraphunit.c (cgraph_node::analyze): Update.
28442         (cgraph_node::expand_thunk): Update.
28443         * final.c (dump_basic_block_info): Update.
28444         * gimple-streamer-in.c (input_bb): Update.
28445         * gimple-streamer-out.c (output_bb): Update.
28446         * graphite.c (print_global_statistics): Update.
28447         (print_graphite_scop_statistics): Update.
28448         * hsa-brig.c: Include basic-block.h.
28449         * hsa-dump.c: Include basic-block.h.
28450         * hsa-gen.c (T sum_slice): Update.
28451         (convert_switch_statements):Update.
28452         * hsa-regalloc.c: Include basic-block.h.
28453         * ipa-chkp.c (chkp_produce_thunks): Update.
28454         * ipa-cp.c (struct caller_statistics): Update.
28455         (init_caller_stats): Update.
28456         (gather_caller_stats): Update.
28457         (ipcp_cloning_candidate_p): Update.
28458         (good_cloning_opportunity_p): Update.
28459         (get_info_about_necessary_edges): Update.
28460         (dump_profile_updates): Update.
28461         (update_profiling_info): Update.
28462         (update_specialized_profile): Update.
28463         (perhaps_add_new_callers): Update.
28464         (decide_about_value): Update.
28465         (ipa_cp_c_finalize): Update.
28466         * ipa-devirt.c (struct odr_type_warn_count): Update.
28467         (struct decl_warn_count): Update.
28468         (struct final_warning_record): Update.
28469         (possible_polymorphic_call_targets): Update.
28470         (ipa_devirt): Update.
28471         * ipa-fnsummary.c (redirect_to_unreachable): Update.
28472         * ipa-icf.c (sem_function::merge): Update.
28473         * ipa-inline-analysis.c (do_estimate_edge_time): Update.
28474         * ipa-inline.c (compute_uninlined_call_time): Update.
28475         (compute_inlined_call_time): Update.
28476         (want_inline_small_function_p): Update.
28477         (want_inline_self_recursive_call_p): Update.
28478         (edge_badness): Update.
28479         (lookup_recursive_calls): Update.
28480         (recursive_inlining): Update.
28481         (inline_small_functions): Update.
28482         (dump_overall_stats): Update.
28483         (dump_inline_stats): Update.
28484         * ipa-profile.c (ipa_profile_generate_summary): Update.
28485         (ipa_propagate_frequency): Update.
28486         (ipa_profile): Update.
28487         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28488         * ipa-utils.c (ipa_merge_profiles): Update.
28489         * loop-doloop.c (doloop_modify): Update.
28490         * loop-unroll.c (report_unroll): Update.
28491         (unroll_loop_runtime_iterations): Update.
28492         * lto-cgraph.c (lto_output_edge): Update.
28493         (lto_output_node): Update.
28494         (input_node): Update.
28495         (input_edge): Update.
28496         (merge_profile_summaries): Update.
28497         * lto-streamer-in.c (input_cfg): Update.
28498         * lto-streamer-out.c (output_cfg): Update.
28499         * mcf.c (create_fixup_graph): Update.
28500         (adjust_cfg_counts): Update.
28501         (sum_edge_counts): Update.
28502         * modulo-sched.c (sms_schedule): Update.
28503         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
28504         * predict.c (maybe_hot_count_p): Update.
28505         (probably_never_executed): Update.
28506         (dump_prediction): Update.
28507         (combine_predictions_for_bb): Update.
28508         (propagate_freq): Update.
28509         (handle_missing_profiles): Update.
28510         (counts_to_freqs): Update.
28511         (rebuild_frequencies): Update.
28512         (force_edge_cold): Update.
28513         * predict.h: Include profile-count.h
28514         (maybe_hot_count_p, counts_to_freqs): UPdate.
28515         * print-rtl-function.c: Do not include cfg.h
28516         * print-rtl.c: Include basic-block.h
28517         * profile-count.c: New file.
28518         * profile-count.h: New file.
28519         * profile.c (is_edge_inconsistent): Update.
28520         (correct_negative_edge_counts): Update.
28521         (is_inconsistent): Update.
28522         (set_bb_counts): Update.
28523         (read_profile_edge_counts): Update.
28524         (compute_frequency_overlap): Update.
28525         (compute_branch_probabilities): Update; Initialize and deinitialize
28526         gcov_count tables.
28527         (branch_prob): Update.
28528         * profile.h (bb_gcov_counts, edge_gcov_counts): New.
28529         (edge_gcov_count): New.
28530         (bb_gcov_count): New.
28531         * shrink-wrap.c (try_shrink_wrapping): Update.
28532         * tracer.c (better_p): Update.
28533         * trans-mem.c (expand_transaction): Update.
28534         (ipa_tm_insert_irr_call): Update.
28535         (ipa_tm_insert_gettmclone_call): Update.
28536         * tree-call-cdce.c: Update.
28537         * tree-cfg.c (gimple_duplicate_sese_region): Update.
28538         (gimple_duplicate_sese_tail): Update.
28539         (gimple_account_profile_record): Update.
28540         (execute_fixup_cfg): Update.
28541         * tree-inline.c (copy_bb): Update.
28542         (copy_edges_for_bb): Update.
28543         (initialize_cfun): Update.
28544         (freqs_to_counts): Update.
28545         (copy_cfg_body): Update.
28546         (expand_call_inline): Update.
28547         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
28548         * tree-ssa-loop-ivcanon.c (unloop_loops): Update.
28549         (try_unroll_loop_completely): Update.
28550         (try_peel_loop): Update.
28551         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
28552         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
28553         * tree-ssa-loop-split.c (connect_loops): Update.
28554         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
28555         * tree-ssa-reassoc.c (branch_fixup): Update.
28556         * tree-ssa-tail-merge.c (replace_block_by): Update.
28557         * tree-ssa-threadupdate.c (create_block_for_threading): Update.
28558         (compute_path_counts): Update.
28559         (update_profile): Update.
28560         (recompute_probabilities): Update.
28561         (update_joiner_offpath_counts): Update.
28562         (estimated_freqs_path): Update.
28563         (freqs_to_counts_path): Update.
28564         (clear_counts_path): Update.
28565         (ssa_fix_duplicate_block_edges): Update.
28566         (duplicate_thread_path): Update.
28567         * tree-switch-conversion.c (case_bit_test_cmp): Update.
28568         (struct switch_conv_info): Update.
28569         * tree-tailcall.c (decrease_profile): Update.
28570         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
28571         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
28572         * value-prof.c (check_counter): Update.
28573         (gimple_divmod_fixed_value): Update.
28574         (gimple_mod_pow2): Update.
28575         (gimple_mod_subtract): Update.
28576         (gimple_ic_transform): Update.
28577         (gimple_stringop_fixed_value): Update.
28578         * value-prof.h (gimple_ic): Update.
28579
28580 2017-06-02  Carl Love  <cel@us.ibm.com>
28581
28582         * config/rs6000/rs6000-c: Add support for built-in functions
28583         vector double vec_doublee (vector signed int);
28584         vector double vec_doublee (vector unsigned int);
28585         vector double vec_doublee (vector float);
28586         vector double vec_doubleh (vector signed int);
28587         vector double vec_doubleh (vector unsigned int);
28588         vector double vec_doubleh (vector float);
28589         vector double vec_doublel (vector signed int);
28590         vector double vec_doublel (vector unsigned int);
28591         vector double vec_doublel (vector float);
28592         vector double vec_doubleo (vector signed int);
28593         vector double vec_doubleo (vector unsigned int);
28594         vector double vec_doubleo (vector float);.
28595         * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
28596         DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
28597         UNS_DOUBLEL.
28598         * config/rs6000/altivec.md: Add code generator for doublee<mode>2,
28599         unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
28600         unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
28601         VS_sxwsp.
28602         * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
28603         vec_doublel, vec_doubleh.
28604         * doc/extend.texi: Update the built-in documentation file for the
28605         new built-in functions.
28606
28607 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
28608
28609         PR jit/80954
28610         * ipa-inline-analysis.c (free_growth_caches): Set
28611         edge_removal_hook_holder to NULL after removing it.
28612
28613 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
28614
28615         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
28616         comparision with zero.
28617
28618 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28619         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28620         for early expansion of vec_min and vec_max builtins.
28621         (builtin_function_type): Add min/max unsigned variants to those
28622         identified as having unsigned arguments.
28623
28624 2017-06-02  Olivier Hainque  <hainque@adacore.com>
28625
28626         * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
28627
28628 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28629
28630         * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
28631         Use VALL_F16 iterator rather than VALL.
28632
28633 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28634
28635         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
28636         Emit CBNZ inside loop when doing a strong exchange and comparing
28637         against zero.  Generate the CC flags after the loop.
28638
28639 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
28640
28641         * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
28642         (dl_section_ref): New.
28643         (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
28644         On AIX, append an expression to subtract the size of the
28645         section length to dl_section_ref.
28646
28647 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28648
28649         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28650         for early expansion of vector absolute builtins.
28651
28652 2017-06-02  Richard Biener  <rguenther@suse.de>
28653
28654         * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
28655         what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
28656
28657 2017-06-02  Richard Biener  <rguenther@suse.de>
28658
28659         PR tree-optimization/80948
28660         * tree-tailcall.c (find_tail_calls): Track stmts to move in
28661         stmt order as well.
28662
28663 2017-06-02  Richard Biener  <rguenther@suse.de>
28664
28665         * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
28666         PHIs are ok.
28667         * tree-vect-stmts.c (process_use): Do not mark backedge defs
28668         for inductions as relevant.
28669
28670 2017-06-02  Richard Biener  <rguenther@suse.de>
28671
28672         * tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
28673         (vectorizable_induction): ... this.  Remove dead code.
28674
28675 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
28676
28677         * builtins. (expand_builtin_alloca): Remove second parameter and
28678         infer its value from the first parameter instead.
28679         (expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
28680
28681 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
28682
28683         PR rtl-optimization/80903
28684         * loop-doloop.c (add_test): Unshare sequence.
28685
28686 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28687
28688         * doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
28689
28690 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28691
28692         * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
28693         static.
28694         (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
28695         xlogue_layout::get_instance, logue_layout::xlogue_layout,
28696         sp_valid_at, fp_valid_at, choose_basereg): Formatting.
28697         (xlogue_layout::get_stub_rtx): Make static.
28698         (xlogue_layout::get_stub_name): Avoid const-cast, make static.
28699         (xlogue_layout::compute_stub_managed_regs): Rename to...
28700         (xlogue_layout::count_stub_managed_regs): ...this.
28701         (xlogue_layout::is_stub_managed_reg): New function.
28702         (xlogue_layout::m_stub_names): Rename to...
28703         (xlogue_layout::s_stub_names): ...this, make static.
28704         (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
28705         xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
28706         xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
28707         xlogue_layout::s_stub_names): Instantiate statics.
28708         (stub_managed_regs): Remove.
28709         (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
28710         (disable_call_ms2sysv_xlogues): Rename to...
28711         (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
28712         (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
28713         warning logic.
28714         (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
28715         change after reload_completed.
28716         (ix86_can_use_return_insn_p): Use the ix86_frame data structure
28717         directly.
28718         (ix86_expand_prologue): Likewise.
28719         (ix86_expand_epilogue): Likewise.
28720         (ix86_expand_split_stack_prologue): Likewise.
28721         (ix86_compute_frame_layout): Remove frame parameter ...
28722         (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
28723         (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
28724         only if necessary.
28725         (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
28726         (ix86_frame): Move from here ...
28727         * config/i386/i386.h (ix86_frame): ... to here.
28728         (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
28729         complete ix86_frame data structure instead.  Remove some_ld_name.
28730
28731 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
28732
28733         * dwarf2out.c (dwarf2out_late_global_decl): Add locations for
28734         symbols that hold a DECL_VALUE_EXPR.
28735
28736 2017-06-01  Martin Jambor  <mjambor@suse.cz>
28737
28738         PR tree-optimization/80898
28739         * tree-sra.c (process_subtree_disqualification): Removed.
28740         (disqualify_candidate): Do not acll
28741         process_subtree_disqualification.
28742         (subtree_mark_written_and_enqueue): New function.
28743         (propagate_all_subaccesses): Set grp_write of LHS subtree if the
28744         RHS has been disqualified and re-queue LHS if necessary.  Apart
28745         from that, ignore disqualified RHS.
28746
28747 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
28748
28749         * config/s390/s390.c (s390_emit_epilogue): Disable early return
28750         address fetch for z10 or later.
28751
28752 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28753
28754         * config/arc/arc.md (tst_movb): Add guard when splitting.
28755
28756 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28757
28758         * config/arc/arc.c (arc_can_eliminate): Test against
28759         arc_frame_pointer_needed.
28760
28761 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28762
28763         * config/arc/arc.c (arc_expand_prologue): Emit a special barrier
28764         to prevent store reordering.
28765         * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
28766         (type): Add block type.
28767         (stack_tie): Define special instruction to be used in
28768         expand_prologue.
28769
28770 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28771
28772         * config/arc/arc.md (commutative_binary_comparison): Remove 'I'
28773         constraint. It is not valid for the pattern.
28774         (noncommutative_binary_comparison): Likewise.
28775
28776 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28777
28778         * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
28779         scaled addresses.
28780
28781 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28782
28783         * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
28784         be used by the reg-alloc.
28785
28786 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28787
28788         * config/arc/arc.md (mulsi3): Avoid use of hard registers before
28789         reg-alloc when having mul64 or mul32x16 instructions.
28790         (mulsidi3): Likewise.
28791         (umulsidi3): Likewise.
28792         (mulsi32x16): New pattern.
28793         (mulsi64): Likewise.
28794         (mulsidi64): Likewise.
28795         (umulsidi64): Likewise.
28796         (MUL32x16_REG): Define.
28797         (mul64_600): Use MUL32x16_REG.
28798         (mac64_600): Likewise.
28799         (umul64_600): Likewise.
28800         (umac64_600): Likewise.
28801
28802 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28803
28804         * config/arc/arc.md (mulsi3_700): Make it commutative.
28805
28806 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
28807
28808         * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
28809         type for movstouw.
28810         (*sign_extendsidi2_insn): Likewise for movstosw.
28811
28812 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
28813
28814         * dwarf2out.c (get_discr_value): Call the get_debug_type hook on
28815         the type of the input discriminant value.  Convert the
28816         discriminant value of signedness vary.
28817
28818 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
28819
28820         * doc/invoke.texi (-Wcatch-value): Document new shortcut.
28821         Add to -Wall section.
28822
28823 2017-06-01  Richard Biener  <rguenther@suse.de>
28824
28825         PR middle-end/66313
28826         * fold-const.c (fold_plusminus_mult_expr): If the factored
28827         factor may be zero use a wrapping type for the inner operation.
28828         * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
28829         and handle moved defs.
28830         (process_assignment): Properly guard the unary op case.  Return a
28831         tri-state indicating that moving the stmt before the call may allow
28832         to continue.  Pass through to_move.
28833         (find_tail_calls): Handle moving unrelated defs before
28834         the call.
28835
28836 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
28837
28838         PR target/80618
28839         * config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
28840         splitter result in the canonical way.
28841
28842 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
28843
28844         * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
28845         also for 32bit target.  Update insn attributes.
28846         (zero-extendsidi2 splitter): Allow all registers for operand 1.
28847
28848 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
28849
28850         * config/i386/avx512fintrin.h (_mm_mask_max_sd)
28851         (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
28852         (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
28853         (_mm_maskz_min_ss): New intrinsics.
28854
28855 2017-05-31  Martin Liska  <mliska@suse.cz>
28856
28857         * tree-vect-loop.c (vect_create_epilog_for_reduction):
28858         Change comment style to one we normally use.
28859         (vectorizable_reduction): Likewise.
28860         (vectorizable_induction): Likewise.
28861         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
28862         (vectorizable_call): Likewise.
28863         (vectorizable_simd_clone_call): Likewise.
28864         (vectorizable_conversion): Likewise.
28865         (vectorizable_assignment): Likewise.
28866         (vectorizable_shift): Likewise.
28867         (vectorizable_operation): Likewise.
28868         (vectorizable_store): Likewise.
28869         (vectorizable_load): Likewise.
28870         * tree-vectorizer.h: Likewise.
28871
28872 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
28873
28874         * passes.c (emergency_dump_function): New.
28875         * tree-pass.h (emergency_dump_function): Declare.
28876         * plugin.c (plugins_internal_error_function): Remove.
28877         * plugin.h (plugins_internal_error_function): Remove declaration.
28878         * toplev.c (internal_error_function): New static function.  Use it...
28879         (general_init): ...here.
28880
28881 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
28882
28883         * config/arc/arc.c (arc_print_operand): Handle constant operands.
28884         (arc_rtx_costs): Add costs for new patterns.
28885         * config/arc/arc.md: Additional *add_n and *sub_n patterns.
28886         * config/arc/predicates.md: Add _1_2_3_operand predicate.
28887
28888 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28889
28890         * tree-ssa-strlen.c (get_next_strinfo): New function.
28891         (get_stridx_plus_constant): Use it.
28892         (zero_length_string): Likewise.
28893         (adjust_related_strinfos): Likewise.
28894         (adjust_last_stmt): Likewise.
28895
28896 2017-05-31  Richard Biener  <rguenther@suse.de>
28897
28898         PR target/80880
28899         * config/i386/i386.c (ix86_expand_builtin): Remove assert
28900         for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
28901
28902 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28903
28904         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
28905         loop_vinfo argument and use of dependence distance vectors.
28906         Check instead whether the two references differ only in their
28907         initial value and assume that they have the same alignment if the
28908         difference is a multiple of the vector alignment.
28909         (vect_analyze_data_refs_alignment): Update call accordingly.
28910
28911 2017-05-31  Martin Liska  <mliska@suse.cz>
28912
28913         PR target/79155
28914         * config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
28915
28916 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28917
28918         * tree-vect-loop-manip.c (create_intersect_range_checks_index)
28919         (create_intersect_range_checks): Move from ...
28920         * tree-data-ref.c (create_intersect_range_checks_index)
28921         (create_intersect_range_checks): ... to here.
28922         (create_runtime_alias_checks): New function factored from ...
28923         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
28924         here.  Call above function.
28925         * tree-data-ref.h (create_runtime_alias_checks): New function.
28926
28927 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28928
28929         * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
28930         segment length for dr_b and compute it in wide_int.
28931
28932 2017-05-31  Richard Biener  <rguenther@suse.de>
28933
28934         PR tree-optimization/80906
28935         * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
28936         and pass through iv_map.
28937         (copy_bb_and_scalar_dependences): Adjust.
28938         (translate_pending_phi_nodes): Likewise.
28939         (copy_loop_close_phi_args): Handle code-generating IVs instead
28940         of ICEing.
28941
28942 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
28943
28944         * diagnostic-color.c (color_dict): Add "type-diff".
28945         (parse_gcc_colors): Update comment.
28946         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
28947         -fdiagnostics-show-template-tree and -fno-elide-type.
28948         (GCC_COLORS): Add type-diff to example.
28949         (type-diff=): New.
28950         (-fdiagnostics-show-template-tree): New.
28951         (-fno-elide-type): New.
28952         * pretty-print.c (pp_format): Pass quote and formatters[argno] to
28953         the pp_format_decoder callback.  Call any m_format_postprocessor's
28954         "handle" method.
28955         (pretty_printer::pretty_printer): Initialize
28956         m_format_postprocessor.
28957         (pretty_printer::~pretty_printer): Delete any
28958         m_format_postprocessor.
28959         * pretty-print.h (printer_fn): Add bool and const char ** parameters.
28960         (class format_postprocessor): New class.
28961         (struct pretty_printer::format_decoder): Document the new parameters.
28962         (struct pretty_printer::m_format_postprocessor): New field.
28963         * tree-diagnostic.c (default_tree_printer): Update for new
28964         bool and const char ** params.
28965         * tree-diagnostic.h (default_tree_printer): Likewise.
28966
28967 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
28968
28969         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
28970         (lwa_operand): Delete rs6000_gen_cell_microcode test.
28971         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
28972         rs6000_gen_cell_microcode code.
28973         (rs6000_final_prescan_insn): Delete.
28974         (rs6000_opt_vars): Delete the "gen-cell-microcode" and
28975         "warn-cell-microcode" entries.
28976         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
28977         * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
28978         throughout.  Change cc_reg_not_micro_cr0_operand to
28979         cc_reg_not_cr0_operand throughout.
28980         (*extendhi<mode>2_noload): Delete.
28981         * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
28982         (mwarn-cell-microcode): Delete.
28983         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
28984         -mgen-cell-microcode and -mwarn-cell-microcode.
28985
28986 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
28987
28988         PR target/80833
28989         * config/i386/constraints.md (Yd): New constraint.
28990         (Ye): Ditto.
28991         * config/i386/i386.md (*movti_internal): Add (?r, Ye)
28992         and (?Yd, r) alternatives.  Update insn attributes.
28993         * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
28994         and (?*Yd, r) alternatives.  Update insn attributes.
28995         (double-mode inter-unit splitters): Add new GR<->XMM splitters.
28996
28997 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
28998
28999         * gimplify.c (gimplify_modify_expr): Don't create a
29000         DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
29001         function.
29002
29003 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
29004
29005         * config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
29006
29007 2017-05-30  Richard Biener  <rguenther@suse.de>
29008
29009         * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
29010         and reduc_def fields.
29011         (STMT_VINFO_REDUC_TYPE): New define.
29012         (STMT_VINFO_REDUC_DEF): Likewise.
29013         (vect_force_simple_reduction): Adjust prototype.
29014         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
29015         (vect_is_simple_reduction): Remove check_reduction argument.
29016         (vect_force_simple_reduction): Adjust and set
29017         STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29018         (vectorizable_reduction): Do not re-do reduction analysis
29019         but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29020         * tree-parloops.c (gather_scalar_reductions): Adjust.
29021
29022 2017-05-30  Richard Biener  <rguenther@suse.de>
29023
29024         PR middle-end/80901
29025         * cfgexpand.c (expand_gimple_cond): Match up loop fixup with
29026         split_edge code.
29027
29028 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29029
29030         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
29031         Introduce unknown_misalignment parameter and remove vf.
29032         (vect_peeling_hash_get_lowest_cost):
29033         Pass unknown_misalignment parameter.
29034         (vect_enhance_data_refs_alignment):
29035         Fix unsupportable data ref treatment.
29036
29037 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29038
29039         * tree-vect-data-refs.c (vect_get_data_access_cost):
29040         Workaround for SLP handling.
29041         (vect_enhance_data_refs_alignment):
29042         Compute costs for doing no peeling at all, compare to the best
29043         peeling costs so far and avoid peeling if cheaper.
29044
29045 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29046
29047         * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
29048         Return peeling info and set costs to zero for unlimited cost
29049         model.
29050         (vect_enhance_data_refs_alignment): Also inspect all datarefs
29051         with unknown misalignment. Compute and costs for unknown
29052         misalignment, compare them to the costs for known misalignment
29053         and choose the cheapest for peeling.
29054
29055 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29056
29057         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
29058         (vect_get_peeling_costs_all_drs): Create function.
29059         (vect_peeling_hash_get_lowest_cost):
29060         Use vect_get_peeling_costs_all_drs.
29061         (vect_peeling_supportable): Create function.
29062         (vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
29063
29064 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29065
29066         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
29067         DR_HAS_NEGATIVE_STEP.
29068         (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
29069         (vect_enhance_data_refs_alignment): Use.
29070         (vect_duplicate_ssa_name_ptr_info): Use.
29071         * tree-vectorizer.h (dr_misalignment): Use.
29072         (known_alignment_for_access_p): Use.
29073
29074 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
29075
29076         PR target/78838
29077         * config/msp430/msp430.c (gen_prefix): Return NULL when section name is
29078         .lowtext.
29079         (has_section_name): New function.
29080
29081 2017-05-30  Martin Liska  <mliska@suse.cz>
29082
29083         PR other/80909
29084         * auto-profile.c (get_function_decl_from_block): Fix
29085         parenthesis.
29086
29087 2017-05-30  Richard Biener  <rguenther@suse.de>
29088
29089         PR middle-end/80876
29090         * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
29091
29092 2017-05-30  Martin Liska  <mliska@suse.cz>
29093
29094         * dumpfile.c: Use newly added macro DUMP_FILE_INFO.
29095         * dumpfile.h (struct dump_file_info): Remove ctors.
29096
29097 2017-05-30  Martin Liska  <mliska@suse.cz>
29098
29099         * predict.def: Fix GNU coding style.
29100
29101 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29102
29103         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
29104         Mark 'to' argument with ATTRIBUTE_UNUSED.
29105
29106 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29107
29108         * config/xtensa/xtensa.c (xtensa_emit_call): Use
29109         HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
29110         (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
29111         format string.
29112
29113 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
29114
29115         * doc/install.texi (Options specification): Restore entry of
29116         --enable-sjlj-exceptions.
29117
29118 2017-05-27  Michael Eager  <eager@eagercon.com>
29119
29120         Revert:
29121         2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
29122
29123         See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
29124
29125         * config/microblaze/microblaze.h
29126         (FIXED_REGISTERS): Update in macro.
29127         (CALL_USED_REGISTERS): Update in macro.
29128
29129 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
29130
29131         * doc/install.texi: Add links to macOS binary distributions.
29132
29133 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
29134
29135         PR bootstrap/80887
29136         Revert:
29137         2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29138
29139         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29140
29141 2017-05-26  Martin Liska  <mliska@suse.cz>
29142
29143         * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
29144
29145 2017-05-26  Martin Liska  <mliska@suse.cz>
29146
29147         * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
29148         always leading ';; '.
29149         (dump_bb_info): Likewise.
29150         (brief_dump_cfg): Likewise.
29151         * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
29152         * dumpfile.c: Remove usage of TDF_VERBOSE.
29153         * dumpfile.h (enum dump_kind): Likewise.
29154         (dump_gimple_bb_header): Do not use TDF_COMMENT.
29155         * print-tree.c (debug_verbose): Remove.
29156         * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
29157         (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
29158         * tree-diagnostic.c (default_tree_printer): Replace
29159         TDF_DIAGNOSTIC with TDF_SLIM.
29160
29161 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29162
29163         * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
29164         in parameter loop, rather than loop_vinfo.
29165         (create_intersect_range_checks): Ditto.
29166         (vect_create_cond_for_alias_checks): Update call to above functions.
29167
29168 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29169
29170         PR tree-optimization/80815
29171         * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
29172         for merging runtime alias checks.  Handle negative DR_STEPs.
29173
29174 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29175
29176         * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
29177         Move from ...
29178         * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
29179         * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
29180         out code pruning runtime alias checks.
29181         * tree-data-ref.c (prune_runtime_alias_test_list): New function
29182         factored out from above.
29183         * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29184         Move from ...
29185         * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29186         ... to here.
29187         (prune_runtime_alias_test_list): New decalaration.
29188
29189 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29190
29191         * tree-vect-data-refs.c (compare_tree): Rename and move ...
29192         * tree-data-ref.c (data_ref_compare_tree): ... to here.
29193         * tree-data-ref.h (data_ref_compare_tree): New decalaration.
29194         * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
29195         (operator==, comp_dr_with_seg_len_pair): Ditto.
29196         (vect_prune_runtime_alias_test_list): Ditto.
29197
29198 2017-05-26  Martin Liska  <mliska@suse.cz>
29199
29200         PR ipa/80663
29201         * params.def: Bound partial-inlining-entry-probability param.
29202
29203 2017-05-26  Marek Polacek  <polacek@redhat.com>
29204
29205         PR sanitizer/80875
29206         * fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
29207         can be negated.
29208
29209 2017-05-26  Richard Biener  <rguenther@suse.de>
29210
29211         PR tree-optimization/80842
29212         * tree-ssa-ccp.c (set_lattice_value): Always meet with the old
29213         value.
29214
29215 2017-05-26  Richard Biener  <rguenther@suse.de>
29216
29217         PR tree-optimization/80844
29218         * tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
29219
29220 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
29221
29222         * doc/md.texi (Machine Constraints): Update x86 family
29223         machine constraints section to match 'config/i386/constraints.md'.
29224
29225 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
29226
29227         * doc/invoke.texi (-Wcatch-value=): Document new warning option.
29228
29229 2017-05-25  Nathan Sidwell  <nathan@acm.org>
29230
29231         * doc/invoke.texi (--enable-languages): Update documentation.
29232
29233 2017-05-25  Martin Liska  <mliska@suse.cz>
29234
29235         * dumpfile.c: Add TDF_FOLDING.
29236         * dumpfile.h (enum dump_kind): Likewise.
29237         * genmatch.c (dt_simplify::gen_1): Use it.
29238
29239 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29240
29241         * match.pd (view_convert (convert@0 @1)): Handle zero-extension.
29242
29243 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29244
29245         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29246         * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
29247
29248 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29249
29250         * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
29251         * match.pd (X == C): Rewrite it here.
29252         (with_possible_nonzero_bits, with_possible_nonzero_bits2,
29253         with_certain_nonzero_bits2): New predicates.
29254         * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
29255
29256 2017-05-24  Nathan Sidwell  <nathan@acm.org>
29257
29258         * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
29259         avoid warning.
29260
29261         * auto-profile.c (afdo_propagate): Adjust T const cast to avoid
29262         warning.
29263
29264 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29265
29266         * config/powerpcspe: New port.  Files are copied from the rs6000
29267         port, with "rs6000" in filenames replaced by "powerpcspe".
29268
29269 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
29270
29271         PR rtl-optimization/80754
29272         * lra-remat.c (do_remat): Add overlap checks for dst_regno.
29273
29274 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
29275
29276         * config/sparc/sparc.md (length): Return the correct value for -mflat
29277         sibcalls to match output_sibcall.
29278
29279 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29280
29281         PR bootstrap/80860
29282         PR bootstrap/80843
29283         * config/rs6000/rs6000.c (struct machine_function): Add new field
29284         n_components.
29285         (rs6000_get_separate_components): Init that field, use it.
29286         (rs6000_components_for_bb): Use the field.
29287
29288 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29289
29290         * config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
29291
29292 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
29293
29294         PR middle-end/80823
29295         * tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
29296
29297 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29298
29299         PR target/80725
29300         * config/s390/s390.c (s390_check_qrst_address): Check incoming
29301         address against address_operand predicate.
29302         * config/s390/s390.md ("*indirect_jump"): Swap alternatives.
29303
29304 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
29305
29306         * var-tracking.c (track_expr_p): Do not return 0 for tracked record
29307         parameters passed indirectly.
29308
29309 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
29310
29311         * config/i386/i386.md (*movdi_internal): Remove SSE4
29312         alternative 18 (?r, *v).  Update insn attributes.
29313         (*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
29314         Update insn attributes.
29315         (*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
29316         Update insn attributes.
29317         * config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
29318         alternative 1 (r, v). Remove isa attribute.
29319         * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
29320         Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
29321         and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
29322
29323 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29324
29325         * doc/sourcebuild.texi (Directives, Verify compiler message): Document
29326         dg-line directive.
29327
29328 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29329
29330         * cgraphunit.c (symbol_table::process_new_functions): Update.
29331         * ipa-fnsummary.c (pass_data_inline_parameters): Remove.
29332         (inline_generate_summary): Rename to ...
29333         (ipa_fn_summary_generate): ... this one.
29334         (inline_read_summary): Rename to ...
29335         (ipa_fn_summary_read): ... this one.
29336         (inline_write_summary): Rename to ...
29337         (ipa_fn_summary_write): ... this one.
29338         (inline_free_summary): Rename to ...
29339         (ipa_free_fn_summary): ... this one.
29340         (pass_data_local_fn_summary, pass_local_fn_summary,
29341         make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
29342         pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
29343         pass_data_ipa_fn_summary, pass_ipa_fn_summary,
29344         make_pass_ipa_fn_summary): New.
29345         * ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
29346         inline_write_summary, inline_free_summary): Remove.
29347         (ipa_free_fn_summary) : New.
29348         * ipa-inline.c (ipa_inline): Update.
29349         (pass_ipa_inline): Do not generate summaries.
29350         * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
29351         Remove.
29352         * passes.def: Replace pass_inline_parameters by pass_local_fn_summary
29353         and add pass_ipa_fn_summary.
29354         * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
29355         New.
29356         (make_pass_inline_parameters): Remove.
29357
29358 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
29359
29360         * omp-low.c (struct omp_context): Remove "default_kind" member.
29361         Adjust all users.
29362
29363         * omp-offload.c (execute_oacc_device_lower): Remove the
29364         parallelism dimensions function attributes for unparallelized
29365         OpenACC kernels constructs.
29366
29367 2017-05-23  Martin Liska  <mliska@suse.cz>
29368
29369         * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
29370         functions.
29371         (cgraph_edge::make_speculative): Likewise.
29372         (cgraph_edge::resolve_speculation): Likewise.
29373         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
29374         (cgraph_node::dump): Likewise.
29375         * cgraph.h: Likewise.
29376         * cgraphunit.c (analyze_functions): Likewise.
29377         (symbol_table::compile): Likewise.
29378         * ipa-cp.c (print_all_lattices): Likewise.
29379         (determine_versionability): Likewise.
29380         (initialize_node_lattices): Likewise.
29381         (ipcp_verify_propagated_values): Likewise.
29382         (estimate_local_effects): Likewise.
29383         (update_profiling_info): Likewise.
29384         (create_specialized_node): Likewise.
29385         (perhaps_add_new_callers): Likewise.
29386         (decide_about_value): Likewise.
29387         (decide_whether_version_node): Likewise.
29388         (identify_dead_nodes): Likewise.
29389         (ipcp_store_bits_results): Likewise.
29390         * ipa-devirt.c (dump_targets): Likewise.
29391         (ipa_devirt): Likewise.
29392         * ipa-icf.c (sem_item::dump): Likewise.
29393         (sem_function::equals): Likewise.
29394         (sem_variable::equals): Likewise.
29395         (sem_item_optimizer::read_section): Likewise.
29396         (sem_item_optimizer::execute): Likewise.
29397         (congruence_class::dump): Likewise.
29398         * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
29399         (dump_inline_summary): Likewise.
29400         (estimate_node_size_and_time): Likewise.
29401         (inline_analyze_function): Likewise.
29402         * ipa-inline-transform.c (inline_call): Likewise.
29403         * ipa-inline.c (report_inline_failed_reason): Likewise.
29404         (want_early_inline_function_p): Likewise.
29405         (edge_badness): Likewise.
29406         (update_edge_key): Likewise.
29407         (inline_small_functions): Likewise.
29408         * ipa-profile.c (ipa_profile): Likewise.
29409         * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
29410         (ipa_make_edge_direct_to_target): Likewise.
29411         (remove_described_reference): Likewise.
29412         (ipa_impossible_devirt_target): Likewise.
29413         (propagate_controlled_uses): Likewise.
29414         (ipa_print_node_params): Likewise.
29415         (ipcp_transform_function): Likewise.
29416         * ipa-pure-const.c (pure_const_read_summary): Likewise.
29417         (propagate_pure_const): Likewise.
29418         * ipa-reference.c (generate_summary): Likewise.
29419         (read_write_all_from_decl): Likewise.
29420         (propagate): Likewise.
29421         (ipa_reference_read_optimization_summary): Likewise.
29422         * ipa-utils.c (ipa_merge_profiles): Likewise.
29423         * ipa.c (walk_polymorphic_call_targets): Likewise.
29424         (symbol_table::remove_unreachable_nodes): Likewise.
29425         (ipa_single_use): Likewise.
29426         * passes.c (execute_todo): Likewise.
29427         * predict.c (drop_profile): Likewise.
29428         * symtab.c (symtab_node::get_dump_name): New function.
29429         (symtab_node::dump_name): Likewise.
29430         (symtab_node::dump_asm_name): Likewise.
29431         (symtab_node::dump_references): Likewise.
29432         (symtab_node::dump_referring): Likewise.
29433         (symtab_node::dump_base): Likewise.
29434         (symtab_node::debug_symtab): Likewise.
29435         * tree-sra.c (convert_callers_for_node): Likewise.
29436         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29437         * value-prof.c (init_node_map): Likewise.
29438
29439 2017-05-23  Martin Liska  <mliska@suse.cz>
29440
29441         * cgraph.h: Move symtab_node::dump_table to symbol_table::dump
29442         and symtab_node::debug_symtab to symbol_table::debug.
29443         * cgraphunit.c (analyze_functions): Use the renamed function.
29444         (symbol_table::compile): Likewise.
29445         * ipa-cp.c (ipcp_verify_propagated_values): Likewise.
29446         * ipa-icf.c (sem_item_optimizer::execute): Likewise.
29447         * passes.c (execute_todo): Likewise.
29448         * symtab.c (symbol_table::dump): New function.
29449         * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
29450
29451 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29452
29453         * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
29454         that nonconst implies exec.
29455
29456 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29457
29458         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29459         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29460         (inline_edge_summary_vec): Turn into ...
29461         (ipa_call_summaries): ... this one.
29462         (redirect_to_unreachable, edge_set_predicate,
29463         evaluate_properties_for_edge, inline_summary_alloc,
29464         reset_ipa_call_summary, reset_inline_summary,
29465         inline_summary_t::duplicate): Update.
29466         (inline_edge_duplication_hook): Turn to ...
29467         (ipa_call_summary_t::duplicate): ... this one.
29468         (inline_edge_removal_hook): Turn to ...
29469         (ipa_call_summary_t::remove): ... this one.
29470         (dump_inline_edge_summary): Turn to ...
29471         (dump_ipa_call_summary): ... this one.
29472         (estimate_function_body_sizes): Update.
29473         (inline_update_callee_summaries): Update.
29474         (remap_edge_change_prob): Update.
29475         (remap_edge_summaries): Update.
29476         (inline_merge_summary): Update.
29477         (do_estimate_edge_time): Update.
29478         (inline_generate_summary): Update.
29479         (inline_read_section): Update.
29480         (inline_read_summary): Update.
29481         (inline_free_summary): Update.
29482         * ipa-inline.c (can_inline_edge_p): Update.
29483         (compute_inlined_call_time): Update.
29484         (want_inline_small_function_p): Update.
29485         (edge_badness): Update.
29486         (early_inliner): Update.
29487         * ipa-inline.h (inline_edge_summary): Turn to ...
29488         (ipa_call_summary): ... this one.
29489         (ipa_call_summary_t): New class.
29490         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29491         (ipa_call_summaries): New.
29492         (inline_edge_summary): Remove.
29493         (estimate_edge_growth): Update.
29494         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29495         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29496         * ipa-split.c (execute_split_functions): Update.
29497         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29498
29499 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29500
29501         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29502         attributes): Document rdrand effective target.
29503
29504 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29505
29506         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29507         attributes): Sort alphabetically.
29508
29509 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
29510
29511         * config/avr/genmultilib.awk: Use gsub instead of gensub.
29512
29513 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
29514
29515         PR target/80718
29516         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
29517         V2DF/V2DI splat into two separate patterns, one that handles
29518         registers, and the other that only handles memory.  Drop support
29519         for splatting from a GPR on ISA 2.07 and then splitting the
29520         splat into direct move and splat.
29521         (vsx_splat_<mode>_reg): Likewise.
29522         (vsx_splat_<mode>_mem): Likewise.
29523
29524 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
29525
29526         * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
29527
29528 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
29529
29530         PR middle-end/80809
29531         * omp-low.c (finish_taskreg_remap): New function.
29532         (finish_taskreg_scan): If unit size of ctx->record_type
29533         is non-constant, unshare the size expression and replace
29534         decls in it with possible outer var refs.
29535
29536         PR middle-end/80809
29537         * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
29538         GOVD_SHARED rather than GOVD_PRIVATE with it.
29539         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
29540         GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
29541
29542         PR middle-end/80853
29543         * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
29544         as last argument to build_outer_var_ref for pointer bases of array
29545         section reductions.
29546
29547 2017-05-19  Martin Sebor  <msebor@redhat.com>
29548
29549         * print-tree.c (print_node): Print DECL_READ_P flag.
29550
29551 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29552
29553         * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
29554         * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
29555         * cgraph.c: Likewise.
29556         * cgraphunit.c: Likewise.
29557         * gengtype.c: Likewise.
29558         * ipa-cp.c: Likewise.
29559         * ipa-devirt.c: Likewise.
29560         * ipa-icf.c: Likewise.
29561         * ipa-predicate.c: Likewise.
29562         * ipa-profile.c: Likewise.
29563         * ipa-prop.c: Likewise.
29564         * ipa-split.c: Likewise.
29565         * ipa.c: Likewise.
29566         * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
29567         edge_predicate_pool, dump_inline_hints,
29568         inline_summary::account_size_time, redirect_to_unreachable,
29569         edge_set_predicate, set_hint_predicate,
29570         evaluate_conditions_for_known_args, evaluate_properties_for_edge,
29571         inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
29572         inline_summary_t::remove, remap_hint_predicate_after_duplication,
29573         inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
29574         ipa_call_summary_t::remove, initialize_growth_caches,
29575         free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
29576         debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
29577         mark_modified, unmodified_parm_1, unmodified_parm,
29578         unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
29579         set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
29580         compute_bb_predicates, will_be_nonconstant_expr_predicate,
29581         will_be_nonconstant_predicate, record_modified_bb_info,
29582         get_minimal_bb, record_modified, param_change_prob,
29583         phi_result_unknown_predicate, predicate_for_phi_result,
29584         array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
29585         estimate_function_body_sizes, compute_inline_parameters,
29586         compute_inline_parameters_for_curren, pass_data_inline_parameters,
29587         estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
29588         inline_update_callee_summaries, remap_edge_change_prob,
29589         remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
29590         inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
29591         inline_analyze_function, inline_summary_t::insert,
29592         inline_generate_summary, read_ipa_call_summary, inline_read_section,
29593         inline_read_summary, write_ipa_call_summary, inline_write_summary,
29594         inline_free_summary): Move to ipa-fnsummary.h
29595         (predicate_t): Remove.
29596         * ipa-fnsummary.c: New file.
29597         * ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
29598         (enum inline_hints_vals, inline_hints, agg_position_info,
29599         INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
29600         inline_summaries, ipa_call_summary, ipa_call_summary_t,
29601         ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
29602         dump_inline_summary, dump_inline_hints, inline_generate_summary,
29603         inline_read_summary, inline_write_summary, inline_free_summary,
29604         inline_analyze_function, initialize_inline_failed,
29605         inline_merge_summary, inline_update_overall_summary,
29606         compute_inline_parameters): Move to ipa-fnsummary.h
29607         * ipa-fnsummary.h: New file.
29608         * ipa-inline-transform.h: Include ipa-inline.h.
29609         * ipa-inline.c: LIkewise.
29610
29611 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29612
29613         * ipa-inline.c (edge_badness): Use inlined_time instead of
29614         inline_summaries->get.
29615
29616 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29617
29618         * ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
29619
29620 2017-05-22  Nathan Sidwell  <nathan@acm.org>
29621
29622         * doc/invoke.texi (fdump-translation-unit): Delete documentation.
29623         (fdump-lang): Document 'raw' option.
29624         * dumpfile.h (TDI_tu): Delete.
29625         * dumpfile.c (dump_files): Remove translation-unit.
29626         (FIRST_AUTO_NUMBERED_DUMP): Decrement.
29627
29628 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
29629
29630         * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
29631         command option from $(AWK) call.
29632         * config/avr/genmultilib.awk: Simplify and rewrite so that it
29633         generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
29634         [FORMAT]: Remove handling of variable.
29635         * config/avr/t-multilib: Regenerate.
29636
29637 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29638
29639         * ipa-inline-analysis.c (inline_summary::reset): Do not reset
29640         self_time.
29641         (dump_inline_summary): Do not print self_time.
29642         (estimate_function_body_sizes): Do not set self_time.
29643         (compute_inline_parameters): Likewise.
29644         (inline_read_section, inline_write_summary): Do not stream self_time.
29645         * ipa-inline.h (inline_summary): Drop self_time.
29646
29647 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29648
29649         * ipa-inline-analysis.c (account_size_time): Rename to ...
29650         (inline_summary::account_size_time): ... this one.
29651         (reset_ipa_call_summary): Turn to ...
29652         (ipa_call_summary::reset): ... this one.
29653         (reset_inline_summary): Turn to ...
29654         (inline_summary::reset): ... this one.
29655         (inline_summary_t::remove): Update.
29656         (inline_summary_t::duplicate): Update.
29657         (ipa_call_summary_t::remove): Update.
29658         (dump_inline_summary): Update.
29659         (estimate_function_body_sizes): Update.
29660         (compute_inline_parameters): Update.
29661         (estimate_node_size_and_time): Update.
29662         (inline_merge_summary): Update.
29663         (inline_update_overall_summary): Update.
29664         (inline_read_section): Update.
29665         (inline_write_summary): Update.
29666         * ipa-inline.h (inline_summary): Rename entry to size_time_table;
29667         add account_size_time and reset member functions.
29668         (ipa_call_summary): Add reset function.
29669         * ipa-predicate.h (predicate::operator &): Constify.
29670
29671 2017-05-22  Richard Biener  <rguenther@suse.de>
29672
29673         * df-scan.c (df_insn_refs_verify): Speedup when not verifying.
29674
29675 2017-05-19  Jason Merrill  <jason@redhat.com>
29676
29677         * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
29678
29679 2017-05-19  Marek Polacek  <polacek@redhat.com>
29680
29681         PR sanitizer/80800
29682         * fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
29683         TYPE_OVERFLOW_WRAPS checks.
29684
29685 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
29686
29687         * tree-core.h (enum omp_clause_default_kind): Add
29688         "OMP_CLAUSE_DEFAULT_PRESENT".
29689         * tree-pretty-print.c (dump_omp_clause): Handle it.
29690         * gimplify.c (enum gimplify_omp_var_data): Add
29691         "GOVD_MAP_FORCE_PRESENT".
29692         (gimplify_adjust_omp_clauses_1): Map it to
29693         "GOMP_MAP_FORCE_PRESENT".
29694         (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
29695
29696         * gimplify.c (oacc_default_clause): Clarify.
29697
29698 2017-05-19  Nathan Sidwell  <nathan@acm.org>
29699
29700         LANG_HOOK_REGISTER_DUMPS
29701         * toplev.c (general_init): Call register dump lang hook.
29702         * doc/invoke.texi: Document -fdump-lang option family.
29703         * dumpfile.c (dump_files): Remove class dump here.
29704         (FIRST_AUTO_NUMBERED_DUMP): Adjust.
29705         * dumpfile.h (tree_dump_index): Remove TDI_class.
29706         * langhooks-def.h (lhd_register_dumps): Declare.
29707         (LANG_HOOKS_REGISTER_DUMPS): Define.
29708         (LANG_HOOKS_INITIALIZER): Add it.
29709         * langhooks.c (lhd_register_dumps): Define.
29710         * langhooks.h (struct lang_hooks): Add register_dumps.
29711
29712 2017-05-19  Nathan Sidwell  <nathan@acm.org>
29713
29714         * context.h (context::set_passes): New.
29715         * context.c (context::context): Do not create pass manager.
29716         * toplev.c (general_init): Create pass manager here.
29717
29718 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
29719
29720         * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
29721         use this splitter if two add or or instructions would also work for
29722         the constant we want to generate.
29723
29724 2017-05-19  Richard Biener  <rguenther@suse.de>
29725
29726         PR build/80821
29727         * genmatch.c (dt_node::gen_kids_1): Add missing scope around
29728         predicate evaluation.
29729
29730 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
29731
29732         * ipa-inline.h (ipa_call_summary): Turn sizes into signed;
29733         add ctor.
29734         * ipa-inline.c (want_inline_small_function_p): Do not cast to
29735         unsigned.
29736
29737 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
29738
29739         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29740         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29741         (inline_edge_summary_vec): Turn into ...
29742         (ipa_call_summaries): ... this one.
29743         (redirect_to_unreachable, edge_set_predicate,
29744         evaluate_properties_for_edge, inline_summary_alloc,
29745         reset_ipa_call_summary, reset_inline_summary,
29746         inline_summary_t::duplicate): Update.
29747         (inline_edge_duplication_hook): Turn to ...
29748         (ipa_call_summary_t::duplicate): ... this one.
29749         (inline_edge_removal_hook): Turn to ...
29750         (ipa_call_summary_t::remove): ... this one.
29751         (dump_inline_edge_summary): Turn to ...
29752         (dump_ipa_call_summary): ... this one.
29753         (estimate_function_body_sizes): Update.
29754         (inline_update_callee_summaries): Update.
29755         (remap_edge_change_prob): Update.
29756         (remap_edge_summaries): Update.
29757         (inline_merge_summary): Update.
29758         (do_estimate_edge_time): Update.
29759         (inline_generate_summary): Update.
29760         (inline_read_section): Update.
29761         (inline_read_summary): Update.
29762         (inline_free_summary): Update.
29763         * ipa-inline.c (can_inline_edge_p): Update.
29764         (compute_inlined_call_time): Update.
29765         (want_inline_small_function_p): Update.
29766         (edge_badness): Update.
29767         (early_inliner): Update.
29768         * ipa-inline.h (inline_edge_summary): Turn to ...
29769         (ipa_call_summary): ... this one.
29770         (ipa_call_summary_t): New class.
29771         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29772         (ipa_call_summaries): New.
29773         (inline_edge_summary): Remove.
29774         (estimate_edge_growth): Update.
29775         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29776         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29777         * ipa-split.c (execute_split_functions): Update.
29778         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29779
29780 2017-05-19  Richard Biener  <rguenther@suse.de>
29781
29782         PR middle-end/80764
29783         * cfgexpand.c (expand_gimple_cond): Fix loop fixup.
29784
29785 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
29786
29787         * config/rs6000/rs6000.c (struct machine_function): Add field
29788         fpr_is_wrapped_separately.
29789         (rs6000_get_separate_components): Use 64 components.  Handle the
29790         new FPR components.
29791         (rs6000_components_for_bb): Handle the FPR components.
29792         (rs6000_emit_prologue_components): Handle the FPR components.
29793         (rs6000_emit_epilogue_components): Handle the FPR components.
29794         (rs6000_set_handled_components): Handle the FPR components.
29795         (rs6000_emit_prologue): Don't output prologue code for those FPRs
29796         that are already separately shrink-wrapped.
29797         (rs6000_emit_epilogue): Don't output epilogue code for those FPRs
29798         that are already separately shrink-wrapped.
29799
29800 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
29801
29802         PR target/80510
29803         * config/rs6000/predicates.md (simple_offsettable_mem_operand):
29804         New predicate.
29805
29806         * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
29807         (define_peephole2 for Altivec d-form load): Add peepholes to catch
29808         cases where the register allocator uses a move and an offsettable
29809         memory operation to/from a FPR register on ISA 2.06/2.07.
29810         (define_peephole2 for Altivec d-form store): Likewise.
29811
29812 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
29813
29814         PR target/80799
29815         * config/i386/mmx.md (*mov<mode>_internal): Enable
29816         alternatives 11, 12, 13 and 14 also for 32bit targets.
29817         Remove alternatives 15, 16, 17 and 18.
29818         * config/i386/sse.md (vec_concatv2di): Change
29819         alternative (!x, *y) to (x, ?!*Yn).
29820
29821 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
29822
29823         * dumpfile.h (enum dump_kind): Remove stray comma.
29824
29825 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29826
29827         * Makefile.in: Add ipa-predicate.o and ipa-predicate.h
29828         * ipa-inline-analysis.c (NUM_CONDITIONS): turn into
29829         predicate::num_conditions
29830         (IS_NOT_CONSTANT): turn into predicate::is_not_constant.
29831         (CHANGED): turn into predicate::changed.
29832         (agg_position_info): Move to ipa-predicate.h
29833         (add_condition, predicate::add_clause, predicate::operator &=,
29834         predicate::or_with, predicate::evaluate, predicate::probability,
29835         dump_condition, dump_clause, predicate::dump,
29836         predicate::remap_after_duplication, predicate::remap_after_inlining,
29837         predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
29838         (evaluate_conditions_for_known_args): Update.
29839         (set_cond_stmt_execution_predicate): Update.
29840         * ipa-inline.h: Include ipa-predicate.h
29841         (condition, inline_param_summary, conditions, agg_position_info,
29842         predicate): Move to ipa-predicate.h
29843         * ipa-predicate.c: New file.
29844         * ipa-predicate.h: New file.
29845
29846 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
29847
29848         * final.c (leaf_function_p): Check we are not in a sequence.
29849
29850 2017-05-18  Martin Liska  <mliska@suse.cz>
29851
29852         * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
29853         * dumpfile.c (dump_register): Use new enum dump_kind.
29854         (get_dump_file_name): Likewise.
29855         (dump_enable_all): Likewise.
29856         (dump_switch_p_1): Likewise.
29857         (enable_rtl_dump_file): Remove usage of TDF_RTL.
29858         * dumpfile.h (enum dump_kind): New enum type.
29859         (struct dump_file_info): Create constructor and
29860         format fields and comments.
29861         * passes.c (pass_manager::register_one_dump_file):
29862         Use num dump_kind.
29863         * statistics.c (statistics_early_init): Likewise.
29864         * tree-ssa-loop-prefetch.c (dump_mem_details): Replace
29865         TDF_TREE with TDF_SLIM.
29866         (gather_memory_references_ref): Likewise.
29867
29868 2017-05-18  Martin Liska  <mliska@suse.cz>
29869
29870         * vec.h (struct vnull): Use it.
29871
29872 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29873
29874         * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
29875         (true_predicate, false_predicate, true_predicate_p,
29876         false_predicate_p): Remove.
29877         (single_cond_predicate, not_inlined_predicate): Turn to member function
29878         in ipa-inline.h
29879         (add_condition): Update.
29880         (add_clause): Turn to...
29881         (predicate::add_clause): ... this one; update; allow passing NULL
29882         as parameter.
29883         (and_predicates): Turn to ...
29884         (predicate::operator &=): ... this one.
29885         (predicates_equal_p): Move to predicate::operator == in ipa-inline.h
29886         (or_predicates): Turn to ...
29887         (predicate::or_with): ... this one.
29888         (evaluate_predicate): Turn to ...
29889         (predicate::evaluate): ... this one.
29890         (predicate_probability): Turn to ...
29891         (predicate::probability): ... this one.
29892         (dump_condition): Update.
29893         (dump_predicate): Turn to ...
29894         (predicate::dump): ... this one.
29895         (account_size_time): Update.
29896         (edge_set_predicate): Update.
29897         (set_hint_predicate): UPdate.
29898         (evaluate_conditions_for_known_args): Update.
29899         (evaluate_properties_for_edge): Update.
29900         (remap_predicate_after_duplication): Turn to...
29901         (predicate::remap_after_duplication): ... this one.
29902         (remap_hint_predicate_after_duplication): Update.
29903         (inline_summary_t::duplicate): UPdate.
29904         (dump_inline_edge_summary): Update.
29905         (dump_inline_summary): Update.
29906         (set_cond_stmt_execution_predicate): Update.
29907         (set_switch_stmt_execution_predicate): Update.
29908         (compute_bb_predicates): Update.
29909         (will_be_nonconstant_expr_predicate): Update.
29910         (will_be_nonconstant_predicate): Update.
29911         (phi_result_unknown_predicate): Update.
29912         (predicate_for_phi_result): Update.
29913         (array_index_predicate): Update.
29914         (estimate_function_body_sizes): Update.
29915         (estimate_node_size_and_time): Update.
29916         (estimate_ipcp_clone_size_and_time): Update.
29917         (remap_predicate): Rename to ...
29918         (predicate::remap_after_inlining): ... this one.
29919         (remap_hint_predicate): Update.
29920         (inline_merge_summary): Update.
29921         (inline_update_overall_summary): Update.
29922         (estimate_size_after_inlining): Update.
29923         (read_predicate): Rename to ...
29924         (predicate::stream_in): ... this one.
29925         (read_inline_edge_summary): Update.
29926         (write_predicate): Rename to ...
29927         (predicate::stream_out): ... this one.
29928         (write_inline_edge_summary): Update.
29929         * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
29930         (clause_t): Turn to uint32_t
29931         (predicate): Turn to class; implement constructor and operators
29932         ==, !=, &
29933         (size_time_entry): Update.
29934         (inline_summary): Update.
29935         (inline_edge_summary): Update.
29936
29937 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
29938
29939         * fold-const.c (fold_binary_loc): Move transformation...
29940         * match.pd (C - X CMP X): ... here.
29941
29942 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
29943
29944         * config/sparc/sparc.c (sparc_option_override): Set function
29945         alignment for -mcpu=niagara7 to 64 to match the I$ line.
29946         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
29947         latency to 1.
29948         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
29949         latency to 2.
29950         * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
29951
29952 2017-05-18  Marek Polacek  <polacek@redhat.com>
29953
29954         PR sanitizer/80797
29955         * ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
29956         (pass_ubsan::execute): Call gimple_assign_single_p instead of
29957         gimple_assign_load_p.
29958
29959 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
29960
29961         PR middle-end/80692
29962         * real.c (do_compare): Give decimal_do_compare preference over
29963         comparing just the signs.
29964
29965 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
29966
29967         * doc/md.texi (Canonicalization of Instructions): Describe the
29968         canonical form of instructions that inherently set a condition
29969         code register.
29970
29971 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
29972
29973         PR middle-end/80775
29974         * tree-cfg.c: Move deletion of unreachable case statements to after
29975         the merging of consecutive case labels.
29976
29977 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29978
29979         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
29980         readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
29981         restoring of callee-saved registers.
29982
29983 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
29984
29985         * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
29986         * config/visium/visium.c (single_set_and_flags): Likewise.
29987         * config/visium/visium.md (Substitutions): Likewise.
29988
29989 2017-05-17  Martin Liska  <mliska@suse.cz>
29990
29991         * cfg.c: Introduce dump_flags_t type and
29992         use it instead of int type.
29993         * cfg.h: Likewise.
29994         * cfghooks.c: Likewise.
29995         * cfghooks.h (struct cfg_hooks): Likewise.
29996         * cfgrtl.c: Likewise.
29997         * cfgrtl.h: Likewise.
29998         * cgraph.c (cgraph_node::get_body): Likewise.
29999         * coretypes.h: Likewise.
30000         * domwalk.c: Likewise.
30001         * domwalk.h: Likewise.
30002         * dumpfile.c (struct dump_option_value_info): Likewise.
30003         (dump_enable_all): Likewise.
30004         (dump_switch_p_1): Likewise.
30005         (opt_info_switch_p): Likewise.
30006         * dumpfile.h (enum tree_dump_index): Likewise.
30007         (struct dump_file_info): Likewise.
30008         * genemit.c: Likewise.
30009         * generic-match-head.c: Likewise.
30010         * gengtype.c (open_base_files): Likewise.
30011         * gimple-pretty-print.c: Likewise.
30012         * gimple-pretty-print.h: Likewise.
30013         * graph.c (print_graph_cfg): Likewise.
30014         * graphite-scop-detection.c (dot_all_sese): Likewise.
30015         * ipa-devirt.c (build_type_inheritance_graph): Likewise.
30016         * loop-unroll.c (report_unroll): Likewise.
30017         * passes.c (pass_manager::register_one_dump_file): Likewise.
30018         * print-tree.c: Likewise.
30019         * statistics.c: Likewise.
30020         * tree-cfg.c: Likewise.
30021         * tree-cfg.h: Likewise.
30022         * tree-dfa.c: Likewise.
30023         * tree-dfa.h: Likewise.
30024         * tree-dump.c (dump_function): Likewise.
30025         * tree-dump.h (struct dump_info): Likewise.
30026         * tree-pretty-print.c: Likewise.
30027         * tree-pretty-print.h: Likewise.
30028         * tree-ssa-live.c: Likewise.
30029         * tree-ssa-live.h: Likewise.
30030         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
30031         * tree-vect-loop.c: Likewise.
30032         * tree-vect-slp.c: Likewise.
30033
30034 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
30035             Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30036
30037         PR tree-optimization/80457
30038         * tree-vect-stmts.c (vect_model_simple_cost): Model the cost
30039         of all arguments to a statement as scalar_to_vec operations.
30040         (vectorizable_call): Adjust call to vect_model_simple_cost for
30041         new parameter.
30042         (vectorizable_conversion): Likewise.
30043         (vectorizable_assignment): Likewise.
30044         (vectorizable_shift): Likewise.
30045         (vectorizable_operation): Likewise.
30046         (vectorizable_comparison): Likewise.
30047         (vect_is_simple_cond): Record the def types for operands.
30048         (vectorizable_condition): Likewise, call vect_model_simple_cost.
30049         * tree-vectorizer.h (vect_model_simple_cost): Add new parameter
30050         for statement argument count.
30051
30052 2017-05-16  Carl Love  <cel@us.ibm.com>
30053
30054         * config/rs6000/rs6000-c: Add support for built-in functions
30055         vector unsigned long long vec_bperm (vector unsigned long long,
30056                                              vector unsigned char)
30057         vector signed long long vec_mule (vector signed int,
30058                                           vector signed int)
30059         vector unsigned long long vec_mule (vector unsigned int,
30060                                             vector unsigned int)
30061         vector signed long long vec_mulo (vector signed int,
30062                                           vector signed int)
30063         vector unsigned long long vec_mulo (vector unsigned int,
30064                                             vector unsigned int)
30065         vector signed char vec_sldw (vector signed char,
30066                                      vector signed char,
30067                                      const int)
30068         vector unsigned char vec_sldw (vector unsigned char,
30069                                        vector unsigned char,
30070                                        const int)
30071         vector signed short vec_sldw (vector signed short,
30072                                       vector signed short,
30073                                       const int)
30074         vector unsigned short vec_sldw (vector unsigned short,
30075                                         vector unsigned short,
30076                                         const int)
30077         vector signed int vec_sldw (vector signed int,
30078                                     vector signed int,
30079                                     const int)
30080         vector unsigned int vec_sldw (vector unsigned int,
30081                                       vector unsigned int,
30082                                       const int)
30083         vector signed long long vec_sldw (vector signed long long,
30084                                           vector signed long long,
30085                                           const int)
30086         vector unsigned long long vec_sldw (vector unsigned long long,
30087                                             vector unsigned long long,
30088                                             const int)
30089         * config/rs6000/rs6000-c: Add support for built-in functions
30090         * config/rs6000/rs6000-builtin.def: Add definition for SLDW.
30091         * config/rs6000/altivec.h: Add defintion for vec_sldw.
30092         * doc/extend.texi: Update the built-in documentation for the
30093         new built-in functions.
30094
30095 2017-05-16  Marek Polacek  <polacek@redhat.com>
30096
30097         PR sanitizer/80536
30098         PR sanitizer/80386
30099         * tree.c (save_expr): Don't fold the expression.
30100
30101 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
30102
30103         * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
30104         to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
30105         and (?*y,m).  Update insn attributes.
30106
30107 2017-05-16  Martin Liska  <mliska@suse.cz>
30108
30109         * cgraph.c (cgraph_edge::resolve_speculation): Add default value for
30110         flags argument of print_gimple_stmt, print_gimple_expr,
30111         print_generic_stmt and print_generic_expr.
30112         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
30113         * coretypes.h: Likewise.
30114         * except.c (dump_eh_tree): Likewise.
30115         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
30116         * gimple-pretty-print.h: Likewise.
30117         * gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
30118         (backprop::push_to_worklist): Likewise.
30119         (backprop::pop_from_worklist): Likewise.
30120         (backprop::process_use): Likewise.
30121         (backprop::intersect_uses): Likewise.
30122         (note_replacement): Likewise.
30123         * gimple-ssa-store-merging.c
30124         (pass_store_merging::terminate_all_aliasing_chains): Likewise.
30125         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
30126         (pass_store_merging::execute): Likewise.
30127         * gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
30128         (ssa_base_cand_dump_callback): Likewise.
30129         (dump_incr_vec): Likewise.
30130         (replace_refs): Likewise.
30131         (replace_mult_candidate): Likewise.
30132         (create_add_on_incoming_edge): Likewise.
30133         (create_phi_basis): Likewise.
30134         (insert_initializers): Likewise.
30135         (all_phi_incrs_profitable): Likewise.
30136         (introduce_cast_before_cand): Likewise.
30137         (replace_one_candidate): Likewise.
30138         * gimplify.c (gimplify_expr): Likewise.
30139         * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
30140         (set_rename): Likewise.
30141         (rename_uses): Likewise.
30142         (copy_loop_phi_nodes): Likewise.
30143         (add_close_phis_to_merge_points): Likewise.
30144         (copy_loop_close_phi_args): Likewise.
30145         (copy_cond_phi_args): Likewise.
30146         (graphite_copy_stmts_from_block): Likewise.
30147         (translate_pending_phi_nodes): Likewise.
30148         * graphite-poly.c (print_pdr): Likewise.
30149         (dump_gbb_cases): Likewise.
30150         (dump_gbb_conditions): Likewise.
30151         (print_scop_params): Likewise.
30152         * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
30153         (build_cross_bb_scalars_use): Likewise.
30154         (gather_bbs::before_dom_children): Likewise.
30155         * hsa-dump.c (dump_hsa_immed): Likewise.
30156         * ipa-cp.c (print_ipcp_constant_value): Likewise.
30157         (get_replacement_map): Likewise.
30158         * ipa-inline-analysis.c (dump_condition): Likewise.
30159         (estimate_function_body_sizes): Likewise.
30160         * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
30161         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
30162         * ipa-prop.c (ipa_dump_param): Likewise.
30163         (ipa_print_node_jump_functions_for_edge): Likewise.
30164         (ipa_modify_call_arguments): Likewise.
30165         (ipa_modify_expr): Likewise.
30166         (ipa_dump_param_adjustments): Likewise.
30167         (ipa_dump_agg_replacement_values): Likewise.
30168         (ipcp_modif_dom_walker::before_dom_children): Likewise.
30169         * ipa-pure-const.c (check_stmt): Likewise.
30170         (pass_nothrow::execute): Likewise.
30171         * ipa-split.c (execute_split_functions): Likewise.
30172         * omp-offload.c (dump_oacc_loop_part): Likewise.
30173         (dump_oacc_loop): Likewise.
30174         * trans-mem.c (tm_log_emit): Likewise.
30175         (tm_memopt_accumulate_memops): Likewise.
30176         (dump_tm_memopt_set): Likewise.
30177         (dump_tm_memopt_transform): Likewise.
30178         * tree-cfg.c (gimple_verify_flow_info): Likewise.
30179         (print_loop): Likewise.
30180         * tree-chkp-opt.c (chkp_print_addr): Likewise.
30181         (chkp_gather_checks_info): Likewise.
30182         (chkp_get_check_result): Likewise.
30183         (chkp_remove_check_if_pass): Likewise.
30184         (chkp_use_outer_bounds_if_possible): Likewise.
30185         (chkp_reduce_bounds_lifetime): Likewise.
30186         * tree-chkp.c (chkp_register_addr_bounds): Likewise.
30187         (chkp_mark_completed_bounds): Likewise.
30188         (chkp_register_incomplete_bounds): Likewise.
30189         (chkp_mark_invalid_bounds): Likewise.
30190         (chkp_maybe_copy_and_register_bounds): Likewise.
30191         (chkp_build_returned_bound): Likewise.
30192         (chkp_get_bound_for_parm): Likewise.
30193         (chkp_build_bndldx): Likewise.
30194         (chkp_get_bounds_by_definition): Likewise.
30195         (chkp_generate_extern_var_bounds): Likewise.
30196         (chkp_get_bounds_for_decl_addr): Likewise.
30197         * tree-chrec.c (chrec_apply): Likewise.
30198         * tree-data-ref.c (dump_data_reference): Likewise.
30199         (dump_subscript): Likewise.
30200         (dump_data_dependence_relation): Likewise.
30201         (analyze_overlapping_iterations): Likewise.
30202         * tree-inline.c (expand_call_inline): Likewise.
30203         (tree_function_versioning): Likewise.
30204         * tree-into-ssa.c (dump_defs_stack): Likewise.
30205         (dump_currdefs): Likewise.
30206         (dump_names_replaced_by): Likewise.
30207         (dump_update_ssa): Likewise.
30208         (update_ssa): Likewise.
30209         * tree-object-size.c (pass_object_sizes::execute): Likewise.
30210         * tree-parloops.c (build_new_reduction): Likewise.
30211         (try_create_reduction_list): Likewise.
30212         (ref_conflicts_with_region): Likewise.
30213         (oacc_entry_exit_ok_1): Likewise.
30214         (oacc_entry_exit_single_gang): Likewise.
30215         * tree-pretty-print.h: Likewise.
30216         * tree-scalar-evolution.c (set_scalar_evolution): Likewise.
30217         (get_scalar_evolution): Likewise.
30218         (add_to_evolution): Likewise.
30219         (get_loop_exit_condition): Likewise.
30220         (analyze_evolution_in_loop): Likewise.
30221         (analyze_initial_condition): Likewise.
30222         (analyze_scalar_evolution): Likewise.
30223         (instantiate_scev): Likewise.
30224         (number_of_latch_executions): Likewise.
30225         (gather_chrec_stats): Likewise.
30226         (final_value_replacement_loop): Likewise.
30227         (scev_const_prop): Likewise.
30228         * tree-sra.c (dump_access): Likewise.
30229         (disqualify_candidate): Likewise.
30230         (create_access): Likewise.
30231         (reject): Likewise.
30232         (maybe_add_sra_candidate): Likewise.
30233         (create_access_replacement): Likewise.
30234         (analyze_access_subtree): Likewise.
30235         (analyze_all_variable_accesses): Likewise.
30236         (sra_modify_assign): Likewise.
30237         (initialize_constant_pool_replacements): Likewise.
30238         (find_param_candidates): Likewise.
30239         (decide_one_param_reduction): Likewise.
30240         (replace_removed_params_ssa_names): Likewise.
30241         * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
30242         * tree-ssa-copy.c (dump_copy_of): Likewise.
30243         (copy_prop_visit_cond_stmt): Likewise.
30244         * tree-ssa-dce.c (mark_operand_necessary): Likewise.
30245         * tree-ssa-dom.c (pass_dominator::execute): Likewise.
30246         (record_equivalences_from_stmt): Likewise.
30247         * tree-ssa-dse.c (compute_trims): Likewise.
30248         (delete_dead_call): Likewise.
30249         (delete_dead_assignment): Likewise.
30250         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
30251         (forward_propagate_into_cond): Likewise.
30252         (pass_forwprop::execute): Likewise.
30253         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
30254         * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
30255         Likewise.
30256         (move_computations_worker): Likewise.
30257         (execute_sm): Likewise.
30258         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
30259         (remove_exits_and_undefined_stmts): Likewise.
30260         (remove_redundant_iv_tests): Likewise.
30261         * tree-ssa-loop-ivopts.c (dump_use): Likewise.
30262         (adjust_iv_update_pos): Likewise.
30263         * tree-ssa-math-opts.c (bswap_replace): Likewise.
30264         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
30265         (value_replacement): Likewise.
30266         * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
30267         * tree-ssa-pre.c (print_pre_expr): Likewise.
30268         (get_representative_for): Likewise.
30269         (create_expression_by_pieces): Likewise.
30270         (insert_into_preds_of_block): Likewise.
30271         (eliminate_insert): Likewise.
30272         (eliminate_dom_walker::before_dom_children): Likewise.
30273         (eliminate): Likewise.
30274         (remove_dead_inserted_code): Likewise.
30275         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
30276         * tree-ssa-reassoc.c (get_rank): Likewise.
30277         (eliminate_duplicate_pair): Likewise.
30278         (eliminate_plus_minus_pair): Likewise.
30279         (eliminate_not_pairs): Likewise.
30280         (undistribute_ops_list): Likewise.
30281         (eliminate_redundant_comparison): Likewise.
30282         (update_range_test): Likewise.
30283         (optimize_range_tests_var_bound): Likewise.
30284         (optimize_vec_cond_expr): Likewise.
30285         (rewrite_expr_tree): Likewise.
30286         (rewrite_expr_tree_parallel): Likewise.
30287         (linearize_expr): Likewise.
30288         (break_up_subtract): Likewise.
30289         (linearize_expr_tree): Likewise.
30290         (attempt_builtin_powi): Likewise.
30291         (attempt_builtin_copysign): Likewise.
30292         (transform_stmt_to_copy): Likewise.
30293         (transform_stmt_to_multiply): Likewise.
30294         (dump_ops_vector): Likewise.
30295         * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
30296         (print_scc): Likewise.
30297         (set_ssa_val_to): Likewise.
30298         (visit_reference_op_store): Likewise.
30299         (visit_use): Likewise.
30300         (sccvn_dom_walker::before_dom_children): Likewise.
30301         (run_scc_vn): Likewise.
30302         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
30303         Likewise.
30304         (expr_hash_elt::print): Likewise.
30305         (const_and_copies::pop_to_marker): Likewise.
30306         (const_and_copies::record_const_or_copy_raw): Likewise.
30307         * tree-ssa-structalias.c (compute_dependence_clique): Likewise.
30308         * tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
30309         (dump_predicates): Likewise.
30310         (find_uninit_use): Likewise.
30311         (warn_uninitialized_phi): Likewise.
30312         (pass_late_warn_uninitialized::execute): Likewise.
30313         * tree-ssa.c (verify_vssa): Likewise.
30314         (verify_ssa): Likewise.
30315         (maybe_optimize_var): Likewise.
30316         * tree-vrp.c (dump_value_range): Likewise.
30317         (dump_all_value_ranges): Likewise.
30318         (dump_asserts_for): Likewise.
30319         (register_edge_assert_for_2): Likewise.
30320         (vrp_visit_cond_stmt): Likewise.
30321         (vrp_visit_switch_stmt): Likewise.
30322         (vrp_visit_stmt): Likewise.
30323         (vrp_visit_phi_node): Likewise.
30324         (simplify_cond_using_ranges_1): Likewise.
30325         (fold_predicate_in): Likewise.
30326         (evrp_dom_walker::before_dom_children): Likewise.
30327         (evrp_dom_walker::push_value_range): Likewise.
30328         (evrp_dom_walker::pop_value_range): Likewise.
30329         (execute_early_vrp): Likewise.
30330
30331 2017-05-16  Richard Biener  <rguenther@suse.de>
30332
30333         * dwarf2out.c (loc_list_from_tree_1): Do not create
30334         DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
30335
30336 2017-05-16  Richard Biener  <rguenther@suse.de>
30337
30338         * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
30339         just generated.
30340         (note_variable_value_in_expr): If we resolved the decl ref
30341         do not push to the stack.
30342
30343 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
30344
30345         * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
30346         operations in fast-math mode.
30347         (vaddq_f16): Likewise.
30348         (vmul_f16): Likewise.
30349         (vmulq_f16): Likewise.
30350         (vsub_f16): Likewise.
30351         (vsubq_f16): Likewise.
30352         * config/arm/neon.md (add<mode>3): New.
30353         (sub<mode>3): New.
30354         (fma:<VH:mode>3): New.  Also remove outdated comment.
30355         (mul<mode>3): New.
30356
30357 2017-05-16  Martin Liska  <mliska@suse.cz>
30358
30359         PR ipa/79849.
30360         PR ipa/79850.
30361         * ipa-devirt.c (warn_types_mismatch): Fix typo.
30362         (odr_types_equivalent_p): Likewise.
30363
30364 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
30365
30366         * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
30367
30368 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
30369
30370         PR target/80425
30371         * config/i386.i386.md (*zero_extendsidi2): Do not penalize
30372         non-interunit SSE move alternatives with '?'.
30373         (zero-extendsidi peephole2): New peephole to skip intermediate
30374         general register in SSE zero-extend sequence.
30375
30376 2017-05-15  Jeff Law  <law@redhat.com>
30377
30378         * reorg.c (relax_delay_slots): Create a new variable to hold
30379         the temporary target rather than clobbering TARGET_LABEL.
30380
30381         * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
30382         missing argument to extract_bit_field call.
30383         * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
30384
30385 2017-05-15  Martin Liska  <mliska@suse.cz>
30386
30387         PR driver/31468
30388         * gcc.c (process_command): Do not allow empty argument of -o option.
30389
30390 2017-05-15  Renlin Li  <renlin.li@arm.com>
30391
30392         * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
30393         * config/aarch64/aarch64.c (aarch64_expand_call): Define.
30394         * config/aarch64/constraints.md (Usf): Add long call check.
30395         * config/aarch64/aarch64.md (call): Use aarch64_expand_call.
30396         (call_value): Likewise.
30397         (sibcall): Likewise.
30398         (sibcall_value): Likewise.
30399         (call_insn): New.
30400         (call_value_insn): New.
30401         (sibcall_insn): Update rtx pattern.
30402         (sibcall_value_insn): Likewise.
30403         (call_internal): Remove.
30404         (call_value_internal): Likewise.
30405         (sibcall_internal): Likewise.
30406         (sibcall_value_internal): Likewise.
30407         (call_reg): Likewise.
30408         (call_symbol): Likewise.
30409         (call_value_reg): Likewise.
30410         (call_value_symbol): Likewise.
30411
30412 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
30413
30414         PR target/80600
30415         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
30416
30417 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
30418
30419         * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
30420         compatible with CCGOCmode and with CCZmode.
30421
30422 2017-05-14  Martin Sebor  <msebor@redhat.com>
30423
30424         PR middle-end/77671
30425         * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
30426         (gimple_fold_builtin_snprintf): Same.
30427         * gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
30428         (gimple_fold_builtin_snprintf): Same.
30429         * gimple-ssa-sprintf.c (get_format_string): Correct the detection
30430         of character types.
30431         (is_call_safe): New function.
30432         (try_substitute_return_value): Call it.
30433         (try_simplify_call): New function.
30434         (pass_sprintf_length::handle_gimple_call): Call it.
30435
30436 2017-05-14  Martin Sebor  <msebor@redhat.com>
30437
30438         PR middle-end/80669
30439         * builtins.c (expand_builtin_stpncpy): Simplify.
30440
30441 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
30442
30443         * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
30444         * config/i386/i386.h
30445         (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
30446         (NUM_X86_64_MS_CLOBBERED_REGS): New macro.
30447         (struct machine_function): Add new members call_ms2sysv,
30448         call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
30449         (struct machine_frame_state): New fields sp_realigned and
30450         sp_realigned_offset.
30451         * config/i386/i386.c
30452         (enum xlogue_stub): New enum.
30453         (enum xlogue_stub_sets): New enum.
30454         (class xlogue_layout): New class.
30455         (struct ix86_frame): New fields stack_realign_allocate_offset,
30456         stack_realign_offset and outlined_save_offset.  Modify comments to
30457         detail stack layout when using out-of-line stubs.
30458         (ix86_target_string): Add -mcall-ms2sysv-xlogues option.
30459         (ix86_option_override_internal): Add sorry() for TARGET_SEH and
30460         -mcall-ms2sysv-xlogues.
30461         (stub_managed_regs): New static variable.
30462         (ix86_save_reg): Add new parameter ignore_outlined to optionally omit
30463         registers managed by out-of-line stub.
30464         (disable_call_ms2sysv_xlogues): New function.
30465         (ix86_compute_frame_layout): Modify re-alignment calculations, disable
30466         m->call_ms2sysv when appropriate and compute frame layout for
30467         out-of-line stubs.
30468         (sp_valid_at, fp_valid_at): New inline functions.
30469         (choose_basereg): New function.
30470         (choose_baseaddr): Add align parameter, use choose_basereg and modify
30471         all callers.
30472         (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
30473         Use align parameter of choose_baseaddr to generated aligned SSE movs
30474         when possible.
30475         (pro_epilogue_adjust_stack): Modify to track
30476         machine_frame_state::sp_realigned.
30477         (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
30478         (ix86_nsaved_sseregs): Likewise.
30479         (ix86_emit_save_regs): Likewise.
30480         (ix86_emit_save_regs_using_mov): Likewise.
30481         (ix86_emit_save_sse_regs_using_mov): Likewise.
30482         (get_scratch_register_on_entry): Likewise.
30483         (gen_frame_set): New function.
30484         (gen_frame_load): Likewise.
30485         (gen_frame_store): Likewise.
30486         (emit_outlined_ms2sysv_save): Likewise.
30487         (emit_outlined_ms2sysv_restore): Likewise.
30488         (ix86_expand_prologue): Modify stack re-alignment code and call
30489         emit_outlined_ms2sysv_save when appropriate.
30490         (ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
30491         parameter rtx_insn *insn, which allows the function to be used to only
30492         generate the notes.
30493         (ix86_expand_epilogue): Modify validity checks of frame and stack
30494         pointers, and call emit_outlined_ms2sysv_restore when appropriate.
30495         (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
30496         * config/i386/predicates.md
30497         (save_multiple): New predicate.
30498         (restore_multiple): Likewise.
30499         * config/i386/sse.md
30500         (save_multiple<mode>): New pattern.
30501         (save_multiple_realign<mode>): Likewise.
30502         (restore_multiple<mode>): Likewise.
30503         (restore_multiple_and_return<mode>): Likewise.
30504         (restore_multiple_leave_return<mode>): Likewise.
30505         * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
30506
30507 2017-05-14  Julia Koval  <julia.koval@intel.com>
30508
30509         * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
30510         * config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
30511         (__builtin_ia32_xsetbv): New builtins.
30512         * config/i386/i386.c (ix86_expand_special_args_builtin):
30513         Process new types.
30514         (ix86_expand_builtin): Special expand for new intrinsics.
30515         * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
30516         (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
30517         * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
30518
30519 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30520
30521         * cfganal.c (inverted_post_order_compute): Change argument type
30522         to vec *.
30523         * cfganal.h (inverted_post_order_compute): Adjust prototype.
30524         * df-core.c (rest_of_handle_df_initialize): Adjust.
30525         (rest_of_handle_df_finish): Likewise.
30526         (df_analyze_1): Likewise.
30527         (df_analyze): Likewise.
30528         (loop_inverted_post_order_compute): Change argument to be a vec *.
30529         (df_analyze_loop): Adjust.
30530         (df_get_n_blocks): Likewise.
30531         (df_get_postorder): Likewise.
30532         * df.h (struct df_d): Change field to be a vec.
30533         * lcm.c (compute_laterin): Adjust.
30534         (compute_available): Likewise.
30535         * lra-lives.c (lra_create_live_ranges_1): Likewise.
30536         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
30537         * tree-ssa-pre.c (compute_antic): Likewise.
30538
30539 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30540
30541         * cfganal.c (connect_infinite_loops_to_exit): Adjust.
30542         (depth_first_search::depth_first_search): Change structure init
30543         function to this constructor.
30544         (depth_first_search::add_bb): Rename function to this member.
30545         (depth_first_search::execute): Likewise.
30546         (flow_dfs_compute_reverse_finish): Adjust.
30547
30548 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30549
30550         * ddg.c (find_nodes_on_paths): Use auto_sbitmap.
30551         (longest_simple_path): Likewise.
30552         * shrink-wrap.c (spread_components): Likewise.
30553         (disqualify_problematic_components): Likewise.
30554         (emit_common_heads_for_components): Likewise.
30555         (emit_common_tails_for_components): Likewise.
30556         (insert_prologue_epilogue_for_components): Likewise.
30557
30558 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30559
30560         * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
30561         auto_sbitmap.
30562
30563 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30564
30565         * df-core.c (df_set_blocks): Start using auto_bitmap.
30566         (df_compact_blocks): Likewise.
30567         * df-problems.c (df_rd_confluence_n): Likewise.
30568         * df-scan.c (df_insn_rescan_all): Likewise.
30569         (df_process_deferred_rescans): Likewise.
30570         (df_update_entry_block_defs): Likewise.
30571         (df_update_exit_block_uses): Likewise.
30572         (df_entry_block_bitmap_verify): Likewise.
30573         (df_exit_block_bitmap_verify): Likewise.
30574         (df_scan_verify): Likewise.
30575         * lra-constraints.c (lra_constraints): Likewise.
30576         (undo_optional_reloads): Likewise.
30577         (lra_undo_inheritance): Likewise.
30578         * lra-remat.c (calculate_gen_cands): Likewise.
30579         (do_remat): Likewise.
30580         * lra-spills.c (assign_spill_hard_regs): Likewise.
30581         (spill_pseudos): Likewise.
30582         * tree-ssa-pre.c (bitmap_set_and): Likewise.
30583         (bitmap_set_subtract_values): Likewise.
30584
30585 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30586
30587         * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
30588         management with auto_bitmap.
30589         (fix_inter_tick): Likewise.
30590         (fix_recovery_deps): Likewise.
30591         * ira.c (add_store_equivs): Likewise.
30592         (find_moveable_pseudos): Likewise.
30593         (split_live_ranges_for_shrink_wrap): Likewise.
30594         * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
30595         (rtx_reuse_manager::seen_def_p): Likewise.
30596         (rtx_reuse_manager::set_seen_def): Likewise.
30597         * print-rtl.h (class rtx_reuse_manager): Likewise.
30598
30599 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30600
30601         * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
30602         lifetime.
30603         (migrate_btr_def): Likewise.
30604         * cfgloop.c (get_loop_body_in_bfs_order): Likewise.
30605         * df-core.c (loop_post_order_compute): Likewise.
30606         (loop_inverted_post_order_compute): Likewise.
30607         * hsa-common.h: Likewise.
30608         * hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
30609         * init-regs.c (initialize_uninitialized_regs): Likewise.
30610         * ipa-inline.c (resolve_noninline_speculation): Likewise.
30611         (inline_small_functions): Likewise.
30612         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
30613         * ira.c (combine_and_move_insns): Likewise.
30614         (build_insn_chain): Likewise.
30615         * loop-invariant.c (find_invariants): Likewise.
30616         * lower-subreg.c (propagate_pseudo_copies): Likewise.
30617         * predict.c (tree_predict_by_opcode): Likewise.
30618         (predict_paths_leading_to): Likewise.
30619         (predict_paths_leading_to_edge): Likewise.
30620         (estimate_loops_at_level): Likewise.
30621         (estimate_loops): Likewise.
30622         * shrink-wrap.c (try_shrink_wrapping): Likewise.
30623         (spread_components): Likewise.
30624         * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
30625         * tree-loop-distribution.c (rdg_build_partitions): Likewise.
30626         * tree-predcom.c (tree_predictive_commoning_loop): Likewise.
30627         * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
30628         * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
30629         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
30630         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
30631         * tree-ssa-threadupdate.c (compute_path_counts): Likewise.
30632         (mark_threaded_blocks): Likewise.
30633         (thread_through_all_blocks): Likewise.
30634         * tree-ssa.c (verify_ssa): Likewise.
30635         (execute_update_addresses_taken): Likewise.
30636         * tree-ssanames.c (verify_ssaname_freelists): Likewise.
30637
30638 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30639
30640         * cfganal.c (mark_dfs_back_edges): Replace manual stack with
30641         auto_vec.
30642         (post_order_compute): Likewise.
30643         (inverted_post_order_compute): Likewise.
30644         (pre_and_rev_post_order_compute_fn): Likewise.
30645
30646 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30647
30648         * genrecog.c (int_set::int_set): Explicitly construct our
30649         auto_vec base class.
30650         * vec.h (auto_vec::auto_vec): New constructor.
30651
30652 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30653
30654         * bitmap.h (class auto_bitmap): New constructor taking
30655         bitmap_obstack * argument.
30656
30657 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30658
30659         * bitmap.h (class auto_bitmap): Change type of m_bits to
30660         bitmap_head, and adjust ctor / dtor and member operators.
30661
30662 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
30663
30664         * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
30665         when returned register mode doesn't match original mode.
30666
30667 2017-05-12  Jeff Law  <law@redhat.com>
30668             Jakub Jelinek  <jakub@redhat.com>
30669
30670         * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
30671         we look for cc setter after the compare-elim changes.
30672         * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
30673         within the vector to match what compare-elim now expects.
30674         (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
30675         (xorsi3_flags, one_cmplsi2_flags): Likewise.
30676
30677         * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
30678         after the compare-elim changes.
30679         * config/rx/rx.md (abssi2_flags): Fix order of patterns within
30680         the vector to match what compare-elim now expects.
30681         (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
30682         (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
30683         (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
30684         (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
30685         (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
30686
30687         * config/visium/visium.c (single_set_and_flags): Fix where
30688         we look for cc setter after the compare-elim changes.
30689         * config/visium/visium.md (flags_subst_logic): Fix order of patterns
30690         with the vector to match what compare-elim now expects.
30691         (flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
30692         (add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
30693         (addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
30694         (sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
30695         (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
30696         (neg<mode>2_insn_set_overflow): Likewise.
30697
30698 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
30699
30700         PR middle-end/79794
30701         * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
30702         maybe_expand_insn call, set ops[0].target.  If still set after call,
30703         set alt_rtl.  Add extra arg to recursive calls.
30704         (extract_bit_field): Add alt_rtl argument.  Pass to
30705         extract_bit_field.
30706         * expmed.h (extract_bit_field): Fix prototype.
30707         * expr.c (emit_group_load_1, copy_blkmode_from_reg)
30708         (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
30709         to extract_bit_field_calls.
30710         (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
30711         Pass alt_rtl to extract_bit_field calls.
30712         * calls.c (store_unaligned_arguments_into_psuedos)
30713         load_register_parameters): Pass extra NULL to extract_bit_field calls.
30714         * optabs.c (maybe_legitimize_operand): Clear op->target when call
30715         gen_reg_rtx.
30716         * optabs.h (struct expand_operand): Add target bitfield.
30717
30718 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
30719
30720         * compare-elim.c (try_eliminate_compare): Canonicalize
30721         operation with embedded compare to
30722         [(set (reg:CCM) (compare:CCM (operation) (immediate)))
30723          (set (reg) (operation)].
30724
30725         * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
30726
30727 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
30728
30729         PR target/80723
30730         * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
30731         cost of adding a carry flag for ADC instruction.
30732         [case MINUS]: Ignore the cost of subtracting a carry flag
30733         for SBB instruction.
30734
30735 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
30736
30737         * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
30738         and x86intrin.h
30739         * config/rs6000/bmiintrin.h: New file.
30740         * config/rs6000/bmi2intrin.h: New file.
30741         * config/rs6000/x86intrin.h: New file.
30742
30743 2017-05-12  Jeff Law  <law@redhat.com>
30744
30745         * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
30746         markers.
30747
30748 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
30749
30750         PR middle-end/80707
30751         * tree-cfg.c: Remove cfg edges of unreachable case statements.
30752
30753 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30754
30755         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
30756         early expansion of vector divide builtins.
30757         (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
30758         builtins identified as having unsigned arguments.
30759
30760 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30761
30762         * config/rs6000/rs6000.c (gimple-fold.h): New #include.
30763         (rs6000_gimple_fold_builtin): Add handling for early GIMPLE
30764         expansion of vector logical operations (and, andc, or, xor,
30765         nor, orc, nand).
30766
30767 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30768
30769         * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
30770         * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
30771
30772 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30773
30774         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
30775         early GIMPLE expansion of vector multiplies.
30776
30777 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
30778
30779         * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
30780         TARGET_HAVE_MOVT conditional.
30781         (movt splitter): Likewise.
30782
30783 2017-05-12  Richard Biener  <rguenther@suse.de>
30784
30785         * tree-ssa-sccvn.h (has_VN_INFO): Declare.
30786         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
30787         Fold all stmts not inplace.
30788
30789 2017-05-12  Richard Biener  <rguenther@suse.de>
30790
30791         PR tree-optimization/80713
30792         * tree-ssa-pre.c (remove_dead_inserted_code): Clear
30793         inserted_exprs bit for not removed stmts.
30794
30795 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
30796
30797         PR middle-end/69921
30798         * tree-parloops.c (create_parallel_loop): Set "oacc kernels
30799         parallelized" attribute for parallelized OpenACC kernels.
30800         * omp-offload.c (execute_oacc_device_lower): Use it.
30801
30802         * omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
30803         Set "oacc kernels" attribute.
30804         * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
30805         parameter.  Adjust all users.
30806         (oacc_fn_attrib_kernels_p): Remove function.
30807         * omp-offload.c (execute_oacc_device_lower): Look for "oacc
30808         kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
30809         * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
30810         * tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
30811         assert "oacc kernels" attribute is set.
30812
30813 2017-05-11  Carl Love  <cel@us.ibm.com>
30814
30815         * config/rs6000/rs6000-c: Add support for built-in functions
30816         vector unsigned char vec_popcnt (vector signed char)
30817         vector unsigned char vec_popcnt (vector unsigned char)
30818         vector unsigned short vec_popcnt (vector signed short)
30819         vector unsigned short vec_popcnt (vector unsigned short)
30820         vector unsigned int vec_popcnt (vector signed int)
30821         vector unsigned int vec_popcnt (vector unsigned int)
30822         vector unsigned long long vec_popcnt (vector signed long long)
30823         vector unsigned long long vec_popcnt (vector unsigned long long)
30824         vector signed long long vec_slo (vector signed long long,
30825                                          vector signed char)
30826         vector signed long long vec_slo (vector signed long long,
30827                                          vector unsigned char)
30828         vector unsigned long long vec_slo (vector unsigned long long,
30829                                            vector signed char)
30830         vector unsigned long long vec_slo (vector unsigned long long,
30831                                            vector unsigned char)
30832         * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
30833         VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
30834         * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
30835         vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
30836         * doc/extend.texi: Update the built-in documentation file for the
30837         new built-in functions.
30838
30839 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
30840
30841         * attribs.h (sorted_attr_string): Move machine independent
30842         functions for target clone support from the i386 port to common
30843         code.  Rename ix86_function_versions to common_function_versions.
30844         Rename make_name to make_unique_name.
30845         (common_function_versions): Likewise.
30846         (make_unique_name): Likewise.
30847         (make_dispatcher_decl): Likewise.
30848         (is_function_default_version): Likewise.
30849         * attribs.c (attr_strcmp): Likewise.
30850         (sorted_attr_string): Likewise.
30851         (common_function_versions): Likewise.
30852         (make_unique_name): Likewise.
30853         (make_dispatcher_decl): Likewise.
30854         (is_function_default_version): Likewise.
30855         * config/i386/i386.c (attr_strcmp): Likewise.
30856         (sorted_attr_string): Likewise.
30857         (ix86_function_versions): Likewise.
30858         (make_name): Likewise.
30859         (make_dispatcher_decl): Likewise.
30860         (is_function_default_version): Likewise.
30861         (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
30862
30863 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30864
30865         PR target/80695
30866         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
30867         Account for direct move costs for vec_construct of integer
30868         vectors.
30869
30870 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
30871
30872         PR target/80706
30873         * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
30874         (UNSPEC_STX_ATOMIC): Ditto.
30875         (loaddi_via_sse): New insn.
30876         (storedi_via_sse): Ditto.
30877         (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
30878         Update corresponding peephole2 patterns.
30879         (atomic_storedi_fpu): Ditto.
30880
30881 2017-05-11  Julia Koval  <julia.koval@intel.com>
30882
30883         * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
30884         (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
30885         New intrinsics.
30886         * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
30887         (__builtin_ia32_rsqrt14ss_mask): New builtins.
30888         * config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
30889
30890 2017-05-11  Nathan Sidwell  <nathan@acm.org>
30891
30892         * graphite-poly.c: Include dumpfile.h.
30893
30894         * dumpfle.h (dump_function): Declare here ...
30895         * tree-dump.h (dump_function): ... not here.
30896         * dumpfile.c: #include tree-cfg.h.
30897         (dump_function): Move here from ...
30898         * tree-dump.c (dump_function): ... here.
30899         * gimplify.c: #include splay-tree.h, not tree-dump.h.
30900         * graphite-poly.c: Don't include tree-dump.h.
30901         * cgraphclones.c: Include dumpfile.h not tree-dump.h.
30902         * print-tree.c: Likewise.
30903         * stor-layout.c: Likewise.
30904         * tree-nested.c: Likewise.
30905
30906         * dumpfile.c (dump_start): Use TDF_FLAGS.
30907         (dump_enable_all): Fix TDF_KIND check thinko.
30908
30909 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
30910
30911         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
30912         array entries to represent two legal parameterizations of the
30913         overloaded __builtin_cmpb function, as represented by the
30914         P6_OV_BUILTIN_CMPB constant.
30915         (altivec_resolve_overloaded_builtin): Add special case handling
30916         for the __builtin_cmpb function, as represented by the
30917         P6_OV_BUILTIN_CMPB constant.
30918         * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
30919         (BU_P6_64BIT_2): New macro.
30920         (BU_P6_OVERLOAD_2): New macro
30921         (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
30922         (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
30923         (CMPB): Add overload support to represent both 32-bit and 64-bit
30924         compare-bytes function.
30925         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
30926         support for TARGET_CMPB.
30927         * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
30928         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
30929         documentation of the __builtin_cmpb overloaded built-in function.
30930
30931 2017-05-11  Richard Biener  <rguenther@suse.de>
30932
30933         PR tree-optimization/80705
30934         * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
30935         bases are not vectorizable.
30936
30937 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30938
30939         * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
30940         when counting register pressure.
30941
30942 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30943
30944         * tree-ssa-loop-ivopts.c (compare_cost_pair): New.
30945         (iv_ca_more_deps): Renamed to ...
30946         (iv_ca_compare_deps): ... this.
30947         (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
30948
30949 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30950
30951         * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
30952         to ...
30953         (determine_group_iv_costs): ... here.
30954         (find_inv_vars_cb): Record inv var if it's not recorded before.
30955
30956 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30957
30958         * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
30959         (get_shiftadd_cost): Ditto.
30960
30961 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30962
30963         * tree-ssa-address.c: Include header file.
30964         (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
30965         address.
30966         (add_to_parts): Refactor.
30967         (addr_to_parts): New parameter.  Update use of move_hint_to_base.
30968         (create_mem_ref): Update use of addr_to_parts.  Re-associate addr
30969         in new order.
30970
30971 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30972
30973         PR tree-optimization/53090
30974         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
30975         COMP_IV_EXPR_2.
30976         (extract_cond_operands): Detect condition with IV on both sides
30977         and return COMP_IV_EXPR_2.
30978         (find_interesting_uses_cond): Add iv_use for both IVs in condition.
30979         (rewrite_use_compare): Simplify by removing call to function
30980         extract_cond_operands.
30981
30982 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30983
30984         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
30985         (extract_cond_operands): Detect condition comparing against non-
30986         invariant bound and return appropriate enum value.
30987         (find_interesting_uses_cond): Update use of extract_cond_operands.
30988         Handle its return value accordingly.
30989         (determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
30990
30991 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30992
30993         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
30994         nonlinear iv_use computation in loop invariant sensitive way.
30995
30996 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30997
30998         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
30999         (find_iv_candidates): Call relate_compare_use_with_all_cands.
31000
31001 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31002
31003         * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
31004         (dump_cand): Support iv_cand.inv_exprs.
31005         (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
31006         for candidates.
31007         (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
31008         iv_cand.inv_exprs.
31009
31010 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31011
31012         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
31013         from ...
31014         * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
31015         as local function.  Include necessary header files.
31016         * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
31017
31018 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31019
31020         * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
31021
31022 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31023
31024         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
31025         operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
31026         RSHIFT_EXPR and BIT_NOT_EXPR.
31027
31028 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31029
31030         * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
31031         (adjust_setup_cost): New parameter supporting round up adjustment.
31032         (struct address_cost_data): Delete.
31033         (force_expr_to_var_cost): Don't bound cost with spill_cost.
31034         (split_address_cost, ptr_difference_cost): Delete.
31035         (difference_cost, compare_aff_trees, record_inv_expr): Delete.
31036         (struct ainc_cost_data): New struct.
31037         (get_address_cost_ainc): New function.
31038         (get_address_cost, get_computation_cost): Reimplement.
31039         (determine_group_iv_cost_address): Record inv_expr for all uses of
31040         a group.
31041         (determine_group_iv_cost_cond): Call get_loop_invariant_expr.
31042         (iv_ca_has_deps): Reimplemented to ...
31043         (iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
31044         than OLD_CP.
31045         (iv_ca_extend): Call iv_ca_more_deps.
31046
31047 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31048
31049         * tree-ssa-address.c (struct mem_address): Move to header file.
31050         (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
31051         * tree-ssa-address.h (struct mem_address): Move from C file.
31052         (valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
31053
31054 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31055
31056         * tree-affine.h (aff_combination_type): New interface.
31057         (aff_combination_zero_p): Remove static.
31058         (aff_combination_const_p): New interface.
31059         (aff_combination_singleton_var_p): New interfaces.
31060
31061 2017-05-11  Richard Biener  <rguenther@suse.de>
31062
31063         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
31064         Skip unreachable blocks and destinations.
31065         (eliminate): Move stmt removal and fixup ...
31066         (fini_eliminate): ... here.  Skip inserted exprs.
31067         (pass_pre::execute): Move fini_pre after fini_eliminate.
31068         * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
31069         (tail_merge_optimize): Run cleanup_tree_cfg if requested by
31070         PRE to get rid of dead code that has invalid SSA form and
31071         split critical edges again.
31072
31073 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31074
31075         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31076
31077 2017-05-11  Richard Biener  <rguenther@suse.de>
31078
31079         * passes.c (execute_function_todo): Verify loops if they are
31080         said to be up-to-date.
31081         * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
31082         * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
31083
31084 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
31085
31086         PR target/80090
31087         * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
31088         handle calling assemble_external ourself.
31089
31090         PR target/79027
31091         * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
31092         modes with zero size.  Enhance comment.
31093
31094 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31095
31096         * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
31097         built-ins for vec_xl and vec_xst with short and char pointer
31098         arguments.
31099
31100 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31101
31102         * config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
31103         (_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
31104         (_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
31105         (_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
31106         (_mm_maskz_min_round_ss): New intrinsics.
31107         * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
31108         (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
31109         * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
31110         (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
31111         (__builtin_ia32_minss_mask_round): New builtins.
31112         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31113         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31114         * config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
31115         Rename to ...
31116         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
31117         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
31118         Change to ...
31119         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
31120         ... this.
31121
31122 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31123
31124         * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
31125         (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
31126         (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
31127         (_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
31128         (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
31129         (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
31130         (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
31131         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31132         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
31133         * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
31134         (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
31135         (__builtin_ia32_mulss_mask_round): New builtins.
31136         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31137         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31138         * config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
31139         Rename to ...
31140         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
31141         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
31142         Change to ...
31143         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
31144         ... this.
31145
31146 2017-05-10  Julia Koval  <julia.koval@intel.com>
31147
31148         * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
31149         (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
31150         (_mm256_setr_m128i): New intrinsics.
31151
31152 2017-05-10  Julia Koval  <julia.koval@intel.com>
31153
31154         * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
31155         (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
31156         (_mm_maskz_rcp14_ss): New intrinsics.
31157         * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
31158         (__builtin_ia32_rcp14ss_mask): New builtins.
31159         * config/i386/sse.md (srcp14<mode>_mask): New pattern.
31160
31161 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
31162
31163         PR tree-optimization/51513
31164         * tree-cfg.c (gimple_seq_unreachable_p): New function.
31165         (assert_unreachable_fallthru_edge_p): Use it.
31166         (group_case_labels_stmt): Likewise.
31167         * tree-cfg.h: Prototype it.
31168         * stmt.c: Include cfghooks.h and tree-cfg.h.
31169         (emit_case_dispatch_table) <gap_label>: New local variable.
31170         Use it to fill dispatch table gaps.
31171         Test for default_label before updating probabilities.
31172         (expand_case) <default_label>: Remove unneeded initialization.
31173         Test for unreachable default case statement and remove its edge.
31174         Set default_label accordingly.
31175         * tree-ssa-ccp.c (optimize_unreachable): Update comment.
31176
31177 2017-05-10  Carl Love  <cel@us.ibm.com>
31178
31179         * config/rs6000/rs6000-c: Add support for built-in functions
31180         vector signed char      vec_neg (vector signed char)
31181         vector signed short int vec_neg (vector short int)
31182         vector signed int       vec_neg (vector signed int)
31183         vector signed long long vec_neg (vector signed long long)
31184         vector float            vec_neg (vector float)
31185         vector double           vec_neg (vector double)
31186         * config/rs6000/rs6000-builtin.def: Add definitions for NEG function
31187         overload.
31188         * config/rs6000/altivec.h: Add define for vec_neg
31189         * doc/extend.texi: Update the built-in documentation for the
31190         new built-in functions.
31191
31192 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31193
31194         PR tree-optimization/77644
31195         * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
31196
31197 2017-05-10  Nathan Sidwell  <nathan@acm.org>
31198
31199         * dumpfile.h (TDI_lang_all): New.
31200         (TDF_KIND): New. Renumber others
31201         (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
31202         than bits.
31203         * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
31204         lang-all.
31205         (get_dump_file_name): Adjust suffix generation.
31206         (dump_enable_all): Use TDF_KIND.
31207         * doc/invoke.texi (-fdump-lang-all): Document.
31208
31209         * dumpfile.h: Tabify.
31210
31211 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
31212
31213         PR target/80671
31214         * config/aarch64/cortex-a57-fma-steering.c (merge_forest):
31215         Move member access before delete.
31216
31217 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
31218
31219         * tree-inline.c (expand_call_inline): Split block at stmt
31220         before the call.
31221
31222 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
31223
31224         PR target/68163
31225         * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
31226         are now unused after splitting mov{sf,sd}_hardfloat.
31227         (f32_lr2): Likewise.
31228         (f32_lm): Likewise.
31229         (f32_lm2): Likewise.
31230         (f32_li): Likewise.
31231         (f32_li2): Likewise.
31232         (f32_lv): Likewise.
31233         (f32_sr): Likewise.
31234         (f32_sr2): Likewise.
31235         (f32_sm): Likewise.
31236         (f32_sm2): Likewise.
31237         (f32_si): Likewise.
31238         (f32_si2): Likewise.
31239         (f32_sv): Likewise.
31240         (f32_dm): Likewise.
31241         (f32_vsx): Likewise.
31242         (f32_av): Likewise.
31243         (mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
31244         For movsf, order stores so the VSX stores occur before the GPR
31245         store which encourages the register allocator to use a traditional
31246         FPR instead of a GPR.  For movsd, order the stores so that the GPR
31247         store comes before the VSX stores to allow the power6 to work.
31248         This is due to the power6 not having a 32-bit integer store
31249         instruction from a FPR.
31250         (movsf_hardfloat): Likewise.
31251         (movsd_hardfloat): Likewise.
31252
31253 2017-05-09  Martin Sebor  <msebor@redhat.com>
31254
31255         PR translation/80280
31256         * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
31257         added in r247778.
31258
31259         PR translation/80280
31260         * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
31261         data member added in r247778.
31262         (ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
31263
31264 2017-05-09  Nathan Sidwell  <nathan@acm.org>
31265
31266         * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
31267
31268         * ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
31269         typedefs.
31270
31271 2017-05-09  Marek Polacek  <polacek@redhat.com>
31272
31273         * doc/invoke.texi: Fix typo.
31274
31275 2017-05-09  Richard Biener  <rguenther@suse.de>
31276
31277         * tree-vrp.c (vrp_val_is_max): Adjust comment.
31278         (vrp_val_is_min): Likewise.
31279         (set_value_range_to_value): Likewise.
31280         (set_value_range_to_nonnegative): Likewise.
31281         (gimple_assign_nonzero_p): Likewise.
31282         (gimple_stmt_nonzero_p): Likewise.
31283         (vrp_int_const_binop): Likewise.  Remove unreachable case.
31284         (adjust_range_with_scev): Adjust comments.
31285         (compare_range_with_value): Likewise.
31286         (extract_range_from_phi_node): Likewise.
31287         (test_for_singularity): Likewise.
31288
31289 2017-05-09  Richard Biener  <rguenther@suse.de>
31290
31291         * tree-vrp.c (get_single_symbol): Add assert that we don't
31292         get overflowed constants as invariant part.
31293         (compare_values_warnv): Add comment before the TREE_NO_WARNING
31294         checks.  Use wi::cmp instead of recursing for integer constants.
31295         (compare_values): Just ignore whether we assumed undefined
31296         overflow instead of failing the compare.
31297         (extract_range_for_var_from_comparison_expr): Add comment before the
31298         TREE_NO_WARNING sets.
31299         (test_for_singularity): Likewise.
31300         (extract_range_from_comparison): Do not disable optimization
31301         when we assumed undefined overflow.
31302         (extract_range_basic): Remove init of unused var.
31303
31304 2017-05-09  Richard Biener  <rguenther@suse.de>
31305
31306         * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
31307         (extract_range_from_multiplicative_op_1): Adjust.
31308         (extract_range_from_binary_expr_1): Use int_const_binop.
31309
31310 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31311
31312         PR target/80101
31313         * config/rs6000/power6.md: Replace store_data_bypass_p calls with
31314         rs6000_store_data_bypass_p in seven define_bypass directives and
31315         in several comments.
31316         * config/rs6000/rs6000-protos.h: Add prototype for
31317         rs6000_store_data_bypass_p function.
31318         * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
31319         function implements slightly different (rs6000-specific) semantics
31320         than store_data_bypass_p, returning false rather than aborting
31321         with assertion error when arguments do not satisfy the
31322         requirements of store data bypass.
31323         (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
31324         rs6000_store_data_bypass_p.
31325
31326 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
31327
31328         * config/xtensa/xtensa-protos.h
31329         (xtensa_initial_elimination_offset): New declaration.
31330         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
31331         New function. Move its body from the INITIAL_ELIMINATION_OFFSET
31332         macro definition, add case for FRAME_POINTER_REGNUM when
31333         FRAME_GROWS_DOWNWARD.
31334         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
31335         (INITIAL_ELIMINATION_OFFSET): Replace body with call to
31336         xtensa_initial_elimination_offset.
31337
31338 2017-05-08  Nathan Sidwell  <nathan@acm.org>
31339
31340         * doc/invoke.texi: Alphabetize -fdump options.
31341
31342 2017-05-08  Martin Sebor  <msebor@redhat.com>
31343
31344         PR translation/80280
31345         * config/sol2-c.c (solaris_pragma_align): Correct quoting.
31346
31347 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31348
31349         * target.def (compute_frame_layout): New optional target hook.
31350         * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
31351         * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
31352         * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
31353         target hook.
31354         * reload1.c (verify_initial_elim_offsets): Likewise.
31355         * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
31356         (use_simple_return_p): Call arm_compute_frame_layout if needed.
31357         (arm_get_frame_offsets): Split up into this ...
31358         (arm_compute_frame_layout): ... and this function.
31359
31360 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
31361
31362         * config/aarch64/constraints.md (Usa): New constraint.
31363         * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
31364
31365 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31366
31367         * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
31368         with_multilib_list after it has been checked.
31369
31370 2017-05-08  Richard Biener  <rguenther@suse.de>
31371
31372         * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
31373         (bitmap_set_subtract_values): Likewise.
31374
31375 2017-05-08  Richard Biener  <rguenther@suse.de>
31376
31377         * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
31378         (gimple_assign_nonzero): ... this and remove strict_overflow_p
31379         argument.
31380         (gimple_stmt_nonzero_warnv_p): Rename to ...
31381         (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
31382         argument.
31383         (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
31384         (extract_range_basic): Adjust, do not disable propagation on
31385         strict overflow sensitive simplification.
31386         (vrp_visit_cond_stmt): Likewise.
31387
31388 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
31389
31390         * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
31391         body size unconditionally.
31392
31393 2017-05-07  Jeff Law  <law@redhat.com>
31394
31395         Revert:
31396         2017-05-06  Jeff Law  <law@redhat.com>
31397         PR tree-optimization/78496
31398         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31399         code.
31400
31401         PR tree-optimization/78496
31402         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31403         (simplify_stmt_using_ranges): Call it.
31404         (vrp_dom_walker::before_dom_children): Extract equivalences
31405         from an ASSERT_EXPR with an equality comparison against a
31406         constant.
31407
31408 2017-05-06  Jeff Law  <law@redhat.com>
31409
31410         PR tree-optimization/78496
31411         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31412         code.
31413
31414         PR tree-optimization/78496
31415         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31416         (simplify_stmt_using_ranges): Call it.
31417         (vrp_dom_walker::before_dom_children): Extract equivalences
31418         from an ASSERT_EXPR with an equality comparison against a
31419         constant.
31420
31421 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31422
31423         * lra-constraints.c (lra_copy_reg_equiv): New function.
31424         (split_reg): Use it to copy equivalence information from the
31425         original register to the spill register.
31426
31427 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31428
31429         PR rtl-optimization/75964
31430         * simplify-rtx.c (simplify_const_relational_operation): Remove
31431         invalid handling of comparisons of integer ABS.
31432
31433 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
31434
31435         * config/i386/i386.c (ext_80387_constant_init): Do not explicitly
31436         initialize to zero.
31437         (init_regs): Remove declaration.
31438         (function_arg_advance_32): Initialize error_p as boolean variable.
31439
31440 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31441
31442         * store-motion.c (remove_reachable_equiv_notes): Reformat long
31443         lines.  Use for (;;).
31444
31445 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31446
31447         * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
31448         (rs6000_init_cost): Initialize rs6000_vect_nonmem.
31449         (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
31450         (rs6000_finish_cost): Avoid vectorizing simple copy loops with
31451         VF=2 that require versioning.
31452
31453 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31454
31455         * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
31456         int.
31457
31458 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31459
31460         * diagnostic.h (diagnostic_override_option_index): Convert from
31461         macro to inline function.
31462
31463 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31464
31465         * diagnostic.c (last_module_changed_p): New function.
31466         (set_last_module): New function.
31467         (diagnostic_report_current_module): Convert macro usage to
31468         the above functions.
31469         * diagnostic.h (diagnostic_context::last_module): Strengthen
31470         from const line_map * to const line_map_ordinary *.
31471         (diagnostic_last_module_changed): Delete macro.
31472         (diagnostic_set_last_module): Delete macro.
31473
31474 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31475
31476         * diagnostic.c (diagnostic_impl): Replace report_diagnostic
31477         with diagnostic_report_diagnostic.
31478         (diagnostic_n_impl_richloc): Likewise.
31479         * diagnostic.h (report_diagnostic): Delete macro.
31480         * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
31481         with diagnostic_report_diagnostic.
31482         * substring-locations.c (format_warning_va): Likewise.
31483
31484 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31485
31486         * diagnostic.c (diagnostic_report_diagnostic): Eliminate
31487         save/restor of format_spec.  Move option-printing code to...
31488         (print_option_information): ...this new function, and
31489         reimplement by simply printing to the pretty_printer,
31490         rather than appending to the format string.
31491
31492 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31493
31494         * diagnostic.c (diagnostic_report_diagnostic): Split out pragma
31495         handling logic into...
31496         (update_effective_level_from_pragmas): ...this new function.
31497
31498 2017-05-04  Andrew Waterman  <andrew@sifive.com>
31499
31500         * config/riscv/riscv.opt (mstrict-align): New option.
31501         * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
31502         (SLOW_UNALIGNED_ACCESS): Define.
31503         (riscv_slow_unaligned_access): Declare.
31504         * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
31505         field.
31506         (riscv_slow_unaligned_access): New variable.
31507         (rocket_tune_info): Set slow_unaligned_access to true.
31508         (optimize_size_tune_info): Set slow_unaligned_access to false.
31509         (riscv_cpu_info_table): Add entry for optimize_size_tune_info.
31510         (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
31511         (riscv_option_override): Set riscv_slow_unaligned_access.
31512         * doc/invoke.texi: Add -mstrict-align to RISC-V.
31513
31514 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
31515
31516         * config/riscv/riscv.md: Unify indentation.
31517
31518 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
31519
31520         PR target/79038
31521         PR target/79202
31522         PR target/79203
31523         * config/rs6000/rs6000.md (u code attribute): Add FIX and
31524         UNSIGNED_FIX.
31525         (extendsi<mode>2): Add support for doing sign extension via
31526         VUPKHSW and XXPERMDI if the value is in Altivec registers and we
31527         don't have ISA 3.0 instructions.
31528         (extendsi<mode>2 splitter): Likewise.
31529         (fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
31530         generate the normal insns since SImode can now go in vector
31531         registers.  Disallow the special UNSPECs needed for previous
31532         machines to hide SImode being used.  Add new insns
31533         fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
31534         (fix_trunc<mode>si2_stfiwx): Likewise.
31535         (fix_trunc<mode>si2_internal): Likewise.
31536         (fixuns_trunc<mode>si2): Likewise.
31537         (fixuns_trunc<mode>si2_stfiwx): Likewise.
31538         (fctiw<u>z_<mode>_smallint): Likewise.
31539         (fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
31540         of floating point to 32-bit integer from doing a direct move to
31541         the GPR registers to do a store.
31542         (fctiwz_<mode>): Break long line.
31543
31544 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
31545
31546         * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
31547         * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
31548         (addr_list, addr_offset_valid_p): New.
31549         (split_address_groups): Check offset validity with above function.
31550         (gt-tree-ssa-loop-ivopts.h): Include header file.
31551
31552 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31553
31554         * config.gcc (arm*-*-*): Add missing 'fi'.
31555
31556 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
31557
31558         * doc/invoke.texi (-fopt-info): Explicitly say order of options
31559         included in -fopt-info does not matter.
31560         * doc/optinfo.texi (-fopt-info): Fix description of default
31561         behavour. Explicitly say order of options included in -fopt-info
31562         does not matter.
31563
31564 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31565
31566         * config.gcc: Allow combinations of aprofile and rmprofile values for
31567         --with-multilib-list.
31568         * config/arm/t-multilib: New file.
31569         * config/arm/t-aprofile: Remove initialization of MULTILIB_*
31570         variables.  Remove setting of ISA and floating-point ABI in
31571         MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
31572         MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
31573         and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
31574         matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
31575         CPU options.
31576         * config/arm/t-rmprofile: Likewise except for the matches changes.
31577         * doc/install.texi (--with-multilib-list): Document the combination of
31578         aprofile and rmprofile values and warn about pitfalls in doing that.
31579
31580 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31581
31582         * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
31583         (movdi_aarch64): Likewise.
31584
31585 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31586
31587         PR tree-optimization/80632
31588         * tree-switch-conversion.c (struct switch_conv_info): Add target_vop
31589         field.
31590         (build_arrays): Initialize it for virtual phis.
31591         (fix_phi_nodes): Use it for virtual phis.
31592
31593         PR tree-optimization/80558
31594         * tree-vrp.c (extract_range_from_binary_expr_1): Optimize
31595         [x, y] op z into [x op, y op z] for op & or | if conditions
31596         are met.
31597
31598 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
31599             Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31600
31601         PR target/71607
31602         * config/arm/arm.md (use_literal_pool): Remove.
31603         (64-bit immediate split): No longer takes cost into consideration
31604         if arm_disable_literal_pool is enabled.
31605         * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
31606         used when arm_disable_literal_pool is enabled.
31607         (arm_max_const_double_inline_cost): Remove use of
31608         arm_disable_literal_pool.
31609         (push_minipool_fix): Add assert.
31610         (arm_reorg): Add return if arm_disable_literal_pool is enabled.
31611         * config/arm/vfp.md (no_literal_pool_df_immediate): New.
31612         (no_literal_pool_sf_immediate): New.
31613
31614 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31615
31616         PR tree-optimization/80613
31617         * tree-ssa-dce.c (propagate_necessity): Remove cases for
31618         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
31619
31620 2017-05-05  Richard Biener  <rguenther@suse.de>
31621
31622         * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
31623
31624 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
31625
31626         * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
31627         of this flag from insn conditions due to removal from r247495.
31628
31629 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31630
31631         * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
31632         New function.
31633         (arm_early_store_addr_dep_ptr): Likewise.
31634         * config/arm/aarch-common-protos.h
31635         (arm_early_load_addr_dep_ptr): Add prototype.
31636         (arm_early_store_addr_dep_ptr): Likewise.
31637         * config/arm/cortex-a53.md: Add new bypasses.
31638
31639 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31640
31641         * tree.c (next_type_uid): Change type to unsigned.
31642         (type_hash_canon): Decrement back next_type_uid if
31643         freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
31644         also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
31645         if possible.
31646
31647 2017-05-04  Martin Sebor  <msebor@redhat.com>
31648
31649         * builtins.c: Fix a trivial typo in a comment.
31650
31651         PR middle-end/79234
31652         * builtins.c (check_sizes): Adjust to handle reading past the end.
31653         Avoid printing excessive upper bound of ranges.  Use %E to print
31654         tree nodes instead of converting them to %wu.
31655         (expand_builtin_memchr): New function.
31656         (compute_dest_size): Rename...
31657         (compute_objsize): ...to this.
31658         (expand_builtin_memcpy): Adjust.
31659         (expand_builtin_mempcpy): Adjust.
31660         (expand_builtin_strcat): Adjust.
31661         (expand_builtin_strcpy): Adjust.
31662         (check_strncat_sizes): Adjust.
31663         (expand_builtin_strncat): Adjust.
31664         (expand_builtin_strncpy): Adjust and simplify.
31665         (expand_builtin_memset): Adjust.
31666         (expand_builtin_bzero): Adjust.
31667         (expand_builtin_memcmp): Adjust.
31668         (expand_builtin): Handle memcmp.
31669         (maybe_emit_chk_warning): Check strncat just once.
31670
31671 2017-05-04  Martin Sebor  <msebor@redhat.com>
31672
31673         PR preprocessor/79214
31674         PR middle-end/79222
31675         PR middle-end/79223
31676         * builtins.c (check_sizes): Add inlining context and issue
31677         warnings even when -Wno-system-headers is set.
31678         (check_strncat_sizes): Same.
31679         (expand_builtin_strncat): Same.
31680         (expand_builtin_memmove): New function.
31681         (expand_builtin_stpncpy): Same.
31682         (expand_builtin): Handle memmove and stpncpy.
31683
31684 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
31685
31686         * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
31687         which is not used any more.
31688
31689 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31690
31691         * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
31692
31693 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31694
31695         * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
31696         (cortexa53_tunings): Likewise.
31697         (cortexa57_tunings): Likewise.
31698         (cortexa72_tunings): Likewise.
31699         (cortexa73_tunings): Likewise.
31700
31701 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31702
31703         * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
31704         Set loop alignment to 8.
31705
31706 2017-05-04  Martin Sebor  <msebor@redhat.com>
31707
31708         PR translation/80280
31709         * builtins.c (expand_builtin_object_size): Add missing quoting to
31710         %D and like directives.
31711         * hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
31712         (hsa_type_for_tree_type): Same.
31713         (verify_function_arguments): Same.
31714         * symtab.c (symbol_table::change_decl_assembler_name): Same.
31715         * varasm.c (get_section): Same.
31716         (mark_weak): Same.
31717
31718 2017-05-04  Martin Sebor  <msebor@redhat.com>
31719
31720         PR translation/80280
31721         * config/i386/i386.c (ix86_function_versions): Quote a %D directive.
31722
31723 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31724
31725         * config/aarch64/aarch64.c (generic_addrcost_table):
31726         Change HI/TI mode setting.
31727
31728 2017-05-04  Martin Jambor  <mjambor@suse.cz>
31729
31730         PR tree-optimization/80622
31731         * tree-sra.c (comes_initialized_p): New function.
31732         (build_accesses_from_assign): Only set write lazily when
31733         comes_initialized_p is false.
31734         (analyze_access_subtree): Use comes_initialized_p.
31735         (propagate_subaccesses_across_link): Assert !comes_initialized_p
31736         instead of testing for PARM_DECL.
31737
31738 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31739
31740         * config/aarch64/aarch64.md (prefetch); Adjust predicate and
31741         constraint on operand 0 to allow more general addressing modes.
31742         Adjust output template.
31743         * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
31744         New function.
31745         * config/aarch64/aarch64-protos.h
31746         (aarch64_address_valid_for_prefetch_p): Declare prototype.
31747         * config/aarch64/constraints.md (Dp): New address constraint.
31748         * config/aarch64/predicates.md (aarch64_prefetch_operand): New
31749         predicate.
31750
31751 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
31752
31753         * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
31754         update use of estimate_ipcp_clone_size_and_time.
31755         (estimate_local_effects): Update use of
31756         estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
31757         * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
31758         * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
31759         Return nonspecialized time.
31760
31761 2017-05-04  Richard Biener  <rguenther@suse.de>
31762
31763         * tree-ssa-alias.c (get_continuation_for_phi): Improve looking
31764         for the last VUSE which def dominates the PHI.  Directly call
31765         maybe_skip_until.
31766         (get_continuation_for_phi_1): Remove.
31767
31768 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
31769
31770         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
31771         to explain the use of truncating division.  Cap the number of
31772         iterations to the maximum given by nb_iterations_upper_bound,
31773         if defined.
31774
31775 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31776
31777         * configure.ac (--enable-mingw-wildcard): Add new configurable feature.
31778         * configure: Regenerate.
31779         * config.in: Regenerate.
31780         * config/i386/driver-mingw32.c: new file.
31781         * config/i386/x-mingw32: Add rule to build driver-mingw32.o.
31782         * config.host: Link driver-mingw32.o on MinGW host.
31783         * doc/install.texi: Document new --enable-mingw-wildcard configure
31784         option.
31785
31786 2017-05-04  Marek Polacek  <polacek@redhat.com>
31787
31788         PR tree-optimization/80612
31789         * calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
31790
31791 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31792             Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
31793
31794         * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
31795         (movt splitter): Likewise.
31796         * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
31797         to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
31798         (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
31799         block for Thumb-1 with MOVT.
31800         (thumb2_legitimate_address_p): Move code block ...
31801         (can_avoid_literal_pool_for_label_p): ... into this new function.
31802         (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
31803         literal pool.
31804         (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
31805         * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
31806         "M-profile targets with the MOVT instruction".
31807
31808 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31809
31810         * config/arm/arm-builtins.c (arm_init_builtins): Rename
31811         __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
31812         __builtin_arm_stfscr to __builtin_arm_set_fpscr.
31813
31814 2017-05-04  Martin Liska  <mliska@suse.cz>
31815
31816         * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
31817         variable cond_code.
31818
31819 2017-05-04  Richard Biener  <rguenther@suse.de>
31820
31821         * tree.c (array_at_struct_end_p): Handle arrays at struct
31822         end with flexarrays more conservatively.  Refactor and treat
31823         arrays of arrays or aggregates more strict.  Fix
31824         VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
31825         * tree.c (array_at_struct_end_p): Adjust prototype.
31826         * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
31827         * gimple-fold.c (get_range_strlen): Likewise.
31828         * tree-chkp.c (chkp_may_narrow_to_field): Likewise.
31829
31830 2017-05-04  Richard Biener  <rguenther@suse.de>
31831
31832         PR tree-optimization/31130
31833         * tree-vrp.c (needs_overflow_infinity): Remove as always returning
31834         false.
31835         (supports_overflow_infinity): Likewise.
31836         (is_negative_overflow_infinity): Likewise.
31837         (is_positive_overflow_infinity): Likewise.
31838         (is_overflow_infinity): Likewise.
31839         (stmt_overflow_infinity): Likewise.
31840         (overflow_infinity_range_p): Likewise.
31841         (usable_range_p): Remove as always returning true.
31842         (make_overflow_infinity): Remove.
31843         (negative_overflow_infinity): Likewise.
31844         (positive_overflow_infinity): Likewise.
31845         (avoid_overflow_infinity): Likewise.
31846         (set_value_range): Adjust accordingly.
31847         (set_value_range_to_nonnegative): Likewise, remove now unused
31848         overflow_infinity arg.
31849         (vrp_operand_equal_p): Adjust.
31850         (update_value_range): Likewise.
31851         (range_int_cst_singleton_p): Likewise.
31852         (operand_less_p): Likewise.
31853         (compare_values_warnv): Likewise.
31854         (extract_range_for_var_from_comparison_expr): Likewise.
31855         (vrp_int_const_binop): Likewise.
31856         (zero_nonzero_bits_from_vr): Likewise.
31857         (extract_range_from_multiplicative_op_1): Likewise.
31858         (extract_range_from_binary_expr_1): Likewise.
31859         (extract_range_from_unary_expr): Likewise.
31860         (extract_range_from_comparison): Likewise.
31861         (extract_range_basic): Likewise.
31862         (adjust_range_with_scev): Likewise.
31863         (compare_ranges): Likewise.
31864         (compare_range_with_value): Likewise.
31865         (dump_value_range): Likewise.
31866         (test_for_singularity): Likewise, remove strict_overflow_p parameter
31867         never used.
31868         (simplify_cond_using_ranges): Adjust.
31869
31870 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
31871
31872         * brig-builtins.def: Added a builtin for class_f64.
31873         * builtin-types.def: Added a builtin type needed by class_f64.
31874
31875 2017-05-03  Jason Merrill  <jason@redhat.com>
31876
31877         * timevar.def: Add TV_CONSTEXPR.
31878
31879 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31880
31881         * common.opt (fdiagnostics-parseable-fixits): Fix typo.
31882
31883 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31884
31885         * ipa-prop.c (ipa_update_after_lto_read): Removed.
31886         * ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
31887         * ipa-cp.c (ipcp_propagate_stage): Do not call
31888         ipa_update_after_lto_read.
31889         * ipa-inline.c (ipa_inline): Likewise.
31890
31891 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31892
31893         * ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
31894         tag.  Added a default constructor and a destructor.
31895         (ipa_edge_args_sum_t): New class;
31896         (ipa_edge_args_sum): Declare.
31897         (ipa_edge_args_vector): Remove declaration.
31898         (IPA_EDGE_REF): Use ipa_edge_args_sum.
31899         (ipa_free_edge_args_substructures): Remove declaration.
31900         (ipa_check_create_edge_args): Use ipa_edge_args_sum.
31901         (ipa_edge_args_info_available_for_edge_p): Likewise.
31902         * ipa-prop.c (ipa_edge_args_vector): Removed.
31903         (edge_removal_hook_holder): Likewise.
31904         (edge_duplication_hook_holder): Likewise.
31905         (ipa_edge_args_sum): New variable.
31906         (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
31907         ipa_edge_args_vector.
31908         (ipa_free_edge_args_substructures): Likewise.
31909         (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
31910         ipa_edge_args_vector.
31911         (ipa_edge_removal_hook): Turned into method
31912         ipa_edge_args_sum_t::remove.
31913         (ipa_edge_duplication_hook): Turned into method
31914         ipa_edge_args_sum_t::duplicate.
31915         (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
31916         registering edge hooks.
31917         (ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
31918         * ipa-inline-analysis.c (estimate_function_body_sizes): Test
31919         ipa_edge_args_sum instead of ipa_edge_args_vector.
31920         * ipa-profile.c (ipa_profile): Likewise.
31921
31922 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31923
31924         * symbol-summary.h (function_summary): New method exists.
31925         (function_summary::symtab_removal): Deallocate through release.
31926         (call_summary): New class.
31927         (gt_ggc_mx): New overload.
31928         (gt_pch_nx): Likewise.
31929         (gt_pch_nx): Likewise.
31930
31931 2017-05-03  Jeff Law  <law@redhat.com>
31932
31933         PR tree-optimization/78496
31934         * tree-vrp.c (simplify_cond_using_ranges_1): Renamed
31935         from simplify_cond_using_ranges.  Split off code to walk
31936         backwards through casts into ...
31937         (simplify_cond_using_ranges_2): New function.
31938         (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
31939         (execute_vrp): After identifying jump threads, call
31940         simplify_cond_using_ranges_2.
31941
31942 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
31943
31944         PR bootstrap/80609
31945         * ipa-inline.h (inline_summary): Add ctor.
31946         (create_ggc): Do not use ggc_cleared_alloc.
31947
31948 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
31949             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
31950
31951         * gcc.c (handle_braces): Support escaping in switch matching
31952         text.
31953         * doc/invoke.texi (Spec Files): Document it.
31954         Remove superfluous @code markup in items.
31955
31956 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31957
31958         * diagnostic-show-locus.c (struct column_range): New struct.
31959         (get_affected_columns): New function.
31960         (get_printed_columns): New function.
31961         (struct correction): New struct.
31962         (correction::ensure_capacity): New function.
31963         (correction::ensure_terminated): New function.
31964         (struct line_corrections): New struct.
31965         (line_corrections::~line_corrections): New dtor.
31966         (line_corrections::add_hint): New function.
31967         (layout::print_trailing_fixits): Reimplement in terms of the new
31968         classes.
31969         (selftest::test_overlapped_fixit_printing): New function.
31970         (selftest::diagnostic_show_locus_c_tests): Call it.
31971
31972 2017-05-03  Nathan Sidwell  <nathan@acm.org>
31973
31974         Canonicalize canonical type hashing
31975         * tree.h (type_hash_canon_hash): Declare.
31976         * tree.c (type_hash_list, attribute_hash_list): Move into
31977         type_hash_canon_hash.
31978         (build_type_attribute_qual_variant): Break out hash code calc into
31979         type_hash_canon_hash.
31980         (type_hash_canon_hash): New.  Generic type hash computation.
31981         (build_range_type_1, build_array_type_1, build_function_type,
31982         build_method_type_directly, build_offset_type, build_complex_type,
31983         make_vector_type): Call it.
31984
31985 2017-05-03  Richard Biener  <rguenther@suse.de>
31986
31987         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
31988         When all DRs have unknown misaligned do not always peel
31989         when there is a store but apply the same costing model as if
31990         there were only loads.
31991
31992 2017-05-03  Richard Biener  <rguenther@suse.de>
31993
31994         Revert
31995         PR tree-optimization/80492
31996         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
31997         compare_base_decls returning dont-know properly.
31998
31999 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32000
32001         * config/arm/iterators.md (CCSI): New mode iterator.
32002         (arch): New mode attribute.
32003         * config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
32004         (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
32005         (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
32006         code iterator for success result mode.
32007         * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
32008         the corresponding new insn generators.
32009
32010 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
32011
32012         Revert r247509
32013         2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32014         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32015
32016 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
32017
32018         * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
32019         (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
32020         (DDR_A): Wrap DDR argument in brackets.
32021         (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
32022         (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
32023         (DDR_REVERSED_P): Likewise.
32024
32025 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
32026
32027         PR tree-optimization/79472
32028         * tree-switch-conversion.c (struct switch_conv_info): Add
32029         contiguous_range and default_case_nonstandard fields.
32030         (collect_switch_conv_info): Compute contiguous_range and
32031         default_case_nonstandard fields, don't clear final_bb if
32032         contiguous_range and only the default case doesn't have the required
32033         structure.
32034         (check_all_empty_except_final): Set default_case_nonstandard instead
32035         of failing if contiguous_range and the default case doesn't have empty
32036         block.
32037         (check_final_bb): Add SWTCH argument, don't fail if contiguous_range
32038         and only the default case doesn't have the required constants.  Skip
32039         virtual phis.
32040         (gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
32041         if default_case_nonstandard.
32042         (build_constructors): Build constant 1 just once.  Assert that default
32043         values aren't inserted in between cases if contiguous_range.  Skip
32044         virtual phis.
32045         (build_arrays): Skip virtual phis.
32046         (prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
32047         (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
32048         Handle virtual phis.
32049         (gen_inbound_check): Handle default_case_nonstandard case.
32050         (process_switch): Adjust check_final_bb caller.  Call
32051         gather_default_values with the first non-default case instead of
32052         default case if default_case_nonstandard.
32053
32054 2017-05-02  Nathan Sidwell  <nathan@acm.org>
32055
32056         * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
32057         check.  Fix formatting.
32058
32059 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
32060
32061         * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
32062         errors when comparing specialized and unspecialized times.
32063
32064 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
32065
32066         * diagnostic-show-locus.c
32067         (layout::should_print_annotation_line_p): Make private.
32068         (layout::print_annotation_line): Make private.
32069         (layout::annotation_line_showed_range_p): Make private.
32070         (layout::show_ruler): Make private.
32071         (layout::print_source_line): Make private.  Pass in line and
32072         line_width, rather than calling location_get_source_line.  Drop
32073         returned value.
32074         (layout::print_leading_fixits): New method.
32075         (layout::print_any_fixits): Rename to...
32076         (layout::print_trailing_fixits): ...this, and make private.
32077         Don't print newline fixits.
32078         (diagnostic_show_locus): Move logic for printing one row into...
32079         (layout::print_line): ...this new function.  Move the
32080         location_get_source_line call and error-handling from
32081         print_source_line to here.  Call print_leading_fixits, and rename
32082         print_any_fixits to print_trailing_fixits.
32083         (selftest::test_fixit_insert_containing_newline): Update now that
32084         newlines are partially supported.
32085         (selftest::test_fixit_insert_containing_newline_2): New test.
32086         (selftest::test_fixit_replace_containing_newline): Update comments.
32087         (selftest::diagnostic_show_locus_c_tests): Call the new test.
32088         * edit-context.c (class added_line): New class.
32089         (class edited_line): Describe newline handling in comment.
32090         (edited_line::actually_edited_p): New method.
32091         (edited_line::print_content): Delete redundant decl.
32092         (edited_line::m_predecessors): New field.
32093         (edited_file::print_content): Call edited_line::print_content.
32094         (edited_file::print_diff): Update to support newlines.
32095         (edited_file::print_diff_hunk): Likewise.
32096         (edited_file::print_run_of_changed_lines): New function.
32097         (edited_file::print_diff_line): Convert to...
32098         (print_diff_line): ...this.
32099         (edited_file::get_effective_line_count): New function.
32100         (edited_line::edited_line): Initialize new field m_predecessors.
32101         (edited_line::~edited_line): Clean up m_predecessors.
32102         (edited_line::apply_fixit): Handle newlines.
32103         (edited_line::get_effective_line_count): New function.
32104         (edited_line::print_content): New function.
32105         (edited_line::print_diff_lines): New function.
32106         (selftest::test_applying_fixits_insert_containing_newline): New
32107         test.
32108         (selftest::test_applying_fixits_replace_containing_newline): New
32109         test.
32110         (selftest::insert_line): New function.
32111         (selftest::test_applying_fixits_multiple_lines): Add example of
32112         inserting a line.
32113         (selftest::edit_context_c_tests): Call the new tests.
32114
32115 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32116
32117         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
32118         parameter cand.  Update dump information.
32119         (get_computation_cost): Update uses.
32120
32121 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32122
32123         * tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
32124         (get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
32125         (get_computation_at, rewrite_use_address): Update use of
32126         get_computation_aff.
32127
32128 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32129
32130         * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
32131         (get_computation): Delete.
32132         (get_computation_cost): Implement like get_computation_cost_at.
32133         Use get_computation_at.
32134         (get_computation_cost_at): Delete.
32135         (rewrite_use_nonlinear_expr): Use get_computation_at.
32136         (rewrite_use_compare, remove_unused_ivs): Ditto.
32137
32138 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32139
32140         * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
32141
32142 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32143
32144         * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
32145         (ivopts_global_cost_for_size): Rename parameter and update uses.
32146         (iv_ca_recount_cost): Update uses.
32147         (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
32148         candidates seperately in n_invs and n_cands.
32149         (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
32150
32151 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32152
32153         * tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
32154         (find_inv_vars_cb): New.
32155         (find_depends): Renamed to ...
32156         (find_inv_vars): ... this.
32157         (add_candidate_1, force_var_cost): Call find_inv_vars.
32158         (split_address_cost, determine_group_iv_cost_cond): Ditto.
32159
32160 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32161
32162         * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
32163         inv_vars.  Add inv_exprs.
32164         (struct iv_cand): Rename depends_on to inv_vars.
32165         (struct ivopts_data): Rename max_inv_id/n_invariant_uses to
32166         max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
32167         Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
32168         (dump_cand): Dump inv_vars.
32169         (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
32170         (record_invariant, find_depends, add_candidate_1): Ditto.
32171         (set_group_iv_cost, force_var_cost): Ditto.
32172         (split_address_cost, ptr_difference_cost, difference_cost): Ditto.
32173         (get_computation_cost_at, get_computation_cost): Ditto.
32174         (determine_group_iv_cost_generic): Ditto.
32175         (determine_group_iv_cost_address): Ditto.
32176         (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
32177         (determine_group_iv_costs): Ditto.
32178         (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
32179         (iv_ca_set_remove_invariants): Renamed to ...
32180         (iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
32181         (iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
32182         (iv_ca_set_add_invariants):  Renamed to ...
32183         (iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
32184         (iv_ca_set_cp): Use iv_ca_set_add_invs.
32185         (iv_ca_has_deps): Support inv_vars and inv_exprs.
32186         (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
32187         (create_new_ivs): Remove useless dump.
32188
32189 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32190
32191         * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
32192         iv_cand code.
32193         (determine_group_iv_cost_cond, determine_iv_cost): Ditto.
32194         (iv_ca_set_no_cp, create_new_iv): Ditto.
32195
32196 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32197
32198         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32199
32200 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32201
32202         * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
32203         function tree_check2.
32204
32205 2017-05-02  Martin Liska  <mliska@suse.cz>
32206
32207         * doc/gcov.texi: Add missing preposition.
32208         * gcov.c (function_info::function_info): Properly fill up
32209         all member variables.
32210
32211 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32212
32213         * expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
32214
32215 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32216
32217         * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
32218
32219 2017-05-02  Martin Liska  <mliska@suse.cz>
32220
32221         PR lto/77954.
32222         * lto-streamer-in.c (lto_read_tree_1): Remove
32223         LTO_STREAMER_DEBUG.
32224         * lto-streamer.c (struct tree_hash_entry): Likewise.
32225         (struct tree_entry_hasher): Likewise.
32226         (tree_entry_hasher::hash): Likewise.
32227         (tree_entry_hasher::equal): Likewise.
32228         (lto_streamer_init): Likewise.
32229         (lto_orig_address_map): Likewise.
32230         (lto_orig_address_get): Likewise.
32231         (lto_orig_address_remove): Likewise.
32232         * lto-streamer.h: Likewise.
32233         * tree-streamer-in.c (streamer_alloc_tree): Likewise.
32234         * tree-streamer-out.c (streamer_write_tree_header): Likewise.
32235
32236 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
32237
32238         * config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
32239         (_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
32240         (mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
32241         (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
32242         (mm_maskz_sub_round_ss, _mm_mask_add_sd)
32243         (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
32244         (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
32245         (mm_maskz_sub_ss): New intrinsics.
32246         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32247         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
32248         * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
32249         (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
32250         (__builtin_ia32_subss_mask_round): New builtins.
32251         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32252         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
32253         * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
32254         Renamed to ...
32255         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
32256         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
32257         Changed to ...
32258         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
32259         ... this.
32260
32261 2017-05-02  Martin Jambor  <mjambor@suse.cz>
32262
32263         PR tree-optimization/78687
32264         * tree-sra.c (access): New field parent.
32265         (process_subtree_disqualification): New function.
32266         (disqualify_candidate): Call it.
32267         (build_accesses_from_assign): Reset write flag if creating an
32268         assighnment link.
32269         (build_access_subtree): Fill in parent field and also prpagate
32270         down grp_write flag.
32271         (create_artificial_child_access): New parameter set_grp_write, set
32272         grp_write to its value.
32273         (propagate_subaccesses_across_link): Also propagate grp_write flag
32274         values.
32275         (propagate_all_subaccesses): Push the closest parent back to work
32276         queue if add_access_to_work_queue returned true.
32277
32278 2017-05-02  Richard Biener  <rguenther@suse.de>
32279
32280         * common.opt (fstrict-overflow): Alias negative to fwrapv.
32281         * doc/invoke.texi (fstrict-overflow): Remove all traces of
32282         -fstrict-overflow documentation.
32283         * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
32284         (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
32285         flag_strict_overflow.
32286         * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
32287         * lto-opts.c (lto_write_options): Do not stream it.
32288         * lto-wrapper.c (merge_and_complain): Do not handle it.
32289         * opts.c (default_options_table): Do not set -fstrict-overflow.
32290         (finish_options): Likewise do not clear it when sanitizing.
32291         * simplify-rtx.c (simplify_const_relational_operation): Do not
32292         test flag_strict_overflow.
32293
32294 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32295
32296         * config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
32297         using enabled attribute.
32298         (*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
32299         (*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
32300         (*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
32301         (*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
32302         (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
32303         (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
32304         (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
32305         (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
32306         (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
32307         (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
32308
32309 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32310
32311         * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
32312
32313 2017-05-02  Richard Biener  <rguenther@suse.de>
32314
32315         PR tree-optimization/80591
32316         Revert
32317         2017-04-10  Richard Biener  <rguenther@suse.de>
32318
32319         * tree-ssa-structalias.c (find_func_aliases): Properly handle
32320         asm inputs.
32321
32322 2017-05-02  Richard Biener  <rguenther@suse.de>
32323
32324         PR tree-optimization/80549
32325         * tree-cfgcleanup.c (mfb_keep_latches): New helper.
32326         (cleanup_tree_cfg_noloop): Create forwarders to known loop
32327         headers if they do not have a preheader.
32328
32329 2017-05-02  Martin Liska  <mliska@suse.cz>
32330
32331         PR other/80589
32332         * common.opt: Fix typo.
32333         * doc/invoke.texi: Likewise.
32334
32335 2017-05-01  Jan Beulich  <jbeulich@suse.com>
32336
32337         * config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
32338         swapping, add (x,x,m,x,n) alternative.
32339
32340 2017-05-01  Nathan Sidwell  <nathan@acm.org>
32341
32342         * calls.c (combine_pending_stack_adjustment_and_call): Remove
32343         unnecessary unadjusted_alignment check.
32344
32345 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32346
32347         PR c++/80038
32348         * cilk_common.c (expand_builtin_cilk_detach): Move pedigree
32349         operations here.
32350         * gimplify.c (gimplify_cilk_detach): New function.
32351         (gimplify_call_expr, gimplify_modify_expr): Call it as needed.
32352         * tree-core.h: Document EXPR_CILK_SPAWN.
32353         * tree.h (EXPR_CILK_SPAWN): Define.
32354
32355 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
32356
32357         * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
32358         to use new fixit_hint representation, using the "replace" logic.
32359         (get_line_span_for_fixit_hint): Likewise.
32360         (layout::print_any_fixits): Likewise.
32361         (selftest::test_one_liner_many_fixits): Rename to...
32362         (selftest::test_one_liner_many_fixits_1): ...this, and update
32363         comment and expected output to reflect that the multiple fix-it
32364         hints are now consolidated into one insertion.
32365         (selftest::test_one_liner_many_fixits_2): New test.
32366         (selftest::test_diagnostic_show_locus_one_liner): Update for
32367         above.
32368         (selftest::test_fixit_consolidation): Update for fix-it API
32369         change.
32370         * diagnostic.c (print_parseable_fixits): Likewise.
32371         * edit-context.c (edited_line::m_line_events): Convert from
32372         auto_vec <line_event *> to auto_vec <line_event>.
32373         (class line_event): Convert from abstract base class to a concrete
32374         class, taking over the role of replace_event.
32375         (class insert_event): Delete.
32376         (class replace_event): Rename to class line_event.  Convert to
32377         half-open range.
32378         (edit_context::add_fixits): Reimplement.
32379         (edit_context::apply_insert): Delete.
32380         (edit_context::apply_replace): Rename to...
32381         (edit_context::apply_fixit): ...this.  Convert to half-open range.
32382         (edited_file::apply_insert): Delete.
32383         (edited_file::apply_replace): Rename to...
32384         (edited_file::apply_fixit): ...this.
32385         (edited_line::~edited_line): Drop deletion of events.
32386         (edited_line::apply_insert): Delete.
32387         (edited_line::apply_replace): Rename to...
32388         (edited_line::apply_fixit): ...this.  Convert to half-open range.
32389         Update for change to type of m_line_events.
32390         * edit-context.h (edit_context::apply_insert): Delete.
32391         (edit_context::apply_replace): Rename to...
32392         (edit_context::apply_fixit): ...this.
32393
32394 2017-05-01  Martin Sebor  <msebor@redhat.com>
32395
32396         * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
32397         known.
32398
32399 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
32400
32401         PR target/68491
32402         * config/i386/cpuid.h (__get_cpuid): Always return 0 when
32403         __get_cpuid_max returns 0.
32404         (__get_cpuid_count): Ditto.
32405
32406 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
32407
32408         * tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
32409         replacement expression is another instance of one of its arguments.
32410
32411 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
32412
32413         PR target/79430
32414         * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
32415         check for stack push/pop autoinc.
32416         * config/i386/i386.c (ix86_agi_dependent): Return false
32417         if the only reason why modified_in_p returned true is that
32418         addr is SP based and set_insn is a push or pop.
32419
32420 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32421
32422         * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
32423         overflow check.
32424
32425 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32426
32427         PR ipa/79224
32428         * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
32429         (account_size_time): Use two predicates - exec_pred and
32430         nonconst_pred_ptr.
32431         (evaluate_conditions_for_known_args): Compute both clause and
32432         nonspec_clause.
32433         (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
32434         (inline_summary_t::duplicate): Update.
32435         (estimate_function_body_sizes): Caluculate exec and nonconst predicates
32436         separately.
32437         (compute_inline_parameters): Likewise.
32438         (estimate_edge_size_and_time): Update caluclation of time.
32439         (estimate_node_size_and_time): Compute both time and nonspecialized
32440         time.
32441         (estimate_ipcp_clone_size_and_time): Update.
32442         (inline_merge_summary): Update.
32443         (do_estimate_edge_time): Update.
32444         (do_estimate_edge_size): Update.
32445         (do_estimate_edge_hints): Update.
32446         (inline_read_section, inline_write_summary): Stream both new predicates.
32447         * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
32448         as argument.
32449         (compute_inlined_call_time): Cleanup.
32450         (big_speedup_p): Update.
32451         (edge_badness): Update.
32452         * ipa-inline.h (INLINE_TIME_SCALE): Remove.
32453         (size_time_entry): Replace predicate by exec_predicate and
32454         nonconst_predicate.
32455         (edge_growth_cache_entry): Cache both time nad nonspecialized time.
32456         (estimate_edge_time): Return also nonspec_time.
32457         (reset_edge_growth_cache): Update.
32458
32459 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
32460
32461         PR rtl-optimization/80491
32462         * ifcvt.c (noce_process_if_block): When looking for x setter
32463         with missing else_bb, don't check only the insn right before
32464         cond_earliest, but look for the last insn that x is modified in
32465         within the same bb.
32466
32467         PR rtl-optimization/80491
32468         * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
32469
32470 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
32471
32472         PR tree-optimization/80487
32473         * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
32474
32475 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32476
32477         PR tree-optimization/79697
32478         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
32479         is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
32480         (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
32481         BUILT_IN_STRNDUP.
32482         * gimple-fold.c (gimple_fold_builtin_realloc): New function.
32483         (gimple_fold_builtin): Call gimple_fold_builtin_realloc.
32484
32485 2017-04-28  Martin Sebor  <msebor@redhat.com>
32486
32487         PR tree-optimization/80523
32488         * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
32489         (init_target_to_host_charmap, target_to_host, target_strtol10): New
32490         functions.
32491         (maybe_warn, format_directive, parse_directive): Use new functions.
32492         (pass_sprintf_length::execute): Call init_target_to_host_charmap.
32493
32494 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
32495
32496         * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
32497
32498 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32499
32500         * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
32501         target_header_dir): Set correctly.
32502         * configure: Regenerated.
32503         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
32504         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
32505         instead of SYSTEM_HEADER_DIR.
32506
32507 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
32508
32509         * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
32510         (estimate_local_effects): Likewise.
32511         * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
32512         edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
32513         * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
32514         estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
32515         do_estimate_edge_time, estimate_edge_time): Likewise.
32516         * ipa-inline-analysis.c (estimate_node_size_and_time,
32517         estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
32518         (estimate_time_after_inlining): Remove.
32519
32520 2017-04-28  Martin Liska  <mliska@suse.cz>
32521
32522         * doc/gcov.texi: Enhance documentation of gcov.
32523
32524 2017-04-28  Martin Liska  <mliska@suse.cz>
32525
32526         * doc/gcov.texi: Sort options in alphabetic order.
32527         * doc/gcov-dump.texi: Likewise.
32528         * doc/gcov-tool.texi: Likewise.
32529         * gcov.c (print_usage): Likewise.
32530         * gcov-dump.c (print_usage): Likewise.
32531         * gcov-tool.c (print_merge_usage_message): Likewise.
32532         (print_rewrite_usage_message): Likewise.
32533         (print_overlap_usage_message): Likewise.
32534
32535 2017-04-28  Martin Liska  <mliska@suse.cz>
32536
32537         PR gcov-profile/53915
32538         * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
32539
32540 2017-04-28  Martin Liska  <mliska@suse.cz>
32541
32542         PR gcov-profile/79891
32543         * gcov.c (add_line_counts): Assign BBs to lines just if the BB
32544         is marked by compiler as living on a line.
32545         (get_cycles_count): Remove usage of the union.
32546         (output_intermediate_file): Likewise.
32547         (find_source): Fix GNU coding style.
32548         (accumulate_line_counts): Remove old non-all block mode.
32549         (output_lines): Remove usage of the union.
32550         * profile.c (output_location): Include all BBs, even if
32551         belonging to a same line (and file) as a previous BB.
32552
32553 2017-04-28  Martin Liska  <mliska@suse.cz>
32554
32555         * gcov.c (process_args): Handle new argument 'w'.
32556         (read_graph_file): Assign ID to BBs.
32557         (output_branch_count): Display BB # if verbose flag is set.
32558         (output_lines): Likewise for arcs.
32559         (print_usage): Add '--verbose' option help.
32560         * doc/gcov.texi: Document --verbose (-w) option.
32561
32562 2017-04-28  Martin Liska  <mliska@suse.cz>
32563
32564         * gcov.c (struct block_location_info): New struct.
32565         (process_file): Fill up the new structure.
32566         (read_graph_file): Replace usage of encoding by the newly added
32567         struct.
32568         (add_line_counts): Likewise.
32569         (accumulate_line_counts): Remove usage of the union.
32570         (function_info::function_info): New function.
32571         (function_info::~function_info): Likewise.
32572         (process_file): Call delete instead of release_function.
32573         (release_function): Release the function.
32574         (release_structures): Call delete instead of release_function.
32575         (solve_flow_graph): Replace usage of num_blocks.
32576         (find_exception_blocks): Likewise.
32577         (output_lines): Fix GNU coding style.
32578
32579 2017-04-28  Martin Liska  <mliska@suse.cz>
32580
32581         PR driver/56469
32582         * coverage.c (coverage_remove_note_file): New function.
32583         * coverage.h: Declare the function.
32584         * toplev.c (finalize): Clean if an error has been seen.
32585
32586 2017-04-28  Martin Liska  <mliska@suse.cz>
32587
32588         PR gcov-profile/80031
32589         * gcov-dump.c (tag_blocks): Just print number of basic blocks.
32590         * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
32591         * gcov.c (read_graph_file): Read just number of blocks.
32592         * profile.c (branch_prob): Do not stream 0 flags per a basic
32593         block.
32594
32595 2017-04-28  Martin Liska  <mliska@suse.cz>
32596
32597         * gcov-dump.c (tag_*): Add new argument to declarations.
32598         (dump_gcov_file): Likewise.
32599         (tag_blocks): Add and use new argument depth.
32600         (tag_arcs): Likewise.
32601         (tag_lines): Likewise.
32602         (tag_counters): Likewise.
32603         (tag_summary): Likewise.
32604         (dump_working_sets): Use depth to do a proper indentation.
32605
32606 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
32607
32608         PR bootstrap/80531
32609         * cgraph.h (symtab_node::debug_symtab): No longer inline.
32610         * symtab.c (symtab_node::debug_symtab): Move definition here.
32611
32612 2017-04-28  Richard Biener  <rguenther@suse.de>
32613
32614         * lto-streamer.h (LTO_major_version): Bump to 7.
32615
32616 2017-04-28  Richard Biener  <rguenther@suse.de>
32617
32618         * tree-vrp.c (assert_info): New struct.
32619         (add_assert_info): New helper.
32620         (register_edge_assert_for_2): Refactor to add asserts to a vector
32621         of assert_info.
32622         (register_edge_assert_for_1): Likewise.
32623         (register_edge_assert_for): Likewise.
32624         (finish_register_edge_assert_for): New helper actually registering
32625         asserts where live on edge.
32626         (find_conditional_asserts): Adjust.
32627         (find_switch_asserts): Likewise.
32628         (evrp_dom_walker::try_find_new_range): Generalize.
32629         (evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
32630
32631 2017-04-27  Marek Polacek  <polacek@redhat.com>
32632
32633         PR sanitizer/80349
32634         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
32635         arg10 and arg11 to itype.
32636
32637 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
32638
32639         * doc/extend.texi (Object Size Checking): Improve grammar.
32640
32641 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
32642
32643         PR target/80530
32644         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
32645         that the logic for permitting reciprocal estimates matches that
32646         in use_rsqrt_p.
32647
32648 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
32649
32650         PR c++/80534
32651         * tree.c (type_cache_hasher::equal): Only compare
32652         TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
32653         (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
32654         non-aggregate element types.
32655         * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
32656         about the flag on ARRAY_TYPEs in the comment, formatting fix.
32657
32658 2017-04-27  Richard Biener  <rguenther@suse.de>
32659
32660         PR middle-end/80533
32661         * emit-rtl.c (set_mem_attributes_minus_bitpos): When
32662         stripping ARRAY_REFs from MEM_EXPR make sure we're not
32663         keeping a reference to a trailing array.
32664
32665 2017-04-27  Richard Biener  <rguenther@suse.de>
32666
32667         PR middle-end/80539
32668         * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
32669         being in loop-closed SSA form conservatively.
32670         (chrec_fold_multiply_poly_poly): Likewise.
32671
32672 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
32673
32674         PR middle-end/79665
32675         * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
32676         CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
32677
32678 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
32679
32680         PR target/77728
32681         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
32682         (aarch64_function_arg_alignment): Return unsigned int again, but still
32683         ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
32684         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
32685         Don't emit -Wpsabi note.
32686         (aarch64_function_arg_boundary): Likewise.
32687         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
32688         caller.
32689
32690 2017-04-26  Nathan Sidwell  <nathan@acm.org>
32691
32692         * tree.h (crc32_unsigned_n): Declare.
32693         (crc32_unsigned, crc32_unsigned): Make inline.
32694         * tree.c (crc32_unsigned_bits): Replace with ...
32695         (crc32_unsigned_n): ... this.
32696         (crc32_unsigned, crc32_byte): Remove.
32697         (crc32_string): Remove unnecessary braces.
32698
32699 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
32700
32701         * ipa-cp.c (estimate_local_effects): Convert sreal to int.
32702         * ipa-inline-analysis.c (MAX_TIME): Remove.
32703         (account_size_time): Use sreal for time.
32704         (dump_inline_summary): Update.
32705         (estimate_function_body_sizes): Update.
32706         (estimate_edge_size_and_time): Update.
32707         (estimate_calls_size_and_time): Update.
32708         (estimate_node_size_and_time): Update.
32709         (inline_merge_summary): Update.
32710         (inline_update_overall_summary): Update.
32711         (estimate_time_after_inlining): Update.
32712         (inline_read_section): Update.
32713         (inline_write_summary): Update.
32714         * ipa-inline.c (compute_uninlined_call_time): Update.
32715         (compute_inlined_call_time): Update.
32716         (recursive_inlining): Update.
32717         (inline_small_functions): Update.
32718         (dump_overall_stats): Update.
32719         * ipa-inline.h: Include sreal.h.
32720         (size_time_entry): Turn time to sreal.
32721         (inline_summary): Turn self_time nad time to sreal.
32722
32723 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
32724
32725         * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
32726         data-streamer.h
32727         (sreal::stream_out, sreal::stream_in): New.
32728         * sreal.h (sreal::stream_out, sreal::stream_in): Declare.
32729
32730 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
32731
32732         * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
32733         environment.
32734
32735 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
32736
32737         PR target/70799
32738         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
32739         Handle ASHIFTRT.
32740         (dimode_scalar_chain::compute_convert_gain): Ditto.
32741         (dimode_scalar_chain::make_vector_copies): Ditto.
32742         (dimode_scalar_chain::convert_reg): Ditto.
32743         (dimode_scalar_chain::convert_insn): Ditto.
32744         * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
32745         (VI248_AVX512BW_1): New mode iterator.
32746         (<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
32747         <mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
32748         mode iterator.
32749
32750 2017-04-25  Martin Sebor  <msebor@redhat.com>
32751
32752         PR tree-optimization/80497
32753         * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
32754         constants are representable in HOST_WIDE_INT.
32755         (parse_directive): Ditto.
32756
32757 2017-04-25  Martin Sebor  <msebor@redhat.com>
32758
32759         PR bootstrap/80486
32760         * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
32761         (new_zero_array): Adjust signature.
32762         (dom_info::dom_init): Used unsigned rather that size_t.
32763         (dom_info::dom_info): Same.
32764
32765 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
32766             Jakub Jelinek  <jakub@redhat.com>
32767
32768         PR target/77728
32769         * config/arm/arm.c: Include gimple.h.
32770         (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
32771         returns negative, increment ncrn only if it returned positive.
32772         (arm_needs_doubleword_align): Return int instead of bool,
32773         ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
32774         members, but if there is any such non-FIELD_DECL
32775         > PARM_BOUNDARY aligned decl, return -1 instead of false.
32776         (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
32777         returns negative, increment nregs only if it returned positive.
32778         (arm_setup_incoming_varargs): Likewise.
32779         (arm_function_arg_boundary): Emit -Wpsabi note if
32780         arm_needs_doubleword_align returns negative, return
32781         DOUBLEWORD_ALIGNMENT only if it returned positive.
32782
32783 2017-04-25  Marek Polacek  <polacek@redhat.com>
32784
32785         PR sanitizer/80349
32786         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
32787         first argument to type.
32788
32789 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
32790
32791         PR target/80482
32792         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
32793         type checks to test for compatibility instead of equality.
32794
32795 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
32796             Jakub Jelinek  <jakub@redhat.com>
32797
32798         PR target/77728
32799         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
32800         type.
32801         (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
32802         struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
32803         the alignment computation, but return their maximum in warn_alignment.
32804         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
32805         Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
32806         is smaller.
32807         (aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
32808         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
32809         caller.
32810
32811 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32812
32813         * config/arc/simdext.md (dmpyh): Fix typo.
32814
32815 2017-04-25  Richard Biener  <rguenther@suse.de>
32816
32817         PR tree-optimization/80492
32818         * alias.c (compare_base_decls): Handle registers with asm
32819         specification conservatively.
32820         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
32821         compare_base_decls returning dont-know properly.
32822
32823 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32824
32825         * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
32826         (legitimate_offset_address_p): New function.
32827         (arc_legitimate_address_p): Use above function.
32828
32829 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32830
32831         * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
32832
32833 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32834
32835         * config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
32836         ACCH registers whenever they are available.
32837
32838 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32839
32840         * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
32841         double regs fix when not used.
32842
32843 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32844
32845         * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
32846         core registers.
32847         (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
32848         (REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
32849
32850 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32851
32852         * config/arc/arc.c (arc_output_addsi): Check for h-register class
32853         when emitting short ADD instructions.
32854
32855 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32856
32857         * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
32858         constraint.
32859         (cmpsi_cc_c_insn): Likewise.
32860         (cbranchsi4_scratch): Compute proper instruction length using
32861         compact_hreg_operand.
32862         * config/arc/predicates.md (compact_hreg_operand): New predicate.
32863
32864 2017-04-25  Richard Biener  <rguenther@suse.de>
32865
32866         PR middle-end/80509
32867         * passes.c (pass_manager::pass_manager): Initialize
32868         m_name_to_pass_map.
32869
32870 2017-04-25  Richard Biener  <rguenther@suse.de>
32871
32872         PR tree-optimization/79201
32873         * tree-ssa-sink.c (statement_sink_location): Handle calls.
32874
32875 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32876
32877         PR target/80464
32878         * config/s390/vector.md: Split MEM->GPR vector moves for
32879         non-s_operand addresses.
32880
32881 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32882
32883         PR target/79895
32884         * config/s390/predicates.md (reload_const_wide_int_operand): New
32885         predicate.
32886         * config/s390/s390.md ("movti"): Remove d/P alternative.
32887         ("movti_bigconst"): New pattern definition.
32888
32889 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32890
32891         PR target/80080
32892         * s390-protos.h (s390_expand_cs_hqi): Removed.
32893         (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
32894         * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
32895         modes as well as CCZ1mode and CCZmode.
32896         (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
32897         signature of s390_emit_compare_and_swap.
32898         (s390_expand_cs_hqi): Likewise, make static.
32899         (s390_expand_cs_tdsi): Generate an explicit compare before trying
32900         compare-and-swap, in some cases.
32901         (s390_expand_cs): Wrapper function.
32902         (s390_expand_atomic_exchange_tdsi): New backend specific expander for
32903         atomic_exchange.
32904         (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
32905         * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
32906         patterns for small and large integers.  Forbid symref memory operands.
32907         Move expander to s390.c.  Require cc register.
32908         ("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
32909         ("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
32910         ("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
32911         ("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
32912         symref memory operands.  Remove CC mode and call s390_match_ccmode
32913         instead.
32914         ("atomic_exchange<mode>"): Allow and implement all integer modes.
32915
32916 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32917
32918         * config/s390/s390.md (define_peephole2): New peephole to help
32919         combining the load-and-test pattern with volatile memory.
32920
32921 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32922
32923         * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
32924         with CCZmode for TARGET_Z196.
32925
32926 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
32927
32928         PR rtl-optimization/80501
32929         * combine.c (make_compound_operation_int): Set subreg_code to SET
32930         even for AND with mask of the sign bit of mode.
32931
32932         PR rtl-optimization/80500
32933         * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
32934         sum's initial value.
32935
32936 2017-04-25  Julian Brown  <julian@codesourcery.com>
32937             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32938
32939         * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
32940
32941 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
32942
32943         * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
32944
32945 2017-04-25  Julian Brown  <julian@codesourcery.com>
32946             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32947
32948         * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
32949         (thunderx2t99_sha): New Reservation.
32950
32951 2017-04-25  Julian Brown  <julian@codesourcery.com>
32952             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32953
32954         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
32955         type for 1-element load.
32956
32957 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
32958
32959         * match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
32960
32961 2017-04-24  Martin Jambor  <mjambor@suse.cz>
32962
32963         PR tree-optimization/80293
32964         * tree-sra.c (scalarizable_type_p): New parameter const_decl, make
32965         char arrays not totally scalarizable if it is false.
32966         (analyze_all_variable_accesses): Pass correct value in the new
32967         parameter.  Add a statistics counter.
32968
32969 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
32970
32971         PR middle-end/79931
32972         * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
32973
32974 2017-04-24  Richard Biener  <rguenther@suse.de>
32975
32976         PR tree-optimization/80494
32977         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
32978         out for complex types.
32979
32980 2017-04-24  Richard Biener  <rguenther@suse.de>
32981
32982         * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
32983         * tree-ssa-sccvn.c (print_scc): Print SCC size.
32984         (extract_and_process_scc_for_name): Never fail but drop SCC to varying.
32985         (DFS): Adjust and never fail.
32986         (sccvn_dom_walker::fail): Remove.
32987         (sccvn_dom_walker::before_dom_children): Adjust.
32988         (run_scc_vn): Likewise and never fail.
32989         * tree-ssa-pre.c (pass_pre::execute): Adjust.
32990         (pass_fre::execute): Likewise.
32991
32992 2017-04-24  Richard Biener  <rguenther@suse.de>
32993
32994         PR tree-optimization/79725
32995         * tree-ssa-sink.c (statement_sink_location): Return whether
32996         failure reason was zero uses.  Move that check later.
32997         (sink_code_in_bb): Deal with zero uses by removing the stmt
32998         if possible.
32999
33000 2017-04-24  Richard Biener  <rguenther@suse.de>
33001
33002         PR c++/2972
33003         * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
33004         pointer-based references.
33005
33006 2017-04-24  Richard Biener  <rguenther@suse.de>
33007
33008         PR bootstrap/79814
33009         * pass_manager.h (pass_manager::operator new): Remove.
33010         (pass_manager::operator delete): Likewise.
33011         * passes.c (pass_manager::operator new): Remove.
33012         (pass_manager::operator delete): Likewise.
33013         (pass_manager::pass_manager): Zero individual pass members.
33014
33015 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
33016
33017         PR target/70799
33018         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
33019         <case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
33020         Check "XEXP (src, 1)" operand here.
33021         <case PLUS, case MINUS, case IOR, case XOR, case AND>:
33022         Check "XEXP (src, 1)" operand here.
33023         (dimode_scalar_chain::make_vector_copies): Detect count register
33024         of a shift instruction.  Zero extend count register from QImode
33025         to DImode to satisfy vector shift pattern count operand predicate.
33026         Substitute vector shift count operand with a DImode copy.
33027         (dimode_scalar_chain::convert_reg): Ditto, zero-extend from
33028         vector register.
33029
33030 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
33031
33032         * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
33033         Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33034         (*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
33035         UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33036         (UNSPEC_NOREX_MEM): Remove definition.
33037
33038 2017-04-21  Richard Biener  <rguenther@suse.de>
33039
33040         PR tree-optimization/79547
33041         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
33042         Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
33043         bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
33044         without any constraints.
33045
33046 2017-04-21  Richard Biener  <rguenther@suse.de>
33047
33048         PR tree-optimization/78847
33049         * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
33050
33051 2017-04-21  Richard Biener  <rguenther@suse.de>
33052
33053         * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
33054         (build_distinct_type_copy): Likewise.
33055         (build_variant_type_copy): Likewise.
33056         * tree.c (build_qualified_type): Pass down mem-stat info.
33057         (build_distinct_type_copy): Likewise.
33058         (build_variant_type_copy): Likewise.
33059
33060 2017-04-21  Richard Biener  <rguenther@suse.de>
33061
33062         PR tree-optimization/80237
33063         * tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
33064         defaulted to NULL.
33065         (phi_translate_1): Also allow a leader in AVAIL_OUT of pred
33066         for a simplified result.
33067
33068 2016-04-21  Richard Biener  <rguenther@suse.de>
33069
33070         * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
33071         sth as strict as a simple_iv but a chrec without symbols and an
33072         operand defined in the loop we are peeling (and not some subloop).
33073         (propagate_constants_for_unrolling): Propagate all constants.
33074
33075 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33076
33077         PR target/79804
33078         * config/i386/i386.c (print_reg): Remove assert for disalowed
33079         regno values, call output_operand_lossage instead.
33080
33081 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33082
33083         PR target/78090
33084         * config/i386/constraints.md (Yc): New register constraint.
33085         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
33086         Use Yc constraint for alternative 2 of operand 0.  Remove
33087         preferred_for_speed attribute.
33088
33089 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33090
33091         * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
33092         lastprivate clauses in SIMT case.
33093
33094 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
33095
33096         * doc/invoke.texi (-Wextra-semi): Document new warning option.
33097
33098 2017-04-20  Richard Biener  <rguenther@suse.de>
33099
33100         PR tree-optimization/57796
33101         * tree-vect-stmts.c (vect_model_store_cost): Cost scatters
33102         as N scalar stores.
33103         (vect_model_load_cost): Cost gathers as N scalar loads.
33104
33105 2017-04-20  Richard Biener  <rguenther@suse.de>
33106
33107         * ggc-page.c (ggc_allocated_p): Rename to ...
33108         (safe_lookup_page_table_entry): ... this and return the lookup
33109         result.
33110         (gt_ggc_m_S): Use safe_lookup_page_table_entry.
33111
33112 2017-04-20  Richard Biener  <rguenther@suse.de>
33113
33114         PR tree-optimization/80453
33115         * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
33116         * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
33117         from the conditions.
33118         (vn_phi_eq): Pass them down.
33119         (vn_phi_lookup): Record them.
33120         (vn_phi_insert): Likewise.
33121
33122 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
33123
33124         * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
33125         uninitialized variable warning to avoid buffer overrun.
33126
33127 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33128
33129         PR other/71250
33130         * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
33131         is suppressed for '{ 0 }' in C.
33132
33133 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33134
33135         * BASE-VER: Set to 8.0.0.
33136
33137 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33138
33139         * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
33140         priority .init_array and .fini_array section with SECTION_NOTYPE
33141         flag.
33142
33143 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33144
33145         PR middle-end/80423
33146         * tree.h (build_array_type): Add typeless_storage default argument.
33147         * tree.c (type_cache_hasher::equal): Also compare
33148         TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
33149         (build_array_type): Add typeless_storage argument, set
33150         TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
33151         recursive call.
33152         (build_nonshared_array_type): Adjust build_array_type_1 caller.
33153         (build_array_type): Likewise.  Add typeless_storage argument.
33154
33155 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33156             Jakub Jelinek  <jakub@redhat.com>
33157
33158         PR tree-optimization/80426
33159         * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
33160         operation on symbolic operands, also compute the overflow for the
33161         invariant part when the operation degenerates into a negation.
33162
33163 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
33164
33165         PR debug/80461
33166         * dwarf2out.c (modified_type_die, gen_type_die_with_usage):
33167         Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
33168
33169         PR debug/80436
33170         * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
33171
33172 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
33173
33174         PR target/80462
33175         * config/avr/avr.c (tree.h): Include it.
33176         (cgraph.h): Include it.
33177         (avr_encode_section_info): Don't warn for uninitialized progmem
33178         variable if it's just an alias.
33179
33180 2017-04-19  Richard Biener  <rguenther@suse.de>
33181
33182         PR ipa/65972
33183         * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
33184         when needed by AutoPGO.
33185
33186 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
33187
33188         PR lto/50345
33189         * doc/lto.texi: Remove an extra 'that'.
33190
33191 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
33192
33193         PR rtl-optimization/80429
33194         * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
33195         are only used in debug insns.
33196
33197 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33198             Vladimir Makarov  <vmakarov@redhat.com>
33199
33200         * config/sparc/predicates.md (input_operand): Add comment.  Return
33201         true for any memory operand when LRA is in progress.
33202         * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
33203
33204 2017-04-18  Jeff Law  <law@redhat.com>
33205
33206         PR target/74563
33207         * mips.md ({return,simple_return}_internal): Do not overwrite
33208         operands[0].
33209
33210 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33211
33212         PR tree-optimization/80443
33213         * tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
33214         instead of adding 1, subtract -1 and similarly instead of subtracting
33215         1 add -1.
33216
33217 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
33218
33219         PR rtl-optimization/80357
33220         * haifa-sched.c (tmp_bitmap): New variable.
33221         (model_recompute): Handle duplicate use records.
33222         (alloc_global_sched_pressure_data): Initialize tmp_bitmap.
33223         (free_global_sched_pressure_data): Free it.
33224
33225 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33226
33227         Revert:
33228         2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33229         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
33230         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
33231         instead of SYSTEM_HEADER_DIR.
33232
33233 2017-04-18  Jeff Law  <law@redhat.com>
33234
33235         PR middle-end/80422
33236         * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
33237         predecessors after walking up the insn chain.
33238
33239 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33240
33241         PR debug/80263
33242         * dwarf2out.c (modified_type_die): Try harder not to emit internal
33243         sizetype type into debug info.
33244
33245 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
33246
33247         PR target/80099
33248         * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
33249         unneeded test for TARGET_UPPER_REGS_SF.
33250         * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
33251
33252 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33253
33254         PR sanitizer/80444
33255         * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
33256         instead of gsi_after_labels.
33257
33258 2017-04-18  Jeff Law  <law@redhat.com>
33259
33260         * regcprop.c (maybe_mode_change): Avoid creating copies of the
33261         stack pointer.
33262
33263         Revert:
33264         2017-04-13  Jeff Law  <law@redhat.com>
33265         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33266         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33267
33268 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
33269
33270         PR target/79453
33271         * config/avr/avr.c (intl.h): Include it.
33272         (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
33273
33274 2017-04-18  Martin Liska  <mliska@suse.cz>
33275
33276         PR gcov-profile/78783
33277         * gcov-tool.c (gcov_output_files): Validate that destination
33278         file is either removed by the tool or by a user.
33279
33280 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33281             Guy Benyei  <guybe@mellanox.com>
33282
33283         * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
33284         block, and do not negate it, the stored id is already negative.
33285
33286 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33287
33288         * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
33289
33290 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
33291
33292         PR target/80098
33293         * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
33294         masks of options that should be turned off if the VSX vector
33295         options are turned off.
33296         (OTHER_P8_VECTOR_MASKS): Likewise.
33297         (OTHER_VSX_VECTOR_MASKS): Likewise.
33298         * config/rs6000/rs6000.c (rs6000_option_override_internal): Call
33299         rs6000_disable_incompatible_switches to validate no type switches
33300         like -mvsx.
33301         (rs6000_incompatible_switch): New function to disallow turning on
33302         other vector options if -mno-vsx, -mno-power8-vector, or
33303         -mno-power9-vector are specified.
33304
33305 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33306
33307         * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
33308
33309 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33310
33311         * config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
33312         * config/arc/arc.c (arc_decl_pretend_args): Likewise.
33313         * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
33314         (ARG_POINTER_CFA_OFFSET): Likewise.
33315
33316 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33317
33318         * config/arc/arc.c (arc_mode_dependent_address_p): Relax
33319         conditions to take advantage of various optimizations.
33320
33321 2017-04-13  Jeff Law  <law@redhat.com>
33322
33323         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33324         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33325         (zero_extendsidi2_dext): Likewise.
33326
33327 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33328
33329         PR sanitizer/80403
33330         * fold-const.c (fold_ternary_loc): Revert
33331         use op0 instead of fold_convert_loc (loc, type, arg0) part of
33332         2017-04-12 change.
33333
33334 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
33335
33336         PR rtl-optimization/80343
33337         * lra-remat.c (update_scratch_ops): Assign original hard reg to
33338         new scratch pseudo.
33339
33340 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
33341
33342         PR sanitizer/80414
33343         * ubsan.c (ubsan_expand_bounds_ifn): Pass original index
33344         to ubsan_encode_value.
33345
33346 2017-04-13  Jeff Law  <law@redhat.com>
33347
33348         * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
33349         appearing in DEBUG_INSNs.
33350
33351 2017-04-13  Martin Liska  <mliska@suse.cz>
33352
33353         PR gcov-profile/80413
33354         * gcov-io.c (gcov_write_string): Copy to buffer just when
33355         allocated size is greater than zero.
33356
33357 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33358
33359         PR debug/80321
33360         * dwarf2out.c (decls_for_scope): Ignore declarations of
33361         current_function_decl in BLOCK_NONLOCALIZED_VARS.
33362
33363 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
33364
33365         PR lto/69953
33366         * ipa-visibility.c (non_local_p): Fix typos.
33367         (localize_node): When localizing symbol in same comdat group,
33368         dissolve the group only when we know external symbols are going
33369         to be privatized.
33370         (function_and_variable_visibility): Do not localize DECL_EXTERNAL.
33371
33372 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33373
33374         PR tree-optimization/79390
33375         * optabs.c (emit_conditional_move): If the preferred op2/op3 operand
33376         order does not result in usable sequence, retry with reversed operand
33377         order.
33378
33379         PR sanitizer/80403
33380         PR sanitizer/80404
33381         PR sanitizer/80405
33382         * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
33383         to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
33384         op0 instead of fold_convert_loc (loc, type, arg0).
33385
33386 2017-04-12  Jeff Law  <law@redhat.com>
33387
33388         * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
33389         has a delay slot in the generated code.
33390
33391         * config/cris/cris.md (cris_preferred_reload_class): Return
33392         GENNONACR_REGS rather than GENERAL_REGS.
33393
33394 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33395
33396         PR c/80163
33397         * expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
33398         vs. ZERO_EXTEND based on signedness of treeop0's type rather than
33399         signedness of the result type.
33400
33401 2017-04-12  Richard Biener  <rguenther@suse.de>
33402             Jeff Law  <law@redhat.com>
33403
33404         PR tree-optimization/80359
33405         * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
33406         trim stores to TARGET_MEM_REFs.
33407
33408 2017-04-12  Richard Biener  <rguenther@suse.de>
33409
33410         PR tree-optimization/79390
33411         * gimple-ssa-split-paths.c (is_feasible_trace): Restrict
33412         threading case even more.
33413
33414 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
33415
33416         PR target/80382
33417         * config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
33418         for quad_address_p for TImode, instead of just not indexed_address.
33419
33420 2017-04-12  Richard Biener  <rguenther@suse.de>
33421             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33422
33423         PR middle-end/79671
33424         * alias.c (component_uses_parent_alias_set_from): Handle
33425         TYPE_TYPELESS_STORAGE.
33426         (get_alias_set): Likewise.
33427         * tree-core.h (tree_type_common): Add typeless_storage flag.
33428         * tree.h (TYPE_TYPELESS_STORAGE): New macro.
33429         * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
33430         for types containing members with TYPE_TYPELESS_STORAGE.
33431         (place_field): Likewise.
33432         (layout_type): Likewise for ARRAY_TYPE.
33433         * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
33434         * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
33435         TYPE_TYPELESS_STORAGE.
33436         * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
33437
33438 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33439
33440         PR sanitizer/80349
33441         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33442         first argument to type.
33443
33444 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33445
33446         PR target/80376
33447         PR target/80315
33448         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
33449         CONST0_RTX (mode) rather than const0_rtx where appropriate.
33450         (rs6000_expand_binop_builtin): Likewise.
33451         (rs6000_expand_ternop_builtin): Likewise; also add missing
33452         vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
33453         vshasigma built-ins.
33454         * doc/extend.texi: Document that vec_xxpermdi's third argument
33455         must be a constant.
33456
33457 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
33458
33459         * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
33460         Use shift_const cost parameter when calculating gain of STV shifts.
33461
33462 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
33463
33464         PR rtl-optimization/70478
33465         * lra-constraints.c (process_alt_operands): Check memory for
33466         disfavoring memory insn operand.
33467
33468 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33469
33470         PR middle-end/80100
33471         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
33472         left shift in unsigned HOST_WIDE_INT type.
33473
33474         PR rtl-optimization/80385
33475         * simplify-rtx.c (simplify_unary_operation_1): Don't transform
33476         (not (neg X)) into (plus X -1) for complex or non-integral modes.
33477
33478         PR libgomp/80394
33479         * omp-low.c (scan_omp_task): Don't optimize away empty tasks
33480         if they have any depend clauses.
33481
33482 2017-04-11  Martin Liska  <mliska@suse.cz>
33483
33484         PR ipa/80212
33485         * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
33486         * ipa-split.c (split_function): Create a local comdat symbol
33487         if caller is in a comdat group.
33488
33489 2017-04-11  Martin Liska  <mliska@suse.cz>
33490
33491         PR ipa/80212
33492         * ipa-cp.c (determine_versionability): Handle calls_comdat_local
33493         flags.
33494
33495 2017-04-11  Martin Sebor  <msebor@redhat.com>
33496
33497         PR middle-end/80364
33498         * gimple-ssa-sprintf.c (get_int_range): Remove second argument and
33499         always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
33500         for INTEGER_TYPE.
33501         (directive::set_width, directive::set_precision, format_character):
33502         Adjust.
33503         (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
33504         INTEGER_TYPE.
33505
33506 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
33507
33508         PR target/80389
33509         * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
33510         conflict, set target->arch_name instead of target->cpu_name.
33511
33512 2017-04-11  Richard Biener  <rguenther@suse.de>
33513
33514         PR tree-optimization/80374
33515         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
33516         build_zero_cst, remove fold_convertible_p check again.
33517
33518 2017-04-11  Martin Liska  <mliska@suse.cz>
33519
33520         PR sanitizer/70878
33521         * ubsan.c (instrument_object_size): Do not instrument register
33522         variables.
33523
33524 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33525
33526         PR target/80381
33527         * config/i386/i386-builtin-types.def
33528         (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
33529         V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
33530         V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
33531         V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
33532         V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
33533         V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
33534         V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
33535         V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
33536         V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
33537         V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
33538         V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
33539         V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
33540         V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
33541         V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
33542         V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
33543         V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
33544         V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
33545         V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
33546         * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
33547         __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
33548         __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
33549         __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
33550         __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
33551         __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
33552         __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
33553         __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
33554         __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
33555         __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
33556         __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
33557         __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
33558         __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
33559         __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
33560         __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
33561         __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
33562         __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
33563         __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
33564         __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
33565         __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
33566         __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
33567         __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
33568         __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
33569         __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
33570         __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
33571         __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
33572         __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
33573         __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
33574         aliases.
33575         * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
33576         flag to second_arg_count, handle 4 argument function type _COUNT
33577         aliases, handle second_arg_count on second argument rather than last.
33578
33579 2017-04-10  Jeff Law  <law@redhat.com>
33580
33581         PR tree-optimization/80374
33582         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
33583         record anything if we can not convert integer_zero_node to the
33584         desired type.
33585
33586 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
33587
33588         PR target/80108
33589         * config/rs6000/rs6000.c (rs6000_option_override_internal):
33590         Enhance special handling given to the TARGET_P9_MINMAX option in
33591         relation to certain other options.
33592
33593 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
33594
33595         PR tree-optimization/80153
33596         * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
33597         remove POINTER_PLUS_EXPR's base part directly, rather than through
33598         aff_tree.
33599
33600 2017-04-10  Richard Biener  <rguenther@suse.de>
33601             Bin Cheng  <bin.cheng@arm.com>
33602
33603         PR tree-optimization/80153
33604         * tree-affine.c (aff_combination_to_tree): Get base pointer from
33605         the first element of pointer type aff_tree.  Build result expr in
33606         aff_tree's type.
33607         (add_elt_to_tree): Convert to type unconditionally.  Remove other
33608         fold_convert calls.
33609         * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
33610         (rewrite_use_nonlinear_expr): Check invariant using iv information.
33611
33612 2017-04-10  Richard Biener  <rguenther@suse.de>
33613
33614         * tree-ssa-structalias.c (find_func_aliases): Properly handle
33615         asm inputs.
33616
33617 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
33618
33619         PR rtl-optimization/70478
33620         * lra-constraints.c (curr_small_class_check): New.
33621         (update_and_check_small_class_inputs): New.
33622         (process_alt_operands): Update curr_small_class_check.  Disfavor
33623         alternative insn memory operands.  Check available regs for small
33624         class operands.
33625
33626 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
33627
33628         PR target/80057
33629         * config/mips/mips.opt (-mvirt): Update description.
33630         * doc/invoke.texi (-mvirt): Likewise.
33631
33632 2017-04-10  Richard Biener  <rguenther@suse.de>
33633
33634         PR middle-end/80362
33635         * fold-const.c (fold_binary_loc): Look at unstripped ops when
33636         looking for NEGATE_EXPR in -A / -B to A / B folding.
33637
33638 2017-04-10  Martin Liska  <mliska@suse.cz>
33639
33640         PR gcov-profile/80224
33641         * gcov.c (print_usage): Fix usage string.
33642         (get_gcov_intermediate_filename): Remove.
33643         (output_gcov_file): Use both for normal and intermediate format.
33644         (generate_results): Do not initialize special file for
33645         intermediate format.
33646
33647 2017-04-10  Richard Biener  <rguenther@suse.de>
33648
33649         PR tree-optimization/80304
33650         * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
33651         for safelen.
33652
33653 2017-04-10  Nathan Sidwell  <nathan@acm.org>
33654
33655         PR target/79905
33656         * config/rs6000/rs6000.c (rs6000_vector_type): New.
33657         (rs6000_init_builtins): Use it.
33658
33659 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33660
33661         * config/arm/arm.md (<mrc>): Add mode to SET source.
33662         (<mrrc>): Likewise.
33663
33664 2017-04-10  Richard Biener  <rguenther@suse.de>
33665
33666         PR middle-end/80344
33667         * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
33668
33669 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
33670
33671         PR target/80324
33672         * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
33673         _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
33674         _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
33675         _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
33676         _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
33677         _mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
33678         _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
33679         _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
33680         _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
33681         _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
33682         _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
33683         _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
33684         _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
33685         _mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
33686         _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
33687         _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
33688         _mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
33689         _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
33690         _mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
33691         _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
33692         _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
33693         _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
33694         _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
33695
33696 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
33697
33698         PR rtl-optimization/70478
33699         * lra-constraints.c: Reverse the last patch.
33700
33701 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
33702
33703         * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
33704         Add comment for WCHAR_T.
33705
33706 2017-04-08  Martin Liska  <mliska@suse.cz>
33707
33708         Revert:
33709         2017-04-07  Martin Liska  <mliska@suse.cz>
33710
33711         PR ipa/80212
33712         * ipa-split.c (split_function): Add function part to a same comdat
33713         group.
33714
33715 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
33716
33717         PR target/80358
33718         * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
33719
33720 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
33721
33722         * rs6000/rs6000.c (vec_load_pendulum): Rename...
33723         (vec_pairing): ...to this.
33724         (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
33725         (rs6000_sched_init): Adjust for name change.
33726         (struct rs6000_sched_context): Likewise.
33727         (rs6000_init_sched_context): Likewise.
33728         (rs6000_set_sched_context): Likewise.
33729
33730 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
33731
33732         PR target/80322
33733         PR target/80323
33734         PR target/80325
33735         PR target/80326
33736         * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
33737         intrinsics.
33738         * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
33739         _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
33740         _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
33741
33742 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
33743
33744         * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
33745
33746 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
33747
33748         PR rtl-optimization/70703
33749         * ira-color.c (update_conflict_hard_regno_costs): Use
33750         int64_t instead of HOST_WIDE_INT.
33751
33752 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
33753
33754         PR rtl-optimization/70478
33755         * lra-constraints.c (process_alt_operands): Disfavor alternative
33756         insn memory operands.
33757
33758 2017-04-07  Jeff Law  <law@redhat.com>
33759
33760         * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
33761         CALL and NOTE_INSN_CALL_ARG_LOCATION.
33762
33763 2017-04-07  Martin Liska  <mliska@suse.cz>
33764
33765         PR target/79889
33766         * config/aarch64/aarch64.c (aarch64_process_target_attr):
33767         Show error message instead of an ICE.
33768
33769 2017-04-07  Martin Liska  <mliska@suse.cz>
33770
33771         PR ipa/80212
33772         * ipa-split.c (split_function): Add function part to a same comdat
33773         group.
33774
33775 2017-04-07  Richard Biener  <rguenther@suse.de>
33776
33777         PR middle-end/80341
33778         * tree.c (get_unwidened): Also handle ! for_type case for
33779         INTEGER_CSTs.
33780         * convert.c (do_narrow): Split out from ...
33781         (convert_to_integer_1): ... here.  Do not pass final truncation
33782         type to get_unwidened for TRUNC_DIV_EXPR.
33783
33784 2017-04-07  Richard Biener  <rguenther@suse.de>
33785
33786         * tree-affine.c (wide_int_ext_for_comb): Take type rather
33787         than aff_tree.
33788         (aff_combination_const): Adjust.
33789         (aff_combination_scale): Likewise.
33790         (aff_combination_add_elt): Likewise.
33791         (aff_combination_add_cst): Likewise.
33792         (aff_combination_convert): Likewise.
33793         (add_elt_to_tree): Likewise.  Remove unused argument.
33794         (aff_combination_to_tree): Adjust calls to add_elt_to_tree.
33795
33796 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
33797
33798         * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
33799         definition.
33800         * config/arm/arm.c (arm_default_short_enums): Use
33801         ARM_DEFAULT_SHORT_ENUMS.
33802         * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
33803
33804 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
33805
33806         PR debug/80234
33807         * dwarf2out.c (gen_member_die): Handle C++17 inline static data
33808         members with redundant out-of-class redeclaration.
33809
33810 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33811
33812         PR target/80286
33813         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
33814         * config/i386/i386.md (*zero_extendsidi2):
33815         Add (?*x,*x) and (?*v,*v) alternatives.
33816
33817 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33818
33819         PR target/79733
33820         * config/i386/i386.c (ix86_expand_builtin)
33821         <case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
33822         mode from insn data. Convert operands to insn operand mode.
33823         Copy operands that don't satisfy insn predicate to a register.
33824
33825 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
33826
33827         * config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
33828         Update comments.
33829
33830 2017-04-06  Richard Biener  <rguenther@suse.de>
33831
33832         PR tree-optimization/80334
33833         * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
33834         preserve alignment of accesses.
33835
33836 2017-04-06  Richard Biener  <rguenther@suse.de>
33837
33838         PR tree-optimization/80262
33839         * tree-sra.c (build_ref_for_offset): Preserve address-space
33840         information.
33841         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
33842         Drop useless address-space information on MEM_REF offsets.
33843
33844 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
33845
33846         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
33847
33848 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33849
33850         PR rtl-optimization/70703
33851         * ira-color.c (update_conflict_hard_regno_costs): Use
33852         HOST_WIDE_INT instead of long.
33853
33854 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
33855
33856         PR target/80298
33857         * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
33858         not defined for x86_64 target.  Add -mmmx target option when __SSE2__
33859         is not defined.
33860         * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
33861         for x86_64 target.  Handle -m3dnowa option.
33862
33863 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33864
33865         PR rtl-optimization/70703
33866         * ira-color.c (update_costs_from_allocno): Use the smallest mode.
33867         (update_conflict_hard_regno_costs): Use long instead of unsigned
33868         arithmetic for cost calculation.
33869
33870 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33871             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33872
33873         PR sanitizer/80308
33874         * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
33875         for big endian.
33876
33877 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
33878
33879         PR target/78002
33880         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
33881         ptr_mode with Pmode throughout.
33882         * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
33883         into probe_stack_range and use DImode.
33884
33885 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33886
33887         PR target/79890
33888         * config/s390/s390.c (s390_register_info_gprtofpr): Return if
33889         call_eh_return is true.
33890
33891 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33892
33893         * config/s390/s390-c.c (s390_resolve_overloaded_builtin):
33894         Initialize last_match_fntype_index.
33895
33896 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33897
33898         PR target/80310
33899         * tree-nvr.c: Include internal-fn.h.
33900         (pass_return_slot::execute): Ignore internal calls without
33901         direct optab.
33902
33903 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33904             Richard Biener  <rguenther@suse.de>
33905
33906         PR c++/80297
33907         * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
33908         captures used multiple times, except for the last use.
33909         * generic-match-head.c: Include gimplify.h.
33910
33911 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33912
33913         PR tree-optimization/79390
33914         * target.h (struct noce_if_info): Declare.
33915         * targhooks.h (default_noce_conversion_profitable_p): Declare.
33916         * target.def (noce_conversion_profitable_p): New target hook.
33917         * ifcvt.h (struct noce_if_info): New type, moved from ...
33918         * ifcvt.c (struct noce_if_info): ... here.
33919         (noce_conversion_profitable_p): Renamed to ...
33920         (default_noce_conversion_profitable_p): ... this.  No longer
33921         static nor inline.
33922         (noce_try_store_flag_constants, noce_try_addcc,
33923         noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
33924         noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
33925         instead of noce_conversion_profitable_p.
33926         * config/i386/i386.c: Include ifcvt.h.
33927         (ix86_option_override_internal): Don't override
33928         PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
33929         (ix86_noce_conversion_profitable_p): New function.
33930         (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
33931         * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
33932         * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
33933         * doc/tm.texi: Regenerated.
33934
33935 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33936
33937         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
33938         correction.
33939
33940 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33941
33942         PR target/80307
33943         * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
33944         instructions for small multiply cores.
33945
33946 2017-04-04  Jeff Law  <law@redhat.com>
33947
33948         * config/mips/mips.c (mips_multi_add): Zero initialize the newly
33949         added member.
33950         (mips_expand_vec_perm_const): Initialize elements in orig_perm
33951         that are not set by the loop over the elements.
33952
33953 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33954
33955         PR target/80286
33956         * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
33957         int mode, convert_modes it to mode as unsigned, otherwise use
33958         lowpart_subreg to mode rather than SImode.
33959         * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
33960         ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
33961         Use DImode instead of SImode for the shift count operand.
33962         * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
33963         Likewise.
33964
33965 2017-04-04  Richard Biener  <rguenther@suse.de>
33966
33967         PR middle-end/80281
33968         * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
33969         arithmetic done for the negate or the plus.  Simplify.
33970         (A - (-B) -> A + B): Likewise.
33971         * fold-const.c (split_tree): Make sure to not negate pointers.
33972
33973 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
33974
33975         PR rtl-optimization/60818
33976         * simplify-rtx.c (simplify_binary_operation_1): Do not replace
33977         a compare of comparisons with the thing compared if this results
33978         in a different machine mode.
33979
33980 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
33981
33982         * alias.c (base_alias_check): Fix typo in comment.
33983         * cgraph.h (class ipa_polymorphic_call_context): Likewise.
33984         * cgraphunit.c (symbol_table::compile): Likewise.
33985         * collect2.c (maybe_run_lto_and_relink): Likewise.
33986         * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
33987         * config/avr/avr-arch.h (avr_arch_info_t): Likewise.
33988         * config/avr/avr.c (avr_map_op_t): Likewise.
33989         * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
33990         * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
33991         * config/epiphany/epiphany.md (movcc): Likewise.
33992         * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
33993         * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
33994         Likewise.
33995         * config/mips/mips.c (mips_save_restore_reg): Likewise.
33996         * config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
33997         * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
33998         * config/sh/sh.c (sh_rtx_costs): Likewise.
33999         * fold-const.c (fold_truth_andor): Likewise.
34000         * genautomata.c (collapse_flag): Likewise.
34001         * gengtype.h (struct type::u::s): Likewise.
34002         * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
34003         * input.c (FORMAT_AMOUNT): Likewise.
34004         * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
34005         (known_aggs_to_agg_replacement_list): Likewise.
34006         * ipa-inline-analysis.c: Likewise.
34007         * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
34008         * ipa-polymorphic-call.c
34009         (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
34010         * loop-unroll.c (analyze_insn_to_expand_var): Likewise.
34011         * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
34012         Likewise.
34013         * modulo-sched.c (apply_reg_moves): Likewise.
34014         * omp-expand.c (build_omp_regions_1): Likewise.
34015         * trans-mem.c (struct tm_wrapper_hasher): Likewise.
34016         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
34017         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
34018         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
34019         * value-prof.c: Likewise.
34020         * var-tracking.c (val_reset): Likewise.
34021
34022 2017-04-03  Richard Biener  <rguenther@suse.de>
34023
34024         PR tree-optimization/80275
34025         * fold-const.c (split_address_to_core_and_offset): Handle
34026         POINTER_PLUS_EXPR.
34027
34028 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
34029
34030         * tree-nested.c (get_descriptor_type): Make sure that the alignment of
34031         descriptors is at least equal to that of functions.
34032
34033 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34034
34035         * config/i386/sse.md (movdi_to_sse): Add missing DONE.
34036
34037 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34038
34039         PR target/80250
34040         * config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
34041         (mov<IMOD4:mode>): New expander.
34042         (*mov<IMOD4:mode>_internal): New insn and split pattern.
34043
34044 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
34045
34046         PR rtl-optimization/79405
34047         * fwprop.c (propagations_left): New variable.
34048         (forward_propagate_into): Decrement it.
34049         (fwprop_init): Initialize it.
34050         (fw_prop): If the variable has reached zero, stop propagating.
34051         (fwprop_addr): Ditto.
34052
34053 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34054
34055         PR debug/79255
34056         * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
34057         a FUNCTION_DECL, pass it as decl instead of origin to
34058         process_scope_var.
34059
34060 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
34061
34062         * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
34063         string.
34064
34065 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
34066
34067         PR target/80107
34068         * config/rs6000/rs6000.md (extendhi<mode>2): Add test for
34069         TARGET_VSX_SMALL_INTEGER.
34070
34071 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34072
34073         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
34074         reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
34075
34076 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
34077
34078         * config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
34079         extraction from odd-numbered MSA register.
34080
34081 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34082
34083         PR middle-end/80173
34084         * expmed.c (store_bit_field_1): Don't attempt to create
34085         a word subreg out of hard registers wider than word if they
34086         have HARD_REGNO_NREGS of 1 for their mode.
34087
34088         PR middle-end/80163
34089         * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
34090         conversions to integer types wider than word and pointer.
34091
34092         PR debug/80025
34093         * cselib.h (rtx_equal_for_cselib_1): Add depth argument.
34094         (rtx_equal_for_cselib_p): Pass 0 to it.
34095         * cselib.c (cselib_hasher::equal): Likewise.
34096         (rtx_equal_for_cselib_1): Add depth argument.  If depth
34097         is 128, don't look up VALUE locs and punt.  Increment
34098         depth in recursive calls when walking VALUE locs.
34099
34100 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
34101
34102         * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
34103         (make_gcov_file_name): Use the canonical path name for generating
34104         the MD5 value.
34105         (read_line): Fix handling of files with ascii null bytes.
34106
34107 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
34108
34109         * config/mips/mips.c (mips_expand_vector_init): Create a const_vector
34110         to initialise a vector register instead
34111         of using a const_int.
34112
34113 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34114
34115         PR translation/80189
34116         * gimplify.c (omp_default_clause): Use %qs instead of %s in
34117         diagnostic messages.
34118
34119 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
34120
34121         PR target/80246
34122         * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
34123         (dfp_diex_<mode>): Update mode of operand 1.
34124         * doc/extend.texi (dxex, dxexq): Document change to return type.
34125         (diex, diexq): Document change to argument type.
34126
34127 2017-03-30  Martin Jambor  <mjambor@suse.cz>
34128
34129         PR ipa/77333
34130         * cgraph.h (cgraph_build_function_type_skip_args): Declare.
34131         * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
34132         it reflects the signature changes performed at the callee side.
34133         * cgraphclones.c (build_function_type_skip_args): Make public, renamed
34134         to cgraph_build_function_type_skip_args.
34135         (build_function_decl_skip_args): Adjust call to the above function.
34136
34137 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34138
34139         PR target/80206
34140         * config/i386/sse.md
34141         (<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
34142         register as dest whenever it is a MEM not rtx_equal_p to the
34143         corresponding dup operand, and when forcing into reg move the
34144         reg into the memory afterwards.
34145         (<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
34146         Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
34147         for the force_reg mode.
34148         (avx512vl_vextractf128<mode>): Use register as dest either
34149         always when a MEM, or when it is a MEM not rtx_equal_p to the
34150         corresponding dup operand, or even not when it is a CONST_VECTOR
34151         depending on the mode and lo vs. hi.
34152         (avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
34153         parens.
34154         (avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
34155         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
34156         Likewise.  Require that operands[2] is even.
34157         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
34158         Remove extraneous parens.  Require that operands[2] is a multiple
34159         of 4.
34160         (vec_extract_lo_<mode><mask_name>): Don't bother testing if
34161         operands[0] is a MEM if <mask_applied>, the predicates/constraints
34162         disallow memory then.
34163
34164 2017-03-30  Richard Biener  <rguenther@suse.de>
34165
34166         PR tree-optimization/77498
34167         * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
34168         to non-constants over backedges.
34169
34170 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
34171
34172         PR rtl-optimization/80233
34173         * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
34174         as last_combined_insn.  Do not test for BARRIER_P separately.
34175
34176 2017-03-29  Andreas Schwab  <schwab@suse.de>
34177
34178         PR ada/80146
34179         * calls.c (prepare_call_address): Convert funexp to Pmode before
34180         copying to temp reg.
34181
34182 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34183
34184         PR tree-optimization/80158
34185         * gimple-ssa-strength-reduction.c (replace_mult_candidate):
34186         Handle possible future case of more than one alternate
34187         interpretation.
34188         (replace_rhs_if_not_dup): Likewise.
34189         (replace_one_candidate): Likewise.
34190
34191 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
34192
34193         PR rtl-optimization/80193
34194         * ira.c (ira): Do not check allocation for LRA.
34195
34196 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
34197
34198         * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
34199         (nvptx_output_simt_exit): Declare.
34200         * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
34201         cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
34202         (init_softstack_frame): Move initialization of crtl->is_leaf to...
34203         (nvptx_declare_function_name): ...here.  Emit declaration of local
34204         memory space buffer for omp_simt_enter insn.
34205         (nvptx_output_unisimt_switch): New.
34206         (nvptx_output_softstack_switch): New.
34207         (nvptx_output_simt_enter): New.
34208         (nvptx_output_simt_exit): New.
34209         * config/nvptx/nvptx.h (struct machine_function): New fields
34210         has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
34211         * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
34212         (UNSPECV_SIMT_EXIT): Ditto.
34213         (omp_simt_enter_insn): New insn.
34214         (omp_simt_enter): New expansion.
34215         (omp_simt_exit): New insn.
34216         * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
34217
34218         * internal-fn.c (expand_GOMP_SIMT_ENTER): New.
34219         (expand_GOMP_SIMT_ENTER_ALLOC): New.
34220         (expand_GOMP_SIMT_EXIT): New.
34221         * internal-fn.def (GOMP_SIMT_ENTER): New internal function.
34222         (GOMP_SIMT_ENTER_ALLOC): Ditto.
34223         (GOMP_SIMT_EXIT): Ditto.
34224         * target-insns.def (omp_simt_enter): New insn.
34225         (omp_simt_exit): Ditto.
34226         * omp-low.c (struct omplow_simd_context): New fields simt_eargs,
34227         simt_dlist.
34228         (lower_rec_simd_input_clauses): Implement SIMT privatization.
34229         (lower_rec_input_clauses): Likewise.
34230         (lower_lastprivate_clauses): Handle SIMT privatization.
34231
34232         * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
34233         (ompdevlow_adjust_simt_enter): New.
34234         (find_simtpriv_var_op): New.
34235         (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
34236         IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
34237
34238         * tree-inline.h (struct copy_body_data): New field dst_simt_vars.
34239         * tree-inline.c (expand_call_inline): Handle SIMT privatization.
34240         (copy_decl_for_dup_finish): Ditto.
34241
34242         * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
34243
34244 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
34245
34246         PR target/53383
34247         * config/i386/i386.c (ix86_option_override_internal): Always
34248         allow -mpreferred-stack-boundary=3 for 64-bit targets.
34249
34250 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34251
34252         * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
34253
34254 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34255
34256         * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
34257         mark new edge's irreducible flag accordign to it.
34258         (vect_do_peeling): Check loop preheader edge's irreducible flag
34259         and pass it to function slpeel_add_loop_guard.
34260
34261 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
34262
34263         PR tree-optimization/80218
34264         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
34265         Update block frequencies and counts.
34266
34267 2017-03-28  Richard Biener  <rguenther@suse.de>
34268
34269         PR tree-optimization/78644
34270         * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
34271         of a simplification result we may not use it at all.
34272
34273 2017-03-28  Richard Biener  <rguenther@suse.de>
34274
34275         PR ipa/80205
34276         * tree-inline.c (copy_phis_for_bb): Do not create PHI node
34277         without arguments, generate default definition of a SSA name.
34278
34279 2017-03-28  Richard Biener  <rguenther@suse.de>
34280
34281         PR middle-end/80222
34282         * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
34283         TYPE_REF_CAN_ALIAS_ALL references.
34284         * fold-const.c (fold_indirect_ref_1): Likewise.
34285
34286 2017-03-28  Martin Liska  <mliska@suse.cz>
34287
34288         PR ipa/80104
34289         * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
34290         thunk call as DECL_GIMPLE_REG_P when vector or complex type.
34291
34292 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34293             Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
34294
34295         * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
34296         (EXTRA_SPECS): Define.
34297         (SUBTARGET_EXTRA_SPECS): Likewise.
34298         (SUBTARGET_CPP_SPEC): Likewise.
34299         * config/arc/elf.h (EXTRA_SPECS): Renamed to
34300         SUBTARGET_EXTRA_SPECS.
34301         * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
34302
34303 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34304
34305         * config/arc/simdext.md (vst64_insn): Update pattern.
34306         (vld32wh_insn): Likewise.
34307         (vld32wl_insn): Likewise.
34308         (vld64_insn): Likewise.
34309         (vld32_insn): Likewise.
34310
34311 2017-03-28  Marek Polacek  <polacek@redhat.com>
34312
34313         PR sanitizer/80067
34314         * fold-const.c (fold_comparison): Use protected_set_expr_location
34315         instead of SET_EXPR_LOCATION.
34316
34317 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
34318
34319         * tree.c (add_expr): Avoid name lookup warning.
34320
34321 2017-03-27  Jeff Law  <law@redhat.com>
34322
34323         PR tree-optimization/80216
34324         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
34325         function name.  Limit recursion depth.
34326         (record_temporary_equivalences): Corresponding changes.
34327
34328 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
34329
34330         * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
34331         covered first.
34332
34333 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34334
34335         PR target/80102
34336         * reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
34337         notes.
34338         * cfgcleanup.c (reg_note_cfa_p): New array.
34339         (insns_have_identical_cfa_notes): New function.
34340         (old_insns_match_p): Don't cross-jump in between /f
34341         and non-/f instructions.  If both i1 and i2 are frame related,
34342         verify all CFA notes, their order and content.
34343
34344 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
34345
34346         PR target/78543
34347         * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
34348         HImode and SImode with zero extend to DImode to one insn.
34349         (bswap<mode>2_extenddi): Likewise.
34350         (bswapsi2_extenddi): Likewise.
34351         (bswaphi2_extendsi): Likewise.
34352         (bswaphi2): Combine bswap HImode and SImode into one insn.
34353         Separate memory insns from swapping register.
34354         (bswapsi2): Likewise.
34355         (bswap<mode>2): Likewise.
34356         (bswaphi2_internal): Delete, no longer used.
34357         (bswapsi2_internal): Likewise.
34358         (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
34359         store, and gpr<-gpr swap insns.
34360         (bswap<mode>2_store): Likewise.
34361         (bswaphi2_reg): Register only splitter, combine with the splitter.
34362         (bswaphi2 splitter): Likewise.
34363         (bswapsi2_reg): Likewise.
34364         (bswapsi2 splitter): Likewise.
34365         (bswapdi2): If we have the LDBRX and STDBRX instructions, split
34366         the insns into load, store, and register/register insns.
34367         (bswapdi2_ldbrx): Likewise.
34368         (bswapdi2_load): Likewise.
34369         (bswapdi2_store): Likewise.
34370         (bswapdi2_reg): Likewise.
34371
34372 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
34373
34374         * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
34375         (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
34376
34377 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34378
34379         PR target/80103
34380         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
34381         add comments.
34382         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34383         special handling for target option conflicts between dform
34384         options (-mpower9-dform, -mpower9-dform-vector,
34385         -mpower9-dform-scalar) and -mno-direct-move.
34386
34387 2017-03-27  Richard Biener  <rguenther@suse.de>
34388
34389         PR tree-optimization/80181
34390         * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
34391
34392 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34393
34394         * config/arc/predicates.md (move_double_src_operand): Replace the
34395         call to move_double_src_operand with a call to address_operand.
34396
34397 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34398
34399         * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
34400         * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
34401         * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
34402
34403 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34404
34405         * config/arc/predicates.md (long_immediate_loadstore_operand):
34406         Consider scaled addresses cases.
34407
34408 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34409
34410         * config/arc/arc.c (arc_epilogue_uses): BLINK should be also
34411         restored when in interrupt.
34412         * config/arc/arc.md (simple_return): ARCv2 rtie instruction
34413         doesn't have delay slot.
34414
34415 2017-03-27  Richard Biener  <rguenther@suse.de>
34416
34417         PR ipa/79776
34418         * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
34419         inlined thunk clones.
34420
34421 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34422
34423         PR sanitizer/80168
34424         * asan.c (instrument_derefs): Copy over last operand from
34425         original COMPONENT_REF to the new COMPONENT_REF with
34426         DECL_BIT_FIELD_REPRESENTATIVE.
34427         * ubsan.c (instrument_object_size): Likewise.
34428
34429 2017-03-27  Richard Biener  <rguenther@suse.de>
34430
34431         PR tree-optimization/80170
34432         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
34433         sure DR/SCEV didnt fold in constants we do not see when looking
34434         at the reference base alignment.
34435
34436 2017-03-27  Richard Biener  <rguenther@suse.de>
34437
34438         PR middle-end/80171
34439         * gimple-fold.c (fold_ctor_reference): Properly guard against
34440         NULL return value from canonicalize_constructor_val.
34441
34442 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
34443
34444         PR target/80180
34445         * config/i386/i386.c (ix86_expand_builtin)
34446         <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
34447         flags reg setting and flags reg using instructions.
34448         <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
34449         clobbering instructions to zero extend op2.
34450
34451 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
34452
34453         * doc/install.texi (Configuration) <--with-aix-soname>:
34454         Update link to AIX ld.
34455
34456 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
34457
34458         PR rtl-optimization/80160
34459         PR rtl-optimization/80159
34460         * lra-assigns.c (must_not_spill_p): Tighten new test to also take
34461         reg_alternate_class into account.
34462
34463 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
34464
34465         PR target/80148
34466         * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
34467         to consider in curr_insn_transform.
34468
34469 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34470
34471         * genrecog.c (validate_pattern): Add VEC_SELECT validation.
34472         * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
34473         and emit_mode_inner.
34474
34475 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34476
34477         * config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
34478         argument to the overloaded builtin variants.  Use the new flag to
34479         deprecate certain builtin variants.
34480         * config/s390/s390-builtin-types.def: Add new builtin types.
34481         * config/s390/s390-builtins.h: Support new flags field for
34482         overloaded builtins.
34483         * config/s390/s390-c.c (OB_DEF_VAR): New flags field.
34484         (s390_macro_to_expand): Enable vector float data type.
34485         (s390_cpu_cpp_builtins_internal): Indicate support of the new
34486         builtins by incrementing the __VEC__ version number.
34487         (s390_expand_overloaded_builtin): Support expansion of vec_xl and
34488         vec_xst.
34489         (s390_resolve_overloaded_builtin): Emit error messages depending
34490         on the builtin flags.
34491         * config/s390/s390.c (s390_expand_builtin): Support additional
34492         flags argument.  Change error message to match the messages
34493         emitted in s390-c.c.
34494         * config/s390/s390.md: New UNSPEC_* constants.
34495         (op_type): Add new instruction types.
34496         * config/s390/vecintrin.h: Add new builtins and test data class
34497         constants.
34498         * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
34499         (V_HW_4, VEC_HW, VECF_HW): New mode iterators.
34500         (VEC_INEXACT, VEC_NOINEXACT): New constants.
34501         ("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
34502         ("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
34503         ("vec_mergel<mode>"): V_HW -> VEC_HW.
34504
34505         ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
34506         ("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
34507         ("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
34508         ("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
34509
34510         ("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
34511         ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
34512         ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
34513         ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
34514
34515         ("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
34516         ("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
34517         ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
34518         ("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
34519         ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
34520         ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
34521         ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
34522
34523         ("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
34524         ("vec_scatter_element<V_HW_4:mode>_DI")
34525         ("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
34526         ("vec_fpint<mode>", "vflls")
34527         ("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
34528         ("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
34529         ("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
34530         ("*vec_cmphe<mode>_cc"): ... these.
34531
34532         ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
34533         mode constant instead of magic value.
34534
34535 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34536
34537         * config/s390/s390.c (s390_expand_vec_compare): Support other
34538         vector floating point modes than just V2DF.
34539         (s390_expand_vcond): Likewise.
34540         (s390_hard_regno_mode_ok): Allow SFmode values in VRs.
34541         (s390_cannot_change_mode_class): Prevent mode changes between TF
34542         and V1TF in vector registers.
34543         * config/s390/s390.md (DF, SF): New mode attributes.
34544         ("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
34545         ("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
34546         SFmode support for VRs.
34547         * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
34548         vector fp modes.
34549         (VFT, VF_HW): New mode iterators.
34550         (vw, sdx): New mode attributes.
34551         ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
34552         ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
34553         ("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
34554         ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
34555         ("vec_unorderedv2df"): Adjust the v2df only patterns to support
34556         also the new vector floating point modes.  Renaming to ...
34557
34558         ("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
34559         ("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
34560         ("abs<mode>2", "negabs<mode>2", "smax<mode>3")
34561         ("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
34562         ("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
34563         ("vec_unordered<mode>"): ... these.
34564
34565         ("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
34566         ("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
34567         ("*vec_extendv2df"): New insn definitions.
34568
34569 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34570
34571         * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
34572         ("mulditi3_2", "*muldi3_sign"): New patterns.
34573         ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
34574         rename the pattern definition.
34575
34576 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34577
34578         * config/s390/s390.md ("indirect_jump"): Turn insn definition into
34579         expander.
34580         ("*indirect_jump", "*indirect2_jump"): New pattern definitions.
34581
34582 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34583
34584         * config/s390/s390.c (s390_expand_vec_init): Use vllezl
34585         instruction if possible.
34586         * config/s390/vector.md (vec_halfnumelts): New mode
34587         attribute.
34588         ("*vec_vllezlf<mode>"): New pattern.
34589
34590 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34591
34592         * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
34593         ("popcountv4si2", "popcountv2di2"): Rename to ...
34594         ("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
34595         ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
34596         condition.
34597         ("popcount<mode>2_vxe"): New pattern.
34598
34599 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34600
34601         * common/config/s390/s390-common.c (processor_flags_table): Add
34602         arch12.
34603         * config.gcc: Add arch12.
34604         * config/s390/driver-native.c (s390_host_detect_local_cpu):
34605         Default to arch12 for unknown CPU model numbers.
34606         * config/s390/s390-builtins.def: Add B_VXE builtin flag.
34607         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
34608         PROCESSOR_max sanity check.
34609         * config/s390/s390-opts.h (enum processor_type): Add
34610         PROCESSOR_ARCH12.
34611         * config/s390/s390.c (processor_table): Add arch12.
34612         (s390_expand_builtin): Add check for B_VXE flag.
34613         (s390_issue_rate): Add PROCESSOR_ARCH12.
34614         (s390_get_sched_attrmask): Likewise.
34615         (s390_get_unit_mask): Likewise.
34616         (s390_sched_score): Enable z13 scheduling for arch12.
34617         (s390_sched_reorder): Likewise.
34618         (s390_sched_variable_issue): Likewise.
34619         * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
34620         PF_VXE.
34621         (s390_tune_attr): Use z13 scheduling also for arch12.
34622         (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
34623         (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
34624         (TARGET_VXE_P): New macros.
34625         * config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
34626         and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
34627         * config/s390/s390.opt: Add arch12 as processor_type.
34628
34629 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34630
34631         * config/s390/s390.md
34632         ("fixuns_truncdddi2", "fixuns_trunctddi2")
34633         ("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
34634         ("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
34635
34636         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
34637         Rename expanders to ...
34638
34639         ("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
34640         ("fixuns_truncdddi2_emu"): ... these.
34641
34642         ("fixuns_trunc<mode>si2_emu"): New expander.
34643
34644         ("*fixuns_truncdfdi2_z13"): Rename to ...
34645         ("*fixuns_truncdfdi2_vx"): ... this.
34646
34647 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34648
34649         * config/s390/2964.md: Remove the single element vector compare
34650         instructions which are no longer used.
34651         * config/s390/s390.c (s390_select_ccmode): Remove handling of
34652         vector CCmodes.
34653         (s390_canonicalize_comparison): Remove handling of DFmode
34654         compares.
34655         (s390_expand_vec_compare_scalar): Remove function.
34656         (s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
34657         * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
34658         pattern.
34659         ("*cmp<mode>_ccs"): Add wfcdb instruction.
34660
34661 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34662
34663         * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
34664         FP zero.
34665         ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
34666         will anyway by matched by mov<mode>_64dfp.
34667
34668 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34669
34670         * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
34671         vlef/vstef.  Add missing operand to vleif.
34672
34673 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34674
34675         * config/s390/s390.c (s390_expand_vec_init): Enable vector load
34676         pair for all vector types with 64 bit elements.
34677         * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
34678         * config/s390/vector.md (V_HW_64): ... here.
34679         (V_128_NOSINGLE): New mode iterator.
34680         ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
34681         ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
34682         ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
34683         ("*vec_load_pairv2di"): Change to ...
34684         ("*vec_load_pair<mode>"): ... this one.
34685
34686 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34687
34688         * config/s390/constraints.md: Add comments.
34689         (jKK): Reject element sizes > 8 bytes.
34690         * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
34691         s_operands.
34692         * config/s390/s390.md: Add the s_operand checks formerly in
34693         s390_split_ok_p to various splitters where they are still
34694         required.
34695         * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
34696         for 128 bit vectors.  Plus two splitters.
34697
34698 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34699
34700         * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
34701         the file.
34702
34703 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34704
34705         PR target/79893
34706         * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
34707         error if the boundary argument is not constant.
34708
34709 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34710
34711         PR rtl-optimization/80112
34712         * loop-doloop.c (doloop_condition_get): Don't check condition
34713         if cmp isn't SET with IF_THEN_ELSE src.
34714
34715 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34716
34717         PR tree-optimization/80158
34718         * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
34719         replacing a candidate statement, also replace it for the
34720         candidate's alternate interpretation.
34721         (replace_rhs_if_not_dup): Likewise.
34722         (replace_one_candidate): Likewise.
34723
34724 2017-03-24  Richard Biener  <rguenther@suse.de>
34725
34726         PR tree-optimization/80167
34727         * graphite-isl-ast-to-gimple.c
34728         (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
34729         properly.
34730         (translate_isl_ast_to_gimple::get_rename): Likewise.
34731
34732 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34733
34734         * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
34735         handling of certain combinations of target options, including the
34736         combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
34737         -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
34738
34739 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34740
34741         PR target/71436
34742         * config/arm/arm.md (*load_multiple): Add reload_completed to
34743         matching condition.
34744
34745 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34746             Richard Biener  <rguenth@suse.de>
34747
34748         PR tree-optimization/79908
34749         PR tree-optimization/80136
34750         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
34751         been cast away, gimplify_and_add suffices.
34752
34753 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
34754
34755         * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
34756
34757 2017-03-23  Richard Biener  <rguenther@suse.de>
34758
34759         PR tree-optimization/80032
34760         * gimplify.c (gimple_push_cleanup): Forced unconditional
34761         cleanups still have to go to the conditional_cleanups
34762         sequence.
34763
34764 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
34765
34766         PR tree-optimization/80072
34767         * tree-ssa-reassoc.c (struct operand_entry): Change id field type
34768         to unsigned int.
34769         (next_operand_entry_id): Change type to unsigned int.
34770         (sort_by_operand_rank): Make sure to return the right return value
34771         even if unsigned fields are bigger than INT_MAX.
34772         (struct oecount): Change cnt and id type to unsigned int.
34773         (oecount_hasher::equal): Formatting fix.
34774         (oecount_cmp): Make sure to return the right return value
34775         even if unsigned fields are bigger than INT_MAX.
34776         (undistribute_ops_list): Change next_oecount_id type to unsigned int.
34777
34778         PR c++/80129
34779         * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
34780         TREE_READONLY on result if writing it more than once.
34781
34782         PR sanitizer/80110
34783         * doc/invoke.texi (-fsanitize=thread): Document that with
34784         -fnon-call-exceptions atomics are not able to throw
34785         exceptions.
34786
34787         PR sanitizer/80110
34788         * tsan.c: Include tree-eh.h.
34789         (instrument_builtin_call): Call maybe_clean_eh_stmt or
34790         maybe_clean_or_replace_eh_stmt where needed.
34791         (instrument_memory_accesses): Add cfg_changed argument.
34792         Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
34793         if it returned true.
34794         (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
34795
34796         PR rtl-optimization/63191
34797         * config/i386/i386.c (ix86_delegitimize_address): Turn into small
34798         wrapper function, moved the whole old content into ...
34799         (ix86_delegitimize_address_1): ... this.  New inline function.
34800         (ix86_find_base_term): Use ix86_delegitimize_address_1 with
34801         true as last argument instead of ix86_delegitimize_address.
34802
34803 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34804
34805         * config/aarch64/aarch64.c (generic_branch_cost): Copy
34806         cortexa57_branch_cost.
34807
34808 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34809
34810         * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
34811
34812 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34813
34814         PR target/80123
34815         * doc/md.texi (Constraints): Document wA constraint.
34816         * config/rs6000/constraints.md (wA): New.
34817         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
34818         (rs6000_init_hard_regno_mode_ok): Init wA constraint.
34819         * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
34820         * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
34821
34822 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
34823
34824         PR c++/80029
34825         * gimplify.c (is_oacc_declared): New function.
34826         (oacc_default_clause): Use it to set default flags for acc declared
34827         variables inside parallel regions.
34828         (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
34829         declared variables.
34830         (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
34831         declare attribute to any decl as necessary.
34832
34833 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
34834
34835         PR target/80082
34836         * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
34837         (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
34838         * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
34839         (arm_arch_lpae): This.
34840         * config/arm/arm.c (arm_arch7ve): Rename into ...
34841         (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
34842         * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
34843         arm_arch_lpae.
34844
34845 2017-03-22  Martin Liska  <mliska@suse.cz>
34846
34847         PR target/79906
34848         * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
34849         error message instead of an ICE.
34850
34851 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34852
34853         * doc/extend.texi (6.11 Additional Floating Types): Revise.
34854
34855 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34856
34857         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
34858         comments.
34859         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34860         comments.
34861
34862 2017-03-21  Martin Sebor  <msebor@redhat.com>
34863
34864         * doc/extend.texi: Use "cannot" instead of "can't."
34865         * doc/hostconfig.texi: Same.
34866         * doc/install.texi: Same.
34867         * doc/invoke.texi: Same.
34868         * doc/loop.texi: Same.
34869         * doc/md.texi: Same.
34870         * doc/objc.texi: Same.
34871         * doc/rtl.texi: Same.
34872         * doc/tm.texi: Same.
34873         * doc/tm.texi.in: Same.
34874         * doc/trouble.texi: Same.
34875
34876 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
34877
34878         PR debug/63238
34879         * dwarf2out.c (struct checksum_attributes): Add at_alignment.
34880         (collect_checksum_attributes): Set it.
34881         (die_checksum_ordered): Use it.
34882
34883 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34884
34885         PR tree-optimization/79908
34886         * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
34887         change: For a VA_ARG whose LHS has been cast away, use
34888         force_gimple_operand to construct the side effects.
34889
34890 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
34891
34892         PR translation/80001
34893         * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
34894         more amenable to translation.
34895         (oacc_loop_auto_partitions): Likewise.
34896
34897 2017-03-21  Marek Polacek  <polacek@redhat.com>
34898             Martin Sebor  <msebor@redhat.com>
34899
34900         PR tree-optimization/80109
34901         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
34902         on INTEGRAL_TYPE_P.
34903
34904 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34905             Segher Boessenkool  <segher@kernel.crashing.org>
34906
34907         PR target/80125
34908         * combine.c (can_combine_p): Revert the 2017-03-20 change, only
34909         check reg_used_between_p between insn and one of succ or succ2
34910         depending on if succ is artificial insn not inserted into insn
34911         stream.
34912
34913 2017-03-21  Martin Liska  <mliska@suse.cz>
34914
34915         PR gcov-profile/80081
34916         * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
34917         * doc/gcc.texi: Include gcov-dump stuff.
34918         * doc/gcov-dump.texi: New file.
34919
34920 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
34921
34922         PR rtl-optimization/79150
34923         * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
34924         conditional jump, if the jump is the last insn of the loop.
34925
34926 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34927             Richard Biener  <rguenth@suse.de>
34928
34929         PR tree-optimization/79908
34930         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
34931         been cast away, use force_gimple_operand to construct the side
34932         effects.
34933
34934 2017-03-21  Martin Liska  <mliska@suse.cz>
34935
34936         PR libfortran/79956
34937         * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
34938         to NULL.
34939
34940 2017-03-21  Brad Spengler <spender@grsecurity.net>
34941
34942         PR plugins/80094
34943         * plugin.c (htab_hash_plugin): New function.
34944         (add_new_plugin): Use it and adjust.
34945         (parse_plugin_arg_opt): Adjust.
34946         (init_one_plugin): Likewise.
34947
34948 2017-03-21  Richard Biener  <rguenther@suse.de>
34949
34950         PR tree-optimization/80032
34951         * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
34952         if set force the cleanup to happen unconditionally.
34953         (gimplify_target_expr): Push inserted clobbers with force_uncond
34954         to avoid them being removed by control-dependent DCE.
34955
34956 2017-03-21  Richard Biener  <rguenther@suse.de>
34957
34958         PR tree-optimization/80122
34959         * tree-inline.c (copy_bb): Do not expans va-arg packs or
34960         va_arg_pack_len when the inlined call stmt requires pack
34961         expansion itself.
34962         * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
34963
34964 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34965
34966         PR sanitizer/78158
34967         * tsan.c (instrument_builtin_call): If the memory model argument
34968         is not a constant, assume it is valid.
34969
34970         PR c/67338
34971         * fold-const.c (round_up_loc): Negate divisor in unsigned type to
34972         avoid UB.
34973
34974 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34975
34976         PR rtl-optimization/79910
34977         * combine.c (can_combine_p): Do not allow combining an I0 or I1
34978         if its dest is used by an insn before I2 (other than the combined
34979         insns themselves, which are properly handled already).
34980
34981 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34982
34983         Revert:
34984         2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
34985
34986         * combine.c (record_used_regs): New static function.
34987         (try_combine): Handle situations where there is an additional
34988         instruction between I2 and I3 which needs to have a LOG_LINK
34989         updated.
34990
34991         Revert:
34992         2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
34993
34994         * combine.c (try_combine): Delete redundant i1 test.  Call
34995         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
34996
34997 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34998
34999         PR target/80083
35000         * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
35001         alternatives 13/14.
35002
35003 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35004
35005         PR tree-optimization/80054
35006         * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
35007         the optimization if a PHI or any of its arguments is not dominated
35008         by the candidate's basis.  Use gphi* rather than gimple* as
35009         appropriate.
35010         (replace_profitable_candidates): Clean up a gimple* variable that
35011         should be a gphi* variable.
35012
35013 2017-03-20  Martin Sebor  <msebor@redhat.com>
35014
35015         PR c++/52477
35016         * doc/extend.texi (attribute constructor): Document present limitation.
35017
35018 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35019
35020         PR target/79963
35021         * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
35022         __POWER9_VECTOR__ #ifdef control, change template definition to
35023         use Power9-specific built-in function.
35024         (vec_any_eq): Likewise.
35025         * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
35026         to control outcomes from this test.
35027         (vector_ae_<mode>p): For VEC_F modes, likewise.
35028
35029 2017-03-20  Ian Lance Taylor  <iant@google.com>
35030
35031         * config/i386/i386.c (ix86_function_regparm): Save an extra
35032         register for -fsplit-stack with DECL_STATIC_CHAIN.
35033
35034 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35035
35036         PR target/79912
35037         * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
35038         (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
35039
35040 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35041
35042         * config/riscv/riscv.c (riscv_print_operand): Use "fence
35043         iorw,ow".
35044         * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
35045         iorw,iorw".
35046
35047 2017-03-20  Marek Polacek  <polacek@redhat.com>
35048
35049         PR sanitizer/80063
35050         * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
35051
35052 2017-03-20  Richard Biener  <rguenther@suse.de>
35053
35054         PR tree-optimization/80113
35055         * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
35056         allocate extra SSA name for PHI def.
35057         (add_close_phis_to_outer_loops): Likewise.
35058         (add_close_phis_to_merge_points): Likewise.
35059         (copy_loop_close_phi_args): Likewise.
35060         (copy_cond_phi_nodes): Likewise.
35061
35062 2017-03-20  Martin Liska  <mliska@suse.cz>
35063
35064         PR middle-end/79753
35065         * tree-chkp.c (chkp_build_returned_bound): Do not build
35066         returned bounds for a LHS that's not a BOUNDED_P type.
35067
35068 2017-03-20  Martin Liska  <mliska@suse.cz>
35069
35070         PR target/79769
35071         PR target/79770
35072         * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
35073         COMPLEX_CST and VECTOR_CST.
35074
35075 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35076
35077         PR target/78857
35078         * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
35079         target operand.  A new splitter adds the clobber statement in case
35080         the target operand is dead anyway.
35081
35082 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
35083
35084         * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
35085         to age-old versions of binutils and glibc.
35086
35087 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
35088
35089         * doc/contrib.texi (Contributors): Remove duplicate entry for myself.
35090
35091 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35092
35093         * doc/contrib.texi (Contributors): Add Segher Boessenkool.
35094
35095 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35096
35097         * doc/install.texi (Specific) <arm-*-eabi>: Remove old
35098         requirement for binutils 2.13.
35099
35100 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
35101
35102         * combine.c (try_combine): Delete redundant i1 test.  Call
35103         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
35104
35105 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
35106
35107         * doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
35108         riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
35109         contents.
35110         <riscv64-*-elf>: Re-arrange section
35111         <riscv32-*-elf>: Add a note about requiring binutils 2.28.
35112         <riscv32-*-linux>: Likewise.
35113         <riscv64-*-elf>: Likewise
35114         <riscv64-*-linux>: Likewise.
35115
35116 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
35117
35118         PR target/80052
35119         * aarch64.opt(verbose-cost-dump): Fix typo.
35120
35121 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
35122
35123         PR target/79951
35124         * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
35125         for VECTOR_UNIT_VSX_P (<MODE>mode) too.
35126
35127 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
35128
35129         * reload.c (find_reloads): When reloading a nonoffsettable address,
35130         use RELOAD_OTHER for it and its address reloads.
35131
35132         PR rtl-optimization/79910
35133         * combine.c (record_used_regs): New static function.
35134         (try_combine): Handle situations where there is an additional
35135         instruction between I2 and I3 which needs to have a LOG_LINK
35136         updated.
35137
35138 2017-03-17  Jeff Law  <law@redhat.com>
35139
35140         PR tree-optimization/71437
35141         * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
35142         conditional in the hash table first.
35143         (vrp_dom_walker::before_dom_children): Extract condition from
35144         ASSERT_EXPR.  Record condition, its inverion and any implied
35145         conditions as well.
35146
35147 2017-03-17  Marek Polacek  <polacek@redhat.com>
35148             Markus Trippelsdorf  <markus@trippelsdorf.de>
35149
35150         PR tree-optimization/80079
35151         * gimple-ssa-store-merging.c (class pass_store_merging): Initialize
35152         m_stores_head.
35153
35154 2017-03-17  Richard Biener  <rguenther@suse.de>
35155
35156         PR middle-end/80075
35157         * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
35158         Properly verify the LHS before the RHS possibly claims to be
35159         handled.
35160         (stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
35161         do not throw.
35162
35163 2017-03-17  Martin Jambor  <mjambor@suse.cz>
35164
35165         * doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
35166         (List of -O2 options): Likewise.
35167         (-fipa-bit-cp): Replace "ipa" with "interprocedural."
35168         (-fipa-vrp) New.
35169
35170 2017-03-17  Tom de Vries  <tom@codesourcery.com>
35171
35172         * gcov-dump.c (print_usage): Print bug_report_url.
35173
35174 2017-03-17  Richard Biener  <rguenther@suse.de>
35175
35176         PR middle-end/80050
35177         * genmatch.c (parser::next): Remove pointless check for CPP_EOF.
35178         (parser::peek): Likewise.
35179
35180 2017-03-17  Richard Biener  <rguenther@suse.de>
35181
35182         PR tree-optimization/80048
35183         * sese.c (free_sese_info): Properly release rename_map and
35184         copied_bb_map elements.
35185
35186 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
35187
35188         * gimple-ssa-store-merging.c (struct imm_store_chain_info):
35189         Add linked-list forward and backlinks.  Insert on
35190         construction, remove on destruction.
35191         (class pass_store_merging): Add m_stores_head field.
35192         (pass_store_merging::terminate_and_process_all_chains):
35193         Iterate over m_stores_head list.
35194         (pass_store_merging::terminate_all_aliasing_chains):
35195         Likewise.
35196         (pass_store_merging::execute): Check for debug stmts first.
35197         Push new chains onto the m_stores_head stack.
35198
35199 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
35200
35201         PR target/71294
35202         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
35203         SPLAT operation on ISA 2.07 64-bit systems that have direct move,
35204         but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
35205
35206 2017-03-16  Jeff Law  <law@redhat.com>
35207
35208         PR tree-optimization/71437
35209         * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
35210         member function.  Implementation moved into after_dom_children
35211         member function and into the threader's thread_outgoing_edges
35212         function.
35213         (dom_opt_dom_walker::after_dom_children): Simplify by moving
35214         some code into new thread_outgoing_edges.
35215         * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
35216         definition.  Simplify marker handling (do it here).   Assume we always
35217         have the available expression and the const/copies tables.
35218         (thread_outgoing_edges): New function extracted from tree-ssa-dom.c
35219         and tree-vrp.c
35220         * tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
35221         * tree-vrp.c (equiv_stack): No longer file scoped.
35222         (vrp_dom_walker): New class.
35223         (vrp_dom_walker::before_dom_children): New member function.
35224         (vrp_dom_walker::after_dom_children): Likewise.
35225         (identify_jump_threads):  Setup domwalker.  Use it rather than
35226         walking edges in a random order by hand.  Simplify setup/finalization.
35227         (finalize_jump_threads): Remove.
35228         (vrp_finalize): Do not call identify_jump_threads here.
35229         (execute_vrp): Do it here instead and call thread_through_all_blocks
35230         here too.
35231
35232         PR tree-optimization/71437
35233         * tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
35234         callers changed.
35235         (simplify_stmt_for_jump_threading): Add basic_block argument.  All
35236         callers changed.
35237         (lhs_of_dominating_assert): Moved from here into tree-vrp.c.
35238         (dom_opt_dom_walker::thread_across_edge): Remove
35239         handle_dominating_asserts argument.  All callers changed.
35240         (record_temporary_equivalences_from_stmts_at_dest): Corresponding
35241         changes.  Remove calls to lhs_of_dominating_assert.  Other
35242         uses of handle_dominating_asserts turn into unconditional code
35243         (simplify_control_stmt_condition_1): Likewise.
35244         (simplify_control_stmt_condition): Likewise.
35245         (thread_through_normal_block, thread_across_edge): Likewise.
35246         * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
35247         * tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
35248         object if it is not an SSA_NAME.
35249         (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
35250         before calling into the VRP specific simplifiers.
35251         (identify_jump_threads): Remove handle_dominating_asserts
35252         argument.
35253
35254 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
35255
35256         PR fortran/79886
35257         * tree-diagnostic.c (default_tree_printer): No longer static.
35258         * tree-diagnostic.h (default_tree_printer): New prototype.
35259
35260 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
35261
35262         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
35263         Change ins into fmov.
35264
35265 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35266
35267         * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
35268         * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
35269         Use h_con constraint for operand 1.
35270         (*aarch64_fnma4_elt_from_dup<mode>): Likewise.
35271         (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
35272
35273 2017-03-15  Jeff Law  <law@redhat.com>
35274
35275         PR tree-optimization/71437
35276         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
35277         (record_temporary_equivalences): Use it.
35278
35279         PR tree-optimization/71437
35280         * tree-ssa-dom.c (struct cond_equivalence): Moved from here into
35281         tree-ssa-scopedtables.
35282         (lookup_avail_expr, build_and_record_new_cond): Likewise.
35283         (record_conditions, record_cond, vuse_eq): Likewise.
35284         (record_edge_info): Adjust to API tweak of record_conditions.
35285         (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
35286         (record_temporary_equivalences, optimize_stmt): Likewise.
35287         (eliminate_redundant_computations): Likewise.
35288         (record_equivalences_from_stmt): Likewise.
35289         * tree-ssa-scopedtables.c: Include options.h and params.h.
35290         (vuse_eq): New function, moved from tree-ssa-dom.c
35291         (build_and_record_new_cond): Likewise.
35292         (record_conditions): Likewise.  Accept vector of conditions rather
35293         than edge_equivalence structure for first argument.
35294         for the first argument.
35295         (avail_exprs_stack::lookup_avail_expr): New member function, moved
35296         from tree-ssa-dom.c.
35297         (avail_exprs_stack::record_cond): Likewise.
35298         * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
35299         from tree-ssa-dom.c.
35300         (avail_exprs_stack): Add new member functions lookup_avail_expr
35301         and record_cond.
35302         (record_conditions): Declare.
35303
35304 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
35305
35306         PR target/80017
35307         * lra-constraints.c (process_alt_operands): Increase reject for
35308         reloading an input/output operand.
35309
35310 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
35311
35312         PR target/79038
35313         * config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
35314         insns to convert from signed/unsigned char/short to IEEE 128-bit
35315         floating point.
35316         (floatuns<QHI:mode><IEEE128:mode>2): Likewise.
35317
35318 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
35319
35320         PR target/80019
35321         * config/i386/i386.c (ix86_vector_duplicate_value): Create
35322         subreg of inner mode for values already in registers.
35323
35324 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
35325
35326         * config/c6x/c6x.c (hwloop_optimize): Handle case where the old
35327         iteration reg is used after the loop.
35328
35329 2017-03-14  Martin Sebor  <msebor@redhat.com>
35330
35331         PR tree-optimization/79800
35332         * gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
35333         precision in negative-positive range.
35334         (format_floating): Call non-const overload with adjusted precision.
35335
35336 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
35337
35338         PR target/79947
35339         * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
35340         -mpowerpc-gfxopt.
35341
35342 2017-03-14  Martin Sebor  <msebor@redhat.com>
35343
35344         PR middle-end/80020
35345         * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
35346         * builtins.def (aligned_alloc): Use it.
35347
35348         PR c/79936
35349         * Makefile.in (GTFILES): Add calls.c.
35350         * calls.c: Include "gt-calls.h".
35351
35352 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
35353
35354         PR rtl-optimization/79728
35355         * regs.h (struct target_regs): New field
35356         x_contains_allocatable_regs_of_mode.
35357         (contains_allocatable_regs_of_mode): New macro.
35358         * reginfo.c (init_reg_sets_1): Initialize it, and change
35359         contains_reg_of_mode so it includes global regs as well.
35360         * reload.c (push_reload): Use contains_allocatable_regs_of_mode
35361         rather than contains_regs_of_mode.
35362
35363 2017-03-14  Martin Liska  <mliska@suse.cz>
35364
35365         * doc/invoke.texi: Document options that can't be combined with
35366         -fcheck-pointer-bounds.
35367
35368 2017-03-14  Martin Liska  <mliska@suse.cz>
35369
35370         PR middle-end/79831
35371         * doc/invoke.texi (-Wchkp): Document the option.
35372
35373 2017-03-14  Martin Liska  <mliska@suse.cz>
35374
35375         * Makefile.in: Install gcov-dump.
35376
35377 2017-03-14  Martin Liska  <mliska@suse.cz>
35378
35379         * multiple_target.c (expand_target_clones): Bail out for
35380         an invalid attribute.
35381
35382 2017-03-14  Richard Biener  <rguenther@suse.de>
35383
35384         * alias.c (struct alias_set_entry): Pack properly.
35385         * cfgloop.h (struct loop): Likewise.
35386         * cse.c (struct set): Likewise.
35387         * ipa-utils.c (struct searchc_env): Likewise.
35388         * loop-invariant.c (struct invariant): Likewise.
35389         * lra-remat.c (struct cand): Likewise.
35390         * recog.c (struct change_t): Likewise.
35391         * rtl.h (struct address_info): Likewise.
35392         * symbol-summary.h (function_summary): Likewise.
35393         * tree-loop-distribution.c (struct partition): Likewise.
35394         * tree-object-size.c (struct object_size_info): Likewise.
35395         * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
35396         * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
35397         * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
35398         * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
35399         * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
35400         * tree-vectorizer.h (struct _loop_vec_info): Likewise.
35401         (struct _stmt_vec_info): Likewise.
35402
35403 2017-03-14  Martin Liska  <mliska@suse.cz>
35404
35405         PR target/79892
35406         * multiple_target.c (create_dispatcher_calls): Check that
35407         a target can create a function dispatcher.
35408
35409 2017-03-14  Martin Liska  <mliska@suse.cz>
35410
35411         PR lto/66295
35412         * multiple_target.c (expand_target_clones): Drop local.local
35413         flag for default implementation.
35414
35415 2017-03-14  Richard Biener  <rguenther@suse.de>
35416
35417         PR tree-optimization/80030
35418         * tree-vect-stmts.c (vectorizable_store): Plug memleak.
35419
35420 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
35421
35422         * config/riscv/riscv.c (riscv_emit_float_compare>: Use
35423         gcc_fallthrough() instead of __attribute__((fallthrough));
35424
35425 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35426
35427         * doc/gcc.texi: Remove "up" link to (DIR).
35428         * doc/gccint.texi: Ditto.
35429
35430 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35431
35432         * doc/install.texi (Specific) <avr>: Remove reference to
35433         binutils 2.13.
35434
35435 2017-03-13  Jeff Law  <law@redhat.com>
35436
35437         * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
35438         attribute rather than comments.
35439
35440         * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
35441         match_scratch operand is highest.
35442
35443 2017-03-13  Martin Liska  <mliska@suse.cz>
35444
35445         PR middle-end/78339
35446         * ipa-pure-const.c (warn_function_noreturn): If the declarations
35447         is a CHKP clone, use original declaration.
35448
35449 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35450
35451         * config/arc/arc.c (arc_init): Use multiplier whenever we have it.
35452         (arc_conditional_register_usage): Use a different allocation order
35453         when optimizing for size.
35454         * common/config/arc/arc-common.c (arc_option_optimization_table):
35455         Section anchors default on when optimizing for size.
35456
35457 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35458
35459         * config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
35460
35461 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35462
35463         * config/arc/arc.c (arc_output_addsi): Emit code density adds.
35464         * config/arc/arc.md (cpu_facility): Add cd variant.
35465         (*movqi_insn): Add code density variant.
35466         (*movhi_insn): Likewise.
35467         (*movqi_insn): Likewise.
35468         (*addsi3_mixed): Likewise.
35469         (subsi3_insn): Likewise.
35470
35471 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35472
35473         * config/arc/arc.md (movsi_cond_exec): Update constraint.
35474
35475 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35476
35477         * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
35478         expressions with MINUS and UNARY ops.
35479
35480 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35481
35482         PR target/79911
35483         * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
35484         Rename to...
35485         (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
35486         between vec_select and vector argument.
35487         (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
35488         (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
35489         (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
35490         (vec_sel_widen_usum_lo<mode><V_half>3): ... This.
35491         (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
35492         (vec_sel_widen_usum_hi<mode><V_half>3): ... This.
35493
35494 2017-03-13  Richard Biener  <rguenther@suse.de>
35495
35496         PR other/79991
35497         * params.def (vect-max-peeling-for-alignment): Fix typo.
35498
35499 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35500
35501         * doc/install.texi (Specific) <mips-*-*>: Remove description of
35502         issue that only occurred with binutils below 2.18.
35503
35504 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35505
35506         * doc/install.texi (Specific) <cris-axis-elf>: No longer
35507         refer to binutils 2.11/2.12 minimum.
35508
35509 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35510
35511         * doc/install.texi (Specific) <powerpc-*-*>: Remove link to
35512         ftp.kernel.org and simplify binutils requirement.
35513
35514 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
35515
35516         * doc/invoke.texi (Warning Options): Fix spelling of link-time
35517         optimization.
35518         (Optimize Options): Ditto.  Also remove redundancy.
35519
35520 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35521
35522         PR translation/79848
35523         * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
35524         "%qs".
35525         * ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
35526         to G_ to avoid double translation.
35527
35528 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35529
35530         PR translation/79923
35531         * auto-profile.c (get_combined_location): Convert leading
35532         character of diagnostics to lower case and remove trailing period.
35533         (read_profile): Likewise for various diagnostics.
35534         * config/arm/arm.c (arm_option_override): Remove trailing period
35535         from various diagnostics.
35536         * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
35537         (msp430_expand_delay_cycles): Likewise.
35538
35539 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35540
35541         PR target/79925
35542         * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
35543         full command-line argument, rather than just "str".
35544         (aarch64_validate_march): Likewise.
35545         (aarch64_validate_mtune): Likewise.
35546
35547 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
35548
35549         PR rtl-optimization/78911
35550         * lra-assigns.c (must_not_spill_p): New function.
35551         (spill_for): Use it.
35552
35553 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35554
35555         PR tree-optimization/79981
35556         * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
35557         ATOMIC_COMPARE_EXCHANGE ifn result.
35558         (stmt_interesting_for_vrp, vrp_visit_stmt): Handle
35559         IFN_ATOMIC_COMPARE_EXCHANGE.
35560
35561 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35562
35563         PR driver/79875
35564         * opts.c (parse_sanitizer_options): Add missing question mark to
35565         "did you mean" message.
35566
35567 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35568
35569         * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
35570         built-in.
35571         (VMULEUH_UNS): Likewise.
35572         (VMULOUB_UNS): Likewise.
35573         (VMULOUH_UNS): Likewise.
35574         * config/rs6000/rs6000.c (builtin_function_type): Remove
35575         references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
35576
35577 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35578
35579         PR bootstrap/79952
35580         * read-rtl-function.c (function_reader::read_rtx_operand): Update
35581         x with result of extra_parsing_for_operand_code_0.
35582         (function_reader::extra_parsing_for_operand_code_0): Convert
35583         return type from void to rtx, returning x.  When reading
35584         SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
35585         larger size containing struct block_symbol.
35586
35587 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
35588
35589         * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
35590         -mfloat128-hardware without -m64.
35591
35592 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
35593
35594         PR target/79941
35595         * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
35596         entries to the case statement that marks unsigned arguments to
35597         overloaded functions.
35598
35599 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35600
35601         * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
35602         two typographic errors in the handling of TARGET_UPPER_REGS_DI.
35603
35604 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
35605
35606         PR target/79907
35607         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
35608         TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
35609
35610 2017-03-10  Martin Liska  <mliska@suse.cz>
35611
35612         PR target/65705
35613         PR target/69804
35614         * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
35615         * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
35616         FIELD != NULL.
35617
35618 2017-03-10  Olivier Hainque  <hainque@adacore.com>
35619
35620         * tree-switch-conversion (array_value_type): Start by resetting
35621         candidate type to it's main variant.
35622
35623 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35624
35625         PR rtl-optimization/79909
35626         * combine.c (try_combine): Use simplify_replace_rtx on individual
35627         CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
35628         of the whole CALL_INSN_FUNCTION_USAGE.
35629
35630         PR tree-optimization/79972
35631         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call
35632         get_range_info on SSA_NAMEs.  Formatting fixes.
35633
35634 2017-03-10  Richard Biener  <rguenther@suse.de>
35635             Jakub Jelinek  <jakub@redhat.com>
35636
35637         PR tree-optimization/77975
35638         * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
35639         edge to be constant.
35640         (get_val_for): For constant x return it.  Formatting fix.
35641         (loop_niter_by_eval): Avoid pointless looping if the next iteration
35642         would use the same bases as the current one.
35643
35644 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35645
35646         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
35647         instead of vec_select for V1TImode.
35648         * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
35649         longer needed.
35650         (VSX_LE_128): Add V1TI to this mode iterator.
35651         (*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
35652         (*vsx_le_perm_store_<mode>): Likewise.
35653         (pre-reload splitter for VSX stores): Likewise.
35654         (post-reload splitter for VSX stores): Likewise.
35655         (*vsx_xxpermdi2_le_<mode>): Likewise.
35656         (*vsx_lxvd2x2_le_<mode>): Likewise.
35657         (*vsx_stxvd2x2_le_<mode>): Likewise.
35658
35659 2017-03-09  Michael Eager  <eager@eagercon.com>
35660
35661         Correct failures with --enable-checking=yes,rtl.
35662
35663         * config/microblaze/microblaze.c (microblaze_expand_shift):
35664         Replace GET_CODE test with CONST_INT_P and INTVAL test with
35665         test for const0_rtx.
35666         * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
35667         lshrsi3_byone): Replace INTVAL with test for const1_rtx.
35668
35669 2017-03-09  Richard Biener  <rguenther@suse.de>
35670
35671         PR tree-optimization/79977
35672         * graphite-scop-detection.c (scop_detection::merge_sese):
35673         Handle the case of extra exits to blocks dominating the entry.
35674
35675 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
35676
35677         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
35678         Document rdynamic.
35679
35680 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
35681
35682         PR rtl-optimization/79949
35683         * lra-constraints.c (process_alt_operands): Check memory when
35684         trying to predict a cycle.  Print about the overall increase.
35685
35686 2017-03-09  Richard Biener  <rguenther@suse.de>
35687
35688         PR middle-end/79971
35689         * gimple-expr.c (useless_type_conversion_p): Preserve
35690         TYPE_SATURATING for fixed-point types.
35691
35692 2017-03-09  Richard Biener  <rguenther@suse.de>
35693
35694         PR ipa/79970
35695         * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
35696         alignment of BLKmode params.
35697
35698 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35699
35700         PR target/79913
35701         * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
35702         (VALL_NO_V2Q): Likewise.
35703         (VDQF_DF): Delete.
35704         * config/aarch64/aarch64-simd.md
35705         (aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
35706         iterator.
35707         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
35708         VALL_NO_V2Q mode iterator.
35709         (*aarch64_vgetfmulx<mode>): Use VDQF iterator.
35710
35711 2017-03-09  Martin Liska  <mliska@suse.cz>
35712
35713         PR tree-optimization/79631
35714         * tree-chkp-opt.c (chkp_is_constant_addr): Call
35715         tree_int_cst_sign_bit just for INTEGER constants.
35716
35717 2017-03-09  Martin Liska  <mliska@suse.cz>
35718
35719         PR target/65705
35720         PR target/69804
35721         * toplev.c (process_options): Disable -fcheck-pointer-bounds with
35722         sanitizers.
35723
35724 2017-03-09  Marek Polacek  <polacek@redhat.com>
35725
35726         PR c++/79672
35727         * tree.c (inchash::add_expr): Handle TREE_VEC.
35728
35729 2017-03-09  Martin Liska  <mliska@suse.cz>
35730
35731         PR ipa/79764
35732         (chkp_narrow_size_and_offset): New function.
35733         (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
35734         (void chkp_parse_bit_field_ref): New function.
35735         (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
35736         (chkp_process_stmt): Use chkp_parse_bit_field_ref.
35737
35738 2017-03-09  Martin Liska  <mliska@suse.cz>
35739
35740         PR ipa/79761
35741         * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
35742         (chkp_find_bounds_1): Remove gcc_unreachable.
35743
35744 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
35745
35746         PR sanitizer/79944
35747         * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
35748         BUILT_IN_SYNC*, determine the access type from the size suffix and
35749         always build a MEM_REF with that type.  Handle forgotten
35750         BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
35751
35752         PR target/79932
35753         * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
35754         _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
35755         _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
35756         _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
35757         _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
35758         _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
35759         _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
35760         _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
35761         _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
35762         _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
35763         _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
35764         _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
35765         _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
35766         _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
35767         _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
35768         _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
35769         _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
35770         _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
35771         _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
35772         _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
35773         _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
35774         _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
35775         _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
35776         _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
35777         _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
35778         _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
35779         _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
35780         _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
35781         _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
35782         _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
35783         definitions outside of __OPTIMIZE__ guarded section.
35784
35785         PR target/79932
35786         * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
35787         _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
35788         _mm512_packus_epi32, _mm512_maskz_packus_epi32,
35789         _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
35790         guarded section.
35791
35792 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35793
35794         * config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
35795         ("vfenez<mode>"): Add missing constraints.
35796
35797 2017-03-08  Martin Sebor  <msebor@redhat.com>
35798
35799         PR target/79928
35800         * config/nds32/nds32.c (nds32_option_override):
35801         Fix misspelled diagnostic.
35802
35803 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35804
35805         PR c/79940
35806         * gimplify.c (gimplify_omp_for): Replace index var in outer
35807         taskloop statement with an artificial variable and add
35808         OMP_CLAUSE_PRIVATE clause for it.
35809
35810 2017-03-08  Richard Biener  <rguenther@suse.de>
35811
35812         PR tree-optimization/79955
35813         * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
35814         for accesses that are completely outside of the variable.
35815
35816 2017-03-08  Andrew Haley  <aph@redhat.com>
35817
35818         PR tree-optimization/79943
35819         * tree-ssa-loop-split.c (compute_new_first_bound): When
35820         calculating the new upper bound, (END-BEG) should be added, not
35821         subtracted.
35822
35823 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35824
35825         * config/avr/avr.md (setmemhi): Make sure match_dup
35826         operand number comes before match_scratch.
35827
35828 2017-03-08  Richard Biener  <rguenther@suse.de>
35829
35830         PR tree-optimization/79920
35831         * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
35832         with ncopies == 1 to ...
35833         (vect_transform_slp_perm_load): ... here.  Properly compute
35834         all element loads by iterating VF times over the group.  Do
35835         not handle ncopies (computed in a broken way) in
35836         vect_create_mask_and_perm.
35837
35838 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35839
35840         PR sanitizer/79904
35841         * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
35842         is a uniform vector, use uniform_vector_p return value instead of
35843         building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
35844
35845 2017-03-07  Marek Polacek  <polacek@redhat.com>
35846
35847         PR middle-end/79809
35848         * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
35849         (alloca_call_type): Likewise.
35850
35851 2017-03-07  Martin Liska  <mliska@suse.cz>
35852
35853         * gcov.c (process_args): Put comment to correct location.
35854
35855 2017-03-07  Martin Liska  <mliska@suse.cz>
35856
35857         PR middle-end/68270
35858         * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
35859         Use array_at_struct_end_p instead of DECL_CHAIN (field).
35860         (chkp_narrow_bounds_for_field): Likewise.
35861         (chkp_parse_array_and_component_ref): Pass one more argument to
35862         call.
35863
35864 2017-03-07  Richard Biener  <rguenther@suse.de>
35865
35866         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
35867         preheaders.
35868
35869 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
35870
35871         * config/i386/i386.c (ix86_local_alignment): Align most aggregates
35872         of 16 bytes and more to 16 bytes, not those of 16 bits and more.
35873
35874 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35875
35876         PR c/79855
35877         * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
35878         to end of description.
35879         (PARAM_MAX_STORES_TO_MERGE): Likewise.
35880
35881 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
35882
35883         PR rtl-optimization/79901
35884         * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
35885         ...
35886         (*avx512f_<code><mode>3<mask_name>): ... this.
35887         (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
35888         iterator instead of VI8_AVX2_AVX512BW.
35889
35890         PR rtl-optimization/79901
35891         * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
35892         min/max expander, expand it using expand_vec_cond_expr.
35893
35894         PR sanitizer/79897
35895         * ubsan.c (ubsan_encode_value): Call mark_addressable on the
35896         temporary.
35897
35898 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35899
35900         PR c++/79821
35901         * dwarf2out.h (dw_vec_const): Change array type from unsigned char *
35902         to void * for PCH reasons.
35903         * dwarf2out.c (output_loc_operands, output_die): Cast
35904         v.val_vec.array to unsigned char *.
35905
35906 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
35907
35908         PR target/77850
35909         * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
35910         vector types.
35911
35912 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
35913
35914         PR rtl-optimization/79571
35915         * lra-constraints.c (process_alt_operands): Calculate static
35916         reject and subtract it from overall when only addresses will be
35917         reloaded.
35918
35919 2017-03-06  Julia Koval  <julia.koval@intel.com>
35920
35921         PR target/79793
35922         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
35923         incoming stack boundary to 128 for 64-bit targets.
35924
35925 2017-03-06  Richard Biener  <rguenther@suse.de>
35926
35927         PR tree-optimization/79894
35928         * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
35929         to NULL after folding it.
35930
35931 2017-03-06  Richard Biener  <rguenther@suse.de>
35932
35933         PR tree-optimization/79824
35934         * tree-vect-stmts.c (get_group_load_store_type): Fix alignment
35935         check disabling peeling for gaps.
35936
35937 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
35938
35939         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
35940         attributes): Document gettimeofday.
35941
35942 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35943
35944         * config/s390/s390.c (s390_option_override_internal): Set
35945         PARAM_MIN_VECT_LOOP_BOUND
35946
35947 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35948
35949         * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
35950         * config/s390/s390.md: Likewise.
35951
35952 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35953
35954         PR target/79812
35955         * config/i386/sse.md (VI8F_256_512): Remove mode iterator.
35956         (<avx2_avx512>_perm<mode>): Rename to ...
35957         (avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
35958         of VI8F_256_512.
35959         (<avx512>_perm<mode>_mask): Rename to ...
35960         (avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
35961         of VI8F_256_512.
35962         (<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
35963         (avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
35964         instead of VI8F_256_512.
35965         (avx512f_perm<mode>): New define_expand.
35966         (avx512f_perm<mode>_mask): Likewise.
35967         (avx512f_perm<mode>_1<mask_name>): New define_insn.
35968         (<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
35969
35970 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35971
35972         * config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
35973         msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
35974         if_then_else.
35975         (smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
35976
35977 2017-03-06  Martin Liska  <mliska@suse.cz>
35978
35979         PR sanitize/79783
35980         * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
35981         when having a SSA NAME w/o VAR_DECL assigned to it.
35982
35983 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35984
35985         * config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
35986         msa_dpsub_<su>_d): Fix MODE for vec_select.
35987
35988 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35989
35990         * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
35991         argument.
35992         * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
35993
35994 2017-03-06  Richard Biener  <rguenther@suse.de>
35995
35996         * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
35997         * plugin.c (register_plugin_info): Likewise.
35998         * tree-chkp.c (chkp_make_static_const_bounds): Likewise.
35999
36000 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
36001
36002         * config/i386/sse.md (sse_storehps, sse_storelps,
36003         avx_<castmode><avxsizesuffix>_<castmode>,
36004         avx512f_<castmode><avxsizesuffix>_<castmode>,
36005         avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
36006         in condition that at least one operand is not a MEM.
36007
36008 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36009
36010         PR middle-end/79805
36011         * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
36012         ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
36013         ECF_NOTHROW.
36014         * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
36015         gimple_call_nothrow_p flag based on whether original builtin can throw.
36016         If it can, emit following stmts on the fallthrough edge.
36017         * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
36018         don't create new bb if inserting just debug stmts on the edge, try to
36019         insert them on the fallthru bb or just reset debug stmts.
36020
36021 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
36022
36023         PR target/43763
36024         * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
36025         restore recog_data (including the operand rtxes inside it) around
36026         the call to get_insn_template.
36027
36028 2017-03-03  Martin Sebor  <msebor@redhat.com>
36029
36030         PR tree-optimization/79699
36031         * context.c (context::~context): Free MPFR caches to avoid
36032         a memory leak on program exit.
36033
36034 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36035
36036         * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
36037         Use wide_int::ulow () instead of .elt (0).
36038
36039 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36040
36041         * config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
36042         (*pushxf): Limit oF constraint to 32bit targets and add oC
36043         constraint for 64bit targets.
36044         (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
36045         (*pushdf): Change rmF constraint to rmC.
36046
36047 2017-03-03  Martin Liska  <mliska@suse.cz>
36048
36049         * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
36050         Remove unused variable.
36051
36052 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36053
36054         PR target/79807
36055         * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
36056         is a memory operand, increase num_memory.
36057         (ix86_expand_args_builtin): Likewise.
36058
36059 2017-03-03  Jan Hubicka  <jh@suse.cz>
36060
36061         PR lto/79760
36062         * ipa-devirt.c (maybe_record_node): Properly handle
36063         __cxa_pure_virtual visibility.
36064
36065 2017-03-03  Martin Liska  <mliska@suse.cz>
36066
36067         PR tree-optimization/79803
36068         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
36069         assert.
36070         (pass_loop_prefetch::execute): Disabled optimization if an
36071         assumption about L1 cache size is not met.
36072
36073 2017-03-03  Martin Liska  <mliska@suse.cz>
36074
36075         PR rtl-optimization/79574
36076         * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
36077         (hash_scan_set): Likewise.
36078         (dump_hash_table): Likewise.
36079         (hoist_code): Likewise.
36080
36081 2017-03-03  Richard Biener  <rguenther@suse.de>
36082
36083         * fixed-value.c (fixed_from_string): Restore use of elt (1)
36084         in place of uhigh ().
36085         (fixed_convert_from_real): Likewise.
36086
36087 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36088
36089         PR target/79514
36090         * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
36091
36092 2017-03-03  Richard Biener  <rguenther@suse.de>
36093
36094         PR middle-end/79818
36095         * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
36096         TYPE_OVERFLOW_UNDEFINED check.
36097
36098 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36099
36100         * config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
36101         numbers.
36102         (vector_ae_<mode>_p): Likewise.
36103         (vector_nez_<mode>_p): Likewise.
36104         (vector_ne_v2di_p): Likewise.
36105         (vector_ae_v2di_p): Likewise.
36106         (vector_ne_<mode>_p): Likewise.
36107         * config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
36108         numbers.
36109         (vsx_tsqrt<mode>2_fe): Likewise.
36110
36111 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
36112
36113         PR target/79514
36114         * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
36115
36116 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36117
36118         PR rtl-optimization/79780
36119         * cprop.c (one_cprop_pass): When second and further conditional trap
36120         in a single basic block is turned into an unconditional trap, turn it
36121         into a deleted note to avoid RTL verification failures.
36122
36123 2017-03-02  Richard Biener  <rguenther@suse.de>
36124
36125         * fold-const.c (const_binop): Use ulow () instead of elt (0).
36126
36127 2017-03-02  Richard Biener  <rguenther@suse.de>
36128
36129         PR tree-optimization/79345
36130         PR c++/42000
36131         * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
36132         param and abort the walk, returning -1 if it is hit.
36133         (walk_aliased_vdefs): Take a limit param and pass it on.
36134         * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
36135         defaulting to 0 and return a signed int.
36136         * tree-ssa-uninit.c (struct check_defs_data): New struct.
36137         (check_defs): New helper.
36138         (warn_uninitialized_vars): Use walk_aliased_vdefs to warn
36139         about uninitialized memory.
36140         * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
36141         bogus uninitialized warning.
36142         (fixed_convert_from_real): Likewise.
36143
36144 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
36145
36146         PR tree-optimization/66768
36147         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
36148         iv_use if base object can't be determined.
36149
36150 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36151
36152         PR tree-optimization/79345
36153         * gensupport.h (struct pattern_stats): Add min_scratch_opno field.
36154         * gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
36155         (get_pattern_stats): Initialize it.
36156         * genemit.c (gen_expand): Verify match_scratch numbers come after
36157         match_operand/match_dup numbers.
36158         * config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
36159         match_scratch numbers.
36160         * config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
36161         Likewise.
36162         * config/s390/s390.md (trunctdsd2): Likewise.
36163
36164 2017-03-02  Richard Biener  <rguenther@suse.de>
36165
36166         * wide-int.h (wide_int_storage::operator=): Implement in terms
36167         of wi::copy.
36168
36169 2017-03-02  Richard Biener  <rguenther@suse.de>
36170
36171         PR tree-optimization/79777
36172         * tree-ssa-pre.c (eliminate_insert): Give up if we simplify
36173         the to insert expression to sth existing.
36174
36175 2017-03-01  Martin Sebor  <msebor@redhat.com>
36176
36177         PR middle-end/79692
36178         * gimple-ssa-sprintf.c
36179         (directive::known_width_and_precision): New function.
36180         (format_integer): Use it.
36181         (get_mpfr_format_length): Consider the full range of precision
36182         when computing %g output with the # flag.  Set the likely byte
36183         count to 3 rather than 1 when precision is indeterminate.
36184         (format_floating): Correct the lower bound of precision.
36185
36186 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36187
36188         * doc/invoke.texi: Document default code model for 64-bit Linux.
36189
36190 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36191
36192         PR target/79752
36193         * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
36194         udiv rather than div since input pattern is unsigned.
36195
36196 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
36197
36198         * config/i386/i386.c (print_reg): Warn for values of
36199         unsupported size in integer register.
36200
36201 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
36202
36203         PR target/79439
36204         * config/rs6000/predicates.md (current_file_function_operand): Do
36205         not allow self calls to be local if the function is replaceable.
36206
36207 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
36208
36209         PR target/79395
36210         * config/rs6000/altivec.h (vec_ctz and others): Change the
36211         preprocessor macro that controls conditional compilation from
36212         _ARCH_PWR9 to __POWER9_VECTOR__.
36213         (vec_all_ne): Change parameterization of __altivec_scalar_pred
36214         macro expansion under preprocessor #ifdef __POWER9_VECTOR__
36215         control (instead of _ARCH_PWR9 control) so that template
36216         definition uses power9-specific function.
36217         (vec_any_eq): Likewise.
36218         (vec_all_ne): Change macro definition to use a power9-specific
36219         expansion under #ifdef __POWER9_VECTOR__ control (instead of
36220         _ARCH_PWR9 control).
36221         (vec_any_eq) Likewise.
36222         * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
36223         expansion for CMPNEF to remove support for xvcmpnesp instruction.
36224         (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
36225         support for xvcmpnedp instruction.
36226         (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
36227         macro expansion so that Power9 implementation of vec_all_ne does
36228         not use the AltiVec predicate framework.
36229         (VCMPNEH_P): Likewise.
36230         (VCMPNEW_P): Likewise.
36231         (VCMPNED_P): Likewise.
36232         (VCMPNEFP_P): Likewise.
36233         (VCMPNEDP_P): Likewise.
36234         (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
36235         implementation of vec_any_eq to not use AltiVec predicate
36236         framework.
36237         (VCMPAEH_P): Likewise.
36238         (VCMPAEW_P): Likewise.
36239         (VCMPAED_P): Likewise.
36240         (VCMPAEFP_P): Likewise.
36241         (VCMPAEDP_P): Likewise.
36242         (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
36243         BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
36244         not use the AltiVec predicate framework.
36245         (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
36246         of vec_any_eq to not use AltiVec predicate framework.
36247         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
36248         support for predefined __POWER9_VECTOR__ macro to indicate that
36249         Power9 instruction selection is enabled.
36250         (altivec_overloaded_builtins): Remove extraneous
36251         ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
36252         function argument types RS6000_BTI_bool_V16QI and
36253         RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
36254         entry for overloaded function argument types RS6000_BTI_bool_V4SI
36255         andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
36256         two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
36257         P9V_BUILTIN_CMPNEF to force use of instructions not specific to
36258         Power9 for implementations of vec_cmpne.  Change the signature for
36259         all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
36260         (representing vec_all_ne) to remove the previously described first
36261         argument of type RS6000_BTI_INTSI, as this was an artifact of
36262         reliance on the AltiVec predicate framework, which is no longer
36263         used in the implementation of these functions.  Add
36264         P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
36265         function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
36266         since, unlike the AltiVec predicate framework implementation, we
36267         do not share function descriptors between vec_alle and vec_anyeq.
36268         (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
36269         set of modes that receive special treatment even when
36270         TARGET_P9_VECTOR is true.  The special treatment emits code that
36271         does not depend on Power9 instructions.
36272         * config/rs6000/vector.md (vector_ne_<mode>_p): Change this
36273         define_expand to not rely on AltiVec predicate framework.
36274         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36275         function.
36276         (vector_ne_v2di_p): Change this define_expand to not rely on
36277         AltiVec predicate framework.
36278         (vector_ae_v2di_p): New define_expand to represent vec_any_eq
36279         function.
36280         (vector_ne_<mode>_p): Change this define_expand to not rely on
36281         AltiVec predicate framework.
36282         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36283         function.
36284         * config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
36285         (V16QI, V8HI, V4SI), correct a typo in the code emitted for this
36286         define_insn pattern.
36287         (*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
36288         define_insn pattern because the xvcmpne<VSs>. instruction is not
36289         supported.
36290         (vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
36291         instruction is not supported.
36292
36293 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36294
36295         * config/nvptx/nvptx.c: Include intl.h.
36296
36297 2017-03-01  Martin Jambor  <mjambor@suse.cz>
36298
36299         PR lto/78140
36300         * ipa-prop.h (ipa_bits): Removed field known.
36301         (ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
36302         to pointers.  Adjusted their comments to warn about their sharing.
36303         (ipcp_transformation_summary): Change bits to a vector of pointers.
36304         (ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
36305         (ipa_get_ipa_bits_for_value): Declare.
36306         * tree-vrp.h (value_range): Mark as GTY((for_user)).
36307         * ipa-prop.c (ipa_bit_ggc_hash_traits): New.
36308         (ipa_bits_hash_table): Likewise.
36309         (ipa_vr_ggc_hash_traits): Likewise.
36310         (ipa_vr_hash_table): Likewise.
36311         (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
36312         being pointers and vr_known being removed.
36313         (ipa_set_jf_unknown): Likewise.
36314         (ipa_get_ipa_bits_for_value): New function.
36315         (ipa_set_jfunc_bits): Likewise.
36316         (ipa_get_value_range): New overloaded functions.
36317         (ipa_set_jfunc_vr): Likewise.
36318         (ipa_compute_jump_functions_for_edge): Use the above functions to
36319         construct bits and vr parts of jump functions.
36320         (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
36321         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36322         exist.
36323         (ipcp_grow_transformations_if_necessary): Also allocate
36324         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36325         exist.
36326         (ipa_node_params_t::duplicate): Do not copy bits, just pointers to
36327         them.  Fix too long lines.
36328         (ipa_write_jump_function): Adjust for bits and m_vr being pointers and
36329         vr_known being removed.
36330         (ipa_read_jump_function): Use new setter functions to construct bits
36331         and vr parts of jump functions or set them to NULL.
36332         (write_ipcp_transformation_info): Adjust for bits being pointers.
36333         (read_ipcp_transformation_info): Likewise.
36334         (ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
36335         space.
36336         Include gt-ipa-prop.h.
36337         * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
36338         being pointers.
36339         (ipcp_store_bits_results): Likewise.
36340         (propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
36341         Do not write to existing jump functions but use a temporary instead.
36342
36343 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36344
36345         PR c++/79681
36346         * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
36347         attempt to use its first operand as BIT_FIELD_REF base.
36348
36349 2017-03-01  Richard Biener  <rguenther@suse.de>
36350
36351         PR middle-end/79721
36352         * tree-chrec.c (chrec_evaluate): Perform computation of Newtons
36353         interpolating formula in wrapping arithmetic.
36354         (chrec_apply): Convert chrec_evaluate return value to wanted type.
36355
36356 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36357
36358         PR tree-optimization/79734
36359         * tree-vect-generic.c (expand_vector_condition): Optimize
36360         AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
36361         Handle VEC_COND_EXPR where comparison has different inner width from
36362         type's inner width.
36363
36364 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
36365
36366         * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
36367         markup, and similar issues.  Remove @opindex entries for things
36368         that aren't options.  Add missing -mmpy-option entries.
36369
36370 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36371
36372         PR tree-optimization/79737
36373         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
36374         a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
36375         tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
36376         instead of byte_size.  Formatting fix.
36377         (shift_bytes_in_array_right): Formatting fix.
36378
36379 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
36380
36381         PR target/79749
36382         * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
36383         condition on optimize for the leaf function test.
36384
36385 2017-02-28  Martin Liska  <mliska@suse.cz>
36386
36387         PR lto/79625
36388         * read-rtl-function.c (function_reader::handle_unknown_directive):
36389         Bail out when one uses -flto.
36390
36391 2017-02-28  Martin Liska  <mliska@suse.cz>
36392
36393         * common.opt: Replace space with tabular for options of <number>
36394         type.
36395         * config/i386/i386.opt: Show <number> value for
36396         -mlarge-data-threshold.
36397         * opts.c (print_filtered_help): Do not display number in hexadecimal
36398         format.
36399
36400 2017-02-28  Martin Liska  <mliska@suse.cz>
36401
36402         * common.opt: Fix --help=option -Q for options which are of
36403         an enum type.
36404
36405 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
36406
36407         * config/i386/i386.c (print_reg): Error out for values
36408         of 8-bit size in invalid integer register.
36409
36410 2017-02-28  Martin Sebor  <msebor@redhat.com>
36411
36412         PR tree-optimization/79691
36413         * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
36414
36415 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36416
36417         PR target/79729
36418         * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
36419         gcc_unreachable with output_operand_lossage.
36420
36421 2017-02-28  Richard Biener  <rguenther@suse.de>
36422
36423         PR tree-optimization/79740
36424         * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
36425         inserts.
36426         (visit_nary_op): Insert the nary into the hashtable if we
36427         pattern-matched sth.
36428         * tree-ssa-pre.c (eliminate_insert): Robustify.
36429
36430 2017-02-28  Richard Biener  <rguenther@suse.de>
36431
36432         PR middle-end/79731
36433         * fold-const.c (decode_field_reference): Reject out-of-bound
36434         accesses.
36435
36436 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36437
36438         * config/i386/i386.c: Include intl.h.
36439         (ix86_option_override_internal): Use cond ? G_("...") : G_("...")
36440         instead of just cond ? "..." : "...".
36441         * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
36442         * coverage.c (read_counts_file): Likewise.
36443         * omp-offload.c: Include intl.h.
36444         (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
36445         of just cond ? "..." : "...".
36446         * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
36447         of just cond ? "..." : "...".
36448
36449 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
36450
36451         PR target/79742
36452         * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
36453         entry, if present.
36454         * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
36455         'tune for' CPU name.
36456         * config/arm/arm-cpu-data.h: Regenerated.
36457
36458 2017-02-28  Richard Biener  <rguenther@suse.de>
36459
36460         PR tree-optimization/79732
36461         * tree-inline.c (expand_call_inline): Do not shadow var.
36462
36463 2017-02-28  Richard Biener  <rguenther@suse.de>
36464
36465         PR tree-optimization/79723
36466         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
36467         address-space properly.
36468
36469 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
36470
36471         * doc/optinfo.texi (Optimization groups): Fix option used for
36472         OPTGROUP_ALL.
36473         * doc/invoke.texi (-fopt-info): Document "omp".
36474         * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
36475         (OPTGROUP_ALL): Add OPTGROUP_OMP.
36476         * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
36477         * ipa-hsa.c (pass_data_ipa_hsa): Likewise.
36478         * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
36479
36480         * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
36481         all users.
36482         * dumpfile.c (optgroup_options): Instead of "openmp", associate
36483         OPTGROUP_OMP with "omp".
36484
36485 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
36486
36487         PR target/79544
36488         * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
36489         for arithmetic shift of unsigned V2DI.
36490
36491 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
36492
36493         * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
36494         arc/linux.h headers.
36495         * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
36496         (LINK_SPEC): Likewise.
36497         (ARC_TLS_EXTRA_START_SPEC): Likewise.
36498         (EXTRA_SPECS): Likewise.
36499         (STARTFILE_SPEC): Likewise.
36500         (ENDFILE_SPEC): Likewise.
36501         (LIB_SPEC): Likewise.
36502         (TARGET_SDATA_DEFAULT): Likewise.
36503         (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
36504         (MULTILIB_DEFAULTS): Likewise.
36505         (DWARF2_UNWIND_INFO): Likewise.
36506         * config/arc/big.h: New file.
36507         * config/arc/elf.h: Likewise.
36508         * config/arc/linux.h: Likewise.
36509         * config/arc/t-uClibc: Remove.
36510
36511 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
36512
36513         PR tree-optimization/77536
36514         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
36515         (tree_transform_and_unroll_loop): Use above function to compute the
36516         estimated niter of unrolled loop and use it when scaling profile.
36517         Also use count info rather than frequency if it's non-zero.
36518         * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
36519         * tree-vect-loop.c (scale_profile_for_vect_loop): New function.
36520         (vect_transform_loop): Call above function.
36521
36522 2017-02-27  Richard Biener  <rguenther@suse.de>
36523
36524         PR tree-optimization/45397
36525         * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
36526         * tree-ssa-sccvn.c (valueized_wider_op): New helper.
36527         (visit_nary_op): Add pattern matching for CSEing sign-changed
36528         or truncated operations with wider ones.
36529
36530 2017-02-27  Richard Biener  <rguenther@suse.de>
36531
36532         PR tree-optimization/79690
36533         * tree-vect-stmts.c (vectorizable_store): Use vector type
36534         built from the DR with address-space.
36535
36536 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
36537
36538         * doc/invoke.texi (Optimize Options): Refine the description
36539         of asan-use-after-return.
36540
36541 2017-02-25  Alan Modra  <amodra@gmail.com>
36542
36543         PR rtl-optimization/79584
36544         * lra-constraints.c (base_to_reg): Reload ad->base, the entire
36545         base, not ad->base_term, the reg within base.  Remove assertion
36546         that ad->base == ad->base_term.  Replace gen_int_mode using
36547         bogus mode with const0_rtx.
36548
36549 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
36550
36551         PR middle-end/79396
36552         * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
36553         FMA_EXPR like tcc_binary or tcc_unary.
36554
36555         * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
36556
36557         PR debug/77589
36558         * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
36559         bitfield.
36560         (size_of_loc_descr): Handle DW_OP_GNU_variable_value.
36561         (output_loc_operands): Handle DW_OP_call_ref and
36562         DW_OP_GNU_variable_value.
36563         (struct variable_value_struct): New type.
36564         (struct variable_value_hasher): Likewise.
36565         (variable_value_hash): New variable.
36566         (string_types): Remove.
36567         (copy_loc_descr): New function.
36568         (add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
36569         (prepend_loc_descr_to_each): New function.
36570         (add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
36571         instead of add_loc_descr_to_each if the first argument is single
36572         location list and the second has multiple.
36573         (resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
36574         (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
36575         when looking for variable value which doesn't have other location info.
36576         (loc_list_from_tree): Formatting fix.
36577         (gen_array_type_die): Simplify DW_AT_string_length handling.
36578         (adjust_string_types): Remove.
36579         (gen_subprogram_die): Don't call adjust_string_types nor test/set
36580         string_types.  Call resolve_variable_values.
36581         (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
36582         (resolve_addr_in_expr): Likewise.  Add A argument.
36583         (copy_deref_exprloc): Remove deref argument.  Adjust for the
36584         original expression being DW_OP_GNU_variable_value with optionally
36585         DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
36586         optionally after it.
36587         (optimize_string_length): Rework for DW_OP_GNU_variable_value.
36588         (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
36589         callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
36590         (variable_value_hasher::hash, variable_value_hasher::equal): New
36591         methods.
36592         (resolve_variable_value_in_expr, resolve_variable_value,
36593         resolve_variable_values, note_variable_value_in_expr,
36594         note_variable_value): New functions.
36595         (dwarf2out_early_finish): Call note_variable_value on all toplevel
36596         DIEs.
36597
36598 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
36599
36600         PR c/79677
36601         * opts.h (handle_generated_option): Add GENERATED_P argument.
36602         * opts-common.c (handle_option): Adjust function comment.
36603         (handle_generated_option): Add GENERATED_P argument, pass it to
36604         handle_option.
36605         (control_warning_option): Pass false to handle_generated_option
36606         GENERATED_P.
36607         * opts.c (maybe_default_option): Pass true to handle_generated_option
36608         GENERATED_P.
36609         * optc-gen.awk: Likewise.
36610
36611 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36612
36613         * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
36614         a REG, look at the REG it is a SUBREG of.
36615         (splitter for cmpeqsi_t): Ditto.
36616
36617 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36618
36619         * config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
36620         the special USEs with the pattern of the insn, not the insn itself.
36621
36622 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
36623
36624         PR target/79473
36625         * doc/invoke.texi: Document -mload-store-pairs.
36626
36627 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36628             Sandra Loosemore  <sandra@codesourcery.com>
36629
36630         * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
36631         argument isn't a CONST_INT.
36632         (nios2_alternate_compare_const): Assert op is a CONST_INT.
36633         (nios2_valid_compare_const_p): Assert op is a CONST_INT.
36634         (nios2_validate_compare): Bypass alternate compare logic if *op2
36635         is not a CONST_INT.
36636         (ldstwm_operation_p): Return false if first_base is not a REG or
36637         if first_offset is not a CONST_INT.
36638
36639 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36640
36641         * config/cris/cris.md: Use correct operand in a define_peephole2.
36642
36643 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36644
36645         * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
36646
36647 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36648
36649         * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
36650         this_insn if it is an INSN or JUMP_INSN.
36651         (force_offsettable): Look at base, not at addr.
36652         * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
36653         on things that aren't necessarily CONST_INTs.
36654
36655 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
36656
36657         * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
36658         -mfpmath=sse is the default also for x86-32 targets with SSE2
36659         instruction set when @option{-ffast-math} is enabled
36660
36661 2017-02-24  Jeff Law  <law@redhat.com>
36662
36663         PR rtl-optimizatoin/79286
36664         * ira.c (update_equiv_regs): Drop may_trap_p exception to
36665         dominance test.
36666
36667 2017-02-24  Richard Biener  <rguenther@suse.de>
36668
36669         PR tree-optimization/79389
36670         * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
36671         debug insns.
36672
36673 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
36674
36675         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update
36676         function comment to reflect reality.
36677         (loop_exits_before_overflow): Fix typo in function description.
36678
36679 2017-02-24  Richard Biener  <rguenther@suse.de>
36680
36681         PR tree-optimization/79389
36682         * gimple-ssa-split-paths.c (is_feasible_trace): Verify more
36683         properly that a threading opportunity exists.  Detect conditional
36684         copy/constant propagation opportunities.
36685
36686 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
36687
36688         * config/visium/visium.md (type): Add trap.
36689         (b): New mode attribute.
36690         (*btst): Rename into...
36691         (*btst<mode>): ...this and adjust.
36692         (*cbranchsi4_btst_insn): Rename into...
36693         (*cbranch<mode>4_btst_insn): ...this and adjust.
36694         (trap): New define_insn.
36695
36696 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
36697
36698         PR tree-optimization/79389
36699         * ifcvt.c (struct noce_if_info): Add rev_cond field.
36700         (noce_reversed_cond_code): New function.
36701         (noce_emit_store_flag): Use rev_cond if non-NULL instead of
36702         reversed_comparison_code.  Formatting fix.
36703         (noce_try_store_flag): Test rev_cond != NULL in addition to
36704         reversed_comparison_code.
36705         (noce_try_store_flag_constants): Likewise.
36706         (noce_try_store_flag_mask): Likewise.
36707         (noce_try_addcc): Use rev_cond if non-NULL instead of
36708         reversed_comparison_code.
36709         (noce_try_cmove_arith): Likewise.  Formatting fixes.
36710         (noce_try_minmax, noce_try_abs): Clear rev_cond.
36711         (noce_find_if_block): Initialize rev_cond.
36712         (find_cond_trap): Call noce_get_condition with then_bb == trap_bb
36713         instead of false as last argument never attempt to reverse it
36714         afterwards.
36715
36716 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
36717
36718         PR tree-optimization/79663
36719         * tree-predcom.c (combine_chains): Process refs in reverse order
36720         only for ZERO length chains, and add explaining comment.
36721
36722 2017-02-23  Jeff Law  <law@redhat.com>
36723
36724         PR tree-optimization/79578
36725         * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
36726         in call to operand_equal_p.
36727
36728 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
36729
36730         PR target/71017
36731         * config/i386/cpuid.h: Fix another undefined behavior.
36732
36733 2017-02-23  Richard Biener  <rguenther@suse.de>
36734
36735         PR tree-optimization/79683
36736         * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
36737         vector types for data-refs.
36738
36739 2017-02-23  Martin Liska  <mliska@suse.cz>
36740
36741         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
36742
36743 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
36744
36745         PR middle-end/79665
36746         * internal-fn.c (get_range_pos_neg): Moved to ...
36747         * tree.c (get_range_pos_neg): ... here.  No longer static.
36748         * tree.h (get_range_pos_neg): New prototype.
36749         * expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
36750         are known to be in between 0 and signed maximum inclusive, try to
36751         expand both unsigned and signed divmod and use the cheaper one from
36752         those.
36753
36754 2017-02-22  Jeff Law  <law@redhat.com>
36755
36756         PR tree-optimization/79578
36757         * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
36758         to compare base operands.
36759
36760 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
36761
36762         PR target/79211
36763         * config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
36764         gpc_reg_operand instead of fpr_reg_operand.
36765
36766 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
36767
36768         * config/mips/mips.c (mips_return_in_memory): Force FP
36769         vector types to be returned in memory for o32 ABI.
36770
36771 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
36772
36773         * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
36774         instead of DW_TAG_member for static data member declarations and don't
36775         set no_linkage_name for static inline data members.
36776         (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
36777         to DW_TAG_member.
36778
36779 2017-02-22  Martin Liska  <mliska@suse.cz>
36780
36781         * doc/invoke.texi: Replace inequality signs with square brackets
36782         for -Wnormalized.
36783
36784 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
36785
36786         PR target/78660
36787         * lra-constraints.c (simplify_operand_subreg): Handle
36788         WORD_REGISTER_OPERATIONS targets.
36789
36790 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
36791
36792         PR target/70465
36793         * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
36794         and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
36795         elimination by swapping fld*.
36796
36797 2017-02-22  Richard Biener  <rguenther@suse.de>
36798
36799         PR tree-optimization/79673
36800         * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
36801         convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
36802         irrelevant address-space qualifiers and avoiding a
36803         ADDR_SPACE_CONVERT_EXPR from fold_convert.
36804
36805 2017-02-22  Richard Biener  <rguenther@suse.de>
36806
36807         PR tree-optimization/79666
36808         * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
36809         to not symbolically negate if that may introduce undefined
36810         overflow.
36811
36812 2017-02-22  Martin Liska  <mliska@suse.cz>
36813
36814         PR lto/79587
36815         * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
36816         * data-streamer-out.c (streamer_write_gcov_count_stream):
36817         Likewise.
36818         * value-prof.c (stream_out_histogram_value): Make assert more
36819         precise based on type of counter.
36820
36821 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
36822
36823         PR target/79593
36824         * config/i386/i386.md (standard_x87sse_constant_load splitter):
36825         Use nonimmediate_operand instead of memory_operand for operand 1.
36826         (float-extend standard_x87sse_constant_load splitter): Ditto.
36827
36828 2017-02-21  Jeff Law  <law@redhat.com>
36829
36830         PR tree-optimization/79621
36831         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
36832         blocks with edges to themselves.
36833
36834 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36835
36836         PR target/79633
36837         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
36838         is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
36839         Use gimple_call_builtin_p.
36840
36841         PR target/79570
36842         * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
36843         on temporarily removed DEBUG_INSNs.
36844
36845         PR tree-optimization/79649
36846         * tree-loop-distribution.c (classify_partition): Give up on
36847         non-generic address space loads/stores.
36848
36849 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
36850
36851         * doc/loop.texi (Loop manipulation): Remove nonexistent
36852         tree_ssa_loop_version from the documentation.
36853         * cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
36854
36855 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36856
36857         PR target/79494
36858         * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
36859         make_reg_eh_region_note_nothrow_nononlocal on call_insn.
36860         * config/rs6000/rs6000.c: Include except.h.
36861         (rs6000_expand_split_stack_prologue): Call
36862         make_reg_eh_region_note_nothrow_nononlocal on the call insn.
36863
36864 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36865
36866         PR lto/79579
36867         * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
36868         have been analyzed.
36869
36870 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36871
36872         * common.opt (-fipa-cp-alignment): Mark as ignored and preserved
36873         for backward compatibility only.
36874         * doc/invoke.texi (Option Summary): Remove all references to
36875         -fipa-cp-alignment.
36876
36877 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
36878
36879         PR target/78660
36880         Revert:
36881         2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36882
36883         * lra-constraints.c (curr_insn_transform): Handle
36884         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36885
36886 2017-02-21  Martin Liska  <mliska@suse.cz>
36887
36888         * config/i386/i386.opt: Replace -masm-dialect with -masm.
36889
36890 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
36891
36892         PR translation/79638
36893         * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
36894
36895 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
36896
36897         PR ada/67205
36898         * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
36899         (arm_function_ok_for_sibcall): Return false for an indirect call by
36900         descriptor if all the argument registers are used.
36901         (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
36902         alignment of the function.
36903
36904 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36905
36906         PR tree-optimization/61441
36907         * simplify-rtx.c (simplify_const_unary_operation): For
36908         -fsignaling-nans and sNaN operand, return NULL_RTX rather than
36909         the sNaN unmodified.
36910
36911 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
36912
36913         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
36914         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
36915         instead of SYSTEM_HEADER_DIR.
36916
36917 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
36918             Martin LiÅ¡ka  <mliska@suse.cz>
36919
36920         * doc/invoke.texi (use-after-scope-direct-emission-threshold):
36921         Fix typos and grammar, use active voice, and clarify.
36922
36923 2017-02-20  Marek Polacek  <polacek@redhat.com>
36924
36925         PR middle-end/79537
36926         * gimplify.c (gimplify_expr): Handle unused *&&L;.
36927
36928         PR sanitizer/79558
36929         * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
36930
36931 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
36932
36933         PR target/79568
36934         * config/i386/i386.c (ix86_expand_builtin): Handle
36935         OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
36936         ix86_builtins_isa[fcode].isa as a requirement of those
36937         flags and any other flag in the bitmask.
36938         (ix86_init_mmx_sse_builtins): Use 0 instead of
36939         ~OPTION_MASK_ISA_64BIT as mask.
36940         * config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
36941         __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
36942         __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
36943         __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
36944
36945 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36946
36947         PR target/78012
36948         * lra-constraints.c (split_reg): Check requested split mode
36949         is supported by the register.
36950
36951 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36952
36953         * lra-constraints.c (simplify_operand_subreg): Remove early
36954         return false.
36955
36956 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36957
36958         PR target/78660
36959         * lra-constraints.c (curr_insn_transform): Tighten condition
36960         for converting SUBREG reloads from OP_OUT to OP_INOUT.
36961
36962 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36963
36964         PR target/78660
36965         * lra-constraints.c (curr_insn_transform): Handle
36966         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36967
36968 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
36969
36970         Revert:
36971         2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
36972
36973         * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
36974
36975 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
36976
36977         PR c++/69523
36978         * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
36979         description.
36980
36981 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36982
36983         * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
36984         for FMA_EXPR.
36985
36986 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
36987
36988         * final.c (last_columnnum, override_columnnum): New variables.
36989         (final_start_function): Set last_columnnum, pass it to begin_prologue
36990         hook and pass 0 to dwarf2out_begin_prologue.
36991         (final_scan_insn): Update override_columnnum.  Pass last_columnnum
36992         to source_line debug hook.
36993         (notice_source_line): Compute last_columnnum and for debug_column_info
36994         return true on column changes.
36995         * debug.h (struct gcc_debug_hooks): Add column argument to
36996         source_line and begin_prologue hooks.
36997         (debug_nothing_int_charstar_int_bool): Remove prototype.
36998         (debug_nothing_int_int_charstar,
36999         debug_nothing_int_int_charstar_int_bool): New prototypes.
37000         (dwarf2out_begin_prologue): Add column argument.
37001         * debug.c (do_nothing_debug_hooks): Adjust source_line and
37002         begin_prologue hooks.
37003         (debug_nothing_int_charstar_int_bool): Remove.
37004         (debug_nothing_int_int_charstar,
37005         debug_nothing_int_int_charstar_int_bool): New functions.
37006         * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
37007         through to dwarf2out_source_line.
37008         (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
37009         (dwarf2out_source_line): Add column argument, emit it if requested.
37010         * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
37011         arguments.
37012         * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37013         * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37014         * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
37015         through to dwarf2out_begin_prologue.
37016         (vmsdbgout_source_line): Add column argument, pass it through to
37017         dwarf2out_source_line.
37018         * dbxout.c (dbxout_begin_prologue): Add column argument, adjust
37019         dbxout_source_line caller.
37020         (dbxout_source_line): Add column argument.
37021
37022         * common.opt (gno-column-info, gcolumn-info): New options.
37023         * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
37024         (check_die): Also test for multiple DW_AT_decl_column attributes.
37025         (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
37026         DW_AT_decl_column if requested.
37027         (gen_subprogram_die): Compare and/or add also DW_AT_decl_column
37028         if requested.
37029         (gen_variable_die): Likewise.
37030         (add_call_src_coords_attributes): Add DW_AT_call_column if requested.
37031         * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
37032
37033         PR target/79569
37034         * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
37035         * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
37036         (ix86_handle_option): Handle OPT_m3dnowa.
37037         * doc/invoke.texi (-m3dnowa): Document.
37038         * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
37039         -m3dnowa instead of -m3dnow -march=athlon.
37040
37041         PR target/79559
37042         * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
37043         instead of gcc_assert for K, r and R code checks.  Formatting fixes.
37044
37045 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
37046
37047         PR target/79261
37048         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
37049         support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
37050         * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
37051         generator for vsx_xxpermdi_<mode>_be.
37052         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
37053         force big-endian semantics.
37054         (vsx_xxpermdi_<mode>_be): New define_expand with same
37055         implementation as previous version of vsx_xxpermdi_<mode>.
37056
37057 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
37058
37059         PR tree-optimization/79327
37060         * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
37061         variable, its initialization and use.
37062
37063 2017-02-17  Julia Koval  <julia.koval@intel.com>
37064
37065         * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
37066         (OPTION_MASK_ISA_PKU_UNSET): New.
37067         (ix86_handle_option): Handle -mrdpid.
37068         * config/i386/cpuid.h (bit_RDPID): New.
37069         * config/i386/driver-i386.c (host_detect_local_cpu):
37070         Detect RDPID feature.
37071         * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
37072         * config/i386/i386-c.c (ix86_target_macros_internal):
37073         Handle RDPID flag.
37074         * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
37075         (ix86_valid_target_attribute_inner_p): Add "rdpid".
37076         (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
37077         * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
37078         * config/i386/i386.md (define_insn "rdpid"): New.
37079         * config/i386/i386.opt Add -mrdpid.
37080         * config/i386/immintrin.h (_rdpid_u32): New.
37081
37082 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
37083
37084         PR rtl-optimization/79541
37085         * lra-constraints.c (curr_insn_transform): Remove wrong asm insn
37086         instead of transforming it into USE.
37087
37088 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
37089
37090         * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
37091         If HONOR_SNANS (SFmode) force the input to a register.
37092         (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
37093         (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
37094         an frsp or similar insn.
37095
37096 2017-02-17  Martin Liska  <mliska@suse.cz>
37097
37098         PR rtl-optimization/79577
37099         * params.def (selsched-max-sched-times): Increase minimum to 1.
37100
37101 2017-02-17  Martin Liska  <mliska@suse.cz>
37102
37103         PR rtl-optimization/79574
37104         * gcse.c (want_to_gcse_p): Prevent integer overflow.
37105
37106 2017-02-17  Martin Liska  <mliska@suse.cz>
37107
37108         PR tree-optimization/79529
37109         * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
37110         ssa_defined_default_def_p to handle cases which are implicitly
37111         defined.
37112         * tree-ssa.c (ssa_defined_default_def_p): New function.
37113         (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
37114         which are implicitly defined.
37115         * tree-ssa.h (ssa_defined_default_def_p): Declare.
37116
37117 2017-02-17  Richard Biener  <rguenther@suse.de>
37118
37119         PR middle-end/79576
37120         * params.def (max-ssa-name-query-depth): Limit to 10.
37121
37122 2017-02-17  Richard Biener  <rguenther@suse.de>
37123
37124         PR tree-optimization/79552
37125         * tree-ssa-structalias.c (visit_loadstore): Properly verify
37126         default defs.
37127
37128 2017-02-17  Richard Biener  <rguenther@suse.de>
37129
37130         PR bootstrap/79567
37131         * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
37132
37133 2017-02-17  Marek Polacek  <polacek@redhat.com>
37134
37135         PR middle-end/79536
37136         * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
37137         (fold_negate_expr): New wrapper.
37138
37139 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
37140
37141         * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
37142         Correct terminology and de-emphasize pre-standard behavior.
37143
37144 2017-02-16  Alan Modra  <amodra@gmail.com>
37145
37146         PR rtl-optimization/79286
37147         * ira.c (def_dominates_uses): New function.
37148         (update_equiv_regs): Don't create an equivalence for insns that
37149         may trap where the register def does not dominate the use.
37150
37151 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
37152
37153         PR rtl-optimization/78127
37154         * lra.c (lra): Call lra_eliminate before finish the loop after
37155         lra_constraint.
37156
37157 2017-02-16  Richard Biener  <rguenther@suse.de>
37158
37159         * graphite.h: Do not include isl/isl_val_gmp.h, instead include
37160         isl/isl_val.h.
37161         * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
37162         (gcc_expression_from_isl_expr_int): Use generic isl_val interface.
37163         * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
37164         (isl_val_int_from_wi): New function.
37165         (extract_affine_gmp): Rename to ...
37166         (extract_affine_wi): ... this, take a widest_int.
37167         (extract_affine_int): Just wrap extract_affine_wi.
37168         (add_param_constraints): Use isl_val_int_from_wi.
37169         (add_loop_constraints): Likewise, and extract_affine_wi.
37170
37171 2017-02-15  Jeff Law  <law@redhat.com>
37172
37173         PR middle-end/79521
37174         * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
37175         ira_init_register_move_cost_if_necessary.
37176
37177 2017-02-15  Martin Sebor  <msebor@redhat.com>
37178
37179         PR middle-end/32003
37180         * doc/invoke.texi (-fdump-final-insns): Replace option accidentally
37181         removed in a prior commit.
37182
37183 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
37184
37185         PR tree-optimization/79347
37186         * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
37187         counters during peeling.
37188
37189 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
37190
37191         * Makefile.in (site.exp): Remove "set ISLVER".
37192
37193 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
37194
37195         PR target/79487
37196         * real.c (real_from_integer): Call real_convert even for decimal.
37197
37198 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37199
37200         PR target/79421
37201         * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
37202
37203 2017-02-14  Andrew Pinski  <apinski@cavium.com>
37204
37205         * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
37206         cores and change the partno/implementer to be correct.
37207         (thunderx2t99p1): New core which replaces thunderx2t99 and still has
37208         the 'B" as the implementer.
37209         * config/aarch64/aarch64-tune.md: Regenerate.
37210
37211 2017-02-14  Carl Love  <cel@us.ibm.com>
37212
37213         * config/rs6000/rs6000.c: Add case statement entry to make the
37214         xvcvuxdsp built-in argument unsigned.
37215         * config/rs6000/vsx.md: Fix the source and return operand types so they
37216         match the instruction definitions from the ISA document.  Fix typo
37217         in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
37218         statement.
37219
37220 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
37221
37222         PR target/79282
37223         * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
37224         member early_clobber_alts.
37225         * lra-lives.c (reg_early_clobber_p): New.
37226         (process_bb_lives): Use it.
37227         * lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
37228         (debug_operand_data): Initialize early_clobber_alts.
37229         (setup_operand_alternative): Set up early_clobber_alts.
37230         (collect_non_operand_hard_regs): Ditto.  Pass early clobber
37231         alternatives to new_insn_reg.
37232         (add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
37233         it.
37234         (lra_update_insn_regno_info): Pass the new arg.
37235
37236 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37237
37238         PR middle-end/79505
37239         * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
37240         (new_oacc_loop_raw): Don't clear already cleared fields.
37241
37242         PR target/79481
37243         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
37244         _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
37245         _mm512_prefetch_i64gather_ps): New inline functions and macros.
37246
37247 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
37248
37249         PR target/79495
37250         * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
37251
37252 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
37253
37254         PR target/79498
37255         * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
37256         the extra instruction to the right place to store 128-bit constant
37257         when needed.
37258
37259 2017-02-14  Martin Sebor  <msebor@redhat.com>
37260
37261         PR middle-end/79448
37262         * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
37263           warning for strings of unknown length.
37264
37265 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
37266
37267         * config.gcc (supported_defaults) [powerpc*-*-*]: Update.
37268
37269 2017-02-14  Jeff Law  <law@redhat.com>
37270
37271         PR target/79404
37272         * ira-costs.c (scan_one_insn): Initialize register move costs
37273         for pseudos seen in USE/CLOBBER insns.
37274
37275         PR tree-optimization/79095
37276         * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
37277         if the numerator has the range ~[0,0] make the resultant range ~[0,0].
37278         (extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
37279         if the operands are known to be not equal, then the resulting range
37280         is ~[0,0].
37281         (intersect_ranges): If the new range is ~[0,0] and the old range is
37282         wide, then prefer ~[0,0].
37283         * tree-vrp.c (overflow_comparison_p_1): New function.
37284         (overflow_comparison_p): New function.
37285         * tree-vrp.c (register_edge_assert_for_2): Register additional asserts
37286         if NAME is used in an overflow test.
37287         (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
37288         overflow check that can be expressed as an equality test, then adjust
37289         ops to be that equality test.
37290
37291 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37292
37293         * config/s390/s390-builtin-types.def: Remove flags argument.
37294         * config/s390/s390.c (s390_init_builtins): Likewise.
37295
37296 2017-02-14  Martin Liska  <mliska@suse.cz>
37297
37298         * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
37299         vector.  Fix trailing white spaces.
37300
37301 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
37302
37303         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
37304         HFmode.
37305
37306 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37307
37308         PR rtl-optimization/68664
37309         * config/arm/arm.c (arm_sched_can_speculate_insn):
37310         New function.  Declare prototype.
37311         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37312
37313 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37314
37315         PR rtl-optimization/68664
37316         * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
37317         New function.
37318         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37319
37320 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
37321
37322         * config/i386/i386.c (znver1_cost): Fix the alignment for function and
37323         max skip bytes for function, loop and jump.
37324
37325 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37326
37327         * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
37328         ABS_EXPR for gimple dump.
37329
37330 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37331
37332         PR target/79462
37333         * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
37334
37335         PR tree-optimization/79408
37336         * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
37337         case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
37338         (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
37339         also if rhs1 is INTEGER_CST.
37340
37341 2017-02-14  Richard Biener  <rguenther@suse.de>
37342
37343         PR middle-end/79432
37344         * tree-into-ssa.c (insert_phi_nodes): When the function can
37345         have abnormal edges rewrite SSA names with broken use-def
37346         dominance out of SSA and register them for PHI insertion.
37347
37348 2017-02-13  Martin Sebor  <msebor@redhat.com>
37349
37350         PR middle-end/79496
37351         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
37352         clearing info.nowrite flag when snprintf size argument is a range.
37353
37354 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37355
37356         * cprop.c (cprop_jump): Add missing space in string literal.
37357         * tree-ssa-structalias.c (rewrite_constraints): Likewise.
37358         (get_constraint_for_component_ref): Likewise.
37359         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
37360         * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
37361         * lra-constraints.c (process_alt_operands): Likewise.
37362         * ipa-inline.c (inline_small_functions): Likewise.
37363         * tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
37364         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
37365         * trans-mem.c (diagnose_tm_1_op): Likewise.
37366         * omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
37367         (grid_parallel_clauses_gridifiable): Likewise.
37368
37369         * config/nvptx/mkoffload.c (process): Add space in between
37370         , and %d.
37371
37372         * config/i386/i386.h (REG_CLASS_NAMES): Add , in between
37373         "MOD4_SSE_REGS" and "ALL_REGS".
37374
37375         * spellcheck.c (test_data): Add , in between "foo" and "food".
37376
37377 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37378
37379         PR target/79449
37380         * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
37381         boundary crossing check and subsequent code generation agree.
37382
37383 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37384
37385         * config/aarch64/aarch64.c (has_memory_op): Delete.
37386         (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
37387         has_memory_op.
37388
37389 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37390
37391         PR rtl-optimization/79388
37392         PR rtl-optimization/79450
37393         * combine.c (distribute_notes): When removing TEM_INSN for which
37394         corresponding dest has last value recorded, invalidate that last
37395         value.
37396
37397 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37398
37399         * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
37400         of explicit '@'.  Add missing assembly comment marker on branch costs
37401         printout.
37402
37403 2017-02-13  Nathan Sidwell  <nathan@acm.org>
37404
37405         * gengtype-lex.l (<in_struct>): Add '/'.
37406
37407 2017-02-13  Martin Liska  <mliska@suse.cz>
37408
37409         PR c/79471
37410         * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
37411
37412 2017-02-13  Richard Biener  <rguenther@suse.de>
37413
37414         * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
37415         Remove.
37416         * configure: Re-generate.
37417         * config.in: Likewise.
37418         * graphite-dependences.c: Simplify as if
37419         HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
37420         * graphite-isl-ast-to-gimple.c: Likewise.
37421         * graphite-optimize-isl.c: Likewise.
37422         * graphite-poly.c: Likewise.
37423         * graphite-sese-to-poly.c: Likewise.
37424         * graphite.h: Likewise.
37425         * toplev.c: Include isl/version.h and use isl_version () for
37426         printing the ISL version.
37427         * doc/install.texi: Update ISL requirement.
37428
37429 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37430
37431         * doc/standards.texi (Standards): Update reference to
37432         Objective-C 2.0.
37433
37434 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37435
37436         * doc/extend.texi (Named Address Spaces): sourceware.org now
37437         defaults to https.
37438         * doc/install.texi (Binaries): Ditto.
37439         (Specific): Ditto.
37440
37441 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37442
37443         * doc/cpp.texi: Replace "stringify"/"stringification" with C
37444         standard terminology "stringize"/"stringizing" throughout.
37445         * doc/cppinternals.texi: Likewise.
37446
37447 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37448
37449         * doc/extend.texi: Fix some spelling mistakes and typos.
37450         * doc/invoke.texi: Likewise.
37451
37452 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37453
37454         PR ipa/79224
37455         * params.def (inline-min-speedup) Change from 10 to 8.
37456
37457 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37458
37459         * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
37460         4.5.
37461
37462 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37463
37464         PR ipa/79224
37465         * ipa-inline-analysis.c (get_minimal_bb): New function.
37466         (record_modified): Use it.
37467         (remap_edge_change_prob): Handle also ancestor functions.
37468
37469 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
37470
37471         * doc/contrib.texi (Contributors): Remove broken link into
37472         the Mauve CVS repository.
37473
37474 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37475
37476         PR middle-end/79454
37477         * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
37478         result computation whenever lhs doesn't have vector mode, not
37479         just when it has BLKmode.
37480
37481 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37482
37483         * doc/makefile.texi (profiledbootstrap): Refer to the
37484         installation instructions only in textual form.
37485
37486 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37487
37488         PR target/79295
37489         * config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
37490
37491 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37492
37493         * doc/install.texi (Specific): Use https for blackfin.uclinux.org.
37494         (Specific): Update mingw-w64 reference.
37495         (Binaries): Ditto.
37496         (Specific): Remove broken link to Renesas RX processor.
37497
37498 2017-02-10  Richard Biener  <rguenther@suse.de>
37499
37500         * toplev.c (process_options): Do not mention obsolete graphite
37501         options when printing sorry message about missing graphite support.
37502         Mention -floop-nest-optimize.
37503
37504 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
37505
37506         * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
37507         (vtst_p16): Likewise.
37508         (vtstq_p8): Likewise.
37509         (vtstq_p16): Likewise.
37510         (vtst_p64): New.
37511         (vtstq_p64): Likewise.
37512         * config/arm/arm_neon.h (vgetq_lane_p64): New.
37513         (vset_lane_p64): New.
37514         (vsetq_lane_p64): New.
37515
37516 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
37517
37518         PR tree-optimization/79411
37519         * tree-ssa-reassoc.c (is_reassociable_op): Return false if
37520         stmt operands are SSA_NAMEs used in abnormal phis.
37521         (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
37522         phis.
37523
37524 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37525
37526         PR ipa/70795
37527         * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
37528         flag if needed.
37529
37530 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37531
37532         * tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
37533
37534 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
37535
37536         * omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
37537         to avoid warning.
37538
37539         PR c/79413
37540         * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
37541         not arbitrary TREE_CONSTANT.
37542
37543         PR c/79431
37544         * gimplify.c (gimplify_adjust_omp_clauses): Ignore
37545         "omp declare target link" attribute unless is_global_var.
37546         * omp-offload.c (find_link_var_op): Likewise.
37547
37548 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
37549             Chung-Lin Tang  <cltang@codesourcery.com>
37550
37551         * gimplify.c (gimplify_scan_omp_clauses): No special handling for
37552         OMP_CLAUSE_TILE.
37553         (gimplify_adjust_omp_clauses): Don't delete TILE.
37554         (gimplify_omp_for): Deal with TILE.
37555         * internal-fn.c (expand_GOACC_TILE): New function.
37556         * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
37557         (GOACC_TILE): New.
37558         * omp-expand.c (struct oacc_collapse): Add tile and outer fields.
37559         (expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
37560         element fields.
37561         (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
37562         avoid DIV for outermost collapse var.
37563         (expand_oacc_for): Insert tile element loop as needed.  Adjust.
37564         Remove out of date comments, fix whitespace.
37565         * omp-general.c (omp_extract_for_data): Deal with tiling.
37566         * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
37567         adjust OLF_DIM_BASE value.
37568         (struct omp_for_data): Add tiling field.
37569         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
37570         (lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
37571         for auto loops.  Remove default auto determining, moved to
37572         oacc_loop_fixed_partitions.
37573         * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
37574         stmts, add e_mask field.
37575         (oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
37576         (oacc_thread_numbers): Use oacc_dim_call.
37577         (oacc_xform_tile): New.
37578         (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
37579         (finish_oacc_loop): Adjust for ifns vector.
37580         (oacc_loop_discover_walk): Append loop abstraction sites to list,
37581         add case for GOACC_TILE fns.
37582         (oacc_loop_xform_loop): Delete.
37583         (oacc_loop_process): Iterate over call list directly, and add
37584         handling for GOACC_TILE fns.
37585         (oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
37586         dump partitioning.
37587         (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
37588         vector partitioning to outer loops.  Assign 2 partitions to loops
37589         when available. Add TILE handling.
37590         (oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
37591         (execite_oacc_device_lower): Process GOACC_TILE fns,
37592         ignore unknown specs.
37593         * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
37594         * tree.c (omp_clause_num_ops): Adjust TILE ops.
37595         * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
37596
37597 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
37598
37599         * configure.ac (ACX_BUGURL): Update.
37600         * configure: Regenerate.
37601
37602 2017-02-09  Richard Biener  <rguenther@suse.de>
37603
37604         PR tree-optimization/69823
37605         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
37606         Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
37607
37608 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37609
37610         * config/arc/arc-c.def: Add __NPS400__ definition.
37611         * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
37612         (TARGET_NPS400): Define.
37613
37614 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37615
37616         * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
37617         file.
37618         (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
37619         pointer, arch_info.
37620         (arc_cpu_types): Fill the arch_info field with a pointer into the
37621         arc_arch_types table.
37622         (arc_selected_cpu): Declare.
37623         * config/arc/arc.c (arc_selected_cpu): Make global.
37624         (arc_selected_arch): Delete.
37625         (arc_base_cpu): Delete.
37626         (arc_override_options): Remove references to deleted variables,
37627         update access to arch information.
37628         (ARC_OPT): Update access to arch information.
37629         (ARC_OPTX): Likewise.
37630         * config/arc/arc.h (arc_base_cpu): Remove declaration.
37631         (TARGET_ARC600): Update access to arch information.
37632         (TARGET_ARC601): Likewise.
37633         (TARGET_ARC700): Likewise.
37634         (TARGET_EM): Likewise.
37635         (TARGET_HS): Likewise.
37636         * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
37637         information.
37638
37639 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
37640
37641         PR target/78604
37642         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
37643         condition/operands for integer GE/LE/GEU/LEU operations.
37644
37645 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
37646
37647         PR translation/79397
37648         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
37649         of AltiVec.
37650
37651 2017-02-08  Martin Jambor  <mjambor@suse.cz>
37652
37653         PR ipa/79375
37654         * ipa-prop.c (ipa_alloc_node_params): Make static, return bool
37655         whether allocation happened.
37656         (ipa_initialize_node_params): Do not call ipa_alloc_node_params if
37657         nothing was allocated.
37658
37659 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
37660
37661         PR tree-optimization/79408
37662         * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
37663         constant, but SSA_NAME with a known integer range, use the minimum
37664         of that range instead of op1 to determine if modulo can be replaced
37665         with its first operand.
37666
37667 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37668
37669         * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
37670
37671 2017-02-08  Richard Biener  <rguenther@suse.de>
37672
37673         PR tree-optimization/71824
37674         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
37675         Check all loops contained in the merged region.
37676
37677 2017-02-07  Andrew Pinski  <apinski@cavium.com>
37678
37679         * config/aarch64/aarch64.md (popcount<mode>2): New pattern.
37680
37681 2017-02-07  Andrew Pinski  <apinski@cavium.com>
37682
37683         * config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
37684         (thunderxt88): Likewise.
37685         (thunderxt81): Disable LSE and change v8.1 to v8.
37686         (thunderxt83): Likewise.
37687
37688 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
37689             Richard Biener  <rguenther@suse.de>
37690
37691         PR middle-end/79399
37692         * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
37693         type from int to size_t.
37694         * ira-costs.c (struct_costs_size): Change type from int to size_t.
37695
37696 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
37697
37698         PR rtl-optimization/79386
37699         * cprop.c (bypass_conditional_jumps): Initialize
37700         bypass_last_basic_block already before splitting bbs after
37701         unconditional traps...
37702         (bypass_conditional_jumps): ... rather than here.
37703
37704         PR target/79299
37705         * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
37706         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
37707         *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
37708         fix -masm=intel patterns.
37709
37710 2017-02-07  Richard Biener  <rguenther@suse.de>
37711
37712         PR tree-optimization/79256
37713         PR middle-end/79278
37714         * builtins.c (get_object_alignment_2): Use min_align_of_type
37715         to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
37716         and ADJUST_FIELD_ALIGN.
37717
37718         * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
37719         type parameter.
37720         * doc/tm.texi: Regenerate.
37721         * stor-layout.c (layout_decl): Adjust.
37722         (update_alignment_for_field): Likewise.
37723         (place_field): Likewise.
37724         (min_align_of_type): Likewise.
37725         * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
37726         * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
37727         * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
37728         * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
37729         * config/frv/frv.c (frv_adjust_field_align): Likewise.
37730         * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
37731         * config/i386/i386.c (x86_field_alignment): Likewise.
37732         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
37733         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
37734         * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
37735         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
37736         * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
37737         * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
37738          Likewise.
37739
37740         Revert
37741         2017-01-30  Richard Biener  <rguenther@suse.de>
37742
37743         PR tree-optimization/79256
37744         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
37745         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
37746         alignment on TYPE.
37747
37748 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
37749
37750         * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
37751         argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
37752         builtins to SImode and emit a zero-extend, if necessary.
37753
37754 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37755
37756         * docs/invoke.texi (RISC-V Options): Alphabetize.
37757
37758 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37759
37760         * doc/invoke.texi (RISC-V Options): Use two spaces to separate
37761         options.
37762
37763 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37764
37765         * config/riscv/riscv.c: New file.
37766         * common/config/riscv/riscv-common.c: Likewise.
37767         * config.gcc: Likewise.
37768         * config/riscv/constraints.md: Likewise.
37769         * config/riscv/elf.h: Likewise.
37770         * config/riscv/generic.md: Likewise.
37771         * config/riscv/linux.h: Likewise.
37772         * config/riscv/multilib-generator: Likewise.
37773         * config/riscv/peephole.md: Likewise.
37774         * config/riscv/pic.md: Likewise.
37775         * config/riscv/predicates.md: Likewise.
37776         * config/riscv/riscv-builtins.c: Likewise.
37777         * config/riscv/riscv-c.c: Likewise.
37778         * config/riscv/riscv-ftypes.def: Likewise.
37779         * config/riscv/riscv-modes.def: Likewise.
37780         * config/riscv/riscv-opts.h: Likewise.
37781         * config/riscv/riscv-protos.h: Likewise.
37782         * config/riscv/riscv.h: Likewise.
37783         * config/riscv/riscv.md: Likewise.
37784         * config/riscv/riscv.opt: Likewise.
37785         * config/riscv/sync.md: Likewise.
37786         * config/riscv/t-elf-multilib: Likewise.
37787         * config/riscv/t-linux: Likewise.
37788         * config/riscv/t-linux-multilib: Likewise.
37789         * config/riscv/t-riscv: Likewise.
37790         * configure.ac: Likewise.
37791         * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
37792         Waterman as RISC-V maintainers.
37793         * doc/install.texi: Add RISC-V entries.
37794         * doc/invoke.texi: Add RISC-V options section.
37795         * doc/md.texi: Add RISC-V constraints section.
37796         * configure: Regenerated.
37797
37798 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
37799
37800         PR target/66144
37801         * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
37802         false values to be constant vectors with all 0 or all 1 bits set.
37803         (vcondu<mode><mode>): Likewise.
37804         * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
37805         predicate.
37806         (fpmask_comparison_operator): Update comment.
37807         (vecint_comparison_operator): New predicate.
37808         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
37809         vector conditionals when the true and false values are constant
37810         vectors with all 0 bits or all 1 bits set.
37811
37812 2017-02-06  Martin Sebor  <msebor@redhat.com>
37813
37814         PR  tree-optimization/79376
37815         * gimple-fold.c (get_range_strlen): Set the minimum length to zero.
37816
37817 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
37818
37819         * config/i386/sse.md (vector modes -> vec_extract* splitter): Use
37820         explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
37821         to simplify split condition.
37822
37823 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37824
37825         * omp-expand.c (oxpand_omp_atomic_fetch_op,
37826         expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
37827         false.
37828
37829 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
37830
37831         PR rtl-optimization/68664
37832         * target.def (can_speculate_insn): New hook.
37833         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
37834         * doc/tm.texi: Regenerate.
37835         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
37836         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
37837         (rs6000_sched_can_speculate_insn): New function.
37838
37839 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37840
37841         PR tree-optimization/79284
37842         * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
37843         * tree-vect-stmts.c (vect_get_vec_def_for_operand,
37844         vectorizable_mask_load_store, vectorizable_operation,
37845         vect_is_simple_cond, get_same_sized_vectype): Use it instead
37846         of comparing TREE_CODE of a type against BOOLEAN_TYPE.
37847         * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
37848         vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
37849         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
37850         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
37851         Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
37852         is_gimple_assign (stmt).  Replace another such test with
37853         is_gimple_assign (stmt).
37854
37855 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37856
37857         PR target/78883
37858         * config/avr/avr.c (rtl-iter.h): Include it.
37859         (TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
37860         (avr_legitimate_combined_insn): ...and implementation.
37861
37862 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37863
37864         * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
37865         * config/s390/s390.c (s390_const_operand_ok)
37866         (s390_canonicalize_comparison, s390_extract_part)
37867         (s390_single_part, s390_contiguous_bitmask_nowrap_p)
37868         (s390_contiguous_bitmask_p, s390_rtx_costs)
37869         (legitimize_pic_address): Likewise.
37870         * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
37871         * config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
37872         ("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
37873         ("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
37874         * config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
37875
37876 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37877
37878         * config/avr/avr.md (*addhi3_zero_extend): Add alternative where
37879         REGNO($0) == REGNO($1).
37880
37881 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37882
37883         * config/s390/linux.h(SIZE_TYPE): Add comment.
37884
37885 2017-02-06  Julian Brown  <julian@codesourcery.com>
37886             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
37887             Virendra Pathak  <virendra.pathak@broadcom.com>
37888
37889         * config/aarch64/aarch64-cores.def: Change the scheduler
37890         to Thunderx2t99.
37891         * config/aarch64/aarch64.md: Include thunderx2t99.md.
37892         * config/aarch64/thunderx2t99.md: New file.
37893
37894 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37895
37896         * doc/standards.texi (Go Language): Update link to language
37897         standard.
37898
37899 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37900
37901         * tree-eh.c (lower_resx): Sanitize profile.
37902         (cleanup_empty_eh_move_lp): Likewise.
37903
37904 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37905
37906         PR tree-ssa/79347
37907         * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
37908         ELSE_PROB.
37909         * cfgloopmanip.h (loop_version): Update prototype.
37910         * modulo-sched.c (sms_schedule): Update call of loop_version.
37911         * tree-if-conv.c(version_loop_for_if_conversion): Likewise.
37912         * tree-parloops.c (gen_parallel_loop): Likewise.
37913         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
37914         * tree-ssa-loop-split.c (split_loop): Likewise.
37915         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
37916         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
37917
37918 2017-02-05  Martin Liska  <mliska@suse.cz>
37919
37920         PR bootstrap/78985
37921         * config/s390/s390.c (s390_gimplify_va_arg): Initialize local
37922         variable to NULL.
37923         (print_operand_address): Initialize a struct to zero.
37924
37925 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37926
37927         * doc/contrib.texi (Contributors): Refer to Hans Boehm's
37928         garbage collector only in textual form.
37929
37930 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37931
37932         * doc/extend.texi (x86 specific memory model extensions for
37933         transactional memory): Simplify a phrase.
37934
37935 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
37936
37937         PR target/79353
37938         * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
37939         'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
37940         (atomic_storedi_1): Likewise.
37941
37942 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
37943
37944         PR tree-optimization/79338
37945         * tree-parloops.c (gather_scalar_reductions): Don't call
37946         vect_analyze_loop_form for loop->inner before destroying loop's
37947         loop_vinfo.
37948
37949 2017-02-03  Martin Sebor  <msebor@redhat.com>
37950
37951         PR tree-optimization/79327
37952         * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
37953         when precision has resulted in leading zeros.
37954         (format_integer): Adjust the likely counter to assume an unknown
37955         argument that may be zero is non-zero.
37956
37957 2017-02-03  Jason Merrill  <jason@redhat.com>
37958
37959         PR c++/78689
37960         * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
37961         avoid copying non-taken branch.
37962
37963 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37964
37965         PR tree-optimization/79340
37966         * tree-vect-loop.c (vectorizable_reduction): Release
37967         vec_defs elements after safe_splicing them into other vectors.
37968         Formatting fixes.
37969
37970         PR tree-optimization/79327
37971         * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
37972         true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
37973         dirtype.
37974         (format_integer): Use wide_int_to_tree instead of build_int_cst
37975         + to_?hwi.  If argmin is NULL, just set argmin and argmax to
37976         TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
37977         of shortest and longest sequence.
37978
37979 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
37980
37981         * config/i386/i386.c (dimode_scalar_chain::convert_reg):
37982         Use pextrd for TARGET_SSE4_1 when creating scalar copy.
37983
37984 2017-02-03  Walter Lee  <walt@tilera.com>
37985
37986         PR target/78862
37987         * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
37988         after initial stackframe link reg save.
37989         * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
37990
37991 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37992
37993         PR target/79354
37994         * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
37995         wu for stxssp alternative.
37996
37997 2017-02-03  Martin Sebor  <msebor@redhat.com>
37998
37999         PR tree-optimization/79352
38000         * gimple-fold.c (get_range_strlen): Add argument.
38001         (get_range_strlen): Change return type to bool.
38002         (get_maxval_strlen): Pass in a dummy argument.
38003         * gimple-fold.h (get_range_strlen): Change return type to bool.
38004         * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
38005         * tree.h (array_at_struct_end_p): Add argument.
38006         * tree.c (array_at_struct_end_p): Handle it.
38007
38008 2017-02-03  Martin Liska  <mliska@suse.cz>
38009
38010         PR lto/66295
38011         * multiple_target.c (create_dispatcher_calls): Redirect edge
38012         from a caller of a dispatcher.
38013         (expand_target_clones): Make the clones local.
38014         (ipa_target_clone): Do both target clones and resolvers.
38015         (ipa_dispatcher_calls): Remove the pass.
38016         (pass_dispatcher_calls::gate): Likewise.
38017         (make_pass_dispatcher_calls): Likewise.
38018         * passes.def (pass_target_clone): Put as very first IPA early
38019         pass.
38020
38021 2017-02-03  Martin Liska  <mliska@suse.cz>
38022
38023         * symtab.c (symtab_node::binds_to_current_def_p): Bail out
38024         in case of a function with ifunc attribute.
38025
38026 2017-02-03  Martin Liska  <mliska@suse.cz>
38027
38028         * cgraph.c (cgraph_node::dump): Dump function version info.
38029         * symtab.c (symtab_node::dump_base): Add missing new line.
38030
38031 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38032
38033         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
38034         (ifcombine_ifandif): Use it.
38035
38036 2017-02-03  Martin Liska  <mliska@suse.cz>
38037
38038         * doc/invoke.texi: Document default value for
38039         use-after-scope-direct-emission-threshold.
38040
38041 2017-02-03  Martin Liska  <mliska@suse.cz>
38042
38043         PR tree-optimization/79339
38044         * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
38045         (format_floating): Likewise.
38046
38047 2017-02-03  Martin Liska  <mliska@suse.cz>
38048
38049         PR ipa/79337
38050         * ipa-prop.c (ipa_node_params_t::insert): Remove current
38051         implementation.
38052         (ipa_node_params_t::remove): Likewise.
38053         * ipa-prop.h (ipa_node_params::ipa_node_params): Make default
38054         initialization from removed ipa_node_params_t::insert.
38055         (ipa_node_params::~ipa_node_params): Move from removed
38056         ipa_node_params_t::release.
38057         * symbol-summary.h (symbol_summary::m_released): New member.
38058         Do not release a summary twice.  Do not allow to call finalizer
38059         for types of a summary that live in GGC memory.
38060
38061 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
38062
38063         * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
38064         cmp_branch fusion.
38065
38066 2017-02-02  Martin Sebor  <msebor@redhat.com>
38067
38068         PR middle-end/79275
38069         * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
38070         (format_string): Tighten up the range of output for non-constant
38071         strings and correct the expected range for wide non-constant strings.
38072
38073 2017-02-02  Martin Sebor  <msebor@redhat.com>
38074
38075         * doc/invoke.texi (-maccumulate-args): Fix bad grammar.
38076
38077         PR middle-end/32003
38078         * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
38079         index.
38080         (-fdump-tree-@var): Add to index and document how to come up
38081         with pass-specific option and dump file names.
38082         (-fdump-passes): Clarify where to look for output.
38083
38084 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38085
38086         PR middle-end/77445
38087         * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
38088         statistics of the analyzed path; allow threading for speed when
38089         any of BBs along the path are optimized for speed.
38090
38091 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
38092
38093         PR middle-end/78468
38094         * emit-rtl.c (init_emit): Add ??? comment for problematic alignment
38095         settings of the virtual registers.
38096
38097         Revert again
38098         2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38099
38100         * explow.c (get_dynamic_stack_size): Take known alignment of stack
38101         pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
38102         needed.
38103
38104 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38105
38106         * config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
38107         ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
38108
38109 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38110
38111         * config/s390/s390.md: Add missing comments with the expanded
38112         mnemonics.
38113         * config/s390/vector.md: Likewise.
38114         * config/s390/vx-builtins.md: Likewise.
38115
38116 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
38117
38118         PR target/79197
38119         * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
38120         (fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
38121         conditions on a single line.
38122
38123 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38124
38125         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38126         __S390_VX__ to __VX__.
38127
38128 2017-02-01  Andrew Pinski  <apinski@cavium.com>
38129
38130         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
38131         stmt_info to record_stmt_cost.
38132         (vect_get_known_peeling_cost): Pass stmt_info if known to
38133         record_stmt_cost.
38134         * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
38135         cpu_vector_cost field into
38136         scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
38137         field into vec_int_stmt_cost and vec_fp_stmt_cost.
38138         * config/aarch64/aarch64.c (generic_vector_cost): Update for the
38139         splitting of scalar_stmt_cost and vec_stmt_cost.
38140         (thunderx_vector_cost): Likewise.
38141         (cortexa57_vector_cost): LIkewise.
38142         (exynosm1_vector_cost): Likewise.
38143         (xgene1_vector_cost): Likewise.
38144         (thunderx2t99_vector_cost): Improve after the splitting of the two
38145         fields.
38146         (aarch64_builtin_vectorization_cost): Update for the splitting of
38147         scalar_stmt_cost and vec_stmt_cost.
38148
38149 2017-02-01  Torvald Riegel  <triegel@redhat.com>
38150             Richard Henderson  <rth@redhat.com>
38151
38152         * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
38153         conditional on existance of a fast atomic load.
38154         * optabs-query.c (can_atomic_load_p): New function.
38155         * optabs-query.h (can_atomic_load_p): Declare it.
38156         * optabs.c (expand_atomic_exchange): Always delegate to libatomic if
38157         no fast atomic load is available for the particular size of access.
38158         (expand_atomic_compare_and_swap): Likewise.
38159         (expand_atomic_load): Likewise.
38160         (expand_atomic_store): Likewise.
38161         (expand_atomic_fetch_op): Likewise.
38162         * testsuite/lib/target-supports.exp
38163         (check_effective_target_sync_int_128): Remove x86 because it provides
38164         no fast atomic load.
38165         (check_effective_target_sync_int_128_runtime): Likewise.
38166
38167 2017-02-01  Richard Biener  <rguenther@suse.de>
38168
38169         * graphite.c: Include tree-vectorizer.h for find_loop_location.
38170         (graphite_transform_loops): Provide opt-info for optimized nests.
38171         * tree-parloop.c (parallelize_loops): Provide opt-info for
38172         parallelized loops.
38173
38174 2017-02-01  Richard Biener  <rguenther@suse.de>
38175
38176         PR middle-end/79315
38177         * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
38178         was not set before.
38179
38180 2017-02-01  Richard Biener  <rguenther@suse.de>
38181
38182         PR tree-optimization/71824
38183         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38184         Verify the loops are valid in the merged SESE region.
38185         (scop_detection::can_represent_loop_1): Check analyzing the
38186         evolution of the number of iterations in the region succeeds.
38187
38188 2017-01-31  Ian Lance Taylor  <iant@golang.org>
38189
38190         * config/i386/i386.c (ix86_expand_split_stack_prologue): Add
38191         REG_ARGS_SIZE note to 32-bit push insns and call insn.
38192
38193 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
38194
38195         PR preprocessor/79210
38196         * input.c (get_substring_ranges_for_loc): Replace line_width
38197         assertion with error-handling.
38198
38199 2017-01-31  Richard Biener  <rguenther@suse.de>
38200
38201         PR tree-optimization/77318
38202         * graphite-sese-to-poly.c (extract_affine): Fix assert.
38203         (create_pw_aff_from_tree): Take loop parameter.
38204         (add_condition_to_pbb): Pass loop of the condition to
38205         create_pw_aff_from_tree.
38206
38207 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38208
38209         * config/s390/s390.c (s390_asan_shadow_offset): New function.
38210         (TARGET_ASAN_SHADOW_OFFSET): Redefine.
38211
38212 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
38213
38214         PR target/78597
38215         PR target/79038
38216         * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
38217         no longer used.
38218         (convert_int_to_float128): Likewise.
38219         * config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
38220         (convert_int_to_float128): Likewise.
38221         * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
38222         (UNSPEC_IEEE128_CONVERT): Likewise.
38223         (floatsi<mode>2, FLOAT128 iterator): Bypass calling
38224         rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
38225         Use local variables for IBM extended format.
38226         (fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
38227         (fix_trunc<mode>si2_fprs): Likewise.
38228         (fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
38229         (floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
38230         (fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
38231         to know that we can now have integers of all sizes in vector
38232         registers.
38233         (fix<uns>_<mode>di2_hw): Likewise.
38234         (float<uns>_<mode>si2_hw): Likewise.
38235         (fix_<mode>si2_hw): Likewise.
38236         (fixuns_<mode>si2_hw): Likewise.
38237         (float<uns>_<mode>di2_hw): Likewise.
38238         (float_<mode>di2_hw): Likewise.
38239         (float_<mode>si2_hw): Likewise.
38240         (floatuns_<mode>di2_hw): Likewise.
38241         (floatuns_<mode>si2_hw): Likewise.
38242         (xscvqp<su>wz_<mode>): Delete, no longer used.
38243         (xscvqp<su>dz_<mode>): Likewise.
38244         (xscv<su>dqp_<mode>): Likewise.
38245         (ieee128_mfvsrd_64bit): Likewise.
38246         (ieee128_mfvsrd_32bit): Likewise.
38247         (ieee128_mfvsrwz): Likewise.
38248         (ieee128_mtvsrw): Likewise.
38249         (ieee128_mtvsrd_64bit): Likewise.
38250         (ieee128_mtvsrd_32bit): Likewise.
38251
38252 2017-01-31  Martin Liska  <mliska@suse.cz>
38253
38254         PR ipa/79285
38255         * ipa-prop.c (ipa_free_all_node_params): Call release method
38256         instead of ~sumbol_summary to not to trigger double times
38257         dtor of hash_map.
38258
38259 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
38260
38261         PR tree-optimization/71691
38262         * bitmap.h (class auto_bitmap): New.
38263         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
38264         is_maybe_undefined instead of ssa_undefined_value_p.
38265
38266 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38267
38268         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38269         __S390_ARCH_LEVEL__ to __ARCH__.
38270
38271 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38272
38273         PR tree-optimization/79267
38274         * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
38275         if should_remove_lhs_p is true.
38276
38277 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
38278
38279         PR debug/63238
38280         * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
38281         (add_alignment_attribute): New.
38282         (base_type_die): Add alignment attribute.
38283         (subrange_type_die): Likewise.
38284         (modified_type_die): Likewise.
38285         (gen_array_type_die): Likewise.
38286         (gen_descr_array_type_die: Likewise.
38287         (gen_enumeration_type_die): Likewise.
38288         (gen_subprogram_die): Likewise.
38289         (gen_variable_die): Likewise.
38290         (gen_field_die): Likewise.
38291         (gen_ptr_to_mbr_type_die): Likewise.
38292         (gen_struct_or_union_type_die): Likewise.
38293         (gen_subroutine_type_die): Likewise.
38294         (gen_typedef_die): Likewise.
38295         (base_type_cmp): Compare alignment attribute.
38296
38297 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
38298
38299         PR target/79170
38300         * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
38301         (setb_unsigned) New pattern for setb with CCUNS.
38302         * config/rs6000/rs6000.c (expand_block_compare): Use a different
38303         subfc./subfe sequence to avoid overflow problems.  Generate a
38304         shorter sequence with cmpld/setb for power9.
38305         * config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
38306         for generating subfc. instruction.
38307         (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
38308         now uses this instruction.
38309
38310 2017-01-30  Ian Lance Taylor  <iant@google.com>
38311
38312         PR debug/79289
38313         * dwarf2out.c (gen_type_die_with_usage): When picking a variant
38314         for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
38315
38316 2017-01-30  Martin Sebor  <msebor@redhat.com>
38317
38318         * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
38319         Move constant to the right of a relational operator.
38320         (get_mpfr_format_length, format_character, format_string): Ditto.
38321         (should_warn_p, maybe_warn): Same.
38322
38323         * doc/invoke.texi (-Wformat-truncation=1): Fix typo.
38324
38325 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
38326
38327         PR lto/79061
38328         * asan.c (get_translation_unit_decl): Remove function.
38329         (asan_add_global): Force has_dynamic_init to zero in LTO mode.
38330
38331 2017-01-30  Martin Liska  <mliska@suse.cz>
38332
38333         PR gcov-profile/79259
38334         * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
38335         -fprofile-generate.
38336
38337 2017-01-30  Martin Liska  <mliska@suse.cz>
38338
38339         PR bootstrap/78985
38340         * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
38341         Initialize variables with NULL value.
38342
38343 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
38344
38345         PR target/79260
38346         * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
38347         tm_p_file.
38348         * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
38349
38350 2017-01-30  Richard Biener  <rguenther@suse.de>
38351
38352         PR tree-optimization/79276
38353         * tree-vrp.c (process_assert_insertions): Properly adjust common
38354         when removing a duplicate.
38355
38356 2017-01-30  Richard Biener  <rguenther@suse.de>
38357
38358         PR tree-optimization/79256
38359         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38360         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38361         alignment on TYPE.
38362         * tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
38363
38364 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38365
38366         PR target/79240
38367         * config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
38368         ("*r<noxa>sbg_<mode>_sll_bitmask")
38369         ("*extzv_<mode>_srl<clobbercc_or_nocc>")
38370         ("*extzv_<mode>_sll<clobbercc_or_nocc>"):
38371         Use contiguous_bitmask_nowrap_operand.
38372
38373 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38374
38375         PR target/79268
38376         * config/rs6000/altivec.h (vec_xl): Revise #define.
38377         (vec_xst): Likewise.
38378
38379 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
38380
38381         * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
38382
38383 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
38384
38385         PR rtl-optimization/79194
38386         * cprop.c (one_cprop_pass): Move deletion of code after unconditional
38387         traps before call to bypass_conditional_jumps.
38388
38389 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38390
38391         PR tree-optimization/71374
38392         * lra-constraints.c (check_conflict_input_operands): New.
38393         (match_reload): Use it.
38394
38395 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38396
38397         PR target/79131
38398         * lra-assigns.c (find_hard_regno_for_1): Take endianess for into
38399         account to calculate conflict_set.
38400
38401 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
38402
38403         PR rtl-optimization/78559
38404         * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
38405         other_insn in combine.
38406
38407 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
38408
38409         * builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
38410         uint16_type_node for BT_UINT16.
38411
38412 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
38413
38414         * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
38415         "RTL Tests" to menu.
38416         (GIMPLE Tests): New node.
38417         (RTL Tests): New node.
38418
38419 2017-01-27  Richard Biener  <rguenther@suse.de>
38420
38421         PR tree-optimization/79245
38422         * tree-loop-distribution.c (distribute_loop): Apply cost
38423         modeling also to detected patterns.
38424
38425 2017-01-27  Richard Biener  <rguenther@suse.de>
38426
38427         PR tree-optimization/71433
38428         * tree-vrp.c (register_new_assert_for): Revert earlier changes.
38429         (compare_assert_loc): New function.
38430         (process_assert_insertions): Sort and optimize assert locations
38431         to remove duplicates and push down identical assertions on
38432         edges to their destination block.
38433
38434 2017-01-27  Richard Biener  <rguenther@suse.de>
38435
38436         PR tree-optimization/79244
38437         * tree-vrp.c (remove_range_assertions): Forcefully propagate
38438         out SSA names even if abnormal.
38439
38440 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
38441
38442         * realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
38443         * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
38444         instead of MPFR_RNDN.
38445
38446 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
38447
38448         PR target/79239
38449         * arm.c (arm_option_override): Don't call build_target_option_node
38450         until after doing all option overrides.
38451         (arm_valid_target_attribute_tree): Likewise.
38452
38453 2017-01-27  Martin Liska  <mliska@suse.cz>
38454
38455         * doc/invoke.texi (-fprofile-arcs): Document profiling support
38456         for {cd}tors and C++ {cd}tors.
38457
38458 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38459
38460         * config/s390/s390.md ("*setmem_long_and")
38461         ("*setmem_long_and_31z"): Use zero_extend instead of and.
38462
38463 2017-01-26  Martin Sebor  <msebor@redhat.com>
38464
38465         * gimple-ssa-sprintf.c (format_floating): Simplify the computation
38466         of precision.
38467
38468 2017-01-26  Martin Sebor  <msebor@redhat.com>
38469
38470         * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
38471         HAVE_DFmode before using XFmode or DFmode.
38472         (parse_directive): Avoid using the z length modifier to avoid
38473         the ISO C++98 does not support the â€˜z’ gnu_printf length modifier.
38474
38475         PR middle-end/78703
38476         * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
38477         to accept adjustment as an array.
38478         (get_int_range): New function.
38479         (struct directive): Make width and prec arrays.
38480         (directive::set_width, directive::set_precision): Call get_int_range.
38481         (format_integer, format_floating): Handle width and precision ranges.
38482         (format_string, parse_directive): Same.
38483
38484 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38485
38486         PR debug/79129
38487         * dwarf2out.c (generate_skeleton_bottom_up): For children with
38488         comdat_type_p set, just clone them, but keep the children in the
38489         original DIE.
38490
38491         PR debug/78835
38492         * dwarf2out.c (prune_unused_types): Mark all functions with DIEs
38493         which have direct callers with -fvar-tracking-assignments enabled
38494         in the current TU.
38495         (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
38496         inside of type units.
38497
38498 2017-01-26  Martin Sebor  <msebor@redhat.com>
38499
38500         PR middle-end/78703
38501         * gimple-ssa-sprintf.c (struct result_range): Add likely and
38502         unlikely counters.
38503         (struct format_result): Replace number_chars, number_chars_min,
38504         and number_chars_max with a single member of struct result_range.
38505         Remove bounded.
38506         (format_result::operator+=): Adjust.
38507         (struct fmtresult): Remove bounded.  Handle likely and unlikely
38508         counters.
38509         (fmtresult::adjust_for_width_or_precision): New function.
38510         (fmtresult:type_max_digits): New function.
38511         (bytes_remaining): Handle likely and unlikely counters.
38512         (min_bytes_remaining): Remove.
38513         (format_percent): Simplify.
38514         (format_integer, format_floating): Set likely and unlikely counters.
38515         (get_string_length, format_character, format_string): Same.
38516         (format_plain, should_warn_p): New function.
38517         (maybe_warn): Call should_warn_p.  Update diagnostic messages
38518         and handle those for all directives, including plain strings.
38519         (format_directive): Handle likely and unlikely counters.
38520         Remove unnecessary quoting from diagnostics.  Add an informational
38521         note.
38522         (add_bytes): Remove.
38523         (pass_sprintf_length::compute_format_length): Simplify.
38524         (try_substitute_return_value): Handle likely and unlikely counters.
38525
38526 2017-01-26  Carl Love  <cel@us.ibm.com>
38527
38528         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
38529         bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
38530
38531 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
38532
38533         PR target/79131
38534         * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
38535         endianess for subregs into account.
38536         * lra-constraints.c (lra_constraints): Do risky transformations
38537         always on the first iteration.
38538         * lra-lives.c (check_pseudos_live_through_calls): Add arg
38539         last_call_used_reg_set.
38540         (process_bb_lives): Define and use last_call_used_reg_set.
38541         * lra.c (lra): Always continue after lra_constraints on the first
38542         iteration.
38543
38544 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
38545
38546         * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
38547         constant.
38548         * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
38549
38550 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38551
38552         * config/i386/avx512fintrin.h (_ktest_mask16_u8,
38553         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
38554         * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
38555         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
38556         * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
38557         __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
38558         OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
38559         * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
38560         (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
38561
38562 2017-01-26  Marek Polacek  <polacek@redhat.com>
38563
38564         PR c/79199
38565         * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
38566         for the third operand.
38567
38568 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38569
38570         PR middle-end/79236
38571         * omp-low.c (struct omp_context): Add simt_stmt field.
38572         (scan_omp_for): Return omp_context *.
38573         (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
38574         context to the _simt_ SIMD stmt.
38575         (lower_omp_for): For combined SIMD with sibling _simt_
38576         SIMD, make sure to use the same decls in _looptemp_
38577         clauses as in the sibling.
38578
38579 2017-01-26  David Sherwood  <david.sherwood@arm.com>
38580
38581         PR middle-end/79212
38582         * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
38583         all contexts.
38584
38585 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38586
38587         PR target/70465
38588         * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
38589         emit fld b; fld a; if possible.
38590
38591         * brig-builtins.def: Update copyright years.
38592         * config/arm/arm_acle_builtins.def: Update copyright years.
38593
38594 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
38595
38596         PR target/79179
38597         * config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
38598         constraint instead of o for the stxsd instruction.
38599
38600 2017-01-25  Carl Love  <cel@us.ibm.com>
38601
38602         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
38603         of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
38604
38605 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
38606
38607         * doc/invoke.texi (C++ Dialect Options): Fix typo.
38608
38609 2017-01-25  Richard Biener  <rguenther@suse.de>
38610
38611         PR tree-optimization/69264
38612         * target.def (vector_alignment_reachable): Improve documentation.
38613         * doc/tm.texi: Regenerate.
38614         * targhooks.c (default_builtin_vector_alignment_reachable): Simplify
38615         and add a comment.
38616         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
38617         earlier changes with respect to TYPE_USER_ALIGN.
38618         (vector_alignment_reachable_p): Likewise.  Improve dumping.
38619
38620 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38621
38622         PR target/79145
38623         * config/arm/arm.md (xordi3): Force constant operand into a register
38624         for TARGET_IWMMXT.
38625
38626 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38627
38628         * doc/invoke.texi (-fstore-merging): Correct default optimization
38629         levels at which it is enabled.
38630         (-O): Move -fstore-merging from list to...
38631         (-O2): ... Here.
38632
38633 2017-01-25  Richard Biener  <rguenther@suse.de>
38634
38635         PR debug/78363
38636         * omp-expand.c: Include debug.h.
38637         (expand_omp_taskreg): Make sure to generate early debug before
38638         outlining anything from a function.
38639         (expand_omp_target): Likewise.
38640         (grid_expand_target_grid_body): Likewise.
38641
38642 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
38643
38644         PR lto/79061
38645         * asan.c (get_translation_unit_decl): New function.
38646         (asan_add_global): Extract modules file name from globals
38647         TRANSLATION_UNIT_DECL name.
38648
38649 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
38650
38651         PR target/77439
38652         * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
38653         for long calls with APCS frame and VFP.
38654
38655 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
38656
38657         * cfg.c (original_copy_tables_initialized_p): New function.
38658         * cfg.h (original_copy_tables_initialized_p): New decl.
38659         * cfgrtl.c (relink_block_chain): Guard the call to
38660         free_original_copy_tables with a call to
38661         original_copy_tables_initialized_p.
38662         * cgraph.h (symtab_node::native_rtl_p): New decl.
38663         * cgraphunit.c (symtab_node::native_rtl_p): New function.
38664         (symtab_node::needed_p): Don't assert for early assembly output
38665         for __RTL functions.
38666         (cgraph_node::finalize_function): Set "force_output" for __RTL
38667         functions.
38668         (cgraph_node::analyze): Bail out early for __RTL functions.
38669         (analyze_functions): Update assertion to support __RTL functions.
38670         (cgraph_node::expand): Bail out early for __RTL functions.
38671         * final.c (rest_of_clean_state): Don't call delete_tree_ssa for
38672         __RTL functions.
38673         * function.h (struct function): Update comment for field
38674         "pass_startwith".
38675         * gimple-expr.c: Include "tree-pass.h".
38676         (gimple_has_body_p): Return false for __RTL functions.
38677         * Makefile.in (OBJS): Add run-rtl-passes.o.
38678         * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
38679         accessor.
38680         (gcc::pass_manager::get_clean_slate): New accessor.
38681         * passes.c: Include "insn-addr.h".
38682         (should_skip_pass_p): Add logging.  Update logic for running
38683         "expand" to be compatible with both __GIMPLE and __RTL.  Guard
38684         property-provider override so it is only done for gimple passes.
38685         Don't skip dfinit.
38686         (skip_pass): New function.
38687         (execute_one_pass): Call skip_pass when skipping passes.
38688         * read-md.c (md_reader::read_char): Support filtering
38689         the input to a subset of line numbers.
38690         (md_reader::md_reader): Initialize fields
38691         m_first_line and m_last_line.
38692         (md_reader::read_file_fragment): New function.
38693         * read-md.h (md_reader::read_file_fragment): New decl.
38694         (md_reader::m_first_line): New field.
38695         (md_reader::m_last_line): New field.
38696         * read-rtl-function.c (function_reader::create_function): Only
38697         create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
38698         curr_properties.  Set DECL_INITIAL to a dummy block.
38699         (read_rtl_function_body_from_file_range): New function.
38700         * read-rtl-function.h (read_rtl_function_body_from_file_range):
38701         New decl.
38702         * run-rtl-passes.c: New file.
38703         * run-rtl-passes.h: New file.
38704
38705 2017-01-24  Jeff Law  <law@redhat.com>
38706
38707         * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
38708         buffer size.
38709
38710 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
38711
38712         PR tree-optimization/79159
38713         * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
38714         (record_nonwrapping_iv): Improve boundary using above function if no
38715         value range information.
38716
38717 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
38718             Martin Jambor  <mjambor@suse.cz>
38719
38720         * brig-builtins.def: New file.
38721         * builtins.def (DEF_HSAIL_BUILTIN): New macro.
38722         (DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
38723         (DEF_HSAIL_SAT_BUILTIN): Likewise.
38724         (DEF_HSAIL_INTR_BUILTIN): Likewise.
38725         (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
38726         * builtin-types.def (BT_INT8): New.
38727         (BT_INT16): Likewise.
38728         (BT_UINT8): Likewise.
38729         (BT_UINT16): Likewise.
38730         (BT_FN_ULONG): Likewise.
38731         (BT_FN_UINT_INT): Likewise.
38732         (BT_FN_UINT_ULONG): Likewise.
38733         (BT_FN_UINT_LONG): Likewise.
38734         (BT_FN_UINT_PTR): Likewise.
38735         (BT_FN_ULONG_PTR): Likewise.
38736         (BT_FN_INT8_FLOAT): Likewise.
38737         (BT_FN_INT16_FLOAT): Likewise.
38738         (BT_FN_UINT32_FLOAT): Likewise.
38739         (BT_FN_UINT16_FLOAT): Likewise.
38740         (BT_FN_UINT8_FLOAT): Likewise.
38741         (BT_FN_UINT64_FLOAT): Likewise.
38742         (BT_FN_UINT16_UINT32): Likewise.
38743         (BT_FN_UINT32_UINT16): Likewise.
38744         (BT_FN_UINT16_UINT16_UINT16): Likewise.
38745         (BT_FN_INT_PTR_INT): Likewise.
38746         (BT_FN_UINT_PTR_UINT): Likewise.
38747         (BT_FN_LONG_PTR_LONG): Likewise.
38748         (BT_FN_ULONG_PTR_ULONG): Likewise.
38749         (BT_FN_VOID_UINT64_UINT64): Likewise.
38750         (BT_FN_UINT8_UINT8_UINT8): Likewise.
38751         (BT_FN_INT8_INT8_INT8): Likewise.
38752         (BT_FN_INT16_INT16_INT16): Likewise.
38753         (BT_FN_INT_INT_INT): Likewise.
38754         (BT_FN_UINT_FLOAT_UINT): Likewise.
38755         (BT_FN_FLOAT_UINT_UINT): Likewise.
38756         (BT_FN_ULONG_UINT_UINT): Likewise.
38757         (BT_FN_ULONG_UINT_PTR): Likewise.
38758         (BT_FN_ULONG_ULONG_ULONG): Likewise.
38759         (BT_FN_UINT_UINT_UINT): Likewise.
38760         (BT_FN_VOID_UINT_PTR): Likewise.
38761         (BT_FN_UINT_UINT_PTR: Likewise.
38762         (BT_FN_UINT32_UINT64_PTR): Likewise.
38763         (BT_FN_INT_INT_UINT_UINT): Likewise.
38764         (BT_FN_UINT_UINT_UINT_UINT): Likewise.
38765         (BT_FN_UINT_UINT_UINT_PTR): Likewise.
38766         (BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
38767         (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
38768         (BT_FN_LONG_LONG_UINT_UINT): Likewise.
38769         (BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
38770         (BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
38771         (BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
38772         (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
38773         (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
38774         (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
38775         * doc/frontends.texi: List BRIG FE.
38776         * doc/install.texi (Testing): Add BRIG tesring requirements.
38777         * doc/invoke.texi (Overall Options): Mention BRIG.
38778         * doc/standards.texi (Standards): Doucment BRIG HSA version.
38779
38780 2017-01-24  Richard Biener  <rguenther@suse.de>
38781
38782         PR translation/79208
38783         * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
38784
38785 2017-01-24  Martin Jambor  <mjambor@suse.cz>
38786
38787         PR bootstrap/79198
38788         * ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
38789         * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
38790         and known_contexts.
38791
38792 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
38793
38794         PR middle-end/79123
38795         * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
38796         casts from signed to unsigned really don't have a range.
38797
38798 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
38799
38800         * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
38801         GMP_RNDx for compatiblity.
38802
38803 2017-01-24  Martin Liska  <mliska@suse.cz>
38804
38805         PR bootstrap/79132
38806         * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
38807         that would prevent us to call alloca with -1 as argument.
38808
38809 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
38810
38811         * dwarf2out.c (output_compilation_unit_header, output_file_names):
38812         Avoid -Wformat-security warning.
38813
38814 2017-01-23  Andrew Pinski  <apinski@cavium.com>
38815
38816         * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
38817         cost table.
38818
38819 2017-01-23  Martin Sebor  <msebor@redhat.com>
38820
38821         PR middle-end/78703
38822         * gimple-ssa-sprintf.c (warn_level): New global.
38823         (format_integer): Use it here and throughout the rest of the file.
38824         Use the same switch to compute sign as base.
38825         (maybe_warn): New function.
38826         (format_directive): Factor out warnings into maybe_warn.
38827         Add debugging output.  Use warn_level.
38828         (add_bytes): Use warn_level.
38829         (pass_sprintf_length::compute_format_length): Add debugging output.
38830         (try_substitute_return_value): Same.
38831         (pass_sprintf_length::handle_gimple_call): Set and use warn_level.
38832
38833         PR middle-end/78703
38834         * gimple-ssa-sprintf.c (struct format_result): Remove constant member.
38835         (struct fmtresult, format_integer, format_floating): Adjust.
38836         (fmtresult::fmtresult): Set max correctly in two argument ctor.
38837         (get_string_length, format_string,format_directive): Same.
38838         (pass_sprintf_length::compute_format_length): Same.
38839         (try_substitute_return_value): Simplify slightly.
38840
38841         PR middle-end/78703
38842         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
38843         (fmtresult::operator+=): Outlined.
38844         (struct fmtresult): Add ctors.
38845         (struct conversion_spec): Rename...
38846         (struct directive): ...to this.  Add and remove data members.
38847         (directive::set_width, directive::set_precision): New functions.
38848         (format_percent): Use fmtresult ctor.
38849         (get_width_and_precision): Remove.
38850         (format_integer): Make naming changes.  Avoid computing width and
38851         precision.
38852         (format_floating): Same.  Adjust indentation.
38853         (format_character, format_none): New functions.
38854         (format_string): Moved character handling to format_character.
38855         (format_directive): Remove arguments, change return type.
38856         (parse_directive): New function.
38857         (pass_sprintf_length::compute_format_length): Move directive
38858         parsing to parse_directive.
38859
38860 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
38861
38862         * tree.h (assign_assembler_name_if_neeeded): Rename to ...
38863         (assign_assembler_name_if_needed): ... this.
38864         * tree.c (assign_assembler_name_if_neeeded): Rename to ...
38865         (assign_assembler_name_if_needed): ... this.
38866         (free_lang_data_in_cgraph): Adjust callers.
38867         * cgraphunit.c (cgraph_node::analyze): Likewise.
38868         * omp-expand.c (expand_omp_taskreg, expand_omp_target):
38869         Likewise.
38870
38871 2017-01-23  Richard Biener  <rguenther@suse.de>
38872
38873         PR tree-optimization/79088
38874         PR tree-optimization/79188
38875         * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
38876         resetting loop bounds after last path deletion.  Reset loop
38877         bounds of the target loop, make code match the comments.
38878         * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
38879         Make sure loops need no fixups.
38880
38881 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
38882
38883         * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
38884         exponent support with double type for first argument.
38885         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
38886         type returned by __builtin_vec_extract_sig,
38887         __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
38888         functions from "vector int" to "vector unsigned int" or from
38889         "vector long long int" to "vector unsigned long long int".
38890         Changed type returned by __builtin_vec_extract_exp,
38891         __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
38892         functions from "vector int" to "vector unsigned int" or from
38893         "vector long long int" to "vector unsigned long long int".
38894         Changed return type of __builtin_vec_test_data_class,
38895         __builtin_vec_test_data_class_sp, and
38896         __builtin_vec_test_data_class_dp from "vector int" to
38897         "vector bool int" or from "vector long long int" to "vector bool
38898         long long int" and changed second argument type from "unsigned
38899         int" to "int".  Added new overloaded function forms "vector float
38900         __builtin_vec_insert_exp (vector float, vector unsigned int)" and
38901         "vector float __builtin_vec_insert_exp_sp (vector float, vector
38902         unsigned int)" and "vector double __builtin_vec_insert_exp (vector
38903         double, vector unsigned long long int)" and "vector double
38904         __builtin_vec_insert_exp_dp (vector double, vector unsigned long
38905         long int)".  Changed return type of
38906         __builtin_scalar_test_data_class and
38907         __builtin_scalar_test_data_class_sp and
38908         __builtin_scalar_test_data_class_dp from "unsigned int" to "bool
38909         int" and changed second argument from "unsigned int" to "int".
38910         Changed type returned by __builtin_scalar_test_neg,
38911         __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
38912         from "int" to "bool int".  Added new overloaded function form
38913         "double __builtin_scalar_insert_exp (double, unsigned long long int)".
38914         * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
38915         exponent double-precision with floating point first argument.
38916         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
38917         documentation of scalar_test_data_class, scalar_test_neg,
38918         scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
38919         vector_extract_exp, vec_extract_sig, vec_insert_exp, and
38920         vec_test_data_class built-in functions to reflect refinements in
38921         their type signatures.
38922
38923 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
38924
38925         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
38926         size of buf.
38927         (aarch64_elf_asm_destructor): Likewise.
38928
38929 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
38930
38931         PR rtl-optimization/78634
38932         * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
38933         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
38934         * ifcvt.c (noce_try_cmove): Add missing cost check.
38935
38936         PR rtl-optimization/71724
38937         * combine.c (if_then_else_cond): Look for situations where it is
38938         beneficial to undo the work of one of the recursive calls.
38939
38940 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
38941
38942         PR tree-optimization/70754
38943         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
38944         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
38945         combined stmt before it if not NULL.
38946         (combine_chains): Process refs reversely and compute dominance point
38947         for root ref.
38948
38949 2017-01-23  Martin Liska  <mliska@suse.cz>
38950
38951         PR tree-optimization/79196
38952         * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
38953         (fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
38954         instead of memcmp.
38955         (strlen_optimize_stmt): Call the renamed function.
38956
38957 2017-01-23  Michael Matz  <matz@suse.de>
38958
38959         PR tree-optimization/78384
38960         * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
38961
38962 2017-01-23  Richard Biener  <rguenther@suse.de>
38963
38964         PR tree-optimization/79186
38965         * tree-vrp.c (register_new_assert_for): Make sure we've seen
38966         both incoming edges before moving an assert.
38967
38968 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38969
38970         * ipa-prop.c (load_from_param_1): Removed.
38971         (load_from_unmodified_param): Bits from load_from_param_1 put back
38972         here.
38973         (load_from_param): Removed.
38974         (compute_complex_assign_jump_func): Removed stmt2 and just replaced it
38975         with stmt.  Reverted back to use of load_from_unmodified_param.
38976
38977 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38978
38979         PR ipa/79108
38980         * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
38981         (ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
38982         field a pointer to garbage collected vector, mark lattices and
38983         ipcp_orig_node with GTY((skip)).
38984         (ipa_get_param_count): Adjust to descriptors being a pointer.
38985         (ipa_get_param): Likewise.
38986         (ipa_get_type): Likewise.
38987         (ipa_get_param_move_cost): Likewise.
38988         (ipa_set_param_used): Likewise.
38989         (ipa_get_controlled_uses): Likewise.
38990         (ipa_set_controlled_uses): Likewise.
38991         (ipa_is_param_used): Likewise.
38992         (ipa_node_params_t): Move into garbage collector.  New methods insert
38993         and remove.
38994         (ipa_node_params_sum): Annotate wth GTY(()).
38995         (ipa_check_create_node_params): Adjust to ipa_node_params_sum being
38996         garbage collected.
38997         (ipa_load_from_parm_agg): Adjust declaration.
38998         * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
38999         * ipa-profile.c (ipa_profile): Likewise.
39000         * ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
39001         (ipa_populate_param_decls): Make descriptors parameter garbage
39002         collected.
39003         (ipa_dump_param): Adjust to descriptors being a pointer.
39004         (ipa_alloc_node_params): Likewise.
39005         (ipa_initialize_node_params): Likewise.
39006         (load_from_param_1): Make descriptors parameter garbage collected.
39007         (load_from_unmodified_param): Likewise.
39008         (load_from_param): Likewise.
39009         (ipa_load_from_parm_agg): Likewise.
39010         (ipa_node_params::~ipa_node_params): Removed.
39011         (ipa_free_all_node_params): Remove call to delete operator.
39012         (ipa_node_params_t::insert): New.
39013         (ipa_node_params_t::remove): Likewise.
39014         (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
39015         copy known_csts and known_contexts vectors.
39016         (ipa_read_node_info): Adjust to descriptors being a pointer.
39017         (ipcp_modif_dom_walker): Make m_descriptors field garbage
39018         collected.
39019         (ipcp_transform_function): Make descriptors variable garbage
39020         collected.
39021
39022 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
39023
39024         * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
39025         * config/i386/avx512dqintrin.h: Ditto.
39026         * config/i386/avx512fintrin.h: Ditto.
39027         * config/i386/i386.c: Handle new builtins.
39028         * config/i386/i386-builtin.def: Add new builtins.
39029         * config/i386/sse.md (ktest<mode>, kortest<mode>): New.
39030         (UNSPEC_KORTEST, UNSPEC_KTEST): New.
39031
39032 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
39033             Martin Liska  <mliska@suse.cz>
39034
39035         * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
39036         * asan.c (asan_expand_poison_ifn): Support stores and use
39037         appropriate ASAN report function.
39038         * internal-fn.c (expand_ASAN_POISON_USE): New function.
39039         * internal-fn.def (ASAN_POISON_USE): Declare.
39040         * tree-into-ssa.c (maybe_add_asan_poison_write): New function.
39041         (maybe_register_def): Create ASAN_POISON_USE when sanitizing.
39042         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
39043         ASAN_POISON calls w/o LHS.
39044         * tree-ssa.c (execute_update_addresses_taken): Create clobber
39045         for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
39046         from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
39047         * gimplify.c (asan_poison_variables): Add attribute
39048         use_after_scope_memory to variables that really needs to live
39049         in memory.
39050         * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
39051         having the attribute.
39052
39053 2017-01-23  Martin Liska  <mliska@suse.cz>
39054
39055         * asan.c (create_asan_shadow_var): New function.
39056         (asan_expand_poison_ifn): Likewise.
39057         * asan.h (asan_expand_poison_ifn): New declaration.
39058         * internal-fn.c (expand_ASAN_POISON): Likewise.
39059         * internal-fn.def (ASAN_POISON): New builtin.
39060         * sanopt.c (pass_sanopt::execute): Expand
39061         asan_expand_poison_ifn.
39062         * tree-inline.c (copy_decl_for_dup_finish): Make function
39063         external.
39064         * tree-inline.h (copy_decl_for_dup_finish): Likewise.
39065         * tree-ssa.c (is_asan_mark_p): New function.
39066         (execute_update_addresses_taken): Rewrite local variables
39067         (identified just by use-after-scope as addressable) into SSA.
39068
39069 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39070
39071         * doc/install.texi (Specific): opensource.apple.com uses https
39072         now. Remove trailing slash.
39073
39074 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39075
39076         * README.Portability: Remove note on an Irix compatibility issue.
39077
39078 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
39079
39080         * gcov.c (INCLUDE_ALGORITHM): Define.
39081         (INCLUDE_VECTOR): Define.
39082         No longer include <vector> and <algorithm> directly.
39083
39084 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
39085
39086         * doc/extend.texi (Thread-Local): Change www.akkadia.org reference
39087         to https.
39088         * doc/invoke.texi (Code Gen Options): Ditto.
39089
39090 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
39091
39092         PR lto/78407
39093         * cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
39094
39095 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
39096
39097         rtl-optimization/79125
39098         * cprop.c (local_cprop_pass): Handle cases where we make an
39099         unconditional trap.
39100
39101 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
39102
39103         PR target/61729
39104         PR target/77850
39105         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
39106         read from, for big endian.
39107
39108 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
39109
39110         * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
39111         register pauth builtins for LP64 only.
39112
39113 2017-01-20  Marek Polacek  <polacek@redhat.com>
39114
39115         PR c/79152
39116         * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
39117         non-case labels.
39118
39119 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39120
39121         * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
39122         of safelen status.
39123         * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
39124         * passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
39125         * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
39126
39127 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39128
39129         PR target/71270
39130         * config/arm/arm.c (neon_valid_immediate): Reject vector constants
39131         in big-endian mode when they are not a single duplicated value.
39132
39133 2017-01-20  Richard Biener  <rguenther@suse.de>
39134
39135         * BASE-VER: Bump to 7.0.1.
39136
39137 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39138
39139         * omp-low.c (omplow_simd_context): New struct.  Use it...
39140         (lower_rec_simd_input_clauses): ...here and...
39141         (lower_rec_input_clauses): ...here to hold common data.  Adjust all
39142         references to idx, lane, max_vf, is_simt.
39143
39144 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
39145
39146         * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
39147         mcpu=nps400.
39148
39149 2017-01-20  Martin Jambor  <mjambor@suse.cz>
39150
39151         * hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
39152         * hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
39153         gt-hsa-common.h.
39154         * Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
39155         (GTFILES): Rename hsa.c to hsa-common.c.
39156         * hsa-brig.c: Change include of hsa.h to hsa-common.h.
39157         * hsa-dump.c: Likewise.
39158         * hsa-gen.c: Likewise.
39159         * hsa-regalloc.c: Likewise.
39160         * ipa-hsa.c: Likewise.
39161         * omp-expand.c: Likewise.
39162         * omp-low.c: Likewise.
39163         * toplev.c: Likewise.
39164
39165 2017-01-20  Marek Polacek  <polacek@redhat.com>
39166
39167         PR c/64279
39168         * doc/invoke.texi: Document -Wduplicated-branches.
39169         * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
39170         COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
39171         POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
39172         STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
39173         return 0 only when not OEP_LEXICOGRAPHIC.
39174         (fold_build_cleanup_point_expr): Use the expression
39175         location when building CLEANUP_POINT_EXPR.
39176         * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
39177         * tree.c (add_expr): Handle error_mark_node.
39178
39179 2017-01-20  Martin Liska  <mliska@suse.cz>
39180
39181         PR lto/69188
39182         * tree-profile.c (init_ic_make_global_vars): Do not call
39183         finalize_decl.
39184         (gimple_init_gcov_profiler): Likewise.
39185
39186 2017-01-20  Martin Liska  <mliska@suse.cz>
39187
39188         PR ipa/71190
39189         * cgraph.h (maybe_create_reference): Remove argument and
39190         update comment.
39191         * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
39192         argument.
39193         * ipa-cp.c (create_specialized_node): Likewise.
39194         * symtab.c (symtab_node::maybe_create_reference): Handle
39195         VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
39196
39197 2017-01-20  Martin Liska  <mliska@suse.cz>
39198
39199         * read-rtl-function.c (function_reader::create_function): Use
39200         build_decl instread of build_decl_stat.
39201
39202 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
39203
39204         * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
39205         * config/i386/avx512dqintrin.h: Ditto.
39206         * config/i386/avx512fintrin.h: Ditto.
39207         * config/i386/i386-builtin-types.def: Add new types.
39208         * config/i386/i386.c: Handle new types.
39209         * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
39210         (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
39211         (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
39212         (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
39213         (__builtin_ia32_kshiftridi): New.
39214         * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
39215
39216 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
39217
39218         PR target/78875
39219         PR target/79140
39220         * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
39221         define to rs6000_init_stack_protect_guard.
39222         (rs6000_init_stack_protect_guard): New function.
39223
39224 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39225             Yunqiang Su  <yunqiang.su@imgtec.com>
39226
39227         * config.gcc (supported_defaults): Add madd4.
39228         (with_madd4): Add validation.
39229         (all_defaults): Add madd4.
39230         * config/mips/mips.opt (mmadd4): New option.
39231         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39232         mmadd4.
39233         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39234         __mips_no_madd4.
39235         (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
39236         (ISA_HAS_FUSED_MADD4): Likewise.
39237         * doc/invoke.texi (-mmadd4): Document the new option.
39238         * doc/install.texi (--with-madd4): Document the new option.
39239
39240 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39241
39242         * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
39243         entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
39244         AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
39245         (aarch64_init_pauth_hint_builtins): New.
39246         (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
39247         (aarch64_expand_builtin): Expand new builtins.
39248
39249 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39250
39251         * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
39252         * combine-stack-adj.c (no_unhandled_cfa): Handle
39253         REG_CFA_TOGGLE_RA_MANGLE.
39254         * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
39255         * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
39256         info for return address signing.
39257         (aarch64_expand_epilogue): Likewise.
39258
39259 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39260
39261         * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
39262         * config/aarch64/aarch64-protos.h
39263         (aarch64_return_address_signing_enabled): New declaration.
39264         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
39265         New function.
39266         (aarch64_expand_prologue): Sign return address before it's pushed onto
39267         stack.
39268         (aarch64_expand_epilogue): Authenticate return address fetched from
39269         stack.
39270         (aarch64_override_options): Sanity check for ILP32 and ISA level.
39271         (aarch64_attributes): New function attributes for "sign-return-address".
39272         * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
39273         UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
39274         ("*do_return"): Generate combined instructions according to key index.
39275         ("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
39276         * config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
39277         iterators.
39278         (pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
39279         * config/aarch64/aarch64.opt (msign-return-address=): New.
39280         * doc/extend.texi (AArch64 Function Attributes): Documents
39281         "sign-return-address=".
39282         * doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
39283
39284 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39285
39286         * doc/invoke.texi: Add missing -mlxc1-sxc1 options to
39287         overall option summary.
39288
39289 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39290
39291         * config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
39292         * config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
39293         AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
39294         * doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
39295
39296 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
39297
39298         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
39299         -mpower9-minmax by default for -mcpu=power9.
39300         (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
39301         128-bit floating point.
39302
39303 2017-01-20  Alan Modra  <amodra@gmail.com>
39304
39305         * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
39306         optimizing for size.
39307
39308 2017-01-20  Alan Modra  <amodra@gmail.com>
39309
39310         PR target/79144
39311         * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
39312         for strcmp and strncmp from corresponding builtin decl.
39313
39314 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39315
39316         * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
39317         instead of i386/rtems-64.h.
39318         * config/i386/rtems-64.h: Remove.
39319
39320 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39321
39322         PR target/78478
39323         Revert:
39324         2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
39325
39326         * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
39327
39328 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
39329
39330         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
39331         Change int to HOST_WIDE_INT.
39332         * config/aarch64/aarch64-protos.h
39333         (aarch64_simd_gen_const_vector_dup): Likewise.
39334         * config/aarch64/aarch64-simd.md: Add copysign<mode>3.
39335
39336 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
39337
39338         * langhooks-def.h (lhd_type_for_size): New decl.
39339         (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
39340         * langhooks.c (lhd_type_for_size): New function, taken from
39341         lto_type_for_size.
39342
39343 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
39344
39345         * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
39346         define_bypass for CR latency.
39347         (power9-cracked-alu): Update bypass latency and remove power9-branch.
39348         (power9-alu2): Add define_bypass for CR latency.
39349         (power9-cmp): New.
39350         (power9-mul): Update insn latency.
39351         (power9-mul-compare): Update insn latency, bypass latency and remove
39352         power9-branch.
39353
39354 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39355
39356         * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
39357         Delete.
39358         * config/aarch64/aarch64.md
39359         (aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
39360         aarch64_nopcrelative_literal_loads.
39361         (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
39362
39363 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
39364
39365         * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
39366         TARGET_LOONGSON_3A.
39367         (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
39368
39369 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
39370
39371         PR target/78176
39372         * config.gcc (supported_defaults): Add lxc1-sxc1.
39373         (with_lxc1_sxc1): Add validation.
39374         (all_defaults): Add lxc1-sxc1.
39375         * config/mips/mips.opt (mlxc1-sxc1): New option.
39376         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39377         mlxc1-sxc1.
39378         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39379         __mips_no_lxc1_sxc1.
39380         (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
39381         * doc/invoke.texi (-mlxc1-sxc1): Document the new option.
39382         * doc/install.texi (--with-lxc1-sxc1): Document the new option.
39383
39384 2017-01-19  Richard Biener  <rguenther@suse.de>
39385
39386         PR tree-optimization/72488
39387         * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
39388         sure to restore SSA info.
39389         * tree-ssa.c (verify_ssa): Verify SSA info is not shared.
39390
39391 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
39392
39393         PR rtl-optimization/79121
39394         * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
39395         of the inner type when shifting an extended value.
39396
39397 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39398
39399         PR lto/78407
39400         * symtab.c (symtab_node::equal_address_to): Fix comparing of
39401         interposable aliases.
39402
39403 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
39404
39405         PR target/78516
39406         * config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
39407         Use the evmergelohi instruction.
39408         (mov_si<mode>_e500_subreg4_2_le): Likewise.
39409         (mov_sitf_e500_subreg8_2_be): Likewise.
39410         (mov_sitf_e500_subreg12_2_le): Likewise.
39411         (mov_si<mode>_e500_subreg0_2_le): Fix constraints.
39412         (mov_si<mode>_e500_subreg4_2_be): Likewise.
39413         (mov_sitf_e500_subreg8_2_le): Likewise.
39414         (mov_sitf_e500_subreg12_2_be): Likewise.
39415
39416 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39417
39418         * config/rs6000/altivec.md (altivec_vbpermq): Change "type"
39419         attribute from vecsimple to vecperm.
39420         (altivec_vbpermq2): Likewise.
39421
39422 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39423
39424         PR target/79040
39425         * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
39426
39427 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
39428         * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
39429         * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
39430         strcmp. Fix bug where comparison didn't stop with zero byte. Fix
39431         case where N arg is SIZE_MAX.
39432         * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
39433         (cmpstrsi): Add pattern.
39434
39435 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
39436
39437         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
39438         __builtin_vec_revb builtins.
39439         * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
39440         built-in functions to support generation of the ISA 3.0 XXBR<x>
39441         vector byte reverse instructions.
39442         (P9V_BUILTIN_XXBRQ_V1TI): Likewise.
39443         (P9V_BUILTIN_XXBRD_V2DI): Likewise.
39444         (P9V_BUILTIN_XXBRD_V2DF): Likewise.
39445         (P9V_BUILTIN_XXBGW_V4SI): Likewise.
39446         (P9V_BUILTIN_XXBGW_V4SF): Likewise.
39447         (P9V_BUILTIN_XXBGH_V8HI): Likewise.
39448         (P9V_BUILTIN_VEC_REVB): Likewise.
39449         * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
39450         generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
39451         (p9_xxbrq_v16qi): Likewise.
39452         (p9_xxbrd_<mode>, VSX_D iterator): Likewise.
39453         (p9_xxbrw_<mode>, VSX_W iterator): Likewise.
39454         (p9_xxbrh_v8hi): Likewise.
39455         * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
39456         * doc/extend.texi (RS/6000 Altivec Built-ins): Document the
39457         vec_revb built-in functions.
39458
39459 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
39460
39461         PR rtl-optimization/78952
39462         * config/i386/i386.md (any_extract): New code iterator.
39463         (*insvqi_2): Use any_extract for source operand.
39464         (*insvqi_3): Use any_shiftrt for source operand.
39465
39466 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
39467
39468         * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
39469         New function.
39470         (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
39471
39472 2017-01-18  Matthias Klose  <doko@ubuntu.com>
39473
39474         * doc/install.texi: Allow default for --with-target-bdw-gc-include.
39475
39476 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39477
39478         * config/rs6000/altivec.h (vec_bperm): Change #define.
39479         * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
39480         (altivec_vbpermq2): New define_insn.
39481         (altivec_vbpermd): Likewise.
39482         * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
39483         function interface.
39484         (VBPERMD): Likewise.
39485         (VBPERM): New polymorphic function interface.
39486         * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
39487         Add entries for P9V_BUILTIN_VEC_VBPERM.
39488         * doc/extend.texi: Add interfaces for vec_bperm.
39489
39490 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
39491
39492         * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
39493         first letter of error messages.
39494         (s390_resolve_overloaded_builtin): Likewise.
39495         * config/s390/s390.c (s390_expand_builtin): Likewise.
39496         (s390_invalid_arg_for_unprototyped_fn): Likewise.
39497         (s390_valid_target_attribute_inner_p): Likewise.
39498         * config/s390/s390.md ("tabort"): Likewise.
39499
39500 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
39501
39502         * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
39503         (ISA_AVOID_DIV_HILO): New macro.
39504         (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
39505         (ISA_HAS_DDIV): Likewise.
39506
39507 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39508
39509         * doc/invoke.texi (fabi-version): Correct number of occurrences.
39510
39511 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39512
39513         * doc/invoke.texi (fabi-version): Spelling fix.
39514
39515 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39516
39517         PR c++/70182
39518         * doc/invoke.texi (fabi-version): Mention mangling fix for
39519         operator names.
39520
39521 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39522
39523         PR c++/77489
39524         * doc/invoke.texi (fabi-version): Document discriminator mangling.
39525
39526 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
39527
39528         PR target/78875
39529         * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
39530         * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
39531         the new options.
39532         * config/rs6000/rs6000.md (stack_protect_set): Handle the new more
39533         flexible settings.
39534         (stack_protect_test): Ditto.
39535         * config/rs6000/rs6000.opt (mstack-protector-guard=,
39536         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
39537         options.
39538         * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
39539         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
39540         -mstack-protector-guard-offset=.
39541         (RS/6000 and PowerPC Options): Ditto.
39542
39543 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39544
39545         * config/i386/i386.h (MASK_CLASS_P): New define.
39546         * config/i386/i386.c (inline_secondary_memory_needed): Ensure that
39547         there are no registers from different register sets also when
39548         mask registers are used.  Update function comment.
39549         * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
39550         to (*k/*r) and (*k/*km) alternatives.
39551
39552 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
39553
39554         * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
39555         * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
39556         (EH_RETURN_HANDLER_RTX): New define.
39557         * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
39558         Force frame pointer in EH return functions.
39559         (aarch64_expand_epilogue): Add barrier for eh_return.
39560         (aarch64_final_eh_return_addr): Remove.
39561         (aarch64_eh_return_handler_rtx): New function.
39562         * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
39563         Remove.
39564         (aarch64_eh_return_handler_rtx): New prototype.
39565
39566 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39567
39568         * config/rs6000/altivec.h (vec_rlmi): New #define.
39569         (vec_vrlnm): Likewise.
39570         (vec_rlnm): Likewise.
39571         * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
39572         (UNSPEC_VRLNM): Likewise.
39573         (VIlong): New mode iterator.
39574         (altivec_vrl<VI_char>mi): New define_insn.
39575         (altivec_vrl<VI_char>nm): Likewise.
39576         * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
39577         function entry.
39578         (VRLDNM): Likewise.
39579         (RLNM): New polymorphic function entry.
39580         (VRLWMI): New monomorphic function entry.
39581         (VRLDMI): Likewise.
39582         (RLMI): New polymorphic function entry.
39583         * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
39584         new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
39585         * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
39586         vec_vrlnm.
39587
39588 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39589
39590         PR debug/78839
39591         * dwarf2out.c (field_byte_offset): Restore the
39592         PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
39593         and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
39594         (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
39595         of build2 + fold.
39596
39597 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39598
39599         PR ada/67205
39600         * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
39601
39602 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39603
39604         PR debug/71669
39605         * dwarf2out.c (add_data_member_location_attribute): For constant
39606         offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
39607         instead of DW_AT_data_member_location, DW_AT_bit_offset and
39608         DW_AT_byte_size attributes.
39609
39610 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39611
39612         * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
39613         after forcing to constant memory when the code model is medium.
39614
39615 2017-01-17  Julia Koval  <julia.koval@intel.com>
39616
39617         PR target/76731
39618         * config/i386/avx512fintrin.h
39619         (_mm512_i32gather_ps): Change __addr type to void const*.
39620         (_mm512_mask_i32gather_ps): Ditto.
39621         (_mm512_i32gather_pd): Ditto.
39622         (_mm512_mask_i32gather_pd): Ditto.
39623         (_mm512_i64gather_ps): Ditto.
39624         (_mm512_mask_i64gather_ps): Ditto.
39625         (_mm512_i64gather_pd): Ditto.
39626         (_mm512_mask_i64gather_pd): Ditto.
39627         (_mm512_i32gather_epi32): Ditto.
39628         (_mm512_mask_i32gather_epi32): Ditto.
39629         (_mm512_i32gather_epi64): Ditto.
39630         (_mm512_mask_i32gather_epi64): Ditto.
39631         (_mm512_i64gather_epi32): Ditto.
39632         (_mm512_mask_i64gather_epi32): Ditto.
39633         (_mm512_i64gather_epi64): Ditto.
39634         (_mm512_mask_i64gather_epi64): Ditto.
39635         (_mm512_i32scatter_ps): Change __addr type to void*.
39636         (_mm512_mask_i32scatter_ps): Ditto.
39637         (_mm512_i32scatter_pd): Ditto.
39638         (_mm512_mask_i32scatter_pd): Ditto.
39639         (_mm512_i64scatter_ps): Ditto.
39640         (_mm512_mask_i64scatter_ps): Ditto.
39641         (_mm512_i64scatter_pd): Ditto.
39642         (_mm512_mask_i64scatter_pd): Ditto.
39643         (_mm512_i32scatter_epi32): Ditto.
39644         (_mm512_mask_i32scatter_epi32): Ditto.
39645         (_mm512_i32scatter_epi64): Ditto.
39646         (_mm512_mask_i32scatter_epi64): Ditto.
39647         (_mm512_i64scatter_epi32): Ditto.
39648         (_mm512_mask_i64scatter_epi32): Ditto.
39649         (_mm512_i64scatter_epi64): Ditto.
39650         (_mm512_mask_i64scatter_epi64): Ditto.
39651         * config/i386/avx512pfintrin.h
39652         (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
39653         (_mm512_mask_prefetch_i32gather_ps): Ditto.
39654         (_mm512_mask_prefetch_i64gather_pd): Ditto.
39655         (_mm512_mask_prefetch_i64gather_ps): Ditto.
39656         (_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
39657         (_mm512_prefetch_i32scatter_ps): Ditto.
39658         (_mm512_mask_prefetch_i32scatter_pd): Ditto.
39659         (_mm512_mask_prefetch_i32scatter_ps): Ditto.
39660         (_mm512_prefetch_i64scatter_pd): Ditto.
39661         (_mm512_prefetch_i64scatter_ps): Ditto.
39662         (_mm512_mask_prefetch_i64scatter_pd): Ditto.
39663         (_mm512_mask_prefetch_i64scatter_ps): Ditto.
39664         * config/i386/avx512vlintrin.h
39665         (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
39666         (_mm_mmask_i32gather_ps): Ditto.
39667         (_mm256_mmask_i32gather_pd): Ditto.
39668         (_mm_mmask_i32gather_pd): Ditto.
39669         (_mm256_mmask_i64gather_ps): Ditto.
39670         (_mm_mmask_i64gather_ps): Ditto.
39671         (_mm256_mmask_i64gather_pd): Ditto.
39672         (_mm_mmask_i64gather_pd): Ditto.
39673         (_mm256_mmask_i32gather_epi32): Ditto.
39674         (_mm_mmask_i32gather_epi32): Ditto.
39675         (_mm256_mmask_i32gather_epi64): Ditto.
39676         (_mm_mmask_i32gather_epi64): Ditto.
39677         (_mm256_mmask_i64gather_epi32): Ditto.
39678         (_mm_mmask_i64gather_epi32): Ditto.
39679         (_mm256_mmask_i64gather_epi64): Ditto.
39680         (_mm_mmask_i64gather_epi64): Ditto.
39681         (_mm256_i32scatter_ps): Change __addr type to void*.
39682         (_mm256_mask_i32scatter_ps): Ditto.
39683         (_mm_i32scatter_ps): Ditto.
39684         (_mm_mask_i32scatter_ps): Ditto.
39685         (_mm256_i32scatter_pd): Ditto.
39686         (_mm256_mask_i32scatter_pd): Ditto.
39687         (_mm_i32scatter_pd): Ditto.
39688         (_mm_mask_i32scatter_pd): Ditto.
39689         (_mm256_i64scatter_ps): Ditto.
39690         (_mm256_mask_i64scatter_ps): Ditto.
39691         (_mm_i64scatter_ps): Ditto.
39692         (_mm_mask_i64scatter_ps): Ditto.
39693         (_mm256_i64scatter_pd): Ditto.
39694         (_mm256_mask_i64scatter_pd): Ditto.
39695         (_mm_i64scatter_pd): Ditto.
39696         (_mm_mask_i64scatter_pd): Ditto.
39697         (_mm256_i32scatter_epi32): Ditto.
39698         (_mm256_mask_i32scatter_epi32): Ditto.
39699         (_mm_i32scatter_epi32): Ditto.
39700         (_mm_mask_i32scatter_epi32): Ditto.
39701         (_mm256_i32scatter_epi64): Ditto.
39702         (_mm256_mask_i32scatter_epi64): Ditto.
39703         (_mm_i32scatter_epi64): Ditto.
39704         (_mm_mask_i32scatter_epi64): Ditto.
39705         (_mm256_i64scatter_epi32): Ditto.
39706         (_mm256_mask_i64scatter_epi32): Ditto.
39707         (_mm_i64scatter_epi32): Ditto.
39708         (_mm_mask_i64scatter_epi32): Ditto.
39709         (_mm256_i64scatter_epi64): Ditto.
39710         (_mm256_mask_i64scatter_epi64): Ditto.
39711         (_mm_i64scatter_epi64): Ditto.
39712         (_mm_mask_i64scatter_epi64): Ditto.
39713         * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
39714         (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
39715         (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
39716         (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
39717         (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
39718         (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
39719         (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
39720         (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
39721         (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
39722         (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
39723         (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
39724         (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
39725         (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
39726         (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
39727         (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
39728         (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
39729         (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
39730         (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
39731         (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
39732         (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
39733         (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
39734         (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
39735         (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
39736         (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
39737         (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
39738         (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
39739         (VOID_QI_V8DI_PCINT_INT_INT): Remove.
39740         (V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
39741         (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
39742         (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
39743         (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
39744         (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
39745         (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
39746         (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
39747         (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
39748         (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
39749         (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
39750         (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
39751         (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
39752         (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
39753         (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
39754         (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
39755         (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
39756         (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
39757         (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
39758         (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
39759         (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
39760         (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
39761         (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
39762         (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
39763         (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
39764         (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
39765         (VOID_QI_V8DI_PCVOID_INT_INT): Add.
39766         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
39767         definitions accordingly.
39768
39769 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
39770             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
39771
39772         PR target/79079
39773         * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
39774         gen_lowpart.
39775
39776 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
39777
39778         PR target/79058
39779         * ira-conflicts.c (ira_build_conflicts): Update total conflict
39780         hard regs for inner regno.
39781
39782 2017-01-17  Martin Liska  <mliska@suse.cz>
39783
39784         PR ipa/71207
39785         * ipa-polymorphic-call.c (contains_type_p): Fix wrong
39786         assumption and add comment.
39787
39788 2017-01-17  Nathan Sidwell  <nathan@acm.org>
39789
39790         * ipa-visibility.c (localize_node): New function, broken out of ...
39791         (function_and_variable_visibility): ... here. Call it.
39792
39793 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39794
39795         PR middle-end/77445
39796         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
39797         correctly set frequency of oudgoing edge.
39798         (duplicate_thread_path): Fix profile updating.
39799
39800 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39801
39802         PR other/79046
39803         * configure.ac: Add GCC_BASE_VER.
39804         * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
39805         version from BASE-VER file.
39806         (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
39807         (gcc.o): Depend on $(BASEVER).
39808         * common.opt (dumpfullversion): New option.
39809         * gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
39810         * doc/invoke.texi: Document -dumpfullversion.
39811         * doc/install.texi: Document --with-gcc-major-version-only.
39812         * configure: Regenerated.
39813
39814 2017-01-17  Richard Biener  <rguenther@suse.de>
39815
39816         PR tree-optimization/71433
39817         * tree-vrp.c (register_new_assert_for): Merge same asserts
39818         on all incoming edges.
39819         (process_assert_insertions_for): Handle insertions at the
39820         beginning of BBs.
39821
39822 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
39823
39824         * config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
39825         * config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
39826
39827 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
39828
39829         PR target/78633
39830         * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
39831         RTL sharing.
39832
39833 2017-01-17  Alan Modra  <amodra@gmail.com>
39834
39835         PR target/79066
39836         * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
39837         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
39838         symbolic stack limit when pic.
39839
39840 2017-01-16  Martin Sebor  <msebor@redhat.com>
39841
39842         PR tree-optimization/78608
39843         * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
39844
39845 2017-01-16  Jeff Law  <law@redhat.com>
39846
39847         Revert:
39848         2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
39849         * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
39850         for several include directories that may be relative to sysroot.
39851         * config/i386/x-mingw32 (gplus_includedir): Define.
39852         (gplus_tool_includedir, gplus_backward_include_dir): Likewise.
39853         (native_system_includedir): Likewise.
39854         * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
39855         override if TARGET_SYSTEM_ROOT is defined.
39856         (NATIVE_SYSTEM_HEADER_DIR): Likewise.
39857
39858         PR tree-optimization/79090
39859         PR tree-optimization/33562
39860         PR tree-optimization/61912
39861         PR tree-optimization/77485
39862         * tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
39863         and computed trims into the dump file.
39864
39865 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39866
39867         * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
39868
39869 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
39870
39871         PR c/79089
39872         * gimplify.c (gimplify_init_constructor): If want_value and
39873         object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
39874         fix.
39875
39876         PR target/79080
39877         * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
39878         sequence.  Formatting fixes.
39879         (doloop_optimize): Formatting fixes.
39880
39881         PR driver/49726
39882         * gcc.c (debug_level_greater_than_spec_func): New function.
39883         (static_spec_functions): Add debug-level-gt spec function.
39884         (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
39885         !g0.
39886         * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39887         * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39888         * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
39889         gpubnames, ggnu-pubnames, gno-record-gcc-switches,
39890         grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
39891         gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
39892
39893 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
39894
39895         * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
39896         QImode fixups to general and mask registers only.
39897
39898 2017-01-16  Carl Love  <cel@us.ibm.com>
39899
39900         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
39901         for built-in functions
39902         vector signed char vec_nabs (vector signed char)
39903         vector signed short vec_nabs (vector signed short)
39904         vector signed int vec_nabs (vector signed int)
39905         vector signed long long vec_nabs (vector signed long long)
39906         vector float vec_nabs (vector float)
39907         vector double vec_nabs (vector double)
39908         * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
39909         and NABS overload.
39910         * config/rs6000/altivec.md: New define_expand nabs<mode>2 types
39911         * config/rs6000/altivec.h: New define for vec_nabs built-in function.
39912         * doc/extend.texi: Update the documentation file for the new built-in
39913         functions.
39914
39915 2017-01-16  Martin Sebor  <msebor@redhat.com>
39916
39917         * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
39918         message.
39919
39920 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39921
39922         * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
39923         UNSPEC_VSX__XXSPLTD to require special splat handling.
39924
39925 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
39926
39927         PR bootstrap/78616
39928         * system.h: Poison strndup.
39929
39930 2017-01-16  Alan Modra  <amodra@gmail.com>
39931
39932         PR target/79098
39933         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
39934         use a switch.
39935
39936 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
39937
39938         * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
39939
39940 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
39941
39942         * config/i386/i386.c (ix86_legitimate_combined_insn): Do not
39943         call recog here.  Assert that INSN_CODE (insn) is non-negative.
39944
39945 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39946
39947         PR target/72749
39948         * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
39949         fallthrough.
39950         * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
39951         in the currently scheduled RTL fragment.
39952
39953 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39954
39955         PR rtl-optimization/78751
39956         * ifcvt.c (find_cond_trap): If we generated a non-existing insn,
39957         give up.
39958
39959 2017-01-14  Jeff Law  <law@redhat.com>
39960
39961         PR tree-optimization/79090
39962         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
39963         variable length stores.
39964         (compute_trims): Delete dead assignment to *trim_tail.
39965         (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
39966         zero length.
39967
39968 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
39969
39970         PR rtl-optimization/78626
39971         PR rtl-optimization/78727
39972         * cprop.c (one_cprop_pass): Collect unconditional traps in the middle
39973         of a block, and split such blocks after everything else is finished.
39974
39975 2017-01-14  Alan Modra  <amodra@gmail.com>
39976
39977         PR target/72749
39978         * combine.c (recog_for_combine_1): Set INSN_CODE before calling
39979         target legitimate_combined_insn.
39980         * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
39981         (rs6000_legitimate_combined_insn): New function.
39982         * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
39983         all uses.
39984         (ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
39985         (ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
39986         (ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
39987
39988 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
39989
39990         * doc/frontends.texi (G++ and GCC): Remove references to Java.
39991
39992 2017-01-13  Jeff Law  <law@redhat.com>
39993
39994         PR tree-optimization/33562
39995         PR tree-optimization/61912
39996         PR tree-optimization/77485
39997         * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
39998         a statement.
39999         (delete_dead_assignment): Likewise.
40000         (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
40001         statement to delete_dead_call and delete_dead_assignment.
40002
40003 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
40004
40005         PR c/78304
40006         * substring-locations.c (format_warning_va): Strengthen case 1 so
40007         that both endpoints of the substring must be within the format
40008         range for just the substring to be printed.
40009
40010 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
40011
40012         * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
40013         * config/i386/i386.c (ix86_target_string): Add missing options
40014         to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
40015         isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
40016         flags_other and ix86_target_other to flags2_other.  Display unknown
40017         isa2 options.
40018         (ix86_valid_target_attribute_inner_p): Add missing options and
40019         reorder options by implied ISAs, as in ix86_target_string.
40020
40021 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40022
40023         * hash-table.h (hash_table::too_empty_p): New function.
40024         (hash_table::expand): Use it.
40025         (hash_table::traverse): Likewise.
40026         (hash_table::empty_slot): Use sizeof (value_type) instead of
40027         sizeof (PTR) to convert bytes to elements.  Shrink the table
40028         if the current size is excessive for the current number of
40029         elements.
40030
40031 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40032
40033         * ira-costs.c (record_reg_classes): Break from the inner loop
40034         early once alt_fail is known to be true.  Update outer loop
40035         handling accordingly.
40036
40037 2017-01-13  Jeff Law  <law@redhat.com>
40038
40039         * tree-ssa-dse.c (decrement_count): New function.
40040         (increment_start_addr, maybe_trim_memstar_call): Likewise.
40041         (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
40042         when we know the partially dead statement is a mem* function.
40043
40044         PR tree-optimization/61912
40045         PR tree-optimization/77485
40046         * tree-ssa-dse.c: Include expr.h.
40047         (maybe_trim_constructor_store): New function.
40048         (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
40049
40050         PR tree-optimization/33562
40051         PR tree-optimization/61912
40052         PR tree-optimization/77485
40053         * doc/invoke.texi: Document new dse-max-object-size param.
40054         * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
40055         * tree-ssa-dse.c: Include params.h.
40056         (dse_store_status): New enum.
40057         (initialize_ao_ref_for_dse): New, partially extracted from
40058         dse_optimize_stmt.
40059         (valid_ao_ref_for_dse, normalize_ref): New.
40060         (setup_live_bytes_from_ref, compute_trims): Likewise.
40061         (clear_bytes_written_by, maybe_trim_complex_store): Likewise.
40062         (maybe_trim_partially_dead_store): Likewise.
40063         (maybe_trim_complex_store): Likewise.
40064         (dse_classify_store): Renamed from dse_possibly_dead_store_p.
40065         Track what bytes live from the original store.  Return tri-state
40066         for dead, partially dead or live.
40067         (dse_dom_walker): Add constructor, destructor and new private members.
40068         (delete_dead_call, delete_dead_assignment): New extracted from
40069         dse_optimize_stmt.
40070         (dse_optimize_stmt): Make a member of dse_dom_walker.
40071         Use initialize_ao_ref_for_dse.
40072
40073         PR tree-optimization/33562
40074         PR tree-optimization/61912
40075         PR tree-optimization/77485
40076         * sbitmap.h (bitmap_count_bits): Prototype.
40077         (bitmap_clear_range, bitmap_set_range): Likewise.
40078         * sbitmap.c (bitmap_clear_range): New function.
40079         (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
40080
40081 2017-01-13  Martin Liska  <mliska@suse.cz>
40082
40083         PR ipa/79043
40084         * function.c (set_cfun): Add new argument force.
40085         * function.h (set_cfun): Likewise.
40086         * ipa-inline-transform.c (inline_call): Use the function when
40087         strict alising from is dropped for function we inline to.
40088
40089 2017-01-13  Richard Biener  <rguenther@suse.de>
40090
40091         * tree-pretty-print.c (dump_generic_node): Fix inverted condition
40092         for dumping GIMPLE INTEGER_CSTs.
40093
40094 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
40095
40096         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
40097         to 201112L since C++17.
40098
40099 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
40100
40101         PR sanitizer/78887
40102         * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
40103         if -fsanitize=kernel-address is present.
40104
40105 2017-01-13  Richard Biener  <rguenther@suse.de>
40106
40107         * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
40108         as _Literal ( type ) number in case usual suffixes do not
40109         preserve all information.
40110
40111 2017-01-13  Richard Biener  <rguenther@suse.de>
40112
40113         PR tree-optimization/77283
40114         * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
40115         and ssa-iterators.h.
40116         (is_feasible_trace): Implement a cost model based on joiner
40117         PHI node uses.
40118
40119 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
40120
40121         PR target/79004
40122         * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
40123         char or short to __float128/_Float128 directly.
40124
40125 2017-01-12  Martin Sebor  <msebor@redhat.com>
40126
40127         to -Wformat-overflow.
40128         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
40129         (min_bytes_remaining): Same.
40130         (get_string_length): Same.
40131         (format_string): Same.
40132         (format_directive): Same.
40133         (add_bytes): Same.
40134         (pass_sprintf_length::handle_gimple_call): Same.
40135
40136 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
40137
40138         * gimple-ssa-sprintf.c (try_substitute_return_value): Remove
40139         info.nowrite calls with no lhs that can't throw.  Return bool
40140         whether gsi_remove has been called or not.
40141         (pass_sprintf_length::handle_gimple_call): Return bool whether
40142         try_substitute_return_value called gsi_remove.  Formatting fix.
40143         (pass_sprintf_length::execute): Don't use gsi_remove if
40144         handle_gimple_call returned true.
40145
40146         PR bootstrap/79069
40147         * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
40148         be removed due to side-effects, don't remove following barrier nor
40149         turn the successor edge into fallthru edge.
40150
40151 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40152
40153         PR target/79044
40154         * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
40155         element-reversing loads and stores as not swappable.
40156
40157 2017-01-12  Nathan Sidwell  <nathan@acm.org>
40158             Nicolai Stange  <nicstange@gmail.com>
40159
40160         * combine.c (try_combine): Don't ignore result of overlap checking
40161         loop.  Combine overlap & asm check into single loop.
40162
40163 2017-01-12  Richard Biener  <rguenther@suse.de>
40164
40165         * tree-pretty-print.c (dump_generic_node): Provide -gimple
40166         variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
40167
40168 2017-01-12  Richard Biener  <rguenther@suse.de>
40169
40170         * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
40171         and TS_TARGET_OPTION directly derive from TS_BASE.
40172         * tree-core.h (tree_optimization_option): Derive from tree_base.
40173         (tree_target_option): Likewise.
40174
40175 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
40176
40177         * config/i386/i386.c (memory_address_length): Increase len
40178         only when rip_relative_addr_p returns false.
40179
40180 2017-01-11  Julia Koval  <julia.koval@intel.com>
40181
40182         * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
40183         (OPTION_MASK_ISA_SGX_SET): New.
40184         (ix86_handle_option): Handle OPT_msgx.
40185         * config.gcc: Added sgxintrin.h.
40186         * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
40187         * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
40188         * config/i386/i386.c (ix86_target_string): Add -msgx.
40189         (PTA_SGX): New.
40190         (ix86_option_override_internal): Handle new options.
40191         (ix86_valid_target_attribute_inner_p): Add sgx.
40192         * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
40193         * config/i386/i386.opt: Add msgx.
40194         * config/i386/sgxintrin.h: New file.
40195         * config/i386/x86intrin.h: Add sgxintrin.h.
40196
40197 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40198
40199         PR c++/71537
40200         * fold-const.c (maybe_nonzero_address): Return 1 for function
40201         local objects.
40202         (tree_single_nonzero_warnv_p): Don't handle function local objects
40203         here.
40204
40205         PR c++/72813
40206         * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
40207         of c-header.
40208
40209 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
40210
40211         PR driver/78877
40212         * opts.c: Include "spellcheck.h"
40213         (struct string_fragment): New struct.
40214         (struct edit_distance_traits<const string_fragment &>): New
40215         struct.
40216         (get_closest_sanitizer_option): New function.
40217         (parse_sanitizer_options): Offer suggestions for unrecognized arguments.
40218
40219 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40220
40221         * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
40222         by 12.
40223         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
40224         DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
40225         (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
40226         (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
40227         for initial die_offset if dwarf_split_debug_info.
40228         (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
40229         initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
40230         fields.
40231         (output_skeleton_debug_sections): Formatting fix.  Use
40232         DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
40233         DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
40234
40235 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
40236
40237         * config/arm/cortex-a53.md: Add bypasses for
40238         cortex_a53_r2f_cvt.
40239         (cortex_a53_r2f): Only use for transfers.
40240         (cortex_a53_f2r): Likewise.
40241         (cortex_a53_r2f_cvt): Add reservation for conversions.
40242         (cortex_a53_f2r_cvt): Likewise.
40243
40244 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
40245
40246         * config/arm/arm_neon.h: Add __artificial__ and gnu_inline
40247         to all inlined functions, change static to extern.
40248
40249 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
40250
40251         PR target/78253
40252         * config/arm/arm.c (legitimize_pic_address): Handle reference to
40253         weak symbol.
40254         (arm_assemble_integer): Likewise.
40255
40256 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
40257
40258         * config.gcc: Use new awk script to check CPU, FPU and architecture
40259         parameters for --with-... options.
40260         * config/arm/parsecpu.awk: New file
40261         * config/arm/arm-cpus.in: New file.
40262         * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
40263         files.
40264         * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
40265         files.
40266         * config/arm/t-arm: Update dependency rules.
40267         * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
40268         of processing .def files.
40269         * config/arm/genopt.sh: Deleted.
40270         * config/arm/gentune.sh: Deleted.
40271         * config/arm/arm-cores.def: Deleted.
40272         * config/arm/arm-arches.def: Deleted.
40273         * config/arm/arm-fpus.def: Deleted.
40274         * config/arm/arm-tune.md: Regenerated.
40275         * config/arm/arm-tables.opt: Regenerated.
40276         * config/arm/arm-cpu.h: New generated file.
40277         * config/arm/arm-cpu-data.h: New generated file.
40278         * config/arm/arm-cpu-cdata.h: New generated file.
40279
40280 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
40281
40282         PR lto/79042
40283         * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
40284         bit.
40285         (input_varpool_node): Unpack dynamically_initialized bit.
40286
40287 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
40288
40289         PR rtl-optimization/79032
40290         * lra-constraints.c (simplify_operand_subreg): In the MEM case, test
40291         the alignment of the adjusted memory reference against that of MODE,
40292         instead of the alignment of the original memory reference.
40293
40294 2017-01-11  Martin Jambor  <mjambor@suse.cz>
40295
40296         * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
40297         test.
40298         * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
40299         decorated functions.
40300
40301 2017-01-11  Richard Biener  <rguenther@suse.de>
40302
40303         * tree-vrp.c (evrp_dom_walker::before_dom_children): Also
40304         set range/nonnull info for PHI results.  Do not set it on
40305         stmts marked for removal.
40306
40307 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
40308
40309         * expr.c (store_field): In the bitfield case, fetch the return value
40310         from the registers before applying a single big-endian adjustment.
40311         Always do a final load for a BLKmode value not larger than a word.
40312
40313 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
40314
40315         PR c++/77949
40316         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40317         that we correctly handle column numbers greater than
40318         LINE_MAP_MAX_COLUMN_NUMBER.
40319
40320 2017-01-10  Martin Sebor  <msebor@redhat.com>
40321
40322         PR middle-end/78245
40323         * gimple-ssa-sprintf.c (get_destination_size): Call
40324         {init,fini}object_sizes.
40325         * tree-object-size.c (addr_object_size): Adjust.
40326         (pass_through_call): Adjust.
40327         (pass_object_sizes::execute): Adjust.
40328         * tree-object-size.h (fini_object_sizes): Declare.
40329
40330 2017-01-10  Martin Sebor  <msebor@redhat.com>
40331
40332         PR tree-optimization/78775
40333         * builtins.c (get_size_range): Move...
40334         * calls.c: ...to here.
40335         (alloc_max_size): Accept zero argument.
40336         (operand_signed_p): Remove.
40337         (maybe_warn_alloc_args_overflow): Call get_size_range.
40338         * calls.h (get_size_range): Declare.
40339
40340 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
40341
40342         * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
40343         from TI's devices.csv file as of September 2016.
40344         * config/msp430/msp430.c (msp430_mcu_data): Likewise.
40345
40346 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
40347
40348         * doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
40349         * doc/invoke.texi: Likewise.
40350         * doc/md.texi: Likewise.
40351         * doc/objc.texi: Likewise.
40352
40353 2017-01-10  Joshua Conner  <joshconner@google.com>
40354
40355         * config/arm/fuchsia-elf.h: New file.
40356         * config/fuchsia.h: New file.
40357         * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
40358         (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
40359         targets.
40360         * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
40361
40362 2016-01-10  Richard Biener  <rguenther@suse.de>
40363
40364         PR tree-optimization/79034
40365         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
40366         Propagate out degenerate PHIs in the joiner.
40367
40368 2017-01-10  Martin Liska  <mliska@suse.cz>
40369
40370         * ipa-icf.c (sort_sem_items_by_decl_uid): New function.
40371         (sort_congruence_classes_by_decl_uid): Likewise.
40372         (sort_congruence_class_groups_by_decl_uid): Likewise.
40373         (sem_item_optimizer::merge_classes): Sort class, groups in these
40374         classes and members in the groups by DECL_UID of declarations.
40375         This would make merge operations stable.
40376
40377 2017-01-10  Martin Liska  <mliska@suse.cz>
40378
40379         * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
40380         usage of m_classes_vec.
40381         (sem_item_optimizer::~sem_item_optimizer):  Likewise.
40382         (sem_item_optimizer::get_group_by_hash): Likewise.
40383         (sem_item_optimizer::subdivide_classes_by_equality): Likewise.
40384         (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
40385         (sem_item_optimizer::verify_classes): Likewise.
40386         (sem_item_optimizer::process_cong_reduction): Likewise.
40387         (sem_item_optimizer::dump_cong_classes): Likewise.
40388         (sem_item_optimizer::merge_classes): Likewise.
40389         * ipa-icf.h (congruence_class_hash): Rename from
40390         congruence_class_group_hash.  Remove declaration of m_classes_vec.
40391
40392 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
40393
40394         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
40395         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
40396         * config.gcc: Add avx512vpopcntdqintrin.h.
40397         * config/i386/avx512vpopcntdqintrin.h: New.
40398         * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
40399         * config/i386/i386-builtin-types.def: Add new types.
40400         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
40401         __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
40402         __builtin_ia32_vpopcountq_v8di_mask): New.
40403         * config/i386/i386-c.c (ix86_target_macros_internal): Define
40404         __AVX512VPOPCNTDQ__.
40405         * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
40406         (PTA_AVX512VPOPCNTDQ): Define.
40407         * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
40408         TARGET_AVX512VPOPCNTDQ_P): Define.
40409         * config/i386/i386.opt: Add mavx512vpopcntdq.
40410         * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
40411         * config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
40412
40413 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40414
40415         PR middle-end/77484
40416         * predict.def (PRED_CALL): Set to 67.
40417
40418 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
40419
40420         * expr.c (store_field): In the bitfield case, if the value comes from
40421         a function call and is of an aggregate type returned in registers, do
40422         not modify the field mode; extract the value in all cases if the mode
40423         is BLKmode and the size is not larger than a word.
40424
40425 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
40426
40427         PR target/71017
40428         * config/i386/cpuid.h: Fix undefined behavior.
40429
40430 2017-01-04  Jeff Law  <law@redhat.com>
40431
40432         PR tree-optimization/79007
40433         PR tree-optimization/67955
40434         * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
40435         conservative for pt.null when flag_non_call_exceptions is on.
40436
40437 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40438
40439         PR translation/79019
40440         PR translation/79020
40441         * params.def (PARAM_INLINE_MIN_SPEEDUP,
40442         PARAM_IPA_CP_SINGLE_CALL_PENALTY,
40443         PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
40444         in descriptions.
40445         * config/avr/avr.opt (maccumulate-args): Likewise.
40446         * config/msp430/msp430.opt (mwarn-mcu): Likewise.
40447         * common.opt (freport-bug): Likewise.
40448         * cif-code.def (CIF_FINAL_ERROR): Likewise.
40449         * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
40450         * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
40451         translatable string.
40452         * config/i386/i386.c (function_value_32): Likewise.
40453         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
40454         * config/msp430/msp430.c (msp430_option_override, msp430_attr):
40455         Likewise.
40456         * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
40457         * common/config/msp430/msp430-common.c (msp430_handle_option):
40458         Likewise.
40459         * symtab.c (symtab_node::verify_base): Likewise.
40460         * opts.c (set_debug_level): Likewise.
40461         * tree.c (verify_type_variant): Likewise.  Fix typo in comment.
40462         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
40463         missing whitespace to translatable strings.
40464         * config/avr/avr.md (bswapsi2): Fix typo in comment.
40465         * config/sh/superh.h: Likewise.
40466         * config/i386/xopintrin.h: Likewise.
40467         * config/i386/znver1.md: Likewise.
40468         * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
40469         * ipa-inline-analysis.c (compute_inline_parameters): Likewise.
40470         * double-int.h (struct double_int): Likewise.
40471         * double-int.c (div_and_round_double): Likewise.
40472         * wide-int.cc: Likewise.
40473         * tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
40474         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
40475         * cfgcleanup.c (crossjumps_occured): Renamed to ...
40476         (crossjumps_occurred): ... this.
40477         (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
40478         Adjust all uses.
40479
40480         PR tree-optimization/78899
40481         * tree-if-conv.c (version_loop_for_if_conversion): Instead of
40482         returning bool return struct loop *, NULL for failure and the new
40483         loop on success.
40484         (versionable_outer_loop_p): Don't version outer loop if it has
40485         dont_vectorized bit set.
40486         (tree_if_conversion): When versioning outer loop, ensure
40487         tree_if_conversion is performed also on the inner loop of the
40488         non-vectorizable outer loop copy.
40489         * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
40490         LOOP_VECTORIZED in inner loop of the scalar outer loop and
40491         prevent vectorization of it.
40492         (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
40493         the outer loop vectorization of the non-scalar version is attempted
40494         before vectorization of the inner loop in scalar version.  If
40495         outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
40496         vectorization of its inner loop.
40497         * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
40498         has 2 inner loops, rename also on edges from bb whose single pred
40499         is outer_loop->header.  Fix typo in function comment.
40500
40501 2017-01-09  Martin Sebor  <msebor@redhat.com>
40502
40503         PR bootstrap/79033
40504         * asan.c (asan_emit_stack_protection): Increase local buffer size
40505         to avoid snprintf truncation warning.
40506
40507 2017-01-09  Andrew Pinski  <apinski@cavium.com>
40508
40509         * config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
40510         to reference thunderx2t99 for the tuning structure
40511         * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
40512         Rename to ...
40513         (thunderx2t99_extra_costs): This.
40514         * config/aarch64/aarch64-tune.md: Regenerate.
40515         * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
40516         (vulcan_addrcost_table): This.
40517         (vulcan_regmove_cost): Rename to ...
40518         (thunderx2t99_regmove_cost): This.
40519         (vulcan_vector_cost): Rename to ...
40520         (thunderx2t99_vector_cost): this.
40521         (vulcan_branch_cost): Rename to ...
40522         (thunderx2t99_branch_cost): This.
40523         (vulcan_tunings): Rename to ...
40524         (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
40525         * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
40526
40527 2017-01-09  Martin Jambor  <mjambor@suse.cz>
40528
40529         PR ipa/78365
40530         PR ipa/78599
40531         * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
40532         * ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
40533         (propagate_vr_accross_jump_function): Use the above function for all
40534         value range computations for pass-through jump functions and type
40535         converasion from explicit value range values.
40536         (ipcp_propagate_stage): Do not attempt to deduce types of formal
40537         parameters from TYPE_ARG_TYPES.
40538         * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
40539         (ipa_write_node_info): Stream type of the actual argument.
40540         (ipa_read_node_info): Likewise. Also remove trailing whitespace.
40541
40542 2017-01-09  Martin Liska  <mliska@suse.cz>
40543
40544         PR pch/78970
40545         * gcc.c (driver_handle_option): Handle OPT_E and set have_E.
40546         (lookup_compiler): Do not show error message with have_E.
40547
40548 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40549
40550         PR tree-optimization/78938
40551         * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
40552         where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
40553         BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
40554         {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
40555         fixes.
40556
40557 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40558
40559         * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
40560         is const0_rtx.
40561
40562 2017-01-09  Richard Biener  <rguenther@suse.de>
40563
40564         PR tree-optimization/78997
40565         * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
40566         name condition properly.
40567
40568 2017-01-09  Richard Biener  <rguenther@suse.de>
40569
40570         PR debug/79000
40571         * dwarf2out.c (is_cxx): New overload with context.
40572         (is_naming_typedef_decl): Use it.
40573
40574 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40575
40576         * invoke.texi (Option Summary): Correct spacing in option lists
40577         and add line breaks to fix over-long lines.
40578
40579 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40580
40581         PR middle-end/17660
40582
40583         * extend.texi (Common Variable Attributes): Add xref to GCC
40584         Internals manual to explain mode attribute keywords.
40585
40586 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40587
40588         PR other/16519
40589         * doc/invoke.texi (Option Summary): Move -pthread to Linker Options
40590         and Preprocessor Options.
40591         (Options for Linking): Document -pthread here....
40592         (RS/6000 and PowerPC Options): ...not here.
40593         (Solaris 2 Options): ...or here.
40594         * doc/cppopts.texi: Document -pthread.
40595
40596 2017-01-08  Martin Sebor  <msebor@redhat.com>
40597
40598         PR middle-end/77708
40599         * doc/invoke.texi (Warning Options): Document -Wformat-truncation.
40600         * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
40601         New member functions.
40602         (format_directive): Used them.
40603         (add_bytes): Same.
40604         (pass_sprintf_length::handle_gimple_call): Same.
40605         * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
40606         to avoid truncation for any argument.
40607         (extract_affine_mul): Same.
40608         * tree.c (get_file_function_name): Same.
40609
40610 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40611
40612         PR middle-end/77484
40613         * predict.def (PRED_INDIR_CALL): Set to 86.
40614
40615 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40616
40617         PR preprocessor/54124
40618         * doc/cppopts.texi: Reformat -d subtable to list the full name
40619         of the options.  Add cross-reference to the docs for the general
40620         compiler -d options.
40621         * doc/invoke.texi (Developer Options): Add cross-reference to the
40622         preprocessor-specific -d option documentation.
40623
40624 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40625
40626         PR preprocessor/13498
40627         * doc/cpp.texi (Search Path): Rewrite to remove obsolete and
40628         redudant material, and reflect new command-line options.
40629         (System Headers): Likewise.
40630
40631 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40632
40633         * doc/cppdiropts.texi: Merge documentation of -I, -iquote,
40634         -isystem, and -idirafter.  Copy-edit.
40635         * doc/cppopts.texi: Copy-edit.  Remove contradiction about
40636         default for -ftrack-macro-expansion.  Delete obsolete and
40637         badly-formatted implementation details about -fdebug-cpp output.
40638         * doc/cppwarnopts.texi: Copy-edit.
40639
40640 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
40641
40642         PR c++/72803
40643         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40644         that the transition from a max line width >= 1<<10 to narrower
40645         lines works correctly.
40646
40647 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
40648
40649         * doc/options.texi (PerFunction): New.
40650         * opt-functions.awk (switch_flags): Map both Optimization and
40651         PerFunction to CL_OPTIMIZATION.
40652         * opth-gen.awk: Test for PerFunction flag along with
40653         Optimization.
40654         * optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
40655         it only when the latter is present.  Skip those that don't in
40656         the hash function generator.
40657         * common.opt (fvar-tracking): Mark as PerFunction instead of
40658         Optimization.
40659         (fvar-tracking-assignments): Likewise.
40660         (fvar-tracking-assignments-toggle): Likewise.
40661         (fvar-tracking-uninit): Likewise.
40662
40663 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
40664
40665         PR translation/79018
40666         * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
40667         the and store.
40668
40669 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
40670
40671         PR target/57583
40672         * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
40673         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
40674         TARGET_LONG_JUMP_TABLE_OFFSETS.
40675         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
40676         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
40677         * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
40678         (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
40679         * config/m68k/m68k.md (tablejump expander): Likewise.
40680         (*tablejump_pcrel_hi): Renamed from unnamed insn, reject
40681         TARGET_LONG_JUMP_TABLE_OFFSETS.
40682         (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
40683         * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
40684
40685 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
40686             David Holsgrove <david.holsgrove@xilinx.com>
40687
40688         * common/config/microblaze/microblaze-common.c
40689         (TARGET_EXCEPT_UNWIND_INFO): Remove.
40690         * config/microblaze/microblaze-protos.h (microblaze_eh_return):
40691         New prototype.
40692         * config/microblaze/microblaze.c (microblaze_must_save_register)
40693         (microblaze_expand_epilogue, microblaze_return_addr): Handle
40694         calls_eh_return.
40695         (microblaze_eh_return): New function.
40696         * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
40697         (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
40698         (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
40699         * config/microblaze/microblaze.md (eh_return): New pattern.
40700
40701 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
40702
40703         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
40704         GCC_DIAGNOSTIC_STRINGIFY): Define.
40705
40706         * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
40707
40708 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40709
40710         * config/arm/arm.md (<mcrr>): New.
40711         (<mrrc>): New.
40712         * config/arm/arm.c (arm_arch5te): New.
40713         (arm_option_override): Set arm_arch5te.
40714         (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
40715         and mrrc2.
40716         * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
40717         (arm_mcrr_qualifiers): ... this. New.
40718         (MRRC_QUALIFIERS): Define to...
40719         (arm_mrrc_qualifiers): ... this. New.
40720         * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
40721         __arm_mrrc2): New.
40722         * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
40723         * config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
40724         (MRRCI, mrrc, MRRC): New.
40725         * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
40726         VUNSPEC_MRRC2): New.
40727
40728 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40729
40730         * config/arm/arm.md (<mcr>): New.
40731         (<mrc>): New.
40732         * config/arm/arm.c (arm_coproc_builtin_available): Add
40733         support for mcr, mrc, mcr2 and mrc2.
40734         * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
40735         (arm_mcr_qualifiers): ... this. New.
40736         (MRC_QUALIFIERS): Define to ...
40737         (arm_mrc_qualifiers): ... this. New.
40738         (MCR_QUALIFIERS): Define to ...
40739         (arm_mcr_qualifiers): ... this. New.
40740         * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
40741         __arm_mrc2): New.
40742         * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
40743         * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
40744         * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
40745         VUNSPEC_MRC2): New.
40746
40747 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40748
40749         * config/arm/arm.md (*ldc): New.
40750         (*stc): New.
40751         (<ldc>): New.
40752         (<stc>): New.
40753         * config/arm/arm.c (arm_coproc_builtin_available): Add
40754         support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
40755         (arm_coproc_ldc_stc_legitimate_address): New.
40756         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
40757         'qualifier_const_pointer'.
40758         (LDC_QUALIFIERS): Define to...
40759         (arm_ldc_qualifiers): ... this. New.
40760         (STC_QUALIFIERS): Define to...
40761         (arm_stc_qualifiers): ... this. New.
40762         * config/arm/arm-protos.h
40763         (arm_coproc_ldc_stc_legitimate_address): New.
40764         * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
40765         __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
40766         * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
40767         stc2, stcl, stc2l): New.
40768         * config/arm/constraints.md (Uz): New.
40769         * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
40770         * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
40771         VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
40772         VUNSPEC_STC2L): New.
40773
40774 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40775
40776         * config/arm/arm.md (<cdp>): New.
40777         * config/arm/arm.c (neon_const_bounds): Rename this ...
40778         (arm_const_bounds): ... this.
40779         (arm_coproc_builtin_available): New.
40780         * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
40781         (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
40782         (CDP_QUALIFIERS): Define to...
40783         (arm_cdp_qualifiers): ... this. New.
40784         (void_UP): Define.
40785         (arm_expand_builtin_args): Add case for 6 arguments.
40786         * config/arm/arm-protos.h (neon_const_bounds): Rename this ...
40787         (arm_const_bounds): ... this.
40788         (arm_coproc_builtin_available): New.
40789         * config/arm/arm_acle.h (__arm_cdp): New.
40790         (__arm_cdp2): New.
40791         * config/arm/arm_acle_builtins.def (cdp): New.
40792         (cdp2): New.
40793         * config/arm/iterators.md (CDPI,CDP,cdp): New.
40794         * config/arm/neon.md: Rename all 'neon_const_bounds' to
40795         'arm_const_bounds'.
40796         * config/arm/types.md (coproc): New.
40797         * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
40798         * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
40799         * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
40800         arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
40801
40802 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40803
40804         * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
40805         (UBINOP_QUALIFIERS): New.
40806         (si_UP): Define.
40807         (acle_builtin_data): New. Change comment.
40808         (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
40809         ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
40810         ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
40811         arm_acle_builtins.def.
40812         (ARM_BUILTIN_ACLE_PATTERN_START): Define.
40813         (arm_init_acle_builtins): New.
40814         (CRC32_BUILTIN): Remove.
40815         (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
40816         crc32cb, crc32ch and crc32cw.
40817         (arm_init_crc32_builtins): Remove.
40818         (arm_init_builtins): Use arm_init_acle_builtins rather
40819         than arm_init_crc32_builtins.
40820         (arm_expand_acle_builtin): New.
40821         (arm_expand_builtin): Use 'arm_expand_acle_builtin'.
40822         * config/arm/arm_acle_builtins.def: New.
40823
40824 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40825
40826         * config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
40827         (arm_builtin_datum): ... this.
40828         (arm_init_neon_builtin): Rename to ...
40829         (arm_init_builtin): ... this. Add a new parameters PREFIX
40830         and USE_SIG_IN_NAME.
40831         (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
40832         'arm_init_builtin'. Replace type 'neon_builtin_datum' with
40833         'arm_builtin_datum'.
40834         (arm_init_vfp_builtins): Likewise.
40835         (builtin_arg): Rename enum's replacing 'NEON_ARG' with
40836         'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
40837         (arm_expand_neon_args): Rename to ...
40838         (arm_expand_builtin_args): ... this. Rename builtin_arg
40839         enum values and differentiate between ARG_BUILTIN_MEMORY
40840         and ARG_BUILTIN_NEON_MEMORY.
40841         (arm_expand_neon_builtin_1): Rename to ...
40842         (arm_expand_builtin_1): ... this. Rename builtin_arg enum
40843         values, arm_expand_builtin_args and add bool parameter NEON.
40844         (arm_expand_neon_builtin): Use arm_expand_builtin_1.
40845         (arm_expand_vfp_builtin): Likewise.
40846         (NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
40847
40848 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40849
40850         PR middle-end/77484
40851         * predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
40852         * predict.c (tree_estimate_probability_bb): Reverse direction of
40853         polymorphic call predictor.
40854
40855 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
40856
40857         * passes.c (execute_one_pass): Split out pass-skipping logic into...
40858         (determine_pass_name_match): ...this new function and...
40859         (should_skip_pass_p): ...this new function.
40860
40861 2017-01-06  Nathan Sidwell  <nathan@acm.org>
40862
40863         * ipa-visibility.c (function_and_variable_visibility): Reformat
40864         comments and long lines.  Remove extrneous if.
40865         * symtab.c (symtab_node::make_decl_local): Fix code format.
40866         (symtab_node::set_section_for_node): Fix comment typo.
40867
40868 2017-01-06  Martin Liska  <mliska@suse.cz>
40869
40870         PR bootstrap/79003
40871         * lra-constraints.c: Rename invariant to lra_invariant.
40872         * predict.c (set_even_probabilities): Initialize e to NULL.
40873
40874 2017-01-05  Martin Sebor  <msebor@redhat.com>
40875
40876         PR tree-optimization/78910
40877         * gimple-ssa-sprintf.c (tree_digits): Add an argument.
40878         (format_integer): Correct off-by-one error in the handling
40879         of precision with negative numbers in signed conversions..
40880
40881 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
40882
40883         * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
40884
40885 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
40886
40887         PR tree-optimization/71016
40888         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
40889         factor_out_conditional_conversion.  Formatting fix.
40890         (factor_out_conditional_conversion): Add cond_stmt argument.
40891         If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
40892         cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
40893         Formatting fix.
40894
40895 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
40896
40897         * Makefile.in (OBJS): Add read-md.o, read-rtl.o,
40898         read-rtl-function.o, and selftest-rtl.o.
40899         * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
40900         (selftest::aarch64_test_loading_full_dump): New function.
40901         (selftest::aarch64_run_selftests): New function.
40902         (TARGET_RUN_TARGET_SELFTESTS): Wire it up to
40903         selftest::aarch64_run_selftests.
40904         * config/i386/i386.c
40905         (selftest::ix86_test_loading_dump_fragment_1): New function.
40906         (selftest::ix86_test_loading_call_insn): New function.
40907         (selftest::ix86_test_loading_full_dump): New function.
40908         (selftest::ix86_test_loading_unspec): New function.
40909         (selftest::ix86_run_selftests): Call the new functions.
40910         * emit-rtl.c (maybe_set_max_label_num): New function.
40911         * emit-rtl.h (maybe_set_max_label_num): New decl.
40912         * function.c (instantiate_decls): Guard call to
40913         instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
40914         * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
40915         "static".
40916         * gensupport.c (gen_reader::gen_reader): Pass "false"
40917         for new "compact" param of rtx_reader.
40918         * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
40919         rather than an empty string for NULL strings.
40920         * read-md.c: Potentially include config.h rather than bconfig.h.
40921         Wrap include of errors.h with #ifdef GENERATOR_FILE.
40922         (have_error): New global, copied from errors.c.
40923         (md_reader::read_name): Rename to...
40924         (md_reader::read_name_1): ...this, adding "out_loc" param,
40925         and converting "missing name or number" to returning false, rather
40926         than failing.
40927         (md_reader::read_name): Reimplement in terms of read_name_1.
40928         (md_reader::read_name_or_nil): New function.
40929         (md_reader::read_string): Handle "(nil)" by returning NULL.
40930         (md_reader::md_reader): Add new param "compact".
40931         (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
40932         (md_reader::read_file): New method.
40933         * read-md.h (md_reader::md_reader): Add new param "compact".
40934         (md_reader::read_file): New method.
40935         (md_reader::is_compact): New accessor.
40936         (md_reader::read_name): Convert return type from void to file_location.
40937         (md_reader::read_name_or_nil): New decl.
40938         (md_reader::read_name_1): New decl.
40939         (md_reader::m_compact): New field.
40940         (noop_reader::noop_reader): Pass "false" for new "compact" param
40941         of rtx_reader.
40942         (rtx_reader::rtx_reader): Add new "compact" param.
40943         (rtx_reader::read_rtx_operand): Make virtual and convert return
40944         type from void to rtx.
40945         (rtx_reader::read_until): New decl.
40946         (rtx_reader::handle_any_trailing_information): New virtual function.
40947         (rtx_reader::postprocess): New virtual function.
40948         (rtx_reader::finalize_string): New virtual function.
40949         (rtx_reader::m_in_call_function_usage): New field.
40950         (rtx_reader::m_reuse_rtx_by_id): New field.
40951         * read-rtl-function.c: New file.
40952         * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
40953         * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
40954         (selftest::verify_three_block_rtl_cfg): New decl.
40955         * read-rtl-function.h: New file.
40956         * read-rtl.c: Potentially include config.h rather than bconfig.h.
40957         For host, include function.h, memmodel.h, and emit-rtl.h.
40958         (one_time_initialization): New function.
40959         (struct compact_insn_name): New struct.
40960         (compact_insn_names): New array.
40961         (find_code): Handle insn codes in compact dumps.
40962         (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
40963         (bind_subst_iter_and_attr): Likewise.
40964         (add_condition_to_string): Likewise.
40965         (add_condition_to_rtx): Likewise.
40966         (apply_attribute_uses): Likewise.
40967         (add_current_iterators): Likewise.
40968         (apply_iterators): Likewise.
40969         (initialize_iterators): Guard usage of apply_subst_iterator with
40970         #ifdef GENERATOR_FILE.
40971         (read_conditions): Wrap with #ifdef GENERATOR_FILE.
40972         (md_reader::read_mapping): Likewise.
40973         (add_define_attr_for_define_subst): Likewise.
40974         (add_define_subst_attr): Likewise.
40975         (read_subst_mapping): Likewise.
40976         (check_code_iterator): Likewise.
40977         (rtx_reader::read_rtx): Likewise.  Move one-time initialization
40978         logic to...
40979         (one_time_initialization): New function.
40980         (rtx_reader::read_until): New method.
40981         (read_flags): New function.
40982         (parse_reg_note_name): New function.
40983         (rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
40984         Handle reuse_rtx ids.
40985         Wrap iterator lookup within #ifdef GENERATOR_FILE.
40986         Add parsing support for RTL dumps, mirroring the special-cases in
40987         print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
40988         values, and calling handle_any_trailing_information.
40989         (rtx_reader::read_rtx_operand): Convert return type from void
40990         to rtx, returning return_rtx.  Handle case 'e'.  Call
40991         finalize_string on XSTR and XTMPL fields.
40992         (rtx_reader::read_nested_rtx):  Handle dumps in which trailing
40993          "(nil)" values were omitted.  Call the postprocess vfunc on the
40994         return_rtx.
40995         (rtx_reader::rtx_reader): Add new "compact" param and pass to base
40996         class ctor.  Initialize m_in_call_function_usage.  Call
40997         one_time_initialization.
40998         * rtl-tests.c (selftest::test_uncond_jump): Call
40999         set_new_first_and_last_insn.
41000         * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
41001         * selftest-rtl.c: New file.
41002         * selftest-rtl.h (class selftest::rtl_dump_test): New class.
41003         (selftest::get_insn_by_uid): New decl.
41004         * selftest-run-tests.c (selftest::run_tests): Call
41005         read_rtl_function_c_tests.
41006         * selftest.h  (selftest::read_rtl_function_c_tests): New decl.
41007         * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
41008         dumps.
41009
41010 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
41011
41012         * config/i386/i386.md (*testqi_ext_3): No need to handle memory
41013         operands in a special way.  Assert that pos+len <= mode precision.
41014
41015 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
41016
41017         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
41018         3 argument Alias with unlimited for the negative form.
41019         (fno-vect-cost-model): Removed.
41020
41021 2017-01-05  Martin Liska  <mliska@suse.cz>
41022
41023         * hsa-gen.c (gen_hsa_divmod): New function.
41024         (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
41025
41026 2017-01-05  Martin Liska  <mliska@suse.cz>
41027
41028         PR pch/78970
41029         * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
41030         header.
41031
41032 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41033
41034         * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
41035         small constant length operands.
41036
41037 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41038
41039         * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
41040         between loop iterations.
41041
41042 2017-01-05  Martin Liska  <mliska@suse.cz>
41043
41044         PR sanitizer/78815
41045         * gimplify.c (gimplify_decl_expr): Compare to
41046         asan_poisoned_variables instread of checking flags.
41047         (gimplify_target_expr): Likewise.
41048         (gimplify_expr): Likewise.
41049         (gimplify_function_tree): Conditionally initialize
41050         asan_poisoned_variables.
41051
41052 2017-01-04  Jeff Law  <law@redhat.com>
41053
41054         PR tree-optimizatin/78812
41055         * rtl.h (contains_mem_rtx_p): Prototype.
41056         * ifcvt.c (containts_mem_rtx_p): Move from here to...
41057         * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
41058         * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
41059         and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
41060         through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
41061
41062 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41063
41064         * input.c (assert_char_at_range): Default-initialize actual_range.
41065
41066 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41067
41068         * df-scan.c (df_ref_create_structure): Make regno unsigned,
41069         to match the caller.
41070
41071 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41072
41073         * cfgexpand.c (expand_gimple_basic_block): Disregard debug
41074         insns after final jump in test to emit dummy move.
41075
41076 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41077
41078         * gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
41079         * tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
41080
41081 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41082
41083         * multiple_target.c (create_dispatcher_calls): Init e_next.
41084         * tree-ssa-loop-split.c (split_loop): Init border.
41085         * tree-vect-loop.c (vect_determine_vectorization_factor): Init
41086         scalar_type.
41087
41088 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
41089
41090         PR target/71977
41091         PR target/70568
41092         PR target/78823
41093         * config/rs6000/predicates.md (sf_subreg_operand): New predicate.
41094         (altivec_register_operand): Do not return true if the operand
41095         contains a SUBREG mixing SImode and SFmode.
41096         (vsx_register_operand): Likewise.
41097         (vsx_reg_sfsubreg_ok): New predicate.
41098         (vfloat_operand): Do not return true if the operand contains a
41099         SUBREG mixing SImode and SFmode.
41100         (vint_operand): Likewise.
41101         (vlogical_operand): Likewise.
41102         (gpc_reg_operand): Likewise.
41103         (int_reg_operand): Likewise.
41104         * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
41105         * config/rs6000/rs6000.c (valid_sf_si_move): New function to
41106         determine if a MOVSI or MOVSF operation contains SUBREGs that mix
41107         SImode and SFmode.
41108         (rs6000_emit_move_si_sf_subreg): New helper function.
41109         (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
41110         fixup SUBREGs involving SImode and SFmode.
41111         * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
41112         numbers for the new peephole2 optimization.
41113         (peephole2 for SFmode unions): New peephole2 to optimize cases in
41114         the GLIBC math library that do AND/IOR/XOR operations on single
41115         precision floating point.
41116         * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
41117         target macros to say whether we need to avoid SUBREGs mixing
41118         SImode and SFmode.
41119         (TARGET_ALLOW_SF_SUBREG): Likewise.
41120         * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
41121         (UNSPEC_SI_FROM_SF): Likewise.
41122         (iorxor): Change spacing.
41123         (and_ior_xor): New iterator for AND, IOR, and XOR.
41124         (movsi_from_sf): New insns for SImode/SFmode SUBREG support.
41125         (movdi_from_sf_zero_ext): Likewise.
41126         (mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
41127         instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
41128         (movsf_from_si): New insn for SImode/SFmode SUBREG support.
41129         (fma<mode>4): Use gpc_reg_operand instead of register_operand.
41130         (fms<mode>4): Likewise.
41131         (fnma<mode>4): Likewise.
41132         (fnms<mode>4): Likewise.
41133         (nfma<mode>4): Likewise.
41134         (nfms<mode>4): Likewise.
41135
41136 2017-01-04  Marek Polacek  <polacek@redhat.com>
41137
41138         PR c++/64767
41139         * doc/invoke.texi: Document -Wpointer-compare.
41140
41141 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41142
41143         * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
41144         RejectNegative.
41145
41146         * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
41147         descriptions for -gdwarf-5 and emit them as uleb128 instead of
41148         2-byte data.
41149
41150 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
41151
41152         PR target/78056
41153         * doc/sourcebuild.texi (PowerPC-specific attributes): Add
41154         documentation of the powerpc_popcntb_ok attribute.
41155         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
41156         code to issue warning messages if a requested CPU configuration is
41157         not supported by the binary (assembler and loader) toolchain.
41158         (spe_init_builtins): Add two assertions to prevent ICE if attempt is
41159         made to define a built-in function that has been disabled.
41160         (paired_init_builtins): Add assertion to prevent ICE if attempt is
41161         made to define a built-in function that has been disabled.
41162         (altivec_init_builtins): Add comment explaining why definition
41163         of the DST built-in functions is not preceded by an assertion
41164         check.  Add assertions to prevent ICE if attempts are made to
41165         define an altivec predicate or an abs* built-in function that has
41166         been disabled.
41167         (htm_init_builtins): Add comment explaining why definition of the
41168         htm built-in functions is not preceded by an assertion check.
41169
41170 2017-01-04  Jeff Law  <law@redhat.com>
41171
41172         PR tree-optimizatin/67955
41173         * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
41174         Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
41175         the points-to solution does not include pt_null.  Use DECL_PT_UID
41176         unconditionally.
41177
41178 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
41179
41180         * config/i386/i386.md (HI/SImode test with imm to QImode splitters):
41181         Use gen_int_mode instead of gen_lopwart for const_int operands.
41182
41183 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41184
41185         PR tree-optimization/71563
41186         * match.pd: Simplify X << Y into X if Y is known to be 0 or
41187         out of range value - has low bits known to be zero.
41188
41189 2017-01-04  Alan Modra  <amodra@gmail.com>
41190
41191         * Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
41192         * configure: Regenerate.
41193         * config.in: Regenerate.
41194
41195 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41196
41197         PR bootstrap/77569
41198         * input.c (ebcdic_execution_charset::on_error): Don't use strstr for
41199         a substring of the message, but strcmp with the whole message.  Ifdef
41200         ENABLE_NLS, translate the message first using dgettext.
41201
41202 2017-01-03  Jeff Law  <law@redhat.com>
41203
41204         PR tree-optimizatin/78856
41205         * tree-ssa-threadupdate.c: Include tree-vectorizer.h.
41206         (mark_threaded_blocks): Remove code to truncate thread paths that
41207         cross multiple loop headers.  Instead invalidate the cached loop
41208         iteration information and handle case of a thread path walking
41209         into an irreducible region.
41210
41211 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
41212
41213         PR target/78900
41214         * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
41215         assertions.  Add support for doing the signbit if the IEEE 128-bit
41216         floating point value is in a GPR.
41217         * config/rs6000/rs6000.md (Fsignbit): Delete.
41218         (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
41219         Update the length attribute if the value is in a GPR.
41220         (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
41221         the sign or zero extension instruction, since the value is always 0/1.
41222         (signbit<mode>2_dm2): Delete using <Fsignbit>.
41223
41224         PR target/78953
41225         * config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
41226         extracting SImode to a GPR register so that we can generate a
41227         store, limit the vector to be in a traditional Altivec register
41228         for the vextuwrx instruction.
41229
41230 2017-01-03  Ian Lance Taylor  <iant@google.com>
41231
41232         * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
41233
41234 2017-01-03  Martin Sebor  <msebor@redhat.com>
41235
41236         PR tree-optimization/78696
41237         * gimple-ssa-sprintf.c (format_floating): Correct handling of
41238         precision.  Use MPFR for %f for greater fidelity.  Correct handling
41239         of %g.
41240         (pass_sprintf_length::compute_format_length): Set width and precision
41241         specified by asrerisk to void_node for vararg functions.
41242         (try_substitute_return_value): Adjust dump output.
41243
41244 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
41245
41246         * doc/invoke.texi (RS6000 options): LRA is enabled by default.
41247
41248 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
41249
41250         * doc/invoke.texi (SPARC options): Document -mlra as the default.
41251         * config/sparc/sparc.c (sparc_option_override): Force LRA unless
41252         -mlra/-mno-lra was passed to the compiler.
41253
41254 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
41255
41256         PR rtl-optimization/65618
41257         * emit-rtl.c (try_split): Move initialization of "before" and
41258         "after" to just before the call to emit_insn_after_setloc.
41259
41260 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
41261
41262         * doc/md.texi (Standard Names): Remove reference to Java frontend.
41263
41264 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
41265
41266         * dwarf2out.c (gen_enumeration_type_die): When
41267         -gno-strict-dwarf, add a DW_AT_encoding attribute.
41268
41269 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
41270
41271         PR tree-optimization/78965
41272         * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
41273         Change first argument from const call_info & to call_info &.  For %n
41274         set info.nowrite to false.
41275
41276         PR middle-end/78901
41277         * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
41278         possibly throwing calls.
41279
41280         * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
41281         and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
41282         and fns handling, rather than in a separate case SSA_NAME.
41283
41284 2017-01-02  Jeff Law  <law@redhat.com>
41285
41286         * config/darwin-driver.c (darwin_driver_init): Const-correctness
41287         fixes for first_period and second_period variables.
41288
41289 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
41290
41291         PR target/78967
41292         * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
41293         (*insvqi_1): New insn pattern.
41294         (*insvqi_1_mem_rex64): Ditto.
41295         (*insvqi_2): Ditto.
41296         (*insvqi_3): Rename from *insvqi.
41297
41298         (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
41299
41300 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
41301
41302         * doc/cfg.texi (Edges): Remove reference to Java.
41303         (Maintaining the CFG): Ditto.
41304
41305 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41306
41307         PR middle-end/77674
41308         * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
41309         transparent aliases.
41310
41311 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41312
41313         PR middle-end/77484
41314         * predict.def (PRED_CALL): Update hitrate.
41315         (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
41316         * predict.c (tree_estimate_probability_bb): Split CALL predictor
41317         into direct/indirect/polymorphic variants.
41318
41319 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
41320
41321         Update copyright years.
41322
41323         * gcc.c (process_command): Update copyright notice dates.
41324         * gcov-dump.c (print_version): Ditto.
41325         * gcov.c (print_version): Ditto.
41326         * gcov-tool.c (print_version): Ditto.
41327         * gengtype.c (create_file): Ditto.
41328         * doc/cpp.texi: Bump @copying's copyright year.
41329         * doc/cppinternals.texi: Ditto.
41330         * doc/gcc.texi: Ditto.
41331         * doc/gccint.texi: Ditto.
41332         * doc/gcov.texi: Ditto.
41333         * doc/install.texi: Ditto.
41334         * doc/invoke.texi: Ditto.
41335 \f
41336 Copyright (C) 2017 Free Software Foundation, Inc.
41337
41338 Copying and distribution of this file, with or without modification,
41339 are permitted in any medium without royalty provided the copyright
41340 notice and this notice are preserved.