poly_int: build_ref_for_offset
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
2             Alan Hayward  <alan.hayward@arm.com>
3             David Sherwood  <david.sherwood@arm.com>
4
5         * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
6         rather than a HOST_WIDE_INT.
7         * tree-sra.c (build_ref_for_offset): Likewise.
8
9 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
10             Alan Hayward  <alan.hayward@arm.com>
11             David Sherwood  <david.sherwood@arm.com>
12
13         * fold-const.h (mem_ref_offset): Return a poly_offset_int rather
14         than an offset_int.
15         * tree.c (mem_ref_offset): Likewise.
16         (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
17         * builtins.c (get_object_alignment_2): Likewise.
18         * expr.c (get_inner_reference, expand_expr_real_1): Likewise.
19         * gimple-fold.c (get_base_constructor): Likewise.
20         * gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
21         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
22         Likewise.
23         * ipa-polymorphic-call.c
24         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
25         * ipa-prop.c (compute_complex_assign_jump_func): Likewise.
26         (get_ancestor_addr_info): Likewise.
27         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
28         * match.pd: Likewise.
29         * tree-data-ref.c (dr_analyze_innermost): Likewise.
30         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
31         * tree-eh.c (tree_could_trap_p): Likewise.
32         * tree-object-size.c (addr_object_size): Likewise.
33         * tree-ssa-address.c (copy_ref_info): Likewise.
34         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
35         (indirect_refs_may_alias_p): Likewise.
36         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
37         * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
38         (non_rewritable_mem_ref_base): Likewise.
39         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
40         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
41         * varasm.c (decode_addr_const): Likewise.
42
43 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
44             Alan Hayward  <alan.hayward@arm.com>
45             David Sherwood  <david.sherwood@arm.com>
46
47         * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
48         offsets for MEM_REFs.
49
50 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
51             Alan Hayward  <alan.hayward@arm.com>
52             David Sherwood  <david.sherwood@arm.com>
53
54         * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
55         as a poly_uint64 rather than an unsigned int.
56         * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
57
58 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
59             Alan Hayward  <alan.hayward@arm.com>
60             David Sherwood  <david.sherwood@arm.com>
61
62         * varasm.c (addr_const::offset): Change from HOST_WIDE_INT
63         to poly_int64.
64         (decode_addr_const): Update accordingly.
65
66 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
67             Alan Hayward  <alan.hayward@arm.com>
68             David Sherwood  <david.sherwood@arm.com>
69
70         * tree.h (bit_field_size, bit_field_offset): New functions.
71         * hsa-gen.c (gen_hsa_addr): Use them.
72         * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
73         (simplify_vector_constructor): Likewise.
74         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
75         * tree-cfg.c (verify_expr): Require the sizes and offsets of a
76         BIT_FIELD_REF to be poly_uint64s rather than uhwis.
77         * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
78         tree_fits_uhwi_p.
79
80 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
81             Alan Hayward  <alan.hayward@arm.com>
82             David Sherwood  <david.sherwood@arm.com>
83
84         * expr.h (emit_group_load, emit_group_load_into_temps)
85         (emit_group_store): Take the size as a poly_int64 rather than an int.
86         * expr.c (emit_group_load_1, emit_group_load): Likewise.
87         (emit_group_load_into_temp, emit_group_store): Likewise.
88
89 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
90             Alan Hayward  <alan.hayward@arm.com>
91             David Sherwood  <david.sherwood@arm.com>
92
93         * ira-int.h (ira_spilled_reg_stack_slot::width): Change from
94         an unsigned int to a poly_uint64.
95         * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
96         sizes as poly_uint64s rather than unsigned ints.
97         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
98         Likewise.
99
100 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
101             Alan Hayward  <alan.hayward@arm.com>
102             David Sherwood  <david.sherwood@arm.com>
103
104         * lra-constraints.c (emit_inc): Change inc_amount from an int
105         to a poly_int64.
106
107 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
108             Alan Hayward  <alan.hayward@arm.com>
109             David Sherwood  <david.sherwood@arm.com>
110
111         * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
112         to a poly_uint64.
113         (add_stack_var, stack_var_cmp, partition_stack_vars)
114         (dump_stack_var_partition): Update accordingly.
115         (alloc_stack_frame_space): Take the size as a poly_int64 rather
116         than a HOST_WIDE_INT.
117         (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
118         (defer_stack_allocation, estimated_stack_frame_size): Likewise.
119         (account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
120         rather than a HOST_WIDE_INT.
121
122 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
123             Alan Hayward  <alan.hayward@arm.com>
124             David Sherwood  <david.sherwood@arm.com>
125
126         * target.def (return_pops_args): Treat both the input and output
127         sizes as poly_int64s rather than HOST_WIDE_INTS.
128         * targhooks.h (default_return_pops_args): Update accordingly.
129         * targhooks.c (default_return_pops_args): Likewise.
130         * doc/tm.texi: Regenerate.
131         * emit-rtl.h (incoming_args): Change pops_args, size and
132         outgoing_args_size from int to poly_int64_pod.
133         * function.h (expr_status): Change x_pending_stack_adjust and
134         x_stack_pointer_delta from int to poly_int64.
135         (args_size::constant): Change from HOST_WIDE_INT to poly_int64.
136         (ARGS_SIZE_RTX): Update accordingly.
137         * calls.c (highest_outgoing_arg_in_use): Change from int to
138         unsigned int.
139         (stack_usage_watermark, stored_args_watermark): New variables.
140         (stack_region_maybe_used_p, mark_stack_region_used): New functions.
141         (emit_call_1): Change the stack_size and rounded_stack_size
142         parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
143         as a poly_int64.
144         (save_fixed_argument_area): Check stack_usage_watermark.
145         (initialize_argument_information): Change old_pending_adj from
146         a HOST_WIDE_INT * to a poly_int64_pod *.
147         (compute_argument_block_size): Return the size as a poly_int64
148         rather than an int.
149         (finalize_must_preallocate): Track polynomial argument sizes.
150         (compute_argument_addresses): Likewise.
151         (internal_arg_pointer_based_exp): Track polynomial offsets.
152         (mem_overlaps_already_clobbered_arg_p): Rename to...
153         (mem_might_overlap_already_clobbered_arg_p): ...this and take the
154         size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
155         Check stored_args_used_watermark.
156         (load_register_parameters): Update accordingly.
157         (check_sibcall_argument_overlap_1): Likewise.
158         (combine_pending_stack_adjustment_and_call): Take the unadjusted
159         args size as a poly_int64 rather than an int.  Return a bool
160         indicating whether the optimization was possible and return
161         the new adjustment by reference.
162         (check_sibcall_argument_overlap): Track polynomail argument sizes.
163         Update stored_args_watermark.
164         (can_implement_as_sibling_call_p): Handle polynomial argument sizes.
165         (expand_call): Likewise.  Maintain stack_usage_watermark and
166         stored_args_watermark.  Update calls to
167         combine_pending_stack_adjustment_and_call.
168         (emit_library_call_value_1): Handle polynomial argument sizes.
169         Call stack_region_maybe_used_p and mark_stack_region_used.
170         Maintain stack_usage_watermark.
171         (store_one_arg): Likewise.  Update call to
172         mem_overlaps_already_clobbered_arg_p.
173         * config/arm/arm.c (arm_output_function_prologue): Add a cast to
174         HOST_WIDE_INT.
175         * config/avr/avr.c (avr_outgoing_args_size): Likewise.
176         * config/microblaze/microblaze.c (microblaze_function_prologue):
177         Likewise.
178         * config/cr16/cr16.c (cr16_return_pops_args): Update for new
179         TARGET_RETURN_POPS_ARGS interface.
180         (cr16_compute_frame, cr16_initial_elimination_offset): Add casts
181         to HOST_WIDE_INT.
182         * config/ft32/ft32.c (ft32_compute_frame): Likewise.
183         * config/i386/i386.c (ix86_return_pops_args): Update for new
184         TARGET_RETURN_POPS_ARGS interface.
185         (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
186         * config/moxie/moxie.c (moxie_compute_frame): Likewise.
187         * config/m68k/m68k.c (m68k_return_pops_args): Update for new
188         TARGET_RETURN_POPS_ARGS interface.
189         * config/vax/vax.c (vax_return_pops_args): Likewise.
190         * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
191         (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
192         * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
193         * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
194         * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
195         * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
196         * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
197         * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
198         * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
199         * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
200         and x_stack_pointer_delta from int to poly_int64.
201         * dojump.c (do_pending_stack_adjust): Update accordingly.
202         * explow.c (allocate_dynamic_stack_space): Handle polynomial
203         stack_pointer_deltas.
204         * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
205         (pad_to_arg_alignment): Track polynomial offsets.
206         (assign_parm_find_stack_rtl): Likewise.
207         (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
208         * toplev.c (output_stack_usage): Update reference to
209         current_function_pushed_stack_size.
210
211 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
212             Alan Hayward  <alan.hayward@arm.com>
213             David Sherwood  <david.sherwood@arm.com>
214
215         * function.c (in_arg_offset, var_offset, dynamic_offset)
216         (out_arg_offset, cfa_offset): Change from int to poly_int64.
217         (instantiate_new_reg): Return the new offset as a poly_int64_pod
218         rather than a HOST_WIDE_INT.
219         (instantiate_virtual_regs_in_rtx): Track polynomial offsets.
220         (instantiate_virtual_regs_in_insn): Likewise.
221
222 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
223             Alan Hayward  <alan.hayward@arm.com>
224             David Sherwood  <david.sherwood@arm.com>
225
226         * rtl.h (get_args_size, add_args_size_note): New functions.
227         (find_args_size_adjust): Return a poly_int64 rather than a
228         HOST_WIDE_INT.
229         (fixup_args_size_notes): Likewise.  Make the same change to the
230         end_args_size parameter.
231         * rtlanal.c (get_args_size, add_args_size_note): New functions.
232         * builtins.c (expand_builtin_trap): Use add_args_size_note.
233         * calls.c (emit_call_1): Likewise.
234         * explow.c (adjust_stack_1): Likewise.
235         * cfgcleanup.c (old_insns_match_p): Update use of
236         find_args_size_adjust.
237         * combine.c (distribute_notes): Track polynomial arg sizes.
238         * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
239         end_true_args_size, beg_delay_args_size and end_delay_args_size
240         from HOST_WIDE_INT to poly_int64.
241         (add_cfi_args_size): Take the args_size as a poly_int64 rather
242         than a HOST_WIDE_INT.
243         (notice_args_size, notice_eh_throw, maybe_record_trace_start)
244         (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
245         polynomial arg sizes.
246         * emit-rtl.c (try_split): Use get_args_size.
247         * recog.c (peep2_attempt): Likewise.
248         * reload1.c (reload_as_needed): Likewise.
249         * expr.c (find_args_size_adjust): Return the adjustment as a
250         poly_int64 rather than a HOST_WIDE_INT.
251         (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
252         to a poly_int64 and change the return type in the same way.
253         (emit_single_push_insn): Track polynomial arg sizes.
254
255 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
256             Alan Hayward  <alan.hayward@arm.com>
257             David Sherwood  <david.sherwood@arm.com>
258
259         * expr.h (push_block, emit_push_insn): Change the "extra" parameter
260         from HOST_WIDE_INT to poly_int64.
261         * expr.c (push_block, emit_push_insn): Likewise.
262
263 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
264             Alan Hayward  <alan.hayward@arm.com>
265             David Sherwood  <david.sherwood@arm.com>
266
267         * function.h (frame_space): Change start and length from HOST_WIDE_INT
268         to poly_int64.
269         (get_frame_size): Return the size as a poly_int64 rather than a
270         HOST_WIDE_INT.
271         (frame_offset_overflow): Take the offset as a poly_int64 rather
272         than a HOST_WIDE_INT.
273         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
274         (assign_stack_temp): Likewise for the size.
275         * function.c (get_frame_size): Return a poly_int64 rather than
276         a HOST_WIDE_INT.
277         (frame_offset_overflow): Take the offset as a poly_int64 rather
278         than a HOST_WIDE_INT.
279         (try_fit_stack_local): Take the start, length and size as poly_int64s
280         rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
281         rather than a HOST_WIDE_INT.
282         (add_frame_space): Take the start and end as poly_int64s rather than
283         HOST_WIDE_INTs.
284         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
285         (assign_stack_temp): Likewise for the size.
286         (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
287         to poly_int64.
288         (find_temp_slot_from_address): Handle polynomial offsets.
289         (combine_temp_slots): Likewise.
290         * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
291         to poly_int64.
292         * cfgexpand.c (alloc_stack_frame_space): Return the offset as a
293         poly_int64 rather than a HOST_WIDE_INT.
294         (expand_one_stack_var_at): Take the offset as a poly_int64 rather
295         than a HOST_WIDE_INT.
296         (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
297         polynomial frame offsets.
298         * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
299         as a poly_int64 rather than an int.
300         * config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
301         * config/v850/v850-protos.h (compute_frame_size): Likewise.
302         * config/v850/v850.c (compute_frame_size): Likewise.
303         * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
304         * config/xtensa/xtensa.c (compute_frame_size): Likewise.
305         * config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
306         * config/pa/pa.c (pa_compute_frame_size): Likewise.
307         * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
308         rather than a HOST_WIDE_INT.
309         * explow.c (get_dynamic_stack_base): Likewise.
310         * final.c (final_start_function): Use the constant lower bound
311         of the frame size for -Wframe-larger-than.
312         * ira.c (do_reload): Adjust for new get_frame_size return type.
313         * lra.c (lra): Likewise.
314         * reload1.c (reload): Likewise.
315         * config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
316         * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
317         * rtlanal.c (get_initial_register_offset): Return the offset as
318         a poly_int64 rather than a HOST_WIDE_INT.
319
320 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
321             Alan Hayward  <alan.hayward@arm.com>
322             David Sherwood  <david.sherwood@arm.com>
323
324         * reload1.c (elim_table): Change initial_offset, offset and
325         previous_offset from HOST_WIDE_INT to poly_int64_pod.
326         (offsets_at): Change the target array's element type from
327         HOST_WIDE_INT to poly_int64_pod.
328         (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
329         (elimination_costs_in_insn, update_eliminable_offsets)
330         (verify_initial_elim_offsets, set_offsets_for_label)
331         (init_eliminable_invariants): Update after above changes.
332
333 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
334             Alan Hayward  <alan.hayward@arm.com>
335             David Sherwood  <david.sherwood@arm.com>
336
337         * reload.h (reload::inc): Change from an int to a poly_int64_pod.
338         * reload.c (combine_reloads, debug_reload_to_stream): Likewise.
339         (decomposition): Change start and end from HOST_WIDE_INT
340         to poly_int64_pod.
341         (decompose, immune_p): Update accordingly.
342         (find_inc_amount): Return a poly_int64 rather than an int.
343         * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
344         rather than an int.
345
346 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
347             Alan Hayward  <alan.hayward@arm.com>
348             David Sherwood  <david.sherwood@arm.com>
349
350         * tree.h (get_inner_reference): Return the bitsize and bitpos
351         as poly_int64_pods rather than HOST_WIDE_INT.
352         * fold-const.h (ptr_difference_const): Return the pointer difference
353         as a poly_int64_pod rather than a HOST_WIDE_INT.
354         * expr.c (get_inner_reference): Return the bitsize and bitpos
355         as poly_int64_pods rather than HOST_WIDE_INT.
356         (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
357         offsets and sizes.
358         * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
359         rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
360         (optimize_bit_field_compare): Update call to get_inner_reference.
361         (decode_field_reference): Likewise.
362         (fold_unary_loc): Track polynomial offsets and sizes.
363         (split_address_to_core_and_offset): Return the bitpos as a
364         poly_int64_pod rather than a HOST_WIDE_INT.
365         (ptr_difference_const): Likewise for the pointer difference.
366         * asan.c (instrument_derefs): Track polynomial offsets and sizes.
367         * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
368         * dbxout.c (dbxout_expand_expr): Likewise.
369         * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
370         (loc_list_from_tree_1, fortran_common): Likewise.
371         * gimple-laddress.c (pass_laddress::execute): Likewise.
372         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
373         * gimplify.c (gimplify_scan_omp_clauses): Likewise.
374         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
375         * tree-affine.c (tree_to_aff_combination): Likewise.
376         (get_inner_reference_aff): Likewise.
377         * tree-data-ref.c (split_constant_offset_1): Likewise.
378         (dr_analyze_innermost): Likewise.
379         * tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
380         * tree-sra.c (ipa_sra_check_caller): Likewise.
381         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
382         * ubsan.c (maybe_instrument_pointer_overflow): Likewise.
383         (instrument_bool_enum_load, instrument_object_size): Likewise.
384         * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
385         to get_inner_reference.
386         * hsa-gen.c (gen_hsa_addr): Likewise.
387         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
388         * tsan.c (instrument_expr): Likewise.
389         * match.pd: Update call to ptr_difference_const.
390
391 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
392             Alan Hayward  <alan.hayward@arm.com>
393             David Sherwood  <david.sherwood@arm.com>
394
395         * fold-const.c (fold_comparison): Track sizes and offsets as
396         poly_int64s rather than HOST_WIDE_INTs when folding address
397         comparisons.
398
399 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
400             Alan Hayward  <alan.hayward@arm.com>
401             David Sherwood  <david.sherwood@arm.com>
402
403         * expr.h (get_bit_range): Return the bitstart and bitend as
404         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
405         as a poly_int64 rather than a HOST_WIDE_INT.
406         * expr.c (get_bit_range): Likewise.
407         (expand_assignment): Update call accordingly.
408         * fold-const.c (optimize_bit_field_compare): Likewise.
409
410 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
411             Alan Hayward  <alan.hayward@arm.com>
412             David Sherwood  <david.sherwood@arm.com>
413
414         * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
415         (aarch64_legitimate_address_p): Use it instead of an rtx code,
416         as an optional final parameter.
417         * config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
418         (aarch64_legitimate_address_p): Likewise.
419         (aarch64_print_address_internal): Take an aarch64_addr_query_type
420         instead of an rtx code.
421         (aarch64_address_valid_for_prefetch_p): Update calls accordingly.
422         (aarch64_legitimate_address_hook_p): Likewise.
423         (aarch64_print_ldpstp_address): Likewise.
424         (aarch64_print_operand_address): Likewise.
425         (aarch64_address_cost): Likewise.
426         * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
427         * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
428         (aarch64_mem_pair_lanes_operand): Likewise.
429
430 2017-12-20  Richard Biener  <rguenther@suse.de>
431
432         * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
433         update_stmt_if_modified.
434
435 2017-12-20  Wilco Dijkstra  <wdijkstr@arm.com>
436
437         PR tree-optimization/83491
438         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
439         before walking uses.  Improve coding style and comments.
440
441 2017-12-20  Tom de Vries  <tom@codesourcery.com>
442
443         * gimple-fold.c (fold_internal_goacc_dim): Simplify.
444
445 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
446
447         PR ipa/83506
448         * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
449         todo_flags_finish.
450         (pass_ipa_free_fn_summary): Add small_p private data member,
451         initialize to false in the ctor.
452         (pass_ipa_free_fn_summary::clone,
453         pass_ipa_free_fn_summary::set_pass_param,
454         pass_ipa_free_fn_summary::gate): New methods.
455         (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
456         | TODO_dump_symtab if small_p.
457         * passes.def: Add true parm for the existing pass_ipa_free_fn_summary
458         entry and add another instance of the pass with false parm after
459         ipa-pure-const.
460         * ipa-pure-const.c (pass_ipa_pure_const): Don't call
461         ipa_free_fn_summary here.
462
463 2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
464
465         * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
466
467 2017-12-20  Martin Sebor  <msebor@redhat.com>
468
469         PR testsuite/83131
470         * builtins.c (expand_builtin_strlen): Use get_callee_fndecl.
471         (expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
472         (expand_builtin_strncmp): Same.
473
474 2017-12-20  Alexandre Oliva <aoliva@redhat.com>
475
476         PR bootstrap/83396
477         * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
478         allowed debug stmts before labels.
479         (expand_gimple_basic_block): Likewise.
480         * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise.
481         * gimple-iterator.h (gsi_after_labels): Likewise.
482         * tree-cfgcleanup (remove_forwarder_block): Likewise, but
483         rename reused variable, and simplify using gsi_move_before.
484         * tree-ssa-tail-merge.c (find_duplicate): Likewise.
485         * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise.
486         (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise.
487         (gimple_verify_flow_info, gimple_block_label): Likewise.
488         (make_blocks): Move debug markers after adjacent labels.
489         * cfgrtl.c (skip_insns_after_block): Revert SFN changes that
490         allowed debug insns outside blocks.
491         * df-scan.c (df_insn_delete): Likewise.
492         * lra-constraints.c (update_ebb_live_info): Likewise.
493         * var-tracking.c (get_first_insn, vt_emit_notes): Likewise.
494         (vt_initialize, delete_vta_debug_insns): Likewise.
495         (reemit_marker_as_note): Drop BB parm.  Adjust callers.
496
497 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
498             Alan Hayward  <alan.hayward@arm.com>
499             David Sherwood  <david.sherwood@arm.com>
500
501         * poly-int-types.h (round_down_to_byte_boundary): New macro.
502         (round_up_to_byte_boundary): Likewise.
503         * expr.h (get_bit_range): Add temporary shim.
504         * gimple-ssa-store-merging.c (store_operand_info): Change the
505         bitsize, bitpos, bitregion_start and bitregion_end fields from
506         unsigned HOST_WIDE_INT to poly_uint64.
507         (merged_store_group): Likewise load_align_base.
508         (compatible_load_p, compatible_load_p): Update accordingly.
509         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
510         (split_group, imm_store_chain_info::output_merged_store): Likewise.
511         (mem_valid_for_store_merging): Return the bitsize, bitpos,
512         bitregion_start and bitregion_end as poly_uint64s rather than
513         unsigned HOST_WIDE_INTs.  Track polynomial offsets internally.
514         (handled_load): Take the bitsize, bitpos,
515         bitregion_start and bitregion_end as poly_uint64s rather than
516         unsigned HOST_WIDE_INTs.
517         (pass_store_merging::process_store): Update call to
518         mem_valid_for_store_merging.
519
520 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
521             Alan Hayward  <alan.hayward@arm.com>
522             David Sherwood  <david.sherwood@arm.com>
523
524         * builtins.c (get_object_alignment_2): Track polynomial offsets
525         and sizes.  Update the alignment handling.
526
527 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
528             Alan Hayward  <alan.hayward@arm.com>
529             David Sherwood  <david.sherwood@arm.com>
530
531         * tree.h (get_inner_reference): Add a version that returns the
532         offset and size as poly_int64_pods rather than HOST_WIDE_INTs.
533         * cfgexpand.c (expand_debug_expr): Track polynomial offsets.  Simply
534         the case in which bitpos is not associated with the first byte.
535
536 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
537             Alan Hayward  <alan.hayward@arm.com>
538             David Sherwood  <david.sherwood@arm.com>
539
540         * tree-affine.h (get_inner_reference_aff): Return the size as a
541         poly_widest_int.
542         * tree-affine.c (get_inner_reference_aff): Likewise.
543         * tree-data-ref.c (dr_may_alias_p): Update accordingly.
544         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
545
546 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
547             Alan Hayward  <alan.hayward@arm.com>
548             David Sherwood  <david.sherwood@arm.com>
549
550         * fold-const.c (pointer_may_wrap_p): Take the offset as a
551         HOST_WIDE_INT rather than a poly_int64.
552
553 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
554             Alan Hayward  <alan.hayward@arm.com>
555             David Sherwood  <david.sherwood@arm.com>
556
557         * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from
558         HOST_WIDE_INT to poly_int64_pod.
559         (perform_symbolic_merge): Update accordingly.
560         (bswap_replace): Likewise.
561
562 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
563             Alan Hayward  <alan.hayward@arm.com>
564             David Sherwood  <david.sherwood@arm.com>
565
566         * tree-affine.h (aff_tree::offset): Change from widest_int
567         to poly_widest_int.
568         (wide_int_ext_for_comb): Delete.
569         (aff_combination_const, aff_comb_cannot_overlap_p): Take the
570         constants as poly_widest_int rather than widest_int.
571         (aff_combination_constant_multiple_p): Return the multiplier
572         as a poly_widest_int.
573         (aff_combination_zero_p, aff_combination_singleton_var_p): Handle
574         polynomial offsets.
575         * tree-affine.c (wide_int_ext_for_comb): Make original widest_int
576         version static and add an overload for poly_widest_int.
577         (aff_combination_const, aff_combination_add_cst)
578         (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take
579         the constants as poly_widest_int rather than widest_int.
580         (tree_to_aff_combination): Generalize INTEGER_CST case to
581         poly_int_tree_p.
582         (aff_combination_to_tree): Track offsets as poly_widest_ints.
583         (aff_combination_add_product, aff_combination_mult): Handle
584         polynomial offsets.
585         (aff_combination_constant_multiple_p): Return the multiplier
586         as a poly_widest_int.
587         * tree-predcom.c (determine_offset): Return the offset as a
588         poly_widest_int.
589         (split_data_refs_to_components, suitable_component_p): Update
590         accordingly.
591         (valid_initializer_p): Update call to
592         aff_combination_constant_multiple_p.
593         * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets.
594         * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step
595         as a poly_int64 rather than a HOST_WIDE_INT.
596         (get_address_cost): Handle polynomial offsets.
597         (iv_elimination_compare_lt): Likewise.
598         (rewrite_use_nonlinear_expr): Likewise.
599
600 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
601             Alan Hayward  <alan.hayward@arm.com>
602             David Sherwood  <david.sherwood@arm.com>
603
604         * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset
605         as a poly_int64_pod rather than a HOST_WIDE_INT.
606         (get_addr_base_and_unit_offset): Likewise.
607         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
608         (get_addr_base_and_unit_offset): Likewise.
609         * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT
610         to poly_int64 in example.
611         * fold-const.c (fold_binary_loc): Update call to
612         get_addr_base_and_unit_offset.
613         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
614         (maybe_canonicalize_mem_ref_addr): Likewise.
615         (gimple_fold_stmt_to_constant_1): Likewise.
616         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
617         Likewise.
618         * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
619         * match.pd: Likewise.
620         * omp-low.c (lower_omp_target): Likewise.
621         * tree-sra.c (build_ref_for_offset): Likewise.
622         (build_debug_ref_for_model): Likewise.
623         * tree-ssa-address.c (maybe_fold_tmr): Likewise.
624         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise.
625         * tree-ssa-ccp.c (optimize_memcpy): Likewise.
626         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
627         (constant_pointer_difference): Likewise.
628         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
629         * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise.
630         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
631         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
632         (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise.
633         (set_ssa_val_to): Likewise.
634         * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr)
635         (maybe_diag_stxncpy_trunc): Likewise.
636         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
637         * tree.c (build_simple_mem_ref_loc): Likewise.
638         (array_at_struct_end_p): Likewise.
639
640 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
641             Alan Hayward  <alan.hayward@arm.com>
642             David Sherwood  <david.sherwood@arm.com>
643
644         * tree-dfa.h (get_ref_base_and_extent): Return the base, size and
645         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
646         (get_ref_base_and_extent_hwi): Declare.
647         * tree-dfa.c (get_ref_base_and_extent): Return the base, size and
648         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
649         (get_ref_base_and_extent_hwi): New function.
650         * cfgexpand.c (expand_debug_expr): Update call to
651         get_ref_base_and_extent.
652         * dwarf2out.c (add_var_loc_to_decl): Likewise.
653         * gimple-fold.c (get_base_constructor): Return the offset as a
654         poly_int64_pod rather than a HOST_WIDE_INT.
655         (fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
656         * ipa-polymorphic-call.c
657         (ipa_polymorphic_call_context::set_by_invariant)
658         (extr_type_from_vtbl_ptr_store): Track polynomial offsets.
659         (ipa_polymorphic_call_context::ipa_polymorphic_call_context)
660         (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
661         rather than get_ref_base_and_extent.
662         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
663         * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
664         (get_ancestor_addr_info, determine_locally_known_aggregate_parts):
665         Likewise.
666         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
667         call to get_ref_base_and_extent.
668         * tree-sra.c (create_access, get_access_for_expr): Likewise.
669         * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
670         (stmt_kills_ref_p): Likewise.
671         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
672         * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
673         Likewise.
674         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
675         Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
676         when calling native_encode_expr.
677         * tree-ssa-structalias.c (get_constraint_for_component_ref): Update
678         call to get_ref_base_and_extent.
679         (do_structure_copy): Use get_ref_base_and_extent_hwi rather than
680         get_ref_base_and_extent.
681         * var-tracking.c (track_expr_p): Likewise.
682
683 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
684             Alan Hayward  <alan.hayward@arm.com>
685             David Sherwood  <david.sherwood@arm.com>
686
687         * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
688         HOST_WIDE_INT to poly_int64_pod.
689         * ipa-param-manipulation.c (ipa_modify_call_arguments): Track
690         polynomail parameter offsets.
691
692 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
693             Alan Hayward  <alan.hayward@arm.com>
694             David Sherwood  <david.sherwood@arm.com>
695
696         * gengtype.c (main): Handle poly_int64_pod.
697         * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
698         (dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
699         (dw_cfa_location::offset, dw_cfa_location::base_offset): Change
700         from HOST_WIDE_INT to poly_int64_pod.
701         * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
702         (copy_cfa): New function.
703         (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
704         (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
705         (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
706         (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
707         (initial_return_save): Treat offsets as poly_ints.
708         (def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
709         offset is nonconstant.
710         (reg_save): Take the offset as a poly_int64.  Fall back to
711         DW_CFA_expression for nonconstant offsets.
712         (queue_reg_save): Take the offset as a poly_int64.
713         * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
714
715 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
716             Alan Hayward  <alan.hayward@arm.com>
717             David Sherwood  <david.sherwood@arm.com>
718
719         * rtl.h (operand_subword, operand_subword_force): Take the offset
720         as a poly_uint64 an unsigned int.
721         * emit-rtl.c (operand_subword, operand_subword_force): Likewise.
722
723 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
724             Alan Hayward  <alan.hayward@arm.com>
725             David Sherwood  <david.sherwood@arm.com>
726
727         * doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
728         'p' format code.  Use INT_LIST rather than SUBREG as the example of
729         a code with an XINT and an XEXP.  Remove the implication that
730         accessing an rtx field using XINT is expected to work.
731         * rtl.def (SUBREG): Change format from "ei" to "ep".
732         * rtl.h (rtunion::rt_subreg): New field.
733         (XCSUBREG): New macro.
734         (SUBREG_BYTE): Use it.
735         (subreg_shape): Change offset from an unsigned int to a poly_uint16.
736         Update constructor accordingly.
737         (subreg_shape::operator ==): Update accordingly.
738         (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
739         than an unsigned int.
740         (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
741         a poly_uint64 rather than an unsigned int.
742         (subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
743         than an unsigned int.
744         (subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
745         (subreg_size_highpart_offset): Return a poly_uint64 rather than
746         an unsigned int.  Take the sizes as poly_uint64s.
747         (subreg_offset_from_lsb): Return a poly_uint64 rather than
748         an unsigned int.  Take the shift as a poly_uint64 rather than
749         an unsigned int.
750         (subreg_regno_offset, subreg_offset_representable_p): Take the offset
751         as a poly_uint64 rather than an unsigned int.
752         (simplify_subreg_regno): Likewise.
753         (byte_lowpart_offset): Return the memory offset as a poly_int64
754         rather than an int.
755         (subreg_memory_offset): Likewise.  Take the subreg offset as a
756         poly_uint64 rather than an unsigned int.
757         (simplify_subreg, simplify_gen_subreg, subreg_get_info)
758         (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
759         poly_uint64 rather than an unsigned int.
760         * rtl.c (rtx_format): Describe 'p' in comment.
761         (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
762         * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
763         offset as a poly_uint64 rather than an unsigned int.
764         (byte_lowpart_offset): Return the memory offset as a poly_int64
765         rather than an int.
766         (subreg_memory_offset): Likewise.  Take the subreg offset as a
767         poly_uint64 rather than an unsigned int.
768         (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
769         mode sizes as poly_uint64s rather than unsigned ints.  Return a
770         poly_uint64 rather than an unsigned int.
771         (subreg_lowpart_p): Treat subreg offsets as poly_ints.
772         (copy_insn_1): Handle 'p'.
773         * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
774         (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
775         an unsigned int.  Return the shift in the same way.
776         (subreg_lsb): Return the shift as a poly_uint64 rather than an
777         unsigned int.
778         (subreg_size_offset_from_lsb): Take the sizes and shift as
779         poly_uint64s rather than unsigned ints.  Return the offset as
780         a poly_uint64.
781         (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
782         (simplify_subreg_regno): Take the offset as a poly_uint64 rather than
783         an unsigned int.
784         * rtlhash.c (add_rtx): Handle 'p'.
785         * genemit.c (gen_exp): Likewise.
786         * gengenrtl.c (type_from_format, gendef): Likewise.
787         * gensupport.c (subst_pattern_match, get_alternatives_number)
788         (collect_insn_data, alter_predicate_for_insn, alter_constraints)
789         (subst_dup): Likewise.
790         * gengtype.c (adjust_field_rtx_def): Likewise.
791         * genrecog.c (find_operand, find_matching_operand, validate_pattern)
792         (match_pattern_2): Likewise.
793         (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
794         (rtx_test::subreg_field): New function.
795         (operator ==, safe_to_hoist_p, transition_parameter_type)
796         (print_nonbool_test, print_test): Handle SUBREG_FIELD.
797         * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
798         * genpeep.c (match_rtx): Likewise.
799         * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
800         (rtx_writer::print_rtx_operand): Handle 'p'.
801         (print_value): Handle SUBREG.
802         * read-rtl.c (apply_int_iterator): Likewise.
803         (rtx_reader::read_rtx_operand): Handle 'p'.
804         * alias.c (rtx_equal_for_memref_p): Likewise.
805         * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
806         * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
807         as poly_ints.
808         * calls.c (expand_call): Likewise.
809         * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
810         (make_extraction, gen_lowpart_for_combine): Likewise.
811         * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
812         Likewise.
813         * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
814         rather than an unsigned int.  Treat subreg offsets as poly_ints.
815         (exp_equiv_p): Handle 'p'.
816         (hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
817         (equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
818         * dse.c (find_shift_sequence): Likewise.
819         * dwarf2out.c (rtl_for_decl_location): Likewise.
820         * expmed.c (extract_low_bits): Likewise.
821         * expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
822         (expand_expr_real_2): Likewise.
823         * final.c (alter_subreg): Likewise.
824         (leaf_renumber_regs_insn): Handle 'p'.
825         * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
826         Treat subreg offsets as poly_ints.
827         * fwprop.c (forward_propagate_and_simplify): Likewise.
828         * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
829         * ira.c (get_subreg_tracking_sizes): Likewise.
830         * ira-conflicts.c (go_through_subreg): Likewise.
831         * ira-lives.c (process_single_reg_class_operands): Likewise.
832         * jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
833         * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
834         as a poly_uint64 rather than an unsigned int.
835         (simplify_gen_subreg_concatn, resolve_simple_move): Treat
836         subreg offsets as poly_ints.
837         * lra-constraints.c (operands_match_p): Handle 'p'.
838         (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
839         * lra-spills.c (assign_mem_slot): Likewise.
840         * postreload.c (move2add_valid_value_p): Likewise.
841         * recog.c (general_operand, indirect_operand): Likewise.
842         * regcprop.c (copy_value, maybe_mode_change): Likewise.
843         (copyprop_hardreg_forward_1): Likewise.
844         * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
845         (record_subregs_of_mode): Likewise.
846         * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
847         * reload.c (operands_match_p): Handle 'p'.
848         (find_reloads_subreg_address): Treat subreg offsets as poly_ints.
849         * reload1.c (alter_reg, choose_reload_regs): Likewise.
850         (compute_reload_subreg_offset): Likewise, and return an poly_int64.
851         * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
852         (test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
853         (simplify_const_poly_int_tests<N>::run): Likewise.
854         (simplify_subreg, simplify_gen_subreg): Take the subreg offset as
855         a poly_uint64 rather than an unsigned int.
856         * valtrack.c (debug_lowpart_subreg): Likewise.
857         * var-tracking.c (var_lowpart): Likewise.
858         (loc_cmp): Handle 'p'.
859
860 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
861             Alan Hayward  <alan.hayward@arm.com>
862             David Sherwood  <david.sherwood@arm.com>
863
864         * ira.c (get_subreg_tracking_sizes): New function.
865         (init_live_subregs): Take an integer size rather than a register.
866         (build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
867         to init_live_subregs.
868
869 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
870             Alan Hayward  <alan.hayward@arm.com>
871             David Sherwood  <david.sherwood@arm.com>
872
873         * expr.c (store_constructor_field): Change bitsize from a
874         unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
875         HOST_WIDE_INT to a poly_int64.
876         (store_constructor): Change size from a HOST_WIDE_INT to
877         a poly_int64.
878         (store_field): Likewise bitsize and bitpos.
879
880 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
881             Alan Hayward  <alan.hayward@arm.com>
882             David Sherwood  <david.sherwood@arm.com>
883
884         * expmed.h (store_bit_field): Change bitregion_start and
885         bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
886         * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
887         (store_bit_field_1, store_integral_bit_field, store_bit_field)
888         (store_fixed_bit_field, store_split_bit_field): Likewise.
889         * expr.c (store_constructor_field, store_field): Likewise.
890         (optimize_bitfield_assignment_op): Likewise.  Make the same change
891         to bitsize and bitpos.
892         * machmode.h (bit_field_mode_iterator): Change m_bitregion_start
893         and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
894         same change in the constructor arguments.
895         (get_best_mode): Change bitregion_start and bitregion_end from
896         unsigned HOST_WIDE_INT to poly_uint64.
897         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
898         Change bitregion_start and bitregion_end from HOST_WIDE_INT to
899         poly_int64.
900         (bit_field_mode_iterator::next_mode): Update for new types
901         of m_bitregion_start and m_bitregion_end.
902         (get_best_mode): Change bitregion_start and bitregion_end from
903         unsigned HOST_WIDE_INT to poly_uint64.
904
905 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
906             Alan Hayward  <alan.hayward@arm.com>
907             David Sherwood  <david.sherwood@arm.com>
908
909         * rtl.h (simplify_gen_subreg): Add a temporary overload that
910         accepts poly_uint64 offsets.
911         * expmed.h (extract_bit_field): Take bitsize and bitnum as
912         poly_uint64s rather than unsigned HOST_WIDE_INTs.
913         * expmed.c (lowpart_bit_field_p): Likewise.
914         (extract_bit_field_as_subreg): New function, split out from...
915         (extract_bit_field_1): ...here.  Take bitsize and bitnum as
916         poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
917         extractions, check that BITSIZE matches the size of the extracted
918         value and that BITNUM is an exact multiple of that size.
919         If all else fails, try forcing the value into memory if
920         BITNUM is variable, and adjusting the address so that the
921         offset is constant.  Split the part that can only handle constant
922         bitsize and bitnum out into...
923         (extract_integral_bit_field): ...this new function.
924         (extract_bit_field): Take bitsize and bitnum as poly_uint64s
925         rather than unsigned HOST_WIDE_INTs.
926
927 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
928             Alan Hayward  <alan.hayward@arm.com>
929             David Sherwood  <david.sherwood@arm.com>
930
931         * expmed.h (store_bit_field): Take bitsize and bitnum as
932         poly_uint64s rather than unsigned HOST_WIDE_INTs.
933         * expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
934         that returns the byte size.
935         (store_bit_field_1): Take bitsize and bitnum as
936         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
937         to simple_mem_bitfield_p.  Split the part that can only handle
938         constant bitsize and bitnum out into...
939         (store_integral_bit_field): ...this new function.
940         (store_bit_field): Take bitsize and bitnum as poly_uint64s rather
941         than unsigned HOST_WIDE_INTs.
942         (extract_bit_field_1): Update call to simple_mem_bitfield_p.
943
944 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
945             Alan Hayward  <alan.hayward@arm.com>
946             David Sherwood  <david.sherwood@arm.com>
947
948         * lra-int.h (lra_reg): Change offset from int to poly_int64.
949         (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
950         to poly_int64.
951         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
952         update_sp_offset from a HOST_WIDE_INT to a poly_int64.
953         (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
954         offset as a poly_int64 rather than an int.
955         * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
956         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
957         * lra-constraints.c (equiv_address_substitution): Track offsets
958         as poly_int64s.
959         (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
960         (curr_insn_transform): Handle the new form of sp_offset.
961         * lra-eliminations.c (lra_elim_table): Change previous_offset
962         and offset from HOST_WIDE_INT to poly_int64.
963         (print_elim_table, update_reg_eliminate): Update accordingly.
964         (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
965         (get_elimination): Update accordingly.
966         (form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
967         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
968         update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
969         poly_int64 offsets generally.
970         (curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
971         (mark_not_eliminable, init_elimination): Update accordingly.
972         (remove_reg_equal_offset_note): Return a bool and pass the new
973         offset back by pointer as a poly_int64.
974         * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
975         rather than a HOST_WIDE_INT.
976         (do_remat): Track offsets poly_int64s.
977         * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
978
979 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
980             Alan Hayward  <alan.hayward@arm.com>
981             David Sherwood  <david.sherwood@arm.com>
982
983         * rtl.h (mem_attrs): Add a default constructor.  Change size and
984         offset from HOST_WIDE_INT to poly_int64.
985         * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
986         (adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
987         (widen_memory_access): Take the sizes and offsets as poly_int64s
988         rather than HOST_WIDE_INTs.
989         * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
990         (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
991         and ints.
992         (adjust_offset_for_component_ref): Change the offset from a
993         HOST_WIDE_INT to a poly_int64.
994         (nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
995         * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
996         * dce.c (find_call_stack_args): Likewise.
997         * dse.c (record_store): Likewise.
998         * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
999         * print-rtl.c (rtx_writer::print_rtx): Likewise.
1000         * read-rtl-function.c (test_loading_mem): Likewise.
1001         * rtlanal.c (may_trap_p_1): Likewise.
1002         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
1003         * var-tracking.c (int_mem_offset, track_expr_p): Likewise.
1004         * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
1005         (mem_attrs::mem_attrs): New function.
1006         (set_mem_attributes_minus_bitpos): Change bitpos from a
1007         HOST_WIDE_INT to poly_int64.
1008         (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
1009         (clear_mem_offset, clear_mem_size, change_address)
1010         (get_spill_slot_decl, set_mem_attrs_for_spill): Directly
1011         initialize mem_attrs.
1012         (set_mem_offset, set_mem_size, adjust_address_1)
1013         (adjust_automodify_address_1, offset_address, widen_memory_access):
1014         Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
1015
1016 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1017             Alan Hayward  <alan.hayward@arm.com>
1018             David Sherwood  <david.sherwood@arm.com>
1019
1020         * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
1021         as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
1022         rather than 0 to represent an unknown size.  Assert that the size
1023         is known when the mode isn't BLKmode.
1024         (may_trap_p_1): Use -1 for unknown sizes.
1025         (rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
1026
1027 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1028             Alan Hayward  <alan.hayward@arm.com>
1029             David Sherwood  <david.sherwood@arm.com>
1030
1031         * dse.c (store_info): Change offset and width from HOST_WIDE_INT
1032         to poly_int64.  Update commentary for positions_needed.large.
1033         (read_info_type): Change offset and width from HOST_WIDE_INT
1034         to poly_int64.
1035         (set_usage_bits): Likewise.
1036         (canon_address): Return the offset as a poly_int64 rather than
1037         a HOST_WIDE_INT.  Use strip_offset_and_add.
1038         (set_all_positions_unneeded, any_positions_needed_p): Use
1039         positions_needed.large to track stores with non-constant widths.
1040         (all_positions_needed_p): Likewise.  Take the offset and width
1041         as poly_int64s rather than ints.  Assert that rhs is nonnull.
1042         (record_store): Cope with non-constant offsets and widths.
1043         Nullify the rhs of an earlier store if we can't tell which bytes
1044         of it are needed.
1045         (find_shift_sequence): Take the access_size and shift as poly_int64s
1046         rather than ints.
1047         (get_stored_val): Take the read_offset and read_width as poly_int64s
1048         rather than HOST_WIDE_INTs.
1049         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
1050         non-constant offsets and widths.
1051
1052 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1053             Alan Hayward  <alan.hayward@arm.com>
1054             David Sherwood  <david.sherwood@arm.com>
1055
1056         * inchash.h (inchash::hash::add_poly_int): New function.
1057         * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
1058         Use poly_int64 rather than HOST_WIDE_INT.
1059         (ao_ref::max_size_known_p): New function.
1060         * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
1061         rather than HOST_WIDE_INT.
1062         * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
1063         to temporaries until its interface is adjusted to match.
1064         (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
1065         (aliasing_component_refs_p, decl_refs_may_alias_p)
1066         (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
1067         the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
1068         (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
1069         ao_ref fields.
1070         * alias.c (ao_ref_from_mem): Likewise.
1071         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1072         * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
1073         (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
1074         (maybe_trim_complex_store, maybe_trim_constructor_store)
1075         (live_bytes_read, dse_classify_store): Likewise.
1076         * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
1077         (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
1078         (fully_constant_vn_reference_p, valueize_refs_1): Likewise.
1079         (vn_reference_lookup_3): Likewise.
1080         * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
1081
1082 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1083             Alan Hayward  <alan.hayward@arm.com>
1084             David Sherwood  <david.sherwood@arm.com>
1085
1086         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
1087         (indirect_refs_may_alias_p): Use ranges_may_overlap_p
1088         instead of ranges_overlap_p.
1089
1090 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1091             Alan Hayward  <alan.hayward@arm.com>
1092             David Sherwood  <david.sherwood@arm.com>
1093
1094         * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
1095         sizes as poly_int64s rather than HOST_WIDE_INTs.
1096
1097 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1098             Alan Hayward  <alan.hayward@arm.com>
1099             David Sherwood  <david.sherwood@arm.com>
1100
1101         * gimple-fold.h (fold_ctor_reference): Take the offset and size
1102         as poly_uint64 rather than unsigned HOST_WIDE_INT.
1103         * gimple-fold.c (fold_ctor_reference): Likewise.
1104
1105 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1106             Alan Hayward  <alan.hayward@arm.com>
1107             David Sherwood  <david.sherwood@arm.com>
1108
1109         * target.def (dwarf_poly_indeterminate_value): New hook.
1110         * targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
1111         * targhooks.c (default_dwarf_poly_indeterminate_value): New function.
1112         * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
1113         * doc/tm.texi: Regenerate.
1114         * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
1115         offset as a poly_int64.
1116         * dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
1117         offset as a poly_int64.
1118         (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
1119         Take the offset as a poly_int64.
1120         (build_cfa_loc): Likewise.  Use loc_descr_plus_const.
1121         (frame_pointer_fb_offset): Change to a poly_int64.
1122         (int_loc_descriptor): Take the offset as a poly_int64.  Use
1123         targetm.dwarf_poly_indeterminate_value for polynomial offsets.
1124         (based_loc_descr): Take the offset as a poly_int64.
1125         Use strip_offset_and_add to handle (plus X (const)).
1126         Use new_reg_loc_descr instead of an open-coded version of the
1127         previous implementation.
1128         (mem_loc_descriptor): Handle CONST_POLY_INT.
1129         (compute_frame_pointer_to_fb_displacement): Take the offset as a
1130         poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
1131
1132 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1133             Alan Hayward  <alan.hayward@arm.com>
1134             David Sherwood  <david.sherwood@arm.com>
1135
1136         * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
1137         (gen_rtx_REG_offset): Take the offset as a poly_int64.
1138         * inchash.h (inchash::hash::add_poly_hwi): New function.
1139         * gengtype.c (main): Register poly_int64.
1140         * emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
1141         offset as a poly_int.
1142         (reg_attr_hasher::equal): Use must_eq to compare offsets.
1143         (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
1144         offset as a poly_int64.
1145         (set_reg_attrs_from_value): Treat the offset as a poly_int64.
1146         * print-rtl.c (print_poly_int): New function.
1147         (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
1148         a poly_int.
1149         * var-tracking.c (track_offset_p, get_tracked_reg_offset): New
1150         functions.
1151         (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
1152         (same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
1153         (vt_get_decl_and_offset): Return the offset as a poly_int64.
1154         Enforce track_offset_p for parts of a PARALLEL.
1155         (vt_add_function_parameter): Use const_offset for the final
1156         offset to track.  Use get_tracked_reg_offset for the parts
1157         of a PARALLEL.
1158
1159 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1160             Alan Hayward  <alan.hayward@arm.com>
1161             David Sherwood  <david.sherwood@arm.com>
1162
1163         * target.def (truly_noop_truncation): Take poly_uint64s instead of
1164         unsigned ints.  Change default to hook_bool_puint64_puint64_true.
1165         * doc/tm.texi: Regenerate.
1166         * hooks.h (hook_bool_uint_uint_true): Delete.
1167         (hook_bool_puint64_puint64_true): Declare.
1168         * hooks.c (hook_bool_uint_uint_true): Delete.
1169         (hook_bool_puint64_puint64_true): New function.
1170         * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
1171         instead of unsigned ints.
1172         * config/spu/spu.c (spu_truly_noop_truncation): Likewise.
1173         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
1174
1175 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1176             Alan Hayward  <alan.hayward@arm.com>
1177             David Sherwood  <david.sherwood@arm.com>
1178
1179         * optabs.h (expand_operand): Add an int_value field.
1180         (create_expand_operand): Add an int_value parameter and use it
1181         to initialize the new expand_operand field.
1182         (create_integer_operand): Replace with a declaration of a function
1183         that accepts poly_int64s.  Move the implementation to...
1184         * optabs.c (create_integer_operand): ...here.
1185         (maybe_legitimize_operand): For EXPAND_INTEGER, check whether
1186         the mode preserves the value of int_value, instead of calling
1187         const_int_operand on the rtx.  Use gen_int_mode to generate
1188         the new rtx.
1189
1190 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1191             Alan Hayward  <alan.hayward@arm.com>
1192             David Sherwood  <david.sherwood@arm.com>
1193
1194         * dumpfile.h (dump_dec): Declare.
1195         * dumpfile.c (dump_dec): New function.
1196         * pretty-print.h (pp_wide_integer): Turn into a function and
1197         declare a poly_int version.
1198         * pretty-print.c (pp_wide_integer): New function for poly_ints.
1199
1200 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1201             Alan Hayward  <alan.hayward@arm.com>
1202             David Sherwood  <david.sherwood@arm.com>
1203
1204         * doc/generic.texi (POLY_INT_CST): Document.
1205         * tree.def (POLY_INT_CST): New tree code.
1206         * treestruct.def (TS_POLY_INT_CST): New tree layout.
1207         * tree-core.h (tree_poly_int_cst): New struct.
1208         (tree_node): Add a poly_int_cst field.
1209         * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
1210         (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
1211         instead of a wide_int_ref.
1212         (build_int_cst, build_int_cst_type): Take a poly_int64 instead
1213         of a HOST_WIDE_INT.
1214         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1215         instead of an unsigned HOST_WIDE_INT.
1216         (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
1217         (ptrdiff_tree_p): Declare.
1218         (tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
1219         extern inline implementations if the target doesn't use POLY_INT_CST.
1220         (poly_int_tree_p): New function.
1221         (wi::unextended_tree): New class.
1222         (wi::int_traits <unextended_tree>): New override.
1223         (wi::extended_tree): Add a default constructor.
1224         (wi::extended_tree::get_tree): New function.
1225         (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
1226         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
1227         (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
1228         (wi::tree_to_poly_wide_ref): New typedefs.
1229         (wi::ints_for): Provide overloads for extended_tree and
1230         unextended_tree.
1231         (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
1232         (wi::to_wide): New functions.
1233         (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
1234         * tree.c (poly_int_cst_hasher): New struct.
1235         (poly_int_cst_hash_table): New variable.
1236         (tree_node_structure_for_code, tree_code_size, simple_cst_equal)
1237         (valid_constant_size_p, add_expr, drop_tree_overflow): Handle
1238         POLY_INT_CST.
1239         (initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
1240         (init_ttree): Initialize poly_int_cst_hash_table.
1241         (build_int_cst, build_int_cst_type, build_invariant_address): Take
1242         a poly_int64 instead of a HOST_WIDE_INT.
1243         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1244         instead of an unsigned HOST_WIDE_INT.
1245         (wide_int_to_tree): Rename to...
1246         (wide_int_to_tree_1): ...this.
1247         (build_new_poly_int_cst, build_poly_int_cst): New functions.
1248         (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
1249         (wide_int_to_tree): New function that takes a poly_wide_int_ref.
1250         (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
1251         (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
1252         * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
1253         TS_POLY_INT_CST.
1254         * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
1255         (streamer_read_tree_body): Likewise.
1256         * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
1257         (streamer_write_tree_body): Likewise.
1258         * tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
1259         * asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
1260         * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
1261         * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
1262         * gimple-expr.h (is_gimple_constant): Likewise.
1263         * gimplify.c (maybe_with_size_expr): Likewise.
1264         * print-tree.c (print_node): Likewise.
1265         * tree-data-ref.c (data_ref_compare_tree): Likewise.
1266         * tree-pretty-print.c (dump_generic_node): Likewise.
1267         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
1268         * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
1269         * tree-vrp.c (compare_values_warnv): Likewise.
1270         * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
1271         (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
1272         (force_expr_to_var_cost): Likewise.
1273         * tree-ssa-loop.c (for_each_index): Likewise.
1274         * fold-const.h (build_invariant_address, size_int_kind): Take a
1275         poly_int64 instead of a HOST_WIDE_INT.
1276         * fold-const.c (fold_negate_expr_1, const_binop, const_unop)
1277         (fold_convert_const, multiple_of_p, fold_negate_const): Handle
1278         POLY_INT_CST.
1279         (size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
1280         (int_const_binop_2): New function, split out from...
1281         (int_const_binop_1): ...here.  Handle POLY_INT_CST.
1282         (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
1283         * expmed.c (make_tree): Handle CONST_POLY_INT_P.
1284         * gimple-ssa-strength-reduction.c (slsr_process_add)
1285         (slsr_process_mul): Check for INTEGER_CSTs before using them
1286         as candidates.
1287         * stor-layout.c (bits_from_bytes): New function.
1288         (bit_from_pos): Use it.
1289         (layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
1290         by BITS_PER_UNIT to get the TYPE_SIZE.
1291         * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
1292         MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
1293
1294 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1295             Alan Hayward  <alan.hayward@arm.com>
1296             David Sherwood  <david.sherwood@arm.com>
1297
1298         * doc/rtl.texi (const_poly_int): Document.  Also document the
1299         rtl sharing behavior.
1300         * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
1301         * rtl.h (const_poly_int_def): New struct.
1302         (rtx_def::u): Add a cpi field.
1303         (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
1304         (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
1305         (wi::rtx_to_poly_wide_ref): New typedef
1306         (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
1307         (poly_int_rtx_p): New functions.
1308         (trunc_int_for_mode): Declare a poly_int64 version.
1309         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1310         (immed_wide_int_const): Take a poly_wide_int_ref rather than
1311         a wide_int_ref.
1312         (strip_offset): Declare.
1313         (strip_offset_and_add): New function.
1314         * rtl.def (CONST_POLY_INT): New rtx code.
1315         * rtl.c (rtx_size): Handle CONST_POLY_INT.
1316         (shared_const_p): Use poly_int_rtx_p.
1317         * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
1318         HOST_WIDE_INT.
1319         (gen_int_shift_amount): Likewise.
1320         * emit-rtl.c (const_poly_int_hasher): New class.
1321         (const_poly_int_htab): New variable.
1322         (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
1323         (const_poly_int_hasher::hash): New function.
1324         (const_poly_int_hasher::equal): Likewise.
1325         (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
1326         (immed_wide_int_const): Rename to...
1327         (immed_wide_int_const_1): ...this and make static.
1328         (immed_wide_int_const): New function, taking a poly_wide_int_ref
1329         instead of a wide_int_ref.
1330         (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
1331         (gen_lowpart_common): Handle CONST_POLY_INT.
1332         * cse.c (hash_rtx_cb, equiv_constant): Likewise.
1333         * cselib.c (cselib_hash_rtx): Likewise.
1334         * dwarf2out.c (const_ok_for_output_1): Likewise.
1335         * expr.c (convert_modes): Likewise.
1336         * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
1337         * rtlhash.c (add_rtx): Likewise.
1338         * explow.c (trunc_int_for_mode): Add a poly_int64 version.
1339         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1340         Handle existing CONST_POLY_INT rtxes.
1341         * expmed.h (expand_shift): Take a poly_int64 instead of a
1342         HOST_WIDE_INT.
1343         * expmed.c (expand_shift): Likewise.
1344         * rtlanal.c (strip_offset): New function.
1345         (commutative_operand_precedence): Give CONST_POLY_INT the same
1346         precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
1347         and CONST_INT.
1348         * rtl-tests.c (const_poly_int_tests): New struct.
1349         (rtl_tests_c_tests): Use it.
1350         * simplify-rtx.c (simplify_const_unary_operation): Handle
1351         CONST_POLY_INT.
1352         (simplify_const_binary_operation): Likewise.
1353         (simplify_binary_operation_1): Fold additions of symbolic constants
1354         and CONST_POLY_INTs.
1355         (simplify_subreg): Handle extensions and truncations of
1356         CONST_POLY_INTs.
1357         (simplify_const_poly_int_tests): New struct.
1358         (simplify_rtx_c_tests): Use it.
1359         * wide-int.h (storage_ref): Add default constructor.
1360         (wide_int_ref_storage): Likewise.
1361         (trailing_wide_ints): Use GTY((user)).
1362         (trailing_wide_ints::operator[]): Add a const version.
1363         (trailing_wide_ints::get_precision): New function.
1364         (trailing_wide_ints::extra_size): Likewise.
1365
1366 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1367             Alan Hayward  <alan.hayward@arm.com>
1368             David Sherwood  <david.sherwood@arm.com>
1369
1370         * emit-rtl.h (gen_int_shift_amount): Declare.
1371         * emit-rtl.c (gen_int_shift_amount): New function.
1372         * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
1373         instead of GEN_INT.
1374         * calls.c (shift_return_value): Likewise.
1375         * cse.c (fold_rtx): Likewise.
1376         * dse.c (find_shift_sequence): Likewise.
1377         * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
1378         (expand_shift, expand_smod_pow2): Likewise.
1379         * lower-subreg.c (shift_cost): Likewise.
1380         * optabs.c (expand_superword_shift, expand_doubleword_mult)
1381         (expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
1382         (expand_vec_perm_var): Likewise.
1383         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1384         (simplify_binary_operation_1): Likewise.
1385         * combine.c (try_combine, find_split_point, force_int_to_mode)
1386         (simplify_shift_const_1, simplify_shift_const): Likewise.
1387         (change_zero_ext): Likewise.  Use simplify_gen_binary.
1388
1389 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1390
1391         * poly-int.h (multiple_p): Fix handling of two non-poly_ints.
1392
1393 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1394
1395         * doc/invoke.texi (ARM Options): Document accepted extension options
1396         for -march=armv8.3-a.
1397
1398 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
1399
1400         PR target/83105
1401         * config.gcc (arm*-*-linux*): When configured with --with-float=hard
1402         or --with-float=softfp, set the default CPU to arm10e.
1403
1404 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
1405
1406         * config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
1407         * config/visium/predicates.md (const_shift_operand): Likewise.
1408         * config/visium/visium.c (visium_legitimize_address): Fix oversight.
1409         (visium_legitimize_reload_address): Likewise.
1410
1411 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1412
1413         PR target/82975
1414         * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
1415
1416 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
1417
1418         PR c++/83490
1419         * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
1420
1421 2017-12-20  Julia Koval  <julia.koval@intel.com>
1422
1423         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
1424         OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
1425         (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
1426         * config.gcc: Include vpclmulqdqintrin.h.
1427         * config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
1428         * config/i386/driver-i386.c (host_detect_local_cpu): Handle
1429         -mvpclmulqdq.
1430         * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
1431         __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
1432         * config/i386/i386-c.c (__VPCLMULQDQ__): New.
1433         * config/i386/i386.c (isa2_opts): Add -mcx16.
1434         (isa_opts): Add -mpclmulqdq, remove -mcx16.
1435         (ix86_option_override_internal): Move mcx16 to flags2.
1436         (ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
1437         (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
1438         * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
1439         * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
1440         * config/i386/immintrin.h: Include vpclmulqdqintrin.h.
1441         * config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
1442         * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
1443         _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
1444         * doc/invoke.texi: Add -mvpclmulqdq.
1445
1446 2017-12-20  Tom de Vries  <tom@codesourcery.com>
1447
1448         PR middle-end/83423
1449         * config/i386/i386.c (ix86_static_chain): Move DECL_STATIC_CHAIN test ...
1450         * calls.c (rtx_for_static_chain): ... here.  New function.
1451         * calls.h (rtx_for_static_chain): Declare.
1452         * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
1453         instead of targetm.calls.static_chain.
1454         * df-scan.c (df_get_entry_block_def_set): Same.
1455
1456 2017-12-19  Tom de Vries  <tom@codesourcery.com>
1457
1458         PR tree-optimization/83493
1459         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
1460         and lb.
1461
1462 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1463
1464         * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
1465         inform with hardcoded english plural handling.
1466
1467 2017-12-18  Jeff Law  <law@redhat.com>
1468
1469         PR tree-optimization/83477
1470         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
1471         a non-virtual PHI, always push a new range.
1472
1473 2017-12-19  Martin Sebor  <msebor@redhat.com>
1474
1475         PR middle-end/77608
1476         * builtins.c (compute_objsize): Handle non-constant offsets.
1477
1478 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1479
1480         PR tree-optimization/83444
1481         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
1482         character load case, if get_stridx on MEM_REF's operand doesn't
1483         look usable, retry with get_addr_stridx.
1484
1485 2017-12-19  Alexandre Oliva <aoliva@redhat.com>
1486
1487         PR debug/83422
1488         * var-tracking.c (vt_debug_insns_local): Do not drop markers.
1489         (variable_tracking_main_1): Keep markers even when VTA fails.
1490
1491         PR bootstrap/83396
1492         * cfgexpand.c (expand_gimple_basic_block): Expand label first,
1493         even if there are markers before it.
1494         * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
1495
1496 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1497
1498         * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
1499         typical order conditions.
1500         * sel-sched.c (extract_new_fences_from): Likewise.
1501         * config/visium/constraints.md (J, K, L): Likewise.
1502         * config/visium/predicates.md (const_shift_operand): Likewise.
1503         * config/visium/visium.c (visium_legitimize_address,
1504         visium_legitimize_reload_address): Likewise.
1505         * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
1506         * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
1507         * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
1508         * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
1509         SET_DUMP_DETAIL): Likewise.
1510         * config/avr/predicates.md (const_8_16_24_operand): Likewise.
1511         * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
1512         avr_is_casesi_sequence, avr_casei_sequence_check_operands,
1513         avr_set_core_architecture, avr_set_current_function,
1514         avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
1515         output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
1516         avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
1517         avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
1518         avr_map_decompose, avr_fold_builtin): Likewise.
1519         * config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
1520         * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
1521         * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
1522         * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
1523         * config/m32c/m32c.c (m32c_conditional_register_usage,
1524         m32c_address_cost): Likewise.
1525         * config/m32c/predicates.md (shiftcount_operand,
1526         longshiftcount_operand): Likewise.
1527         * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
1528         * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
1529         can_use_cdx_ldstw): Likewise.
1530         * config/nios2/nios2.h (CDX_REG_P): Likewise.
1531         * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
1532         Likewise.
1533         * config/cr16/cr16.md (*mov<mode>_double): Likewise.
1534         * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
1535         * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
1536         * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
1537         * config/vax/vax.c (adjacent_operands_p): Likewise.
1538         * config/ft32/constraints.md (L, b, KA): Likewise.
1539         * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
1540         Likewise.
1541         * cfgexpand.c (expand_stack_alignment): Likewise.
1542         * gcse.c (insert_expr_in_table): Likewise.
1543         * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
1544         * cgraphunit.c (cgraph_node::expand): Likewise.
1545         * ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
1546         * emit-rtl.c (add_insn): Likewise.
1547         * input.c (dump_location_info): Likewise.
1548         * passes.c (NEXT_PASS): Likewise.
1549         * read-rtl-function.c (parse_note_insn_name,
1550         function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
1551         Likewise.
1552         * sched-rgn.c (sched_rgn_init): Likewise.
1553         * diagnostic-show-locus.c (layout::show_ruler): Likewise.
1554         * combine.c (find_split_point, simplify_if_then_else, force_to_mode,
1555         if_then_else_cond, simplify_shift_const_1, simplify_comparison): Likewise.
1556         * explow.c (eliminate_constant_term): Likewise.
1557         * final.c (leaf_renumber_regs_insn): Likewise.
1558         * cfgrtl.c (print_rtl_with_bb): Likewise.
1559         * genhooks.c (emit_init_macros): Likewise.
1560         * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
1561         * tree-data-ref.c (conflict_fn): Likewise.
1562         * selftest.c (assert_streq): Likewise.
1563         * expr.c (store_constructor_field, expand_expr_real_1): Likewise.
1564         * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
1565         fold_binary_loc, multiple_of_p): Likewise.
1566         * reload.c (push_reload, find_equiv_reg): Likewise.
1567         * et-forest.c (et_nca, et_below): Likewise.
1568         * dbxout.c (dbxout_symbol_location): Likewise.
1569         * reorg.c (relax_delay_slots): Likewise.
1570         * dojump.c (do_compare_rtx_and_jump): Likewise.
1571         * gengtype-parse.c (type): Likewise.
1572         * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
1573         simplify_const_relational_operation): Likewise.
1574         * reload1.c (do_output_reload): Likewise.
1575         * dumpfile.c (get_dump_file_info_by_switch): Likewise.
1576         * gengtype.c (type_for_name): Likewise.
1577         * gimple-ssa-sprintf.c (format_directive): Likewise.
1578
1579 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1580
1581         PR target/82975
1582         * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
1583         accessing it.  Adjust comment.
1584
1585 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1586
1587         PR middle-end/81914
1588         * predict.c (zero_one_minusone): New function.
1589         (apply_return_prediction): Avoid return prediction for functions
1590         returning only -1, 0 and 1 values, unless they only return -1 and 0
1591         or 0 and 1.
1592
1593 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
1594
1595         * config/arc/arc.c (legitimate_scaled_address_p): Clean
1596         fall-through warning.
1597         (arc_compute_frame_size): Remove unused variables.
1598         (arc_print_operand): Fix fprintif format.
1599         (arc_can_follow_jump): Clean fall-through warning.
1600
1601 2017-12-19  Marek Polacek  <polacek@redhat.com>
1602
1603         PR c++/83489
1604         * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
1605         on an error node.                                                    
1606
1607 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
1608
1609         * config/arc/arc.c (overriderregs): New variable.
1610         (arc_override_options): Track fixed/call saved/call options.
1611         (arc_conditional_register_usage): Check against overrideregs
1612         variable whenever we change register properties.
1613
1614 2017-12-19  Nathan Sidwell  <nathan@acm.org>
1615
1616         * opts.c (finish_options): Don't prefix dump_base_name if it
1617         already contains directories.
1618
1619 2017-12-19  Martin Liska  <mliska@suse.cz>
1620
1621         PR rtl-optimization/82675
1622         * loop-unroll.c (unroll_loop_constant_iterations): Allocate one
1623         more element in sbitmap.
1624
1625 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
1626
1627         * gimplify.c (gimplify_expr): Use error_operand_p.
1628
1629 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1630
1631         PR target/83387
1632         * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
1633         multilib.
1634
1635 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
1636
1637         * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
1638         the jump is to a label.
1639
1640 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1641
1642         PR tree-optimization/83444
1643         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
1644         character loads.
1645
1646         PR ipa/82801
1647         PR ipa/83346
1648         * ipa-inline.c (flatten_remove_node_hook): New function.
1649         (ipa_inline): Keep only nodes with flatten attribute at the end of
1650         the array in the order from ipa_reverse_postorder, only walk that
1651         portion of array for flattening, if there is more than one such
1652         node, temporarily register a removal hook and ignore removed nodes.
1653
1654         PR tree-optimization/80631
1655         * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
1656         induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
1657         IFN_REDUC_MAX or IFN_REDUC_MIN.
1658
1659 2017-12-18  Jeff Law  <law@redhat.com>
1660
1661         * tree-ssa-dom.c (record_equivalences_from_phis): Do not
1662         record symbolic equivalences from backedges in the CFG.
1663
1664         Revert
1665         2017-11-19  Jeff Law  <law@redhat.com>
1666
1667         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
1668         of degenerates resulting from ignoring an edge.
1669
1670 2017-12-18  Martin Sebor  <msebor@redhat.com>
1671
1672         PR middle-end/83373
1673         PR tree-optimization/78450
1674         * tree-ssa-strlen.c (maybe_set_strlen_range): New function.
1675         (handle_builtin_strlen): Call it.
1676
1677 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
1678
1679         PR rtl-optimization/83424
1680         * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
1681
1682 2017-12-18  Marek Polacek  <polacek@redhat.com>
1683
1684         PR middle-end/83463
1685         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
1686         Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
1687         values.
1688
1689 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1690
1691         * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
1692         (umaddsidi4, umaddsidi_split): Likewise.
1693
1694 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1695
1696         * config/arc/arc.c (arc_legitimate_constant_p): Always check all
1697         constants.
1698
1699 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
1700
1701         PR target/83420
1702         * config/s390/s390.c (s390_option_override): Avoid strncpy.
1703
1704 2017-12-18  Richard Biener  <rguenther@suse.de>
1705
1706         PR tree-optimization/81877
1707         * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
1708         (outermost_indep_loop): Adjust.
1709         (ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
1710         (can_sm_ref_p): Adjust.
1711
1712 2017-12-18  Richard Biener  <rguenther@suse.de>
1713
1714         PR middle-end/77291
1715         * tree.c (array_at_struct_end_p): Return true if the underlying
1716         object has space for at least one element in excess of what
1717         the array domain specifies.
1718
1719 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1720
1721         * doc/extend.texi (x86 Function Attributes): Reformat nocf_check
1722         example to avoid overfull hbox.
1723         * doc/invoke.texi (Option Summary): Add missing @gol.
1724         (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid 
1725         overfull hbox.
1726         
1727 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1728             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1729
1730         * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
1731         to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
1732         (AArch64 Options): Document -mverbose-cost-dump.
1733         (ARM Options): Likewise, plus -mflip-thumb.
1734
1735 2017-12-17  Martin Sebor  <msebor@redhat.com>
1736
1737         PR bootstrap/83446
1738         * gimple-ssa-warn-restrict.c
1739         (builtin_memref::offset_out_of_bounds): Correct the handling of
1740         anti-ranges.
1741
1742 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1743
1744         * doc/invoke.texi (ARC Options): Add missing -mlra entry.
1745
1746 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
1747
1748         * config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
1749
1750 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
1751
1752         * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
1753         latencies.
1754
1755 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
1756
1757         * doc/invoke.texi: Fix some typos.
1758
1759 2017-12-16  Martin Sebor  <msebor@redhat.com>
1760
1761         PR tree-optimization/78918
1762         * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
1763         * builtins.c (check_sizes): Rename...
1764         (check_access): ...to this.  Rename function arguments for clarity.
1765         (check_memop_sizes): Adjust names.
1766         (expand_builtin_memchr, expand_builtin_memcpy): Same.
1767         (expand_builtin_memmove, expand_builtin_mempcpy): Same.
1768         (expand_builtin_strcat, expand_builtin_stpncpy): Same.
1769         (check_strncat_sizes, expand_builtin_strncat): Same.
1770         (expand_builtin_strncpy, expand_builtin_memset): Same.
1771         (expand_builtin_bzero, expand_builtin_memcmp): Same.
1772         (expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
1773         (maybe_emit_sprintf_chk_warning): Same.
1774         (expand_builtin_strcpy): Adjust.
1775         (expand_builtin_stpcpy): Same.
1776         (expand_builtin_with_bounds): Detect out-of-bounds accesses
1777         in pointer-checking forms of memcpy, memmove, and mempcpy.
1778         (gcall_to_tree_minimal, max_object_size): Define new functions.
1779         * builtins.h (max_object_size): Declare.
1780         * calls.c (alloc_max_size): Call max_object_size instead of
1781         hardcoding ssizetype limit.
1782         (get_size_range): Handle new argument.
1783         * calls.h (get_size_range): Add a new argument.
1784         * cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
1785         * doc/invoke.texi (-Wrestrict): Adjust, add example.
1786         * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
1787         operations.
1788         (gimple_fold_builtin_memory_chk): Same.
1789         (gimple_fold_builtin_stxcpy_chk): New function.
1790         * gimple-ssa-warn-restrict.c: New source.
1791         * gimple-ssa-warn-restrict.h: New header.
1792         * gimple.c (gimple_build_call_from_tree): Propagate location.
1793         * passes.def (pass_warn_restrict): Add new pass.
1794         * tree-pass.h (make_pass_warn_restrict): Declare.
1795         * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
1796         operations.
1797         (handle_builtin_strcat): Same.
1798         (strlen_optimize_stmt): Rename...
1799         (strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
1800         stpncpy, strncpy, and their checking forms.
1801
1802 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
1803
1804         PR rtl-optimization/82849
1805         * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
1806         and get_max_loop_iterations_int.
1807
1808 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1809             Alan Hayward  <alan.hayward@arm.com>
1810             David Sherwood  <david.sherwood@arm.com>
1811
1812         * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
1813         (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
1814         size as a poly_uint64.
1815         (mode_for_vector, mode_for_int_vector): Take the number of vector
1816         elements as a poly_uint64.
1817         * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
1818         size as a poly_uint64.
1819         (mode_for_vector, mode_for_int_vector): Take the number of vector
1820         elements as a poly_uint64.
1821
1822 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1823             Alan Hayward  <alan.hayward@arm.com>
1824             David Sherwood  <david.sherwood@arm.com>
1825
1826         * machmode.h (MACRO_MODE): New macro.
1827         * addresses.h (base_reg_class, ok_for_base_p_1): Use it.
1828         * targhooks.c (default_libcall_value, default_secondary_reload)
1829         (default_memory_move_cost, default_register_move_cost)
1830         (default_class_max_nregs): Likewise.
1831
1832 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1833             Alan Hayward  <alan.hayward@arm.com>
1834             David Sherwood  <david.sherwood@arm.com>
1835
1836         * doc/sourcebuild.texi: Document IN_TARGET_CODE.
1837         * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
1838         target C file.
1839         * genautomata.c (main): Likewise.
1840         * genconditions.c (write_header): Likewise.
1841         * genemit.c (main): Likewise.
1842         * genextract.c (print_header): Likewise.
1843         * genopinit.c (main): Likewise.
1844         * genoutput.c (output_prologue): Likewise.
1845         * genpeep.c (main): Likewise.
1846         * genpreds.c (write_insn_preds_c): Likewise.
1847         * genrecog.c (writer_header): Likewise.
1848         * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
1849         * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
1850         * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
1851         * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
1852         * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
1853         * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
1854         * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
1855         * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
1856         * config/arc/arc.c (IN_TARGET_CODE): Likewise.
1857         * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
1858         * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
1859         * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
1860         * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
1861         * config/arm/arm.c (IN_TARGET_CODE): Likewise.
1862         * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
1863         * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
1864         * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
1865         * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
1866         * config/avr/avr.c (IN_TARGET_CODE): Likewise.
1867         * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
1868         * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
1869         * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
1870         * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
1871         * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
1872         * config/cris/cris.c (IN_TARGET_CODE): Likewise.
1873         * config/darwin.c (IN_TARGET_CODE): Likewise.
1874         * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
1875         * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
1876         * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
1877         * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
1878         * config/frv/frv.c (IN_TARGET_CODE): Likewise.
1879         * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
1880         * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
1881         * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
1882         * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
1883         * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
1884         * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
1885         * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
1886         * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
1887         * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
1888         * config/i386/i386.c (IN_TARGET_CODE): Likewise.
1889         * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
1890         * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
1891         * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
1892         * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
1893         * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
1894         * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
1895         * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
1896         * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
1897         * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
1898         * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
1899         * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
1900         * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
1901         * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
1902         * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
1903         * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
1904         * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
1905         * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
1906         * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
1907         * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
1908         * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
1909         * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
1910         * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
1911         * config/mips/mips.c (IN_TARGET_CODE): Likewise.
1912         * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
1913         * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
1914         * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
1915         * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
1916         * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
1917         * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
1918         * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
1919         * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
1920         * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
1921         * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
1922         * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
1923         * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
1924         * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
1925         * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
1926         * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
1927         * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
1928         * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
1929         * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
1930         * config/pa/pa.c (IN_TARGET_CODE): Likewise.
1931         * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
1932         * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
1933         * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
1934         * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
1935         * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
1936         * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
1937         * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
1938         * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
1939         * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
1940         * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
1941         * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
1942         * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
1943         * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
1944         * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
1945         * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
1946         * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
1947         * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
1948         * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
1949         * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
1950         * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
1951         * config/rx/rx.c (IN_TARGET_CODE): Likewise.
1952         * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
1953         * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
1954         * config/s390/s390.c (IN_TARGET_CODE): Likewise.
1955         * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
1956         * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
1957         * config/sh/sh.c (IN_TARGET_CODE): Likewise.
1958         * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
1959         * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
1960         * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
1961         * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
1962         * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
1963         * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
1964         * config/spu/spu.c (IN_TARGET_CODE): Likewise.
1965         * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
1966         * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
1967         * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
1968         * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
1969         * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
1970         * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
1971         * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
1972         * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
1973         * config/v850/v850.c (IN_TARGET_CODE): Likewise.
1974         * config/vax/vax.c (IN_TARGET_CODE): Likewise.
1975         * config/visium/visium.c (IN_TARGET_CODE): Likewise.
1976         * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
1977         * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
1978         * config/vms/vms.c (IN_TARGET_CODE): Likewise.
1979         * config/xtensa/xtensa.c (IN_TARGET_CODE): 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         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
1986         checks for MEM_REF.
1987
1988 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1989             Alan Hayward  <alan.hayward@arm.com>
1990             David Sherwood  <david.sherwood@arm.com>
1991
1992         * doc/generic.texi (VEC_SERIES_EXPR): Document.
1993         * doc/md.texi (vec_series@var{m}): Document.
1994         * tree.def (VEC_SERIES_EXPR): New tree code.
1995         * tree.h (build_vec_series): Declare.
1996         * tree.c (build_vec_series): New function.
1997         * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
1998         * tree-pretty-print.c (dump_generic_node): Likewise.
1999         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
2000         * tree-inline.c (estimate_operator_cost): Likewise.
2001         * expr.c (expand_expr_real_2): Likewise.
2002         * optabs-tree.c (optab_for_tree_code): Likewise.
2003         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
2004         * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
2005         * expmed.c (make_tree): Handle VEC_SERIES.
2006         * optabs.def (vec_series_optab): New optab.
2007         * optabs.h (expand_vec_series_expr): Declare.
2008         * optabs.c (expand_vec_series_expr): New function.
2009         * tree-vect-generic.c (expand_vector_operations_1): Check that
2010         the operands also have vector type.
2011
2012 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2013             Alan Hayward  <alan.hawyard@arm.com>
2014             David Sherwood  <david.sherwood@arm.com>
2015
2016         * doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
2017         (VEC_COND_EXPR): Add missing @tindex.
2018         * doc/md.texi (vec_duplicate@var{m}): Document.
2019         * tree.def (VEC_DUPLICATE_EXPR): New tree codes.
2020         * tree.c (build_vector_from_val): Add stubbed-out handling of
2021         variable-length vectors, using VEC_DUPLICATE_EXPR.
2022         (uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
2023         * cfgexpand.c (expand_debug_expr): Likewise.
2024         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2025         * tree-inline.c (estimate_operator_cost): Likewise.
2026         * tree-pretty-print.c (dump_generic_node): Likewise.
2027         * tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
2028         * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
2029         (test_vec_duplicate_folding): New function.
2030         (fold_const_c_tests): Call it.
2031         * optabs.def (vec_duplicate_optab): New optab.
2032         * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
2033         * optabs.h (expand_vector_broadcast): Declare.
2034         * optabs.c (expand_vector_broadcast): Make non-static.  Try using
2035         vec_duplicate_optab.
2036         * expr.c (store_constructor): Try using vec_duplicate_optab for
2037         uniform vectors.
2038         (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
2039
2040 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
2041
2042         PR target/83358
2043         * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
2044         div/mod latencies a bit.
2045
2046 2017-12-15  Jeff Law  <law@redhat.com>
2047
2048         PR tree-optimization/36550
2049         * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
2050         (mark_threaded_blocks): Rewrite code to avoid block copying when
2051         optimizing for size.  Don't pessimize blocks which will be
2052         copied, but all the statements will be dead.
2053
2054 2017-12-15  Alexandre Oliva <aoliva@redhat.com>
2055
2056         PR tree-optimization/81165
2057         * tree-ssa-threadupdate.c (uses_in_bb): New.
2058         (estimate_threading_killed_stmts): New.
2059         * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
2060         * tree-ssa-threadedge.c 
2061         (record_temporary_equivalences_from_stmts_at_dest): Expand limit
2062         when its hit.
2063
2064 2017-12-15  Jeff Law  <law@redhat.com>
2065
2066         PR tree-optimization/83410
2067         * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
2068         threads when parallelizing loops.
2069
2070 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
2071
2072         * tree-core.h (struct attribute_spec): Swap affects_type_identity and
2073         handler fields.
2074         * config/alpha/alpha.c (vms_attribute_table): Swap
2075         affects_type_identity and handler fields, adjust comments.
2076         * config/mips/mips.c (mips_attribute_table): Likewise.
2077         * config/visium/visium.c (visium_attribute_table): Likewise.
2078         * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
2079         * config/microblaze/microblaze.c (microblaze_attribute_table):
2080         Likewise.
2081         * config/spu/spu.c (spu_attribute_table): Likewise.
2082         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2083         * config/arc/arc.c (arc_attribute_table): Likewise.
2084         * config/m68k/m68k.c (m68k_attribute_table): Likewise.
2085         * config/v850/v850.c (v850_handle_interrupt_attribute,
2086         v850_handle_data_area_attribute): Formatting fixes.
2087         (v850_attribute_table): Swap affects_type_identity and handler
2088         fields, adjust comments.
2089         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2090         * config/arm/arm.c (arm_attribute_table): Likewise.
2091         * config/avr/avr.c (avr_attribute_table): Likewise.
2092         * config/s390/s390.c (s390_attribute_table): Likewise.
2093         * config/sh/sh.c (sh_attribute_table): Likewise.
2094         * config/i386/i386.c (ix86_handle_cconv_attribute,
2095         ix86_handle_callee_pop_aggregate_return): Formatting fixes.
2096         (ix86_attribute_table): Swap affects_type_identity and handler
2097         fields, adjust comments.
2098         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2099         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2100         * config/m32c/m32c.c (m32c_attribute_table): Likewise.
2101         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
2102         * config/ia64/ia64.c (ia64_attribute_table): Likewise.
2103         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2104         * config/rx/rx.c (rx_attribute_table): Likewise.
2105         * config/cr16/cr16.c (cr16_attribute_table): Likewise.
2106         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2107         * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
2108         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
2109         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2110         * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
2111         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2112         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2113         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2114         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2115         * doc/plugins.texi (user_attr): Likewise.  Add NULL for
2116         exclude.
2117         * attribs.c (empty_attribute_table): Swap affects_type_identity and
2118         handler fields.
2119         (register_scoped_attributes, decl_attributes): Formatting fixes.
2120
2121         PR tree-optimization/83269
2122         * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
2123         subtraction in arg0's type if type is signed and arg0 is unsigned.
2124         Formatting fix.
2125
2126         PR sanitizer/81281
2127         * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
2128         convert? on @0 instead of convert.  Check type of @1, not @0.
2129         ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
2130         convert? on @0 instead of convert.  Check type of @1, not @0.
2131         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
2132         only optimize if either both @1 and @2 types are narrower
2133         precision, or both are wider or equal precision, and in the former
2134         case only if both have undefined overflow.
2135
2136 2017-12-15  Richard Biener  <rguenther@suse.de>
2137
2138         PR lto/83388
2139         * internal-fn.def (IFN_NOP): Add.
2140         * internal-fn.c (expand_NOP): Do nothing.
2141         * lto-streamer-in.c (input_function): Instead of removing
2142         sanitizer calls replace them with IFN_NOP calls.
2143
2144 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
2145             Alan Hayward  <alan.hayward@arm.com>
2146             David Sherwood  <david.sherwood@arm.com>
2147
2148         * dse.c (store_info, read_info_type): Replace begin and end with
2149         offset and width.
2150         (print_range): New function.
2151         (set_all_positions_unneeded, any_positions_needed_p)
2152         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
2153         accordingly.
2154         (record_store): Likewise.  Optimize the case in which all positions
2155         are unneeded.
2156         (get_stored_val): Replace read_begin and read_end with read_offset
2157         and read_width.
2158         (replace_read): Update call accordingly.
2159
2160 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
2161
2162         * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
2163         (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
2164         (loop_cand::loop_cand): Initialize above members.
2165         (loop_cand::supported_operations): Delete.
2166         (loop_cand::can_interchange_p): Inline above function.
2167         (loop_cand::classify_simple_reduction): Record number of constant
2168         initialized simple reductions.
2169         (should_interchange_loops): New parameters.  Check stmt cost of loops
2170         to be interchange.
2171         (tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
2172         Update call to should_interchange_loops.
2173         (should_interchange_loop_nest): Update call to
2174         should_interchange_loops.
2175
2176 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
2177
2178         PR target/66488
2179         * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
2180         * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
2181         * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
2182
2183 2017-12-15  Julia Koval  <julia.koval@intel.com>
2184
2185         * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
2186         __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
2187         * config/i386/sse.md (vaesenclast_<mode>): New pattern.
2188         * config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
2189         _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
2190
2191 2017-12-15  Julia Koval  <julia.koval@intel.com>
2192
2193         * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
2194         __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
2195         * config/i386/sse.md (vaesenc_<mode>): New pattern.
2196         * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
2197         _mm_aesenc_epi128): New intrinsics.
2198
2199 2017-12-15  Julia Koval  <julia.koval@intel.com>
2200
2201         * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
2202         __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
2203         * config/i386/sse.md (vaesdeclast_<mode>): New pattern.
2204         * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
2205         _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
2206
2207 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2208
2209         * gimple-ssa-strength-reduction.c (analyze_increments):
2210         Distinguish replacement costs for constant strides from those for
2211         unknown strides.
2212
2213 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2214
2215         * var-tracking.c (variable_tracking_main_1): Formatting fix.
2216
2217 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2218
2219         * doc/invoke.texi: Document -Wcast-function-type.
2220         * recog.h (stored_funcptr): Change signature.
2221         * tree-dump.c (dump_node): Avoid warning.
2222         * typed-splay-tree.h (typed_splay_tree): Avoid warning.
2223
2224 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
2225
2226         PR middle_end/79538
2227         * gimple-fold.c (get_range_strlen): Add the handling of non-member 
2228         array.
2229
2230 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
2231
2232         PR tree-optimization/83312
2233         * domwalk.h (dom_walker::dom_walker): Fix typo in comment.
2234         * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
2235         "val" param, and to cope with arbitrary basic blocks.
2236         (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
2237         handle NULL_TREE for "val", dropping "bb" param.
2238         (find_taken_edge_switch_expr): Make "switch_stmt" param const and
2239         drop "bb" param.  Handle NULL_TREE for "val".
2240         (find_case_label_for_value): Make "switch_stmt" param const.
2241         * tree-vrp.c (class check_array_bounds_dom_walker): New subclass
2242         of dom_walker.
2243         (vrp_prop::check_all_array_refs): Reimplement as...
2244         (check_array_bounds_dom_walker::before_dom_children): ...this new
2245         vfunc.  Replace linear search through BB block list, excluding
2246         those with non-executable in-edges via dominator walk.
2247
2248 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2249
2250         * config/arm/arm.opt (mverbose-cost-dump): New option.
2251         * config/arm/arm.c (arm_rtx_costs): Use it.
2252
2253 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
2254
2255         PR bootstrap/83396
2256         * reload1.c (emit_input_reload_insns): Skip debug markers.
2257
2258 2017-12-14  Alexandre Oliva <aoliva@redhat.com>
2259
2260         * config/i386/i386.c (rest_of_insert_endbranch): Use call loc
2261         for its nop_endbr.
2262
2263         PR bootstrap/83396
2264         * config/arc/arc.c (hwloop_optimize): Skip debug insns.
2265         * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
2266         * config/sh/sh.c: Skip debug insns besides notes.
2267         * config/sh/sh.md: Likewise.
2268         * config/sh/sh_treg_combine.cc: Likewise.
2269         * config/sh/sync.md: Likewise.
2270
2271 2017-12-14  Tom de Vries  <tom@codesourcery.com>
2272
2273         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
2274         Add item for weak_undefined.
2275
2276 2017-12-14  Richard Biener  <rguenther@suse.de>
2277
2278         PR tree-optimization/67842
2279         * sese.h (bb_in_region): Remove #if 0'ed code.
2280
2281 2017-12-14  Richard Biener  <rguenther@suse.de>
2282
2283         PR tree-optimization/83326
2284         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
2285         may_be_zero parameter and handle it by not marking the first
2286         peeled copy as not exiting the loop.
2287         (try_peel_loop): Likewise.
2288         (canonicalize_loop_induction_variables): Use number_of_iterations_exit
2289         to handle the case of constant or zero iterations and perform
2290         loop header copying on-the-fly.
2291
2292 2017-12-14  Richard Biener  <rguenther@suse.de>
2293
2294         PR tree-optimization/83418
2295         * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
2296         Instead of asserting we don't get unfolded comparisons deal with
2297         them.
2298
2299 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2300
2301         PR bootstrap/83396
2302         * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
2303         basic blocks.  Assert debug bind insns don't appear outside of bbs,
2304         don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
2305         bb.  Simplify.
2306
2307         PR tree-optimization/83198
2308         * gimple-ssa-sprintf.c (format_floating): Set type solely based on
2309         dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
2310         value if arg is a REAL_CST with incompatible type.
2311
2312 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
2313             Bin Cheng  <bin.cheng@arm.com>
2314
2315         PR target/81228
2316         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
2317         to CCFPEmode.
2318         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
2319         LTGT.
2320
2321 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2322
2323         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
2324         cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
2325
2326 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
2327             Alan Hayward  <alan.hayward@arm.com>
2328             David Sherwood  <david.sherwood@arm.com>
2329
2330         * poly-int.h: New file.
2331         * poly-int-types.h: Likewise.
2332         * coretypes.h: Include them.
2333         (POLY_INT_CONVERSION): Define.
2334         * target.def (estimated_poly_value): New hook.
2335         * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
2336         * doc/tm.texi: Regenerate.
2337         * doc/poly-int.texi: New file.
2338         * doc/gccint.texi: Include it.
2339         * doc/rtl.texi: Describe restrictions on subreg modes.
2340         * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
2341         * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
2342         (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
2343         * targhooks.h (default_estimated_poly_value): Declare.
2344         * targhooks.c (default_estimated_poly_value): New function.
2345         * target.h (estimated_poly_value): Likewise.
2346         * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
2347         (wi::unary_traits): Delete.
2348         (wi::binary_traits::signed_shift_result_type): Define for
2349         offset_int << HOST_WIDE_INT, etc.
2350         (generic_wide_int::operator <<=): Define for all types and use
2351         wi::lshift instead of <<.
2352         (wi::hwi_with_prec): Add a default constructor.
2353         (wi::ints_for): New class.
2354         (operator <<): Define for all wide-int types.
2355         (operator /): New function.
2356         (operator %): Likewise.
2357         * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
2358         (ASSERT_MAYBE_NE_AT): New macros.
2359
2360 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
2361             Dominik Vogt  <vogt@linux.vnet.ibm.com>
2362
2363         PR middle-end/78468
2364         * emit-rtl.c (init_emit): Remove ??? comment.
2365         * explow.c (get_dynamic_stack_size): Take known alignment of stack
2366         pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
2367         * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
2368         alignment of 3 virtual registers to BITS_PER_WORD.
2369
2370         * config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
2371
2372 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
2373
2374         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
2375         * config/rs6000/rs6000.c (cpu_supports_info): Use it.
2376
2377 2017-12-13  Alexandre Oliva <aoliva@redhat.com>
2378
2379         PR bootstrap/83396
2380         * reload1.c (eliminate_regs_in_insn): Skip debug markers.
2381
2382 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
2383
2384         * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
2385         with the exception of debug begin stmt markers appear before
2386         labels.
2387
2388         PR bootstrap/83396
2389         * final.c (rest_of_handle_final): Call variable_tracking_main only
2390         if !flag_var_tracking.
2391
2392 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2393             Jakub Jelinek  <jakub@redhat.com>
2394
2395         PR bootstrap/83396
2396         PR debug/83391
2397         * tree-cfgcleanup.c (remove_forwarder_block): Keep after
2398         labels debug stmts that can only appear after labels.
2399
2400 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
2401
2402         PR rtl-optimization/82398
2403         * sel-sched.c (sel_rank_for_schedule): Fix check for zero
2404         EXPR_USEFULNESS in priority comparison.
2405
2406 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
2407
2408         PR rtl-optimization/83393
2409         * combine.c (move_deaths): If reg_stat points to a too new insn in
2410         last_death, do not use it: find the proper insn instead.
2411
2412 2017-12-12  Jeff Law  <law@redhat.com>
2413
2414         PR tree-optimization/83298
2415         PR tree-optimization/83362
2416         PR tree-optimization/83383
2417         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
2418         push_value_range a public interface.  Add new argument to
2419         record_ranges_from_stmt.
2420         * gimple-ssa-evrp-analyze.c
2421         (evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
2422         Update comments.  Handle recording temporary equivalences.
2423         * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
2424         new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
2425         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
2426         * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
2427         gimple-ssa-evrp-analyze.h.
2428         (record_temporary_equivalences_from_phis): Add new argument.  When
2429         the PHI arg is an SSA_NAME, set the result's range to the range
2430         of the PHI arg.
2431         (record_temporary_equivalences_from_stmts_at_dest): Record ranges
2432         from statements too.
2433         (thread_through_normal_block): Accept new argument, evrp_range_analyzer.
2434         Pass it down to children as needed.
2435         (thread_outgoing_edges): Likewise.
2436         (thread_across_edge): Likewise.   Push/pop range state as needed.
2437         * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
2438
2439 2017-12-12  Julia Koval  <julia.koval@intel.com>
2440
2441         * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
2442         (PTA_CANNONLAKE): Remove PTA_CLWB.
2443
2444 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2445
2446         PR target/83332
2447         * config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
2448         (vcondv2div2df): Likewise.
2449         (vconduv2dfv2di): Likewise.
2450
2451 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2452
2453         * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
2454         BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
2455         BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
2456         ATTR_MATHFN_FPROUNDING_ERRNO.
2457
2458 2017-12-12  Richard Biener  <rguenther@suse.de>
2459
2460         PR tree-optimization/83385
2461         * graphite-scop-detection.c (get_order, order): Remove.
2462         (bb_to_rpo): New global.
2463         (cmp_pbbs): Adjust.
2464         (build_scops): Sort pbbs in RPO order.
2465
2466 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
2467
2468         * combine.c (simplify_set): Do not transform subregs to zero_extends
2469         if the destination mode is a vector mode.
2470
2471 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2472
2473         PR tree-optimization/83359
2474         * tree-cfg.h (fold_loop_internal_call): Declare.
2475         * tree-vectorizer.c (fold_loop_internal_call): Moved to ...
2476         * tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
2477         (find_loop_dist_alias): New function.
2478         (move_sese_region_to_fn): If any dloop->orig_loop_num value is
2479         updated, also adjust any corresponding LOOP_DIST_ALIAS internal
2480         calls.
2481
2482         PR tree-optimization/80631
2483         * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
2484         (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
2485         arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
2486         hardcoding zero as the value if COND_EXPR is never true.  For
2487         INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
2488         INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
2489         hardcoding MAX_EXPR as the reduction operation.
2490         (is_nonwrapping_integer_induction): Allow negative step.
2491         (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
2492         vect_create_epilog_for_reduction, if no value is suitable, don't
2493         use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
2494
2495 2017-12-12  Richard Biener  <rguenther@suse.de>
2496
2497         PR tree-optimization/81889
2498         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
2499         range info from the non-wrapping IV instead of just the range
2500         of the type.
2501
2502 2017-12-12  Julia Koval  <julia.koval@intel.com>
2503
2504         * config.gcc: Add vaesintrin.h.
2505         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
2506         New type.
2507         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
2508         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
2509         New builtins.
2510         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
2511         * config/i386/immintrin.h: Include vaesintrin.h.
2512         * config/i386/sse.md (vaesdec_<mode>): New pattern.
2513         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
2514         _mm_aesdec_epi128): New intrinsics.
2515
2516 2017-12-12  Julia Koval  <julia.koval@intel.com>
2517
2518         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
2519         OPTION_MASK_ISA_VAES_UNSET): New.
2520         (ix86_handle_option): Handle -mvaes.
2521         * config/i386/cpuid.h: Define bit_VAES.
2522         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
2523         * config/i386/i386-c.c (__VAES__): New.
2524         * config/i386/i386.c (ix86_target_string): Add -mvaes.
2525         (ix86_valid_target_attribute_inner_p): Ditto.
2526         * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
2527         * config/i386/i386.opt: Add -mvaes.
2528         * doc/invoke.texi: Ditto.
2529
2530 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
2531
2532         * debug.h (gcc_debug_hooks): Add inline_entry.
2533         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2534         * debug.c (do_nothing_debug_hooks): Likewise.
2535         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2536         * dwarf2out.c (dwarf2_debug_hooks): Likewise.
2537         (dwarf2_lineno_debug_hooks): Likewise.
2538
2539         * common.opt (gstatement-frontiers): New, setting
2540         debug_nonbind_markers_p.
2541         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
2542         * toplev.c (process_options): Autodetect value for debug statement
2543         frontiers option.
2544         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
2545         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
2546
2547         * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
2548         markers.  Integrate source bind into debug stmt expand loop.
2549         (pass_expand::execute): Check debug marker limit.  Avoid deep
2550         TER and expand debug locations for debug bind insns only.
2551         * cse.c (insn_live_p): Keep nonbind markers and debug bindings
2552         followed by them.
2553         * df-scan.c (df_insn_delete): Accept out-of-block debug insn.
2554         * final.c (reemit_insn_block_notes): Take current block from
2555         nonbind markers.  Declare note where it's first set.
2556         (final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
2557         begin stmt markers if enabled.
2558         (notice_source_line): Handle nonbind markers.  Fail if their
2559         location is unknown or that of builtins.
2560         (rest_of_handle_final): Convert begin stmt markers to notes if
2561         var-tracking didn't run.
2562         (rest_of_clean_state): Skip begin stmt markers.
2563         * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
2564         markers.
2565         * function.c (allocate_struct_function): Set begin_stmt_markers.
2566         * function.h (struct function): Add debug_marker_count counter
2567         and debug_nonbind_markers flag.
2568         * gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
2569         * gimple-low.c (lower_function_body): Adjust
2570         debug_nonbind_markers.
2571         (lower_stmt): Drop or skip gimple debug stmts.
2572         (lower_try_catch): Skip debug stmts.
2573         * gimple.c (gimple_build_debug_begin_stmt): New.
2574         (gimple_copy): Increment debug_marker_count if copying one.
2575         * gimple.h (gimple_build_debug_begin_stmt): Declare.
2576         * gimplify.c (rexpr_location): New.
2577         (rexpr_has_location): New.
2578         (warn_switch_unreachable_r): Handle gimple debug stmts.
2579         (shortcut_cond_r): Call expr_location.
2580         (find_goto): New.
2581         (find_goto_label): New.
2582         (shortcut_cond_expr): Call expr_has_location, expr_location, and
2583         find_goto_label.
2584         (gimplify_cond_expr): Call find_goto_label, expr_has_location, and
2585         expr_location.
2586         (gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
2587         * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
2588         (LANG_HOOKS_INITIALIZER): ... this.
2589         * langhooks.h (struct lang_hooks): Add emits_begin_stmt.
2590         * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
2591         debug insns.
2592         (update_ebb_live_info): Skip debug insn markers.
2593         * lra.c (debug_insn_static_data): Rename to...
2594         (debug_bind_static_data): ... this.
2595         (debug_marker_static_data): New.
2596         (lra_set_insn_recog_data): Select one of the above depending
2597         on debug insn kind.
2598         (lra_update_isn_regno_info): Don't assume debug insns have
2599         freqs.
2600         (push_insns): Skip debug insns.
2601         * lto-streamer-in.c (input_function): Drop debug stmts
2602         depending on active options.  Adjust debug_nonbind_markers.
2603         * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
2604         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
2605         begin stmt marker notes.
2606         (print_insn): Likewise.
2607         * recog.c (extract_insn): Recognize rtl for debug markers.
2608         * rtl.def (DEBUG_MARKER): New.
2609         * tree-inline.c: Include params.h.
2610         (remap_gimple_stmt): Handle nonbind markers.
2611         (maybe_move_debug_stmts_to_successors): Likewise.
2612         (copy_debug_stmt): Likewise.
2613         * tree-iterator.c (append_to_statement_list_1): Append begin stmt
2614         markers regardless of no side effects.
2615         (tsi_link_before): Don't update container's side effects when adding
2616         a begin stmt marker.
2617         (tsi_link_after): Likewise.
2618         (expr_first): Skip begin stmt markers.
2619         (expr_last): Likewise.
2620         * tree-pretty-print (dump_generic_node): Handle begin stmt markers.
2621         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
2622         Disregard nonbind markers.
2623         * tree.c (make_node_stat): Don't set side effects for begin stmt
2624         markers.
2625         (build1_stat): Likewise.
2626         * tree.def (DEBUG_BEGIN_STMT): New.
2627         * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
2628         * var-tracking.c (delete_debug_insns): Renamed to...
2629         (delete_vta_debug_insns): ... this.
2630         (reemit_marker_as_note): New.
2631         (vt_initialize): Reemit markers.
2632         (delete_vta_debug_insns): Likewise.
2633         (vt_debug_insns_local): Reemit or delete markers.
2634         (variable_tracking_main_1): Likewise.
2635         * doc/generic.texi (DEBUG_BEGIN_STMT): Document.
2636         * doc/gimple.texi (gimple_debug_begin_stmt_p): New.
2637         (gimple_debug_nonbind_marker_p): New.
2638         (gimple_build_debug_bind): Adjust.
2639         (gimple_build_debug_begin_stmt): New.
2640         * doc/invoke.texi (max-debug-marker-count): New param.
2641         * doc/rtl.texi (debug_implicit_ptr, entry_value): New.
2642         (debug_parameter_ref, debug_marker): New.
2643         (NOTE_INSN_BEGIN_STMT): New.
2644         (DEBUG_INSN): Describe begin stmt markers.
2645
2646         * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
2647         without debug insns, we wouldn't, but clean up debug insns
2648         after a control flow insn nevertheless.
2649
2650         * cfgcleanup.c (delete_unreachable_blocks): Use alternate
2651         block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
2652         * cfgexpand.c (label_rtx_for_bb): Skip debug insns.
2653         * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
2654         (rtl_tidy_fallthru_edge): Likewise.
2655         (rtl_verify_fallthru): Likewise.
2656         (rtl_verify_bb_layout): Likewise.
2657         (skip_insns_after_block): Likewise.
2658         (duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
2659         * dwarf2out.c: Include print-rtl.h.
2660         (dwarf2out_next_real_insn): New.
2661         (dwarf2out_var_location): Call it.  Disregard begin stmt markers.
2662         Dump debug binds in asm comments.
2663         * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
2664         * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
2665         callers to use gsi_start_nondebug_bb instead.
2666         (gsi_after_labels): Skip gimple debug stmts.
2667         (gsi_start_nondebug): New.
2668         * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
2669         (proper_loop_form_for_interchange): Adjust.
2670         * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
2671         * gimple.h (gimple_seq_last_nondebug_stmt): New.
2672         * gimplify.c (last_stmt_in_scope): Skip debug stmts.
2673         (collect_fallthrough_labels): Likewise.
2674         (should_warn_for_implicit_fallthrough): Likewise.
2675         (warn_implicit_fallthrough_r): Likewise.
2676         (expand_FALLTHROUGH_r): Likewise.
2677         * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
2678         (graphite_copy_stmts_from_block): Skip nonbind markers.
2679         * haifa-sched.c (sched_extend_bb): Skip debug insns.
2680         * ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
2681         * jump.c (clean_barriers): Skip debug insns.
2682         * omp-expand.c (expand_parallel_call): Skip debug insns.
2683         (expand_task_call): Likewise.
2684         (remove_exit_barrier): Likewise.
2685         (expand_omp_taskreg): Likewise.
2686         (expand_omp_for_init_counts): Likewise.
2687         (expand_omp_for_generic): Likewise.
2688         (expand_omp_for_static_nochunk): Likewise.
2689         (expand_omp_for_static_chunk): Likewise.
2690         (expand_omp_simd): Likewise.
2691         (expand_omp_taskloop_for_outer): Likewise.
2692         (expand_omp_taskloop_for_inner): Likewise.
2693         (expand_oacc_for): Likewise.
2694         (expand_omp_sections): Likewise.
2695         (expand_omp_single): Likewise.
2696         (expand_omp_synch): Likewise.
2697         (expand_omp_atomic_load): Likewise.
2698         (expand_omp_atomic_store): Likewise.
2699         (expand_omp_atomic_fetch_op): Likewise.
2700         (expand_omp_atomic_pipeline): Likewise.
2701         (expand_omp_atomic_mutex): Likewise.
2702         (expand_omp_target): Likewise.
2703         (grid_expand_omp_for_loop): Likewise.
2704         (grid_expand_target_grid_body): Likewise.
2705         (build_omp_regions_1): Likewise.
2706         * omp-low.c (check_combined_parallel): Skip debug stmts.
2707         * postreload.c (fixup_debug_insns): Skip nonbind debug insns.
2708         * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
2709         * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
2710         test.
2711         * tree-cfg.c (make_blobs_1): Skip debug stmts.
2712         (make_edges): Likewise.
2713         (cleanup_dead_labels): Likewise.
2714         (gimple_can_merge_blocks_p): Likewise.
2715         (stmt_starts_bb_p): Likewise.
2716         (gimple_block_label): Likewise.
2717         (gimple_redirect_edge_and_branch): Likewise.
2718         * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
2719         of debug stmts.
2720         (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
2721         TDF_SLIM.
2722         * tree-pretty-print (print_declaration): Omit initializer in slim
2723         dumps.
2724         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
2725         markers.
2726         (eliminate_unnecessary_stmts): Stabilize block removal order.
2727         * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
2728         * var-tracking.c (get_first_insn): New.
2729         (vt_emit_notes): Call it.
2730         (vt_initialize): Walk any insns before the first BB.
2731         (delete_debug_insns): Likewise.
2732
2733         * gimple.h (enum gimple_debug_subcode): Add
2734         GIMPLE_DEBUG_BEGIN_STMT.
2735         (gimple_debug_begin_stmt_p): New.
2736         (gimple_debug_nonbind_marker_p): New.
2737         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
2738         (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
2739         (MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
2740         * insn-notes.def (BEGIN_STMT): New.
2741         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
2742         (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
2743         (MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
2744         (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
2745         (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
2746         (INSN_DEBUG_MARKER_KIND): New.
2747         (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
2748         (INSN_VAR_LOCATION): Check for VAR_LOCATION.
2749         (INSN_VAR_LOCATION_PTR): New.
2750         * cfgexpand.c (expand_debug_locations): Handle debug bind insns
2751         only.
2752         (expand_gimple_basic_block): Likewise.  Emit debug temps for TER
2753         deps only if debug bind insns are enabled.
2754         (pass_expand::execute): Avoid deep TER and expand
2755         debug locations for debug bind insns only.
2756         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
2757         debug stmts special handling down to debug bind stmts.
2758         * combine.c (try_combine): Narrow debug insns special handling
2759         down to debug bind insns.
2760         * cse.c (delete_trivially_dead_insns): Handle debug bindings.
2761         Narrow debug insns preexisting special handling down to debug
2762         bind insns.
2763         * dce.c (rest_of_handle_ud_dce): Narrow debug insns special
2764         handling down to debug bind insns.
2765         * function.c (instantiate_virtual_regs): Skip debug markers,
2766         adjust handling of debug binds.
2767         * gimple-ssa-backprop.c (backprop::prepare_change): Try debug
2768         temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
2769         * haifa-sched.c (schedule_insn): Narrow special handling of debug
2770         insns to debug bind insns.
2771         * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
2772         special handling of debug stmts to debug bind stmts.
2773         * ipa-split.c (split_function): Likewise.
2774         * ira.c (combine_and_move_insns): Adjust debug bind insns only.
2775         * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
2776         debug insns.
2777         * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
2778         * regrename.c (build_def_use): Likewise.
2779         * regcprop.c (copyprop_hardreg_forward_1): Likewise.
2780         (pass_cprop_hardreg): Narrow special casing of debug insns to
2781         debug bind insns.
2782         * regstat.c (regstat_init_n_sets_and_refs): Likewise.
2783         * reload1.c (reload): Likewise.
2784         * sese.c (sese_insert_phis_for_liveouts): Narrow special
2785         casing of debug stmts to debug bind stmts.
2786         * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
2787         * ssa-iterators.h (num_imm_uses): Likewise.
2788         * tree-cfg.c (gimple_merge_blocks): Narrow special casing of
2789         debug stmts to debug bind stmts.
2790         * tree-inline.c (tree_function_versioning): Narrow special casing
2791         of debug stmts to debug bind stmts.
2792         * tree-loop-distribution.c (generate_loops_for_partition):
2793         Narrow special casing of debug stmts to debug bind stmts.
2794         * tree-sra.c (analyze_access_subtree): Narrow special casing
2795         of debug stmts to debug bind stmts.
2796         * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
2797         stmts to debug bind stmts.
2798         * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
2799         casing of debug stmts to debug bind stmts.
2800         * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
2801         * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
2802         casing of debug stmts to debug bind stmts.
2803         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
2804         Likewise.
2805         * tree-ssa.c (flush_pending_stmts): Narrow special casing of
2806         debug stmts to debug bind stmts.
2807         (gimple_replace_ssa_lhs): Likewise.
2808         (insert_debug_temp_for_var_def): Likewise.
2809         (insert_debug_temps_for_defs): Likewise.
2810         (reset_debug_uses): Likewise.
2811         * tree-ssanames.c (release_ssa_name_fn): Likewise.
2812         * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
2813         (adjust_debug_stmts): Likewise.
2814         (adjust_phi_and_debug_stmts): Likewise.
2815         (vect_do_peeling): Likewise.
2816         * tree-vect-loop.c (vect_transform_loop): Likewise.
2817         * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
2818         * var-tracking.c (adjust_mems): Narrow special casing of debug
2819         insns to debug bind insns.
2820         (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
2821         (compute_bb_dataflow, vt_find_locations): Likewise.
2822         (vt_expand_loc, emit_notes_for_changes): Likewise.
2823         (vt_init_cfa_base): Likewise.
2824         (vt_emit_notes): Likewise.
2825         (vt_initialize): Likewise.
2826         (vt_finalize): Likewise.
2827
2828         * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
2829         (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
2830         (next_nonnote_nondebug_insn_bb): New.
2831         (prev_nonnote_nondebug_insn_bb): New.
2832         (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
2833         * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
2834         (prev_nonnote_nondebug_insn_bb): Declare.
2835         (next_nonnote_nondebug_insn_bb): Declare.
2836         * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
2837         * cfgrtl.c (get_last_bb_insn): Likewise.
2838         * lra.c (push_insns): Likewise.
2839
2840 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
2841
2842         PR c/82050
2843         * selftest-run-tests.c (selftest::run_tests): Move start/finish code
2844         to...
2845         * selftest.c (selftest::test_runner::test_runner): New ctor.
2846         (selftest::test_runner::~test_runner): New dtor.
2847         * selftest.h (class selftest::test_runner): New class.
2848
2849 2017-12-11  Carl Love  <cel@us.ibm.com>
2850
2851         * config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
2852         vec_extract_fp32_from_shortl]): Add #defines.
2853         * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
2854         * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
2855         ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
2856         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
2857         ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
2858         ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
2859         * doc/extend.texi: Add documentation for the added builtins.
2860
2861 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
2862
2863         PR rtl-optimization/80693
2864         PR rtl-optimization/81019
2865         PR rtl-optimization/81020
2866         * combine.c (distribute_notes): Reset any REG_UNUSED REGs that
2867         are not mentioned in i3.  Place the REG_UNUSED note on i2,
2868         possibly modified to REG_DEAD, if it did not originate in i3.
2869
2870 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
2871
2872         * recog.c (store_data_bypass_p_1): New function.
2873         (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
2874         store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
2875
2876 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
2877
2878         PR rtl-optimization/83361
2879         * ifcvt.c (if_convert): Call fixup_partitions.
2880
2881 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
2882
2883         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
2884         early folding of splat_u{8,16,32}.
2885
2886 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
2887
2888         * config/aarch64/aarch64.c (aarch64_print_operand): Don't start
2889         output_operand_lossage first argument with capital letter.
2890         (aarch64_override_options): Don't start error and sorry first argument
2891         with capital letter.
2892
2893 2017-12-11  Andi Kleen  <ak@linux.intel.com>
2894
2895         PR gcov-profile/83355
2896         * auto-profile.c (string_table::get_index_by_decl): Don't
2897         recurse when abstract origin points to itself.
2898
2899 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
2900
2901         PR tree-optimization/83320
2902         * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
2903         (prune_datarefs_not_in_loop): Ditto.
2904
2905 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
2906
2907         * doc/install.texi (Specific): Tweak link to mkssoftware.com.
2908
2909 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
2910
2911         PR tree-optimization/83337
2912         * gimple-loop-interchange.cc (compute_access_stride): Handle
2913         bitfield DRs properly.
2914
2915 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
2916
2917         PR tree-optimization/83338
2918         * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
2919         vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
2920         vector of unsigned integers to vector of signed integers.
2921
2922 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
2923
2924         PR rtl-optimization/83317
2925         * lra-constraints.c (process_address_1): Add insn code check.
2926
2927 2017-12-08  Michael Matz  <matz@suse.de>
2928
2929         Fix PR tree-optimization/83323
2930         * gimple-loop-jam (unroll_jam_possible_p): Correct test for
2931         head-controlled loops and loop BBs.
2932         * common.opt (funroll-and-jam): Remove, instead ...
2933         (floop-unroll-and-jam): ... reuse this option.
2934         * opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
2935         * doc/invoke.texi (-funroll-and-jam): Move docu to ...
2936         (-floop-unroll-and-jam): ... this option.
2937
2938 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
2939
2940         * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
2941         a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
2942         * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
2943
2944 2017-12-08  Richard Biener  <rguenther@suse.de>
2945
2946         PR middle-end/81782
2947         * tree-ssa-uninit.c (warn_uninitialized_vars): Properly
2948         handle accesses outside of zero-sized vars.
2949
2950 2017-12-08  Martin Jambor  <mjambor@suse.cz>
2951
2952         PR tree-optimization/83141
2953         * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
2954         test for MEM_REFs implicitely changing types with padding.  Remove
2955         inline keyword.
2956         (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
2957
2958 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
2959
2960         * config/arc/arc.c (arc_attribute_table): Add exclusions to
2961         the comment.
2962         * config/avr/avr.c (avr_attribute_table): Likewise.
2963         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2964         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2965         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2966         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
2967         of struct attribute_spec.
2968         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2969
2970 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
2971
2972         PR target/82960
2973         * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
2974
2975 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
2976
2977         PR middle-end/83609
2978         * profile-count.c (profile_count::from_gcov_type): Move from
2979         profile-count.h; handle overflow.
2980         * profile-count.h (profile_count::from_gcov_type): Move offline.
2981
2982 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
2983
2984         PR rtl-optimization/83304
2985         * combine.c (move_deaths): If we do not know where a register died,
2986         search for it.
2987
2988 2017-12-08  Richard Biener  <rguenther@suse.de>
2989
2990         * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
2991         Provide -fopt-info-loop feedback when we interchange in a nest.
2992
2993 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
2994
2995         * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
2996         for armv6 ARM CPU IDs.
2997
2998 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
2999
3000         * common/config/arm/arm-common.c: Include <algorithm>.
3001         (INCLUDE_VECTOR): Define.
3002         (compare_opt_names): New function.
3003         (arm_rewrite_selected_arch): Only strip out extensions that can be
3004         expressed through -mfpu.  Sort the remaining extensions
3005         alphabetically.
3006
3007 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3008
3009         * config/arm/arm.h (arm_asm_auto_mfpu): Declare.
3010         (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
3011         (ASM_CPU_SPEC): Use it if -mfpu is set to auto.
3012         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
3013
3014 2017-06-08  Tristan Gingold  <gindold@adacore.com>
3015
3016         PR ada/81470
3017         * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
3018         .cfi_personality or .cfi_lsda if the eh data format is dwarf2.
3019
3020 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3021
3022         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
3023         of struct attribute_spec.
3024
3025 2017-12-08  Julia Koval  <julia.koval@intel.com>
3026
3027         * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
3028         _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
3029         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
3030         _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
3031         _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
3032         _mm_maskz_dpwssds_epi32): Ditto.
3033
3034 2017-12-08  Richard Biener  <rguenther@suse.de>
3035
3036         PR tree-optimization/81303
3037         * tree-vect-stmts.c (vect_is_simple_cond): For invariant
3038         conditions try to create a comparison vector type matching
3039         the data vector type.
3040         (vectorizable_condition): Adjust.
3041         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
3042         Leave invariant conditions alone in case we can vectorize those.
3043
3044 2017-12-08  Julia Koval  <julia.koval@intel.com>
3045
3046         * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
3047         _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
3048         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
3049         _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
3050         _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
3051
3052 2017-12-08  Julia Koval  <julia.koval@intel.com>
3053
3054         * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
3055         _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
3056         * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
3057         _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
3058         _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
3059         _mm_maskz_dpbusds_epi32): New intrinsics.
3060
3061 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3062
3063         * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
3064         operand.
3065         (ld<bh>io_signed): Likewise.
3066         (st<bhw>io): Likewise.
3067         * config/nios2/predicates.md (ldstio_memory_operand): Allow
3068         SMALL_INT12 constant integer operand.
3069
3070 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3071
3072         * config/nios2/nios2.c (nios2_symbolic_constant_allowed):
3073         Rename to...
3074         (nios2_large_constant_allowed): ...this.  Adjust uses.
3075         (nios2_plus_symbolic_constant_p): Rename to...
3076         (nios2_plus_large_constant_p): ...this.  Adjust uses.
3077         (nios2_legitimate_address_p): Correct CONST_INT handling.
3078         (nios2_symbolic_memory_operand_p): Rename to...
3079         (nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
3080         (nios2_large_constant_p): Check for large constant integers too.
3081         (nios2_split_large_constant): Handle constant integers.
3082         (nios2_split_symbolic_memory_operand): Rename to...
3083         (nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
3084         (nios2_legitimize_constant_address): Handle constant integers.
3085         (r0rel_constant_p): Handle small constant integers.
3086         (nios2_print_operand_address): Handle r0-relative integer addresses.
3087         * config/nios2/nios2-protos.h: Adjust for renamed functions.
3088         * config/nios2/nios2.md: Adjust for renamed functions.
3089
3090 2017-12-07  Andrew Waterman  <andrew@sifive.com>
3091
3092         * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
3093         (TARGET_HAVE_SRODATA_SECTION): New define.
3094         (riscv_select_section): New function.
3095
3096 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
3097             Alexander Monakov  <amonakov@ispras.ru>
3098             Jakub Jelinek  <jakub@redhat.com>
3099
3100         PR target/81906
3101         * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
3102
3103 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3104
3105         * config/aarch64/aarch64.c (aarch64_print_address_internal): Return
3106         a bool success value.  Don't call output_operand_lossage here.
3107         (aarch64_print_ldpstp_address): Return a bool success value.
3108         (aarch64_print_operand_address): Call output_addr_const if
3109         aarch64_print_address_internal fails.
3110         (aarch64_print_operand): Don't assert that the mode is 16 bytes for
3111         'y'; call output_operand_lossage instead.  Call output_operand_lossage
3112         if aarch64_print_ldpstp_address fails.
3113
3114 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3115
3116         * tree-vector-builder.h
3117         (tree_vector_builder::binary_encoded_nelts): Declare.
3118         * tree-vector-builder.c
3119         (tree_vector_builder::binary_encoded_nelts): New function.
3120         * fold-const.c (negate_expr_p): Likewise.
3121         (operand_equal_p, fold_checksum_tree): Likewise.
3122         * tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
3123         * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
3124         (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
3125         (uniform_vector_p): Likewise.
3126         * varasm.c (const_hash_1, compare_constant): Likewise.
3127         * tree-ssa-ccp.c: Include tree-vector-builder.h.
3128         (valid_lattice_transition): Operate directly on the VECTOR_CST
3129         encoding.
3130         * ipa-icf.c: Include tree-vector-builder.h.
3131         (sem_variable::equals): Operate directly on the VECTOR_CST encoding.
3132         * print-tree.c (print_node): Print encoding of VECTOR_CSTs.
3133
3134 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3135
3136         * tree.c (build_vector): Delete.
3137         * tree.h (build_vector): Make static and move into the self-testing
3138         block.
3139
3140 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3141
3142         * vector-builder.h (vector_builder::derived): New const overload.
3143         (vector_builder::elt): New function.
3144         * tree-vector-builder.h (tree_vector_builder::type): New function.
3145         (tree_vector_builder::apply_step): Declare.
3146         * tree-vector-builder.c (tree_vector_builder::apply_step): New
3147         function.
3148         * gimple-fold.h (tree_vector_builder): Declare.
3149         (gimple_build_vector): Take a tree_vector_builder instead of a
3150         type and vector of elements.
3151         * gimple-fold.c (gimple_build_vector): Likewise.
3152         * tree-vect-loop.c (get_initial_def_for_reduction): Update call
3153         accordingly.
3154         (get_initial_defs_for_reduction): Likewise.
3155         (vectorizable_induction): Likewise.
3156
3157 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3158
3159         * tree-vector-builder.h
3160         (tree_vector_builder::new_binary_operation): Declare.
3161         * tree-vector-builder.c
3162         (tree_vector_builder::new_binary_operation): New function.
3163         * fold-const.c (fold_relational_const): Use it.
3164         (const_binop): Likewise.  Check that both input vectors have
3165         the same number of elements, thus excluding things like WIDEN_SUM.
3166         Check whether it is possible to operate directly on the encodings
3167         of stepped inputs.
3168
3169 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3170
3171         * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
3172         new_unary_operation, operating only on the encoded elements.
3173         (const_unop): Likewise.
3174         (exact_inverse): Likewise.
3175         (distributes_over_addition_p): New function.
3176         (const_binop): Use tree_vector_builder and new_unary_operation
3177         for combinations of VECTOR_CST and INTEGER_CST.  Operate only
3178         on the encoded elements unless the encoding is strided and the
3179         operation does not distribute over addition.
3180         (fold_convert_const):  Use tree_vector_builder and
3181         new_unary_operation.  Operate only on the encoded elements
3182         for truncating integer conversions, or for non-stepped encodings.
3183
3184 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3185
3186         * config/sparc/sparc.c: Include tree-vector-builder.h.
3187         (sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
3188         * expmed.c: Include tree-vector-builder.h.
3189         (make_tree): Use tree_vector_builder instead of build_vector.
3190         * fold-const.c: Include tree-vector-builder.h.
3191         (const_binop): Use tree_vector_builder instead of build_vector.
3192         (const_unop): Likewise.
3193         (native_interpret_vector): Likewise.
3194         (fold_vec_perm): Likewise.
3195         (fold_ternary_loc): Likewise.
3196         * gimple-fold.c: Include tree-vector-builder.h.
3197         (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
3198         of build_vector.
3199         * tree-ssa-forwprop.c: Include tree-vector-builder.h.
3200         (simplify_vector_constructor): Use tree_vector_builder instead
3201         of build_vector.
3202         * tree-vect-generic.c: Include tree-vector-builder.h.
3203         (add_rshift): Use tree_vector_builder instead of build_vector.
3204         (expand_vector_divmod): Likewise.
3205         (optimize_vector_constructor): Likewise.
3206         * tree-vect-loop.c: Include tree-vector-builder.h.
3207         (vect_create_epilog_for_reduction): Use tree_vector_builder instead
3208         of build_vector.  Explicitly use a stepped encoding for
3209         { 1, 2, 3, ... }.
3210         * tree-vect-slp.c: Include tree-vector-builder.h.
3211         (vect_get_constant_vectors): Use tree_vector_builder instead
3212         of build_vector.
3213         (vect_transform_slp_perm_load): Likewise.
3214         (vect_schedule_slp_instance): Likewise.
3215         * tree-vect-stmts.c: Include tree-vector-builder.h.
3216         (vectorizable_bswap): Use tree_vector_builder instead of build_vector.
3217         (vect_gen_perm_mask_any): Likewise.
3218         (vectorizable_call): Likewise.  Explicitly use a stepped encoding.
3219         * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
3220         of build_vector.
3221         (build_vector_from_val): Likewise.  Explicitly use a duplicate
3222         encoding.
3223
3224 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
3225
3226         * doc/generic.texi (VECTOR_CST): Describe new representation of
3227         vector constants.
3228         * vector-builder.h: New file.
3229         * tree-vector-builder.h: Likewise.
3230         * tree-vector-builder.c: Likewise.
3231         * Makefile.in (OBJS): Add tree-vector-builder.o.
3232         * tree.def (VECTOR_CST): Update comment to refer to generic.texi.
3233         * tree-core.h (tree_base): Add a vector_cst field to the u union.
3234         (tree_vector): Change the number of elements to
3235         vector_cst_encoded_nelts.
3236         * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
3237         (VECTOR_CST_ELTS): Delete.
3238         (VECTOR_CST_ELT): Redefine using vector_cst_elt.
3239         (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
3240         (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
3241         (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
3242         (VECTOR_CST_ENCODED_ELT): Likewise.
3243         (vector_cst_encoded_nelts): New function.
3244         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3245         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3246         (vector_cst_int_elt, vector_cst_elt): Declare.
3247         * tree.c: Include tree-vector-builder.h.
3248         (tree_code_size): Abort if passed VECTOR_CST.
3249         (tree_size): Update for new VECTOR_CST layout.
3250         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3251         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3252         (build_vector): Use tree_vector_builder.
3253         (vector_cst_int_elt, vector_cst_elt): New functions.
3254         (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
3255         encoded elements and then create the vector in the canonical form.
3256         (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
3257         (check_vector_cst_stepped, test_vector_cst_patterns): New functions.
3258         (tree_c_tests): Call test_vector_cst_patterns.
3259         * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
3260         VECTOR_CST fields.
3261         (hash_tree): Likewise.
3262         * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
3263         (streamer_write_tree_header): Likewise.
3264         * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
3265         (streamer_alloc_tree): Likewise.  Update call to make_vector.
3266         * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
3267
3268 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3269
3270         * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
3271         (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
3272         * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
3273
3274 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
3275             Richard Biener  <rguenther@suse.de>
3276
3277         PR tree-optimization/81303
3278         * Makefile.in (gimple-loop-interchange.o): New object file.
3279         * common.opt (floop-interchange): Reuse the option from graphite.
3280         * doc/invoke.texi (-floop-interchange): Ditto.  New document for
3281         -floop-interchange and mention it for -O3.
3282         * opts.c (default_options_table): Enable -floop-interchange at -O3.
3283         * gimple-loop-interchange.cc: New file.
3284         * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
3285         (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
3286         * passes.def (pass_linterchange): New pass.
3287         * timevar.def (TV_LINTERCHANGE): New time var.
3288         * tree-pass.h (make_pass_linterchange): New declaration.
3289         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
3290         interchange.  Record IV before/after increment in new parameters.
3291         * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
3292         * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
3293         path check into...
3294         (check_reduction_path): ...New function here.
3295         * tree-vectorizer.h (check_reduction_path): New declaration.
3296
3297 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
3298
3299         PR target/83252
3300         PR rtl-optimization/80818
3301         * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
3302         always early clobbered.
3303         * lra-lives.c (process_bb_lives): Check input hard regs for early
3304         clobbered non-operand hard reg.
3305
3306 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
3307
3308         PR middle-end/83164
3309         * tree-cfg.c (verify_gimple_assign_binary): Don't require
3310         types_compatible_p, just that TYPE_MODE is the same.
3311
3312 2017-12-07  Martin Sebor  <msebor@redhat.com>
3313
3314         PR c/81544
3315         * attribs.c (empty_attribute_table): Initialize new member of
3316         struct attribute_spec.
3317         (decl_attributes): Add argument.  Handle mutually exclusive
3318         combinations of attributes.
3319         (selftests::test_attribute_exclusions): New function.
3320         (selftests::attribute_c_tests): Ditto.
3321         * attribs.h (decl_attributes): Add default argument.
3322         * selftest.h (attribute_c_tests): Declare.
3323         * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
3324         * tree-core.h (attribute_spec::exclusions, exclude): New type and
3325         member.
3326         * doc/extend.texi (Common Function Attributes): Update const and pure.
3327         * config/alpha/alpha.c (vms_attribute_table): Initialize new member
3328         of struct attribute_spec.
3329         * config/arc/arc.c (arc_attribute_table): Same.
3330         * config/arm/arm.c (arm_attribute_table): Same.
3331         * config/avr/avr.c ( avr_attribute_table): Same.
3332         * config/bfin/bfin.c (bfin_attribute_table): Same.
3333         * config/cr16/cr16.c (cr16_attribute_table): Same.
3334         * config/epiphany/epiphany.c (epiphany_attribute_table): Same.
3335         * config/h8300/h8300.c (h8300_attribute_table): Same.
3336         * config/i386/i386.c (ix86_attribute_table): Same.
3337         * config/ia64/ia64.c (ia64_attribute_table): Same.
3338         * config/m32c/m32c.c (m32c_attribute_table): Same.
3339         * config/m32r/m32r.c (m32r_attribute_table): Same.
3340         * config/m68k/m68k.c (m68k_attribute_table): Same.
3341         * config/mcore/mcore.c (mcore_attribute_table): Same.
3342         * config/microblaze/microblaze.c (microblaze_attribute_table): Same.
3343         * config/mips/mips.c (mips_attribute_table): Same.
3344         * config/msp430/msp430.c (msp430_attribute_table): Same.
3345         * config/nds32/nds32.c (nds32_attribute_table): Same.
3346         * config/nvptx/nvptx.c (nvptx_attribute_table): Same.
3347         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
3348         * config/rl78/rl78.c (rl78__attribute_table): Same.
3349         * config/rs6000/rs6000.c (rs6000_attribute_table): Same.
3350         * onfig/rx/rx.c (rx_attribute_table): Same.
3351         * config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
3352         * config/sh/sh.c (sh_attribute_table): Same.
3353         * config/sparc/sparc.c (sparc_attribute_table): Same.
3354         * config/spu/spu.c (spu_attribute_table): Same.
3355         * config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
3356         * config/v850/v850.c (v850_attribute_table): Same.
3357         * config/visium/visium.c (visium_attribute_table): Same.
3358
3359 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
3360
3361         PR target/82641
3362         * config/arm/arm.c (INCLUDE_STRING): Define.
3363         (arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
3364         (arm_declare_function_name): Conservatively emit .arch, .arch_extensions
3365         and .fpu.
3366
3367 2017-12-07  Michael Matz  <matz@suse.de>
3368
3369         Add unroll and jam pass
3370
3371         * gimple-loop-jam.c: New file.
3372         * Makefile.in (OBJS): Add gimple-loop-jam.o.
3373         * common.opt (funroll-and-jam): New option.
3374         * opts.c (default_options_table): Add unroll-and-jam at -O3.
3375         * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
3376         (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
3377         * passes.def: Add pass_loop_jam.
3378         * timevar.def (TV_LOOP_JAM): Add.
3379         * tree-pass.h (make_pass_loop_jam): Declare.
3380         * cfgloop.c (flow_loop_tree_node_add): Add AT argument.
3381         * cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
3382         * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
3383         to flow_loop_tree_node_add.
3384         (duplicate_subloops, copy_loops_to): Append to sibling list.
3385         * cfgloopmanip.h: (duplicate_loop): Adjust declaration.
3386         * doc/invoke.texi (-funroll-and-jam): Document new option.
3387         (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
3388
3389 2017-12-07  Richard Biener  <rguenther@suse.de>
3390
3391         PR tree-optimization/83296
3392         PR tree-optimization/67769
3393         * tree-ssa-phiopt.c (conditional_replacement): Do not reset
3394         flow sensitive info in an unrelated BB.
3395         (value_replacement): Use reset_flow_sensitive_info.
3396         (minmax_replacement): Reset flow sensitive info on the def
3397         we move.  Do not reset flow sensitive info in the whole BB
3398         we move the stmt to.
3399         (abs_replacement): Likewise.
3400
3401 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3402
3403         PR target/43871
3404         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3405         rs6000_cpu to the given -mcpu=, or to the default processor.
3406
3407 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3408
3409         * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
3410         * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
3411         instead of rs6000_cpu_attr.
3412         (rs6000_adjust_cost): Ditto.
3413         (is_microcoded_insn): Ditto.
3414         (rs6000_adjust_priority): Ditto.
3415         (rs6000_issue_rate): Ditto.
3416         (rs6000_use_sched_lookahead): Ditto.
3417         (rs6000_use_sched_lookahead_guard): Ditto.
3418         (rs6000_sched_reorder): Ditto.
3419         (force_new_group): Ditto.
3420         * config/rs6000/rs6000.md (cpu attribute): Ditto.
3421         (group_ending_nop): Ditto.
3422
3423 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3424
3425         * config/rs6000/rs6000.opt (rs6000_tune): New variable.
3426         * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
3427         rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
3428         (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
3429         appropriate.
3430         (rs6000_reassociation_width): Ditto.
3431         (rs6000_emit_epilogue): Ditto.
3432         (rs6000_adjust_cost): Ditto.
3433         (is_microcoded_insn): Ditto.
3434         (is_cracked_insn): Ditto.
3435         (rs6000_adjust_priority): Ditto.
3436         (rs6000_sched_reorder): Ditto.
3437         (rs6000_sched_reorder2): Ditto.
3438         (insn_must_be_first_in_group): Ditto.
3439         (insn_must_be_last_in_group): Ditto.
3440         (rs6000_register_move_cost): Ditto.
3441         * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
3442         rs6000_cpu.
3443
3444 2017-12-07  Julia Koval  <julia.koval@intel.com>
3445
3446         * config.gcc: Add vaesintrin.h.
3447         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
3448         New type.
3449         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
3450         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
3451         New builtins.
3452         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
3453         * config/i386/immintrin.h: Include vaesintrin.h.
3454         * config/i386/sse.md (vaesdec_<mode>): New pattern.
3455         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
3456         _mm_aesdec_epi128): New intrinsics.
3457
3458 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
3459
3460         * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
3461         * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
3462         c-family/c-spellcheck.cc.
3463         (best_macro_match::best_macro_match): Likewise.
3464         * spellcheck-tree.h
3465         (struct edit_distance_traits<cpp_hashnode *>): Move to
3466         c-family/c-spellcheck.h.
3467         (class best_macro_match): Likewise.
3468
3469 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
3470
3471         PR tree-optimization/83293
3472         * gimple-ssa-strength-reduction.c (insert_initializers): Use
3473         GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
3474         might insert into empty bb.
3475
3476         PR sanitizer/81281
3477         * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
3478         simplify for plus with :c added, and pointer_plus without that.
3479         ((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
3480         with undefined overflow and the conversion is not widening,
3481         perform negation in utype and only convert to type afterwards.
3482         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
3483         simplify for plus with :c added, and pointer_plus without that.
3484         If type is integral with undefined overflow and the conversion is
3485         not widening, perform minus in utype and only convert to type
3486         afterwards.  Move the last pointer_diff_expr simplify into the
3487         two outermost ifs.
3488
3489 2017-12-06  Martin Sebor  <msebor@redhat.com>
3490
3491         PR tree-optimization/82646
3492         * builtins.c (maybe_emit_chk_warning): Use size as the bound for
3493         strncpy, not maxlen.
3494
3495 2017-12-06  Martin Sebor  <msebor@redhat.com>
3496
3497         * doc/invoke.texi (-Wstringop-truncation): Mention attribute
3498         nonstring.
3499
3500         PR tree-optimization/83075
3501         * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
3502         strncat/strncpy don't change length of source string.
3503
3504 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
3505
3506         Revert
3507         2017-11-29  Martin Aberg  <maberg@gaisler.com>
3508
3509         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
3510         to prevent b2bst errata sequence.
3511         (sqrtdf2_fix): Likewise.
3512
3513 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
3514
3515         PR tree-optimization/81945
3516         * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
3517         * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
3518         to dest_cfun has orig_loop_num set, either remap it to the new
3519         loop number if the loop got moved too, or clear it.
3520
3521 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
3522
3523         * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
3524         to reservation.
3525         (thunderx2t99_nothing): New insn reservation.
3526         (thunderx2t99_mrs): New insn reservation.
3527         (thunderx2t99_multiple): New insn reservation.
3528         (thunderx2t99_alu_basi): Add bfx to reservation.
3529         (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
3530
3531 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3532
3533         PR target/82248
3534         * config/arm/arm.md (probe_stack) : Use the 'o' constraint.
3535
3536 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
3537
3538         * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
3539         tree-ssa-pre.c::remove_dead_inserted_code.
3540         * tree-ssa-dce.h: New file.
3541         * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
3542         (remove_dead_inserted_code): Move and rename to function
3543         tree-ssa-dce.c::simple_dce_from_worklist.
3544         (pass_pre::execute): Update use.
3545
3546 2017-12-05  Richard Biener  <rguenther@suse.de>
3547
3548         PR tree-optimization/83277
3549         * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
3550         to code-gen liveout vars.
3551
3552 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
3553
3554         * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
3555         (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
3556         (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
3557         split condition.
3558
3559 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
3560
3561         * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
3562         function.
3563         (TARGET_ASAN_SHADOW_OFFSET): New macro definition.
3564         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
3565         ASAN is enabled.
3566
3567 2017-12-05  Richard Biener  <rguenther@suse.de>
3568
3569         * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
3570         * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
3571         (pass_data_cse_sincos): Use TV_TREE_SINCOS.
3572         (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
3573
3574 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3575
3576         * dbxout.c (dbxout_block): Grow buf to 30 bytes.
3577
3578 2017-12-05  Martin Liska  <mliska@suse.cz>
3579             Jakub Jelinek  <jakub@redhat.com>
3580
3581         * doc/invoke.texi: Document the options.
3582         * flag-types.h (enum sanitize_code): Add
3583         SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
3584         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
3585         of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
3586         * opts.c: Define new sanitizer options.
3587         * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
3588         (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
3589
3590 2017-12-05  Julia Koval  <julia.koval@intel.com>
3591
3592         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
3593         OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
3594         (ix86_handle_option): Handle -mavx512vnni.
3595         * config/i386/cpuid.h (bit_AVX512VNNI): New bit.
3596         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
3597         * config/i386/i386-c (__AVX512VNNI__): New.
3598         * config/i386/i386.c (ix86_target_string): Handle new option.
3599         (ix86_valid_target_attribute_inner_p): Handle new option.
3600         * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
3601         * config/i386/i386.opt (mavx512vnni): New option.
3602
3603 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3604
3605         PR target/81616
3606         * athlon.md: Disable for generic.
3607         * haswell.md: Enable for generic.
3608         * i386.c (ix86_sched_init_global): Add core hooks for generic.
3609         * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
3610         to 4.
3611         (ix86_adjust_cost): Move generic to haswell path.
3612
3613 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
3614
3615         * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
3616         instead of MEM_P in a couple more places.  Fix formatting issues.
3617
3618 2017-12-04  Jim Wilson  <jimw@sifive.com>
3619
3620         * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
3621         instead of GP_REG_LAST-1.
3622         (riscv_adjust_libcall_cfi_prologue): Likewise.
3623         (riscv_adjust_libcall_cri_epilogue): Likewise.
3624         * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
3625         comment.
3626
3627 2017-12-04  Luis Machado  <luis.machado@linaro.org>
3628
3629         * ipa-pure-const.c (check_decl): Add missing newline.
3630         (state_from_flags): Likewise.
3631
3632 2017-12-04  Jeff Law  <law@redhat.com>
3633
3634         PR tree-optimizatin/78496
3635         * gimple-ssa-evrp-analyze.h
3636         (evrp_range_analyzer::get_vr_values): Simplify.
3637         * gimple-ssa-evrp-analyze.c: Corresponding changes.
3638         * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
3639         and gimple-ssa-evrp-analyze.h.
3640         (dom_opt_dom_walker class): Add evrp_range_analyzer member.
3641         (simplify_stmt_for_jump_threading): Copy a blob of code from
3642         tree-vrp.c to use ranges to simplify statements.
3643         (dom_opt_dom_walker::before_dom_children): Call
3644         evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
3645         (dom_opt_dom_walker::after_dom_children): Similarly for
3646         evrp_range_analyzer::leave.
3647         (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
3648         conditionals.
3649
3650         * gimple-ssa-evrp-analyze.c
3651         (evrp_range_analyzer::extract_range_from_stmt):  Always use
3652         vr_values::update_value_range so preexisting range info is
3653         medged with new range info, even if the new range is VR_VARYING.
3654
3655 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3656
3657         * combine.c: Adjust comment.
3658         (use_crosses_set_p): Delete.
3659         (can_combine_p): Use modified_between_p instead of use_crosses_set_p.
3660         (try_combine): Ditto.
3661
3662 2017-12-04  Richard Biener  <rguenther@suse.de>
3663
3664         PR tree-optimization/83255
3665         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
3666         Re-add zero-iteration check.
3667
3668 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3669
3670         PR rtl-optimization/83245
3671         * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
3672         hard registers as earlyclobber, also if not in an asm.
3673
3674 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3675
3676         PR bootstrap/83265
3677         Revert
3678         2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3679
3680         PR target/43871
3681         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3682         rs6000_cpu based on cpu_index, not tune_index.
3683
3684 2017-12-04  Richard Biener  <rguenther@suse.de>
3685
3686         PR tree-optimization/83238
3687         * graphite-scop-detection.c (scop_detection::merge_sese): Make
3688         code match comment, rejecting invalid SESE regions.
3689
3690 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
3691
3692         * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
3693         require base operand is a REG_POINTER prior to reload on targets
3694         with non-equivalent space registers.
3695
3696 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3697
3698         * ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
3699         (update_specialized_profile): Fix updating of counts.
3700         (perhaps_add_new_callers): Likewise.
3701
3702 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3703
3704         PR target/81616
3705         * x86-tune.def: Remove obsolette FIXMEs.
3706         (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
3707         (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
3708         X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
3709         Enable for generic.
3710         (X86_TUNE_PAD_RETURNS): Disable for generic.
3711
3712 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
3713
3714         PR tree-optimization/83170
3715         PR tree-optimization/83241
3716         * gimple-ssa-store-merging.c
3717         (imm_store_chain_info::try_coalesce_bswap): Update vuse field from
3718         gimple_vuse (ins_stmt) in case it has changed.
3719         (imm_store_chain_info::output_merged_store): Likewise.
3720
3721         * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
3722         POINTER_DIFF_EXPR.
3723
3724         PR c++/81212
3725         * tree-cfg.c (pass_warn_function_return::execute): Handle
3726         __builtin_ubsan_handle_missing_return like __builtin_unreachable
3727         with BUILTINS_LOCATION.
3728
3729         PR target/78643
3730         PR target/80583
3731         * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
3732         is BLKmode for vector field with vector raw mode, use TYPE_MODE
3733         instead of DECL_MODE.
3734
3735         * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
3736         last argument to rtx pointer.
3737         * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
3738         with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
3739         or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
3740         depending on the chosen ISAs.
3741         * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
3742         *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
3743         *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
3744         callers.
3745         * config/i386/sse.md (mov<mode>_internal): Likewise.
3746         * config/i386/mmx.md (*mov<mode>_internal): Likewise.
3747
3748 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3749
3750         * doc/invoke.texi (-dp): Say that instruction cost is printed as well.
3751
3752 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3753
3754         * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
3755         parameters from prototype.
3756         * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
3757         parameters.  Don't print a comment.
3758         (emit_fusion_gpr_load): Adjust.
3759         (emit_fusion_load_store): Adjust.
3760         * config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
3761         * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
3762         comment on the second line.
3763
3764 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3765
3766         PR target/43871
3767         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3768         rs6000_cpu based on cpu_index, not tune_index.
3769
3770 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3771
3772         * final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
3773         which_alternative instead of which_alternative + 1.
3774         (output_asm_insn): Print an extra tab if the template is short.
3775
3776 2017-12-01  Jim Wilson  <jimw@sifive.com>
3777
3778         * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
3779         comment.
3780         * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
3781         * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
3782         reference.
3783         * doc/tm.texi: Regenerate.
3784
3785 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
3786
3787         PR target/81959
3788         * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
3789         whether we can allocate pseudos before trying to fix an address.
3790         * config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
3791         memory address is indexed or indirect.
3792         (floatuns_<mode>si2_hw2): Likewise.
3793
3794 2017-12-01  Jason Merrill  <jason@redhat.com>
3795
3796         * Makefile.in (TAGS): Add c-family/*.cc.
3797
3798 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
3799
3800         * config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
3801         (call_value_insn): Likewise.
3802         (sibcall_insn): Likewise.
3803         (sibcall_value_insn): Likewise.
3804         (movsi_aarch64): Likewise.
3805         (movdi_aarch64): Likewise.
3806         (add_losym_): Likewise.
3807         (ldr_got_small_): Likewise.
3808         (ldr_got_small_sidi): Likewise.
3809         (ldr_got_small_28k_): Likewise.
3810         (ldr_got_small_28k_sidi): Likewise.
3811         * config/aarch64/aarch64.c (aarch64_print_address_internal):
3812         Move output_addr_const to symbolic case. Add error check.
3813
3814 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3815
3816         * config/s390/predicates.md (plus16_Q_operand): New predicate.
3817         * config/s390/s390.md: Disable MVC merging peephole if it would
3818         disable operand forwarding.
3819         (new peephole2): Split MVCs if it would turn them into up to 2
3820         forwardable MVCs.
3821
3822 2017-12-01  Richard Biener  <rguenther@suse.de>
3823
3824         PR tree-optimization/83232
3825         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
3826         detection of same access. Instead of breaking the group here
3827         do not consider the duplicate.  Add comment explaining real fix.
3828
3829 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
3830
3831         * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
3832
3833 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
3834
3835         * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
3836
3837 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
3838
3839         * function.h (struct function): Remove cilk_frame_decl,
3840         is_cilk_function and calls_cilk_spawn fields.
3841         * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
3842         field.
3843         * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
3844         cilk_elemental field.
3845         * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
3846         * target.def: Adjust comment.
3847         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
3848         Don't test cilk_elemental.
3849
3850         PR tree-optimization/83233
3851         * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
3852         bswap_stat name for the struct.
3853
3854         PR c/79153
3855         * tree.h (SWITCH_BREAK_LABEL_P): Define.
3856         * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
3857         starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
3858         SWITCH_BREAK_LABEL_P set on the label.
3859         (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
3860         added for default case if it was missing and not all cases covered.
3861         Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
3862         switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
3863         set on the label.
3864         * tree-chrec.c (evolution_function_is_univariate_p): Add return true;
3865         to avoid -Wimplicit-fallthrough warning.
3866         * config/i386/i386.c (ix86_expand_special_args_builtin): Add
3867         FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
3868
3869         PR tree-optimization/83221
3870         * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
3871         down by 16.
3872         (init_reassoc): Formatting fix.
3873
3874         PR sanitizer/81275
3875         * tree-cfg.c (group_case_labels_stmt): Don't optimize away
3876         C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
3877         is diagnosed.
3878
3879         PR sanitizer/83219
3880         * tree-cfg.c: Include asan.h.
3881         (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
3882
3883 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3884
3885         * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
3886
3887 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3888
3889         * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
3890         vpcmpeqd instruction.
3891
3892 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3893
3894         * config/i386/i386.c (standard_sse_constant_opcode): Fix
3895         registers type for 128bit mode.
3896
3897 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
3898
3899         * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
3900         of ;;.
3901         * gengtype-state.c (read_state_pair): Likewise.
3902         * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
3903         * sel-sched-dump.c (dump_insn_rtx_1): Likewise.
3904         * ipa-cp.c (intersect_aggregates_with_edge): Likewise.
3905         * ifcvt.c (noce_try_store_flag_constants): Likewise.
3906         * tree-ssa-ccp.c (ccp_finalize): Likewise.
3907         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
3908         * builtins.c (fold_builtin_3): Likewise.
3909         * graphite-scop-detection.c
3910         (scop_detection::stmt_has_simple_data_refs_p): Likewise.
3911         * hsa-gen.c (hsa_function_representation::hsa_function_representation):
3912         Likewise.
3913
3914 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
3915
3916         PR sanitizer/81697
3917         * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
3918         parameter. Return true if ignore_decl_rtl_set_p is true and other
3919         conditions are satisfied.
3920         * asan.h (asan_protect_global): Add new parameter.
3921         * varasm.c (categorize_decl_for_section): Pass true as second parameter
3922         to asan_protect_global calls.
3923
3924 2017-11-30  Jim Wilson  <jimw@sifive.com>
3925
3926         * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
3927         -mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
3928         -mstrict-align, add info on default value.  Delete redundant lines for
3929         -mabi.  Add missing -mexplicit-relocs docs.
3930
3931 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3932
3933         * config/arc/arc.md (trap): New pattern.
3934
3935 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3936
3937         * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
3938         instruction to end into a delay slot.
3939         * config/arc/arc.md (cond_delay_insn): Check if the instruction
3940         can be placed into a delay slot against reg_note.
3941
3942 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3943
3944         * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
3945         labels number of usages.
3946
3947 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3948
3949         * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
3950         function.
3951         (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
3952
3953 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
3954
3955         PR target/83210
3956         * internal-fn.c (expand_mul_overflow): Optimize unsigned
3957         multiplication by power of 2 constant into two shifts + comparison.
3958
3959 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
3960
3961         PR target/81616
3962         * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
3963
3964 2017-11-30  Richard Biener  <rguenther@suse.de>
3965
3966         PR tree-optimization/83202
3967         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
3968         allow_peel argument and guard peeling.
3969         (canonicalize_loop_induction_variables): Likewise.
3970         (canonicalize_induction_variables): Pass false.
3971         (tree_unroll_loops_completely_1): Pass unroll_outer to disallow
3972         peeling from cunrolli.
3973
3974 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3975
3976         * combine.c (try_combine): Print a message to dump file whenever
3977         I0, I1, or I2 cannot be combined into I3.
3978
3979 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3980
3981         PR rtl-optimization/83156
3982         PR rtl-optimization/82621
3983         * combine.c (try_combine): Don't split an I2 if one of the dests is
3984         set again before I3.  Allow unused dests.
3985
3986 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3987
3988         * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
3989
3990 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
3991
3992         PR rtl-optimization/80818
3993         * lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
3994         recursively.  Use insn code for clobber.
3995         (lra_set_insn_recog_data): Pass the new arg to
3996         collect_non_operand_hard_regs.
3997         (add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
3998         code for clobber.
3999         (lra_update_insn_regno_info): Pass insn to
4000         add_regs_to_insn_regno_info.
4001
4002 2017-11-29  Jim Wilson  <jimw@sifive.com>
4003             Andrew Waterman  <andrew@sifive.com>
4004
4005         * config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
4006         (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
4007         SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
4008         use SINGLE_SHIFT_COST.
4009         * config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
4010         (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
4011
4012 2017-11-29  Julia Koval  <julia.koval@intel.com>
4013
4014         * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
4015         _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
4016         _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
4017         _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
4018         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
4019         _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
4020         _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
4021         _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
4022         _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
4023         _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
4024         _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
4025         * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
4026         __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
4027         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
4028         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
4029         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
4030         __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
4031         __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
4032         __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
4033         __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
4034         __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
4035         __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
4036         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
4037         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
4038         __builtin_ia32_vpshldv_v2di_mask,
4039         __builtin_ia32_vpshldv_v2di_maskz): New builtins.
4040         * config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
4041         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
4042
4043 2017-11-29  Julia Koval  <julia.koval@intel.com>
4044
4045         * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
4046         _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
4047         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
4048         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
4049         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
4050         _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
4051         _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
4052         _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
4053         _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
4054         _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
4055         _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
4056         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
4057         V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
4058         V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
4059         V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
4060         V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
4061         V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
4062         V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
4063         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4064         * config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
4065         vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
4066
4067 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4068
4069         * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
4070         movsi_pic_gotdata_op instruction as a load for the UT699 errata
4071         workaround.
4072
4073 2017-11-29  Martin Aberg  <maberg@gaisler.com>
4074
4075         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4076         to prevent b2bst errata sequence.
4077         (sqrtdf2_fix): Likewise.
4078
4079 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4080
4081         * config/sparc/sparc.c (fpop_reg_depend_p): New function.
4082         (div_sqrt_insn_p): New function.
4083         (sparc_do_work_around_errata): Insert NOP instructions to
4084         prevent sequences that could trigger the TN-0013 errata for
4085         certain LEON3 processors.
4086         (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
4087         (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
4088         * config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
4089         (in_branch_delay): Prevent div and sqrt in delay slot if
4090         fix_lost_divsqrt.
4091         * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
4092
4093 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4094
4095         * config/sparc/sparc.c (atomic_insn_p): New function.
4096         (sparc_do_work_around_errata): Insert NOP instructions to
4097         prevent sequences that could trigger the TN-0010 errata for
4098         UT700.
4099         * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
4100         instruction referable in atomic_insns_p.
4101
4102 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4103
4104         * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
4105         (atomic_compare_and_swap_leon3_1): Likewise.
4106         (ldstub): Likewise.
4107
4108 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4109
4110         * config/sparc/sparc.c (fpop_insn_p): New function.
4111         (sparc_do_work_around_errata): Insert NOP instructions to
4112         prevent sequences that could trigger the TN-0012 errata for
4113         GR712RC.
4114         (pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
4115         * config/sparc/sparc.md (fix_gr712rc): New attribute.
4116         (in_branch_annul_delay): Prevent floating-point instructions
4117         in delay slot of annulled integer branch.
4118
4119 2017-11-29  Richard Biener  <rguenther@suse.de>
4120
4121         PR tree-optimization/83202
4122         * tree-vect-slp.c (scalar_stmts_set_t): New typedef.
4123         (bst_fail): Use it.
4124         (vect_analyze_slp_cost_1): Add visited set, do not account SLP
4125         nodes vectorized to the same stmts multiple times.
4126         (vect_analyze_slp_cost): Allocate a visited set and pass it down.
4127         (vect_analyze_slp_instance): Adjust.
4128         (scalar_stmts_to_slp_tree_map_t): New typedef.
4129         (vect_schedule_slp_instance): Add a map recording the SLP node
4130         representing the vectorized stmts for a set of scalar stmts.
4131         Avoid code-generating redundancies.
4132         (vect_schedule_slp): Allocate map and pass it down.
4133
4134 2017-11-29  Nathan Sidwell  <nathan@acm.org>
4135
4136         PR c++/83187
4137         * tree.c (build_complex_type): Fix canonicalization.  Only fill in
4138         type if it is new.
4139
4140 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
4141
4142         * config/aarch64/aarch64.c (aarch64_print_operand): Add new
4143         cases for printing LDP/STP memory addresses.
4144         (aarch64_print_address_internal): Renamed from
4145         aarch64_print_operand_address, added parameter, add Pmode check.
4146         (aarch64_print_ldpstp_address): New function for LDP/STP addresses.
4147         (aarch64_print_operand_address): Indirect to
4148         aarch64_print_address_internal.
4149         * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
4150         'y' operand output specifier.
4151
4152 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
4153
4154         PR middle-end/83185
4155         * tree.c (build_simple_mem_ref_loc): Handle
4156         get_addr_base_and_unit_offset returning a MEM_REF.
4157
4158         PR middle-end/80929
4159         * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
4160
4161         PR target/80819
4162         * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
4163         alternative.
4164
4165 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
4166
4167         * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
4168         m_x_offset.
4169         (layout::move_to_column): Likewise.
4170
4171 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4172
4173         PR sanitizer/81275
4174         * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
4175         is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
4176
4177 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4178             Martin Jambor  <mjambor@suse.cz>
4179
4180         PR ipa/82808
4181         * tree.h (expr_type_first_operand_type_p): Declare
4182         * tree.c (expr_type_first_operand_type_p): New function.
4183         * ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
4184         (ipa_value_from_jfunc): Adjust declaration.
4185         * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
4186         Use it as result type for arithmetics, unless it is NULL in which case
4187         be more conservative.
4188         (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
4189         ipa_get_jf_pass_through_result.
4190         (propagate_vals_across_pass_through): Likewise.
4191         (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
4192         is to propagate_vals_across_pass_through.
4193         (propagate_constants_across_call): Pass PARM_TYPE to
4194         propagate_scalar_across_jump_function.
4195         (find_more_scalar_values_for_callers_subset): Pass parameter type to
4196         ipa_value_from_jfunc.
4197         (cgraph_edge_brings_all_scalars_for_node): Likewise.
4198         * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
4199         to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
4200         * ipa-prop.c (try_make_edge_direct_simple_call): New parameter
4201         target_type, pass it to ipa_value_from_jfunc.
4202         (update_indirect_edges_after_inlining): Pass parameter type to
4203         try_make_edge_direct_simple_call.
4204
4205 2017-11-28  Jeff Law  <law@redhat.com>
4206
4207         * gimple-ssa-evrp-analyze.c
4208         (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
4209         refine ranges if scev_initialized_p returns true.
4210         * vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
4211
4212 2017-11-28  Julia Koval  <julia.koval@intel.com>
4213
4214         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
4215         _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
4216         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
4217         _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
4218         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
4219         _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
4220         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
4221         _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
4222         _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
4223         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
4224         _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
4225         * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
4226         __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
4227         __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
4228         __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
4229         __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
4230         __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
4231         __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
4232         __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
4233         __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
4234         __builtin_ia32_vpshrd_v2di_mask): New builtins.
4235         * config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
4236
4237 2017-11-28  Julia Koval  <julia.koval@intel.com>
4238
4239         * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
4240         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
4241         _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
4242         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
4243         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
4244         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
4245         _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
4246         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
4247         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
4248         _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
4249         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
4250         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
4251         V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
4252         V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
4253         V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
4254         V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
4255         V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
4256         V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
4257         V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
4258         V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
4259         * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
4260         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
4261         __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
4262         __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
4263         __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
4264         __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
4265         __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
4266         __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
4267         __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
4268         __builtin_ia32_vpshld_v2di_mask): New builtins.
4269         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4270         * config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
4271
4272 2017-11-28  Richard Biener  <rguenther@suse.de>
4273
4274         PR tree-optimization/80776
4275         * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
4276         Declare.
4277         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
4278         New function.
4279         (evrp_range_analyzer::record_ranges_from_incoming_edges):
4280         If the incoming edge is an effective fallthru because the other
4281         edge only reaches a __builtin_unreachable () then record ranges
4282         derived from the controlling condition in SSA info.
4283         (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
4284         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4285
4286 2017-11-28  Olivier Hainque  <hainque@adacore.com>
4287
4288         * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
4289         on mingw build hosts.
4290
4291 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4292
4293         PR debug/81307
4294         * dbxout.c (dbx_block_with_cold_children): Fix function comment.
4295
4296 2017-11-28  Richard Biener  <rguenther@suse.de>
4297
4298         PR middle-end/83141
4299         * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
4300         copies generated from memcpy use a character array as reference
4301         type.
4302
4303 2017-11-28  Julia Koval  <julia.koval@intel.com>
4304             Sebastian Peryt  <sebastian.peryt@intel.com>
4305
4306         * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
4307         c-family/c-cilkplus.o, c-family/array-notation-common.o,
4308         cilk-common.o, cilk.h, cilk-common.c): Remove.
4309         * builtin-types.def
4310         (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
4311         * builtins.c (is_builtin_name): Remove cilkplus condition.
4312         (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
4313         * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
4314         cilk-builtins.def, cilkplus.def): Remove.
4315         * cif-code.def (CILK_SPAWN): Remove.
4316         * cilk-builtins.def: Delete.
4317         * cilk-common.c: Ditto.
4318         * cilk.h: Ditto.
4319         * cilkplus.def: Ditto.
4320         * config/darwin.h (fcilkplus): Delete.
4321         * cppbuiltin.c: Ditto.
4322         * doc/extend.texi: Remove cilkplus doc.
4323         * doc/generic.texi: Ditto.
4324         * doc/invoke.texi: Ditto.
4325         * doc/passes.texi: Ditto.
4326         * gcc.c (fcilkplus): Remove.
4327         * gengtype.c (cilk.h): Remove.
4328         * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
4329         support.
4330         * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
4331         Remove.
4332         * gimplify.c (gimplify_return_expr, maybe_fold_stmt,
4333         gimplify_call_expr,
4334         is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
4335         gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
4336         cilkplus conditions.
4337         * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
4338         inline_read_section): Ditto.
4339         * ipa-inline-analysis.c (cilk.h): Remove.
4340         * ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
4341         * lto-wrapper.c (merge_and_complain, append_compiler_options,
4342         append_linker_options): Remove condition for fcilkplus.
4343         * lto/lto-lang.c (cilk.h): Remove.
4344         (lto_init): Remove condition for fcilkplus.
4345         * omp-expand.c (expand_cilk_for_call): Delete.
4346         (expand_omp_taskreg, expand_omp_for_static_chunk,
4347         expand_omp_for): Remove cilkplus
4348         conditions.
4349         (expand_cilk_for): Delete.
4350         * omp-general.c (omp_extract_for_data): Remove cilkplus support.
4351         * omp-low.c (scan_sharing_clauses, create_omp_child_function,
4352         execute_lower_omp, diagnose_sb_0): Ditto.
4353         * omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
4354         * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4355         * tree-nested.c: Ditto.
4356         * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
4357         (dump_generic_node): Ditto.
4358         * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4359         * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
4360         Delete.
4361         * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
4362
4363 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4364
4365         * config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
4366         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
4367         for vector mode and !TARGET_SIMD.
4368
4369 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4370
4371         * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
4372         Adjust comment.
4373         * tree.h (SWITCH_LABELS): Remove.
4374         * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
4375         assert SWITCH_BODY is non-NULL.
4376         * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
4377         handling.
4378         * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
4379
4380         PR tree-optimization/80788
4381         * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
4382         has TREE_OVERFLOW set, call drop_tree_overflow.
4383
4384 2017-11-28  Richard Biener  <rguenther@suse.de>
4385
4386         PR tree-optimization/83158
4387         * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
4388
4389 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
4390
4391         PR 81288/target
4392         * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
4393         TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
4394
4395 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
4396
4397         * config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
4398         LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
4399
4400 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
4401
4402         PR middle_end/82333
4403         * varasm.c (compare_constant): Take the mode of the constants into
4404         account when comparing floating point constants.
4405
4406 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
4407
4408         * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
4409         from explicit instantiation of debug_helper.
4410         * vec.h (DEFINE_DEBUG_VEC): Ditto.
4411
4412 2017-11-27  Richard Biener  <rguenther@suse.de>
4413
4414         * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
4415         refactor a bit.
4416
4417 2017-11-27  Richard Biener  <rguenther@suse.de>
4418
4419         * tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
4420         (type_hash_canon): Also clear int_cst_hash_table entry for
4421         TYPE_MIN/MAX_VALUE.
4422         (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
4423
4424 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
4425
4426         * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4427         * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4428         * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4429
4430 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4431
4432         * hash-map.h (gt_cleare_cache): Avoid UB.
4433
4434 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
4435
4436         * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
4437         * loop-unroll.c (decide_unroll_constant_iterations): Implement it.
4438         (decide_unroll_runtime_iterations): Likewise.
4439         (decide_unroll_stupid): Likewise.
4440
4441 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4442
4443         PR target/83109
4444         * config/i386/i386.md: Add a loop with incssp.
4445
4446 2017-11-27  Martin Jambor  <mjambor@suse.cz>
4447
4448         PR tree-optimization/81248
4449         * tree-sra.c (splice_param_accesses): Remove size check.
4450         (decide_one_param_reduction): Fix size check.
4451         * gimple-pretty-print.c (dump_profile): Silence warning.
4452         * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
4453
4454 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
4455
4456         PR debug/81307
4457         * dbxout.c (lastlineno): New variable.
4458         (dbx_debug_hooks): Use dbxout_switch_text_section as
4459         switch_text_section debug hook.
4460         (dbxout_function_end): Switch to current_function_section
4461         rather than function_section.  If crtl->has_bb_partition,
4462         output just one N_FUN, depending on in_cold_section_p.
4463         (dbxout_source_line): Remember last lineno in lastlineno.
4464         (dbxout_switch_text_section): New function.
4465         (dbxout_function_decl): Adjust dbxout_block caller.
4466         (dbx_block_with_cold_children): New function.
4467         (dbxout_block): Return true if any LBRAC/RBRAC have been
4468         emitted.  Use dbx_block_with_cold_children at depth == 0
4469         in second partition.  Add PARENT_BLOCKNUM argument, pass
4470         it optionally adjusted to children.  Output LBRAC/RBRAC
4471         around recursive call only if the block is in the current
4472         partition, if not and anything was output, emit empty
4473         range LBRAC/RBRAC.
4474         * final.c (final_scan_insn): Compute cold_function_name
4475         before calling switch_text_section debug hook.  Call
4476         that hook even if dwarf2out_do_frame if not emitting
4477         dwarf debug info.
4478
4479         PR target/83100
4480         * varasm.c (bss_initializer_p): Return true for DECL_COMMON
4481         TREE_READONLY decls.
4482
4483 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4484
4485         PR rtl-optimization/82488
4486         * expr.c (fixup_args_size_notes): Avoid signed integer overflow.
4487
4488 2017-11-26  Julia Koval  <julia.koval@intel.com>
4489
4490         * config/i386/i386.c (processor_target_table): Add skylake_cost for
4491         skylake-avx512.
4492         * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
4493         skylake_cost): New.
4494
4495 2017-11-26  Julia Koval  <julia.koval@intel.com>
4496
4497         * config/i386/driver-i386.c (host_detect_local_cpu):
4498         Detect skylake-avx512.
4499
4500 2017-11-26  Julia Koval  <julia.koval@intel.com>
4501
4502         * config.gcc: Add -march=cannonlake.
4503         * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
4504         * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
4505         * config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
4506         (PTA_CANNONLAKE): New.
4507         (processor_target_table): Add cannonlake.
4508         (ix86_option_override_internal): Ditto.
4509         (fold_builtin_cpu): Ditto.
4510         (get_builtin_code_for_version): Handle cannonlake.
4511         (M_INTEL_COREI7_CANNONLAKE): New.
4512         * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
4513         * doc/invoke.texi: Add -march=cannonlake.
4514
4515 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
4516
4517         * plugin.c (add_new_plugin): Use platform-specific library extensions.
4518         (try_init_one_plugin): Alternative implementation for MinGW.
4519         * Makefile.in (plugin_implib): New.
4520         (gengtype-lex.c): Fix broken AIX workaround.
4521         * configure: Regenerate.
4522         * doc/plugins.texi: Document support for MinGW.
4523
4524 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
4525
4526         PR rtl-optimization/81553
4527         * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
4528         to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
4529         is a shift where C1 has different mode than the whole shift, use C1's
4530         mode for MULT rather than the shift's mode.
4531
4532         PR target/82848
4533         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
4534         builtins not enabled in the currently selected ISA.
4535
4536 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
4537
4538         PR tree-optimization/71026
4539         * tree-ssa-math-opts (is_division_by_square, is_square_of): New.
4540         (insert_reciprocals): Change to insert reciprocals before a division
4541         by a square and to insert the square of a reciprocal.
4542         (execute_cse_reciprocals_1): Change to consider division by a square.
4543         (register_division_in): Add importance parameter.
4544
4545 2017-11-24  Richard Biener  <rguenther@suse.de>
4546
4547         PR tree-optimization/82402
4548         * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
4549         set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
4550
4551 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
4552
4553         * match.pd (0-ptr): New transformation.
4554
4555 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
4556
4557         PR bootstrap/83015
4558         * ipa-inline.c (inline_small_functions): Set current badnes correctly
4559         when skipping checking.
4560
4561 2017-11-24  Richard Biener  <rguenther@suse.de>
4562
4563         PR tree-optimization/83128
4564         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
4565         (vn_reference_lookup_3): Likewise.
4566
4567 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
4568
4569         PR sanitizer/83014
4570         * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
4571         instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
4572         tree_to_uhwi twice.
4573
4574         * tree-object-size.c (pass_through_call): Use gimple_call_return_flags
4575         ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
4576         check for the latter with gimple_call_builtin_p.  Do not handle
4577         BUILT_IN_STPNCPY_CHK which is not a pass through call.
4578
4579 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
4580
4581         * config/arm/arm_neon.h: Fix pragma GCC push_options before
4582         vdot_u32.
4583
4584 2017-11-23  Julia Koval  <julia.koval@intel.com>
4585
4586         * config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
4587         _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
4588         _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
4589         _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
4590         _mm512_maskz_expandloadu_epi16): New intrinsics.
4591         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
4592         _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
4593         _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
4594         _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
4595         _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
4596         _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
4597         _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
4598         _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
4599         _mm256_maskz_expandloadu_epi8): New intrinsics.
4600         * config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
4601         V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
4602         V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
4603         V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
4604         * config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
4605         * config/i386/sse.md (VI248_VLBW): New iterator.
4606         (expand<mode>_mask, expand<mode>_maskz): New patterns.
4607
4608 2017-11-23  Julia Koval  <julia.koval@intel.com>
4609
4610         * config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
4611         * config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
4612         _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
4613         _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
4614         _mm512_mask_compressstoreu_epi16): New.
4615         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
4616         _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
4617         _mm_mask_compress_epi16, _mm_maskz_compress_epi16,
4618         _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
4619         _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
4620         _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
4621         _mm256_mask_compressstoreu_epi8): New.
4622         * config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
4623         VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
4624         VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
4625         VOID_FTYPE_PV8HI_V8HI_UQI): New types.
4626         * config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
4627         __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
4628         __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
4629         __builtin_ia32_compresshi128_mask,
4630         __builtin_ia32_compressstoreuqi512_mask,
4631         __builtin_ia32_compressstoreuhi512_mask,
4632         __builtin_ia32_compressstoreuqi256_mask,
4633         __builtin_ia32_compressstoreuqi128_mask,
4634         __builtin_ia32_compressstoreuhi256_mask,
4635         __builtin_ia32_compressstoreuhi128_mask): New builtins.
4636         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
4637         array for flags2.
4638         (ix86_expand_special_args_builtin): Handle new types.
4639         (s4fma_expand): Handle new builtin array.
4640         * config/i386/immintrin.h: Include new headers.
4641         * config/i386/sse.md (VI12_AVX512VLBW): New iterator.
4642         (compress<mode>_mask, compressstore<mode>_mask): New patterns.
4643
4644 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4645
4646         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
4647         fixes.  Declare temp and g variables at the top in order to avoid
4648         {} in most of the cases.
4649
4650 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
4651
4652         * match.pd (ptr-0): New transformation.
4653
4654 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4655
4656         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
4657         (struct addr_mode_cost_table): New.
4658         (struct tune_params): Add field addr_mode_costs.
4659         * config/arm/arm.c (generic_addr_mode_costs): New.
4660         (arm_slowmul_tune): Initialise addr_mode_costs field.
4661         (arm_fastmul_tune): Likewise.
4662         (arm_strongarm_tune): Likewise.
4663         (arm_xscale_tune): Likewise.
4664         (arm_9e_tune): Likewise.
4665         (arm_marvell_pj4_tune): Likewise.
4666         (arm_v6t2_tune): Likewise.
4667         (arm_cortex_tune): Likewise.
4668         (arm_cortex_a8_tune): Likewise.
4669         (arm_cortex_a7_tune): Likewise.
4670         (arm_cortex_a15_tune): Likewise.
4671         (arm_cortex_a35_tune): Likewise.
4672         (arm_cortex_a53_tune): Likewise.
4673         (arm_cortex_a57_tune): Likewise.
4674         (arm_exynosm1_tune): Likewise.
4675         (arm_xgene1_tune): Likewise.
4676         (arm_cortex_a5_tune): Likewise.
4677         (arm_cortex_a9_tune): Likewise.
4678         (arm_cortex_a12_tune): Likewise.
4679         (arm_cortex_a73_tune): Likewise.
4680         (arm_v7m_tune): Likewise.
4681         (arm_cortex_m7_tune): Likewise.
4682         (arm_v6m_tune): Likewise.
4683         (arm_fa726te_tune): Likewise.
4684         (arm_mem_costs): Use table lookup to calculate cost of addressing mode.
4685
4686 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4687
4688         * config/arm/arm.c (arm_mem_costs): New function.
4689         (arm_rtx_costs_internal): Use arm_mem_costs.
4690
4691 2017-11-23  Mark Wielaard  <mark@klomp.org>
4692
4693         * dwarf2out.c (init_sections_and_labels): Use generation to create
4694         unique ranges_section_label and ranges_base_label. Return generation.
4695         (output_rnglists): Add generation argument. Use generation to create
4696         unique ranges labels.
4697         (dwarf2out_finish): Get generation from init_sections_and_labels
4698         and pass generation to output_rnglists.
4699
4700 2017-11-23  Mike Stump  <mikestump@comcast.net>
4701             Eric Botcazou  <ebotcazou@adacore.com>
4702
4703         * doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
4704         * cfgloop.h (struct loop): Add unroll field.
4705         * function.h (struct function): Add has_unroll bitfield.
4706         * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
4707         (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
4708         * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
4709         (pass_rtl_unroll_loops::gate): Likewise.
4710         * loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
4711         for which loop->unroll==1.
4712         (decide_unroll_constant_iterations): Use note for consistency and
4713         take loop->unroll into account.  Return early if loop->unroll is set.
4714         Fix thinko in existing test.
4715         (decide_unroll_runtime_iterations): Use note for consistency and
4716         take loop->unroll into account.
4717         (decide_unroll_stupid): Likewise.
4718         * lto-streamer-in.c (input_cfg): Read loop->unroll.
4719         * lto-streamer-out.c (output_cfg): Write loop->unroll.
4720         * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
4721         New case.
4722         (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
4723         (print_loop): Print loop->unroll if set.
4724         * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
4725         * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
4726         * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
4727         New case.
4728         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
4729         loop->unroll is set and smaller than the trip count.  Otherwise bypass
4730         entirely the heuristics if loop->unroll is set.  Remove dead note.
4731         Fix off-by-one bug in other note.
4732         (try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
4733         (tree_unroll_loops_completely_1): Force unrolling if loop->unroll
4734         is greater than 1.
4735         (tree_unroll_loops_completely): Make static.
4736         (pass_complete_unroll::execute): Use correct type for variable.
4737         (pass_complete_unrolli::execute): Fix formatting.
4738         * tree.def (ANNOTATE_EXPR): Add 3rd operand.
4739
4740 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4741
4742         * config/i386/i386.h (TARGET_PREFER_AVX256): Also
4743         enable when TARGET_PREFER_AVX128 is set.
4744
4745 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4746
4747         * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
4748         frequency.
4749         * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
4750         (cgraph_edge::maybe_hot_p): Use sreal frequencies.
4751
4752 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4753
4754         * ipa-fnsummary.c (record_modified_bb_info): Use sreal
4755         frequencies. Fix estimation of aggregate parameters.
4756
4757 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4758
4759         * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
4760         when inlining.
4761
4762 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4763
4764         * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
4765
4766 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4767
4768         * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
4769         macro.
4770
4771 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
4772
4773         PR target/83111
4774         * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
4775         sibcall_value_pcrel_fdpic): Use local variable instead of
4776         operands[3].
4777         (calli_tbr_rel): Add missing operand 2.
4778         (call_valuei_tbr_rel): Add missing operand 3.
4779
4780 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4781
4782         PR middle-end/82253
4783         * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
4784         bitpos/bitsize covering the whole destination, use store_expr only if
4785         the complex mode is the same.  Otherwise, use expand_normal and if
4786         it returns CONCAT, subreg each part separately instead of trying to
4787         subreg the whole result.
4788
4789 2017-11-23  Richard Biener  <rguenther@suse.de>
4790
4791         PR tree-optimization/23094
4792         * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
4793         come here from walking over backedges in the first iteration.
4794         (vn_reference_lookup_3): Skip clobbers that store the same value.
4795
4796 2017-11-23  Richard Biener  <rguenther@suse.de>
4797
4798         PR tree-optimization/81403
4799         * tree-ssa-pre.c (get_representative_for): Add parameter specifying
4800         a block we need a leader relative to.
4801         (phi_translate_1): For nary processing require a leader from
4802         get_representative_for given we run expression simplification
4803         using match-and-simplify.  Remove previous fix.
4804
4805 2017-11-22  Jeff Law  <law@redhat.com>
4806
4807         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
4808         Use new method allocate_value_range rather than accessing the
4809         vrp_value_range_pool data member directly.
4810         * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
4811         to use extract_range_from_stmt method to avoid need for
4812         extract_range_from_assignment method.
4813         (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
4814         method rather than setting values_propgated data member directly.
4815         * vr-values.h (class vr_values): Privatize vrp_value_range_pool,
4816         and values propagated data members and extract_range_from_assignment
4817         method.  Reorder private data members to conform to standards.
4818         Add new methods set_lattice_propagation_complete and
4819         allocate_value_range.
4820
4821 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
4822
4823         PR rtl-optimization/83030
4824         * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
4825         for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
4826         (Insns): Delete entry for REG_CROSSING_JUMP in register notes.
4827         * bb-reorder.c (update_crossing_jump_flags): Do not test whether the
4828         CROSSING_JUMP_P flag is already set before setting it.
4829         * cfgrtl.c (fixup_partition_crossing): Likewise.
4830         * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
4831         insn as useless.
4832
4833 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
4834
4835         * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
4836         Handle the case where both arguments are using gen_const_vec_series.
4837
4838 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
4839
4840         PR c++/62170
4841         * pretty-print.c (pp_format): Move quoting implementation to
4842         pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
4843         to pass address of "quote" local.
4844         (pp_begin_quote): New function.
4845         (pp_end_quote): New function.
4846         * pretty-print.h (printer_fn): Convert penultimate param from bool
4847         to bool *.
4848         (pp_begin_quote): New decl.
4849         (pp_end_quote): New decl.
4850         * tree-diagnostic.c (default_tree_printer): Convert penultimate
4851         param from bool to bool *.
4852         * tree-diagnostic.h (default_tree_printer): Likewise.
4853
4854 2017-11-22  Jeff Law  <law@redhat.com>
4855
4856         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
4857         Initialize vr_values.
4858         (evrp_range_analyzer::try_find_new_range): Call methods attached to
4859         vr_values via vr_values class instance rather than delegators.
4860         (evrp_range_analyzer::record_ranges_from_phis): Likewise.
4861         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4862         (evrp_range_analyzer::push_value_range): Likewise.
4863         (evrp_range_analyzer::pop_value_range): Likewise.
4864         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
4865         most delegators.  Those remaining are exposed as public interfaces.
4866         Make vr_values a pointer and private.
4867         (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
4868         vr_values.
4869         (evrp_range_analyzer::get_vr_value): New method.
4870         * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
4871         (evrp_folder::evrp_folder): New ctor to initialize vr_values.
4872         (class evrp_dom_walker): Attach evrp_folder class, initialize
4873         it in the ctor.  Remove temporary delegators.
4874         (evrp_dom_walker::before_dom_children): Call methods in attached
4875         evrp_range_analyzer class via class instance pointer.  Use
4876         free value_range_constant_singleton to remove need for
4877         op_with_constant_singleton_value delegator method.  Do not
4878         create a vrp_prop class instance for every call!  Narrow
4879         scope of a couple variables.
4880         (evrp_dom_walker::cleanup): Call methods in attached
4881         evrp_range_analyzer class via class instance pointer.
4882         * vr-values.h (class vr_values): Privatize many methods and
4883         data members.
4884
4885 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
4886
4887         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
4888         * cfgexpand.c (expand_debug_expr): Remove handling for them.
4889         * expr.c (expand_expr_real_2): Likewise.
4890         * fold-const.c (const_unop): Likewise.
4891         * optabs-tree.c (optab_for_tree_code): Likewise.
4892         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4893         * tree-inline.c (estimate_operator_cost): Likewise.
4894         * tree-pretty-print.c (dump_generic_node): Likewise.
4895         (op_code_prio): Likewise.
4896         (op_symbol_code): Likewise.
4897         * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
4898         (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
4899         * internal-fn.c (direct_internal_fn_optab): New function.
4900         (direct_internal_fn_array, direct_internal_fn_supported_p
4901         (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
4902         * fold-const-call.c (fold_const_reduction): New function.
4903         (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
4904         CFN_REDUC_MIN.
4905         * tree-vect-loop.c: Include internal-fn.h.
4906         (reduction_code_for_scalar_code): Rename to...
4907         (reduction_fn_for_scalar_code): ...this and return an internal
4908         function.
4909         (vect_model_reduction_cost): Take an internal_fn rather than
4910         a tree_code.
4911         (vect_create_epilog_for_reduction): Likewise.  Build calls rather
4912         than assignments.
4913         (vectorizable_reduction): Use internal functions rather than tree
4914         codes for the reduction operation.  Update calls to the functions
4915         above.
4916         * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
4917         Use calls to internal functions rather than REDUC tree codes.
4918         * config/aarch64/aarch64-simd.md: Update comment accordingly.
4919
4920 2017-11-22  Olivier Hainque  <hainque@adacore.com>
4921
4922         * config/vxworks.c (vxworks_override_options): Pick default
4923         dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
4924         * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
4925         DWARF_GNAT_ENCODINGS_DEFAULT.
4926         * config/vxworksae.h: Likewise.
4927
4928 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
4929
4930         PR tree-optimization/83104
4931         * vr-values.c (simplify_stmt_using_ranges): Check integral argument,
4932         not result.
4933
4934 2017-11-22  Marek Polacek  <polacek@redhat.com>
4935             H.J. Lu  <hongjiu.lu@intel.com>
4936             Jason Merrill  <jason@redhat.com>
4937
4938         PR c++/60336
4939         PR middle-end/67239
4940         PR target/68355
4941         * calls.c (initialize_argument_information): Call
4942         warn_parameter_passing_abi target hook.
4943         (store_one_arg): Use 0 for empty record size.  Don't push 0 size
4944         argument onto stack.
4945         (must_pass_in_stack_var_size_or_pad): Return false for empty types.
4946         * common.opt: Update -fabi-version description.
4947         * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
4948         (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
4949         int_size_in_bytes.
4950         (ix86_is_empty_record): New function.
4951         (ix86_warn_parameter_passing_abi): New function.
4952         (TARGET_EMPTY_RECORD_P): Redefine.
4953         (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
4954         * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
4955         * doc/tm.texi: Regenerated.
4956         * doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
4957         TARGET_WARN_PARAMETER_PASSING_ABI): Add.
4958         * dwarf2out.c (get_ultimate_context): Move to tree.c.
4959         * explow.c (hard_function_value): Call arg_int_size_in_bytes
4960         instead of int_size_in_bytes.
4961         * expr.c (copy_blkmode_to_reg): Likewise.
4962         * function.c (aggregate_value_p): Return 0 for empty types.
4963         (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
4964         target hook.
4965         (locate_and_pad_parm): Call arg size_in_bytes instead
4966         size_in_bytes.
4967         * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
4968         * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
4969         * target.def (empty_record_p, warn_parameter_passing_abi): New target
4970         hooks.
4971         * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
4972         (std_gimplify_va_arg_expr): Skip empty records.  Call
4973         arg_size_in_bytes instead size_in_bytes.
4974         * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
4975         * tree-core.h (tree_type_common): Add empty_flag.
4976         (tree_decl_common): Update comments.
4977         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
4978         DECL_PADDING_P.
4979         (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
4980         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
4981         DECL_PADDING_P.
4982         (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
4983         * tree.c (default_is_empty_type): New function.
4984         (default_is_empty_record): New function.
4985         (arg_int_size_in_bytes): New function.
4986         (arg_size_in_bytes): New function.
4987         (get_ultimate_context): New function.
4988         * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
4989         TRANSLATION_UNIT_WARN_EMPTY_P.
4990         (default_is_empty_record, arg_int_size_in_bytes,
4991         arg_size_in_bytes, get_ultimate_context): Declare.
4992
4993 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4994
4995         * config/arm/arm.c (cmse_clear_registers): New function.
4996         (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
4997         code by call to cmse_clear_registers.
4998         (cmse_nonsecure_entry_clear_before_return): Likewise.
4999
5000 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
5001
5002         * config/arm/arm_neon.h (vdot_u32, vdotq_u32)
5003         (vdot_s32, vdotq_s32): New.
5004         (vdot_lane_u32, vdotq_lane_u32): New.
5005         (vdot_lane_s32, vdotq_lane_s32): New.
5006
5007
5008 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5009
5010         PR middle-end/82547
5011         * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
5012         for unsigned values with fewer HWIs than the precision.
5013         (test_overflow): New function.
5014         (wide_int_cc_tests): Call it.
5015
5016 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5017
5018         * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
5019         has the same mode class as Pmode.
5020
5021 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5022
5023         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
5024         padding_bits_to_clear_ptr.
5025         (cmse_nonsecure_entry_clear_before_return): Likewise.
5026
5027 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5028
5029         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
5030         auto_sbitap instead of integer bitfield to control register needing
5031         clearing.
5032
5033 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5034
5035         PR tree-optimization/83044
5036         * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
5037         INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
5038         that need the upper bound.  Subtract offset from
5039         get_addr_base_and_unit_offset only if positive and subtract it
5040         before division by eltsize rather than after it.
5041
5042         PR debug/83084
5043         * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
5044         debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
5045         (dead_debug_insert_temp): Likewise, but also ignore even non-volatile
5046         asm.
5047
5048         PR middle-end/82875
5049         * optabs.c (expand_doubleword_mult, expand_binop): Before calling
5050         expand_binop with *mul_widen_optab, make sure at least one of the
5051         operands doesn't have VOIDmode.
5052
5053         PR debug/83034
5054         * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
5055
5056         PR rtl-optimization/82044
5057         PR tree-optimization/82042
5058         * dse.c (record_store): Check for overflow.
5059         (check_mem_read_rtx): Properly check for overflow if width == -1, call
5060         add_wild_read instead of clear_rhs_from_active_local_stores on
5061         overflow and log it into dump_file.
5062
5063 2017-11-22  Richard Biener  <rguenther@suse.de>
5064
5065         * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
5066         fake edges to exit when looking for a place to insert.
5067         * tree-ssa-pre.c (clear_expression_ids): Inline into callers
5068         and remove.
5069         (insert_into_preds_of_block): Commit edge insertion immediately,
5070         assert that doesn't require new BBs.
5071         (fini_pre): Release expressions.
5072         (pass_pre::execute): Shuffle things around a bit, if the fn
5073         is too large do not compute AVAIL either as this is really the
5074         quadratic bit.
5075
5076 2017-11-22  Richard Biener  <rguenther@suse.de>
5077
5078         PR tree-optimization/83089
5079         * tree-if-conv.c (pass_if_conversion::execute): If anything
5080         changed reset SCEV and free the number of iteration estimates.
5081
5082 2017-11-21  Martin Sebor  <msebor@redhat.com>
5083
5084         PR tree-optimization/82945
5085         * calls.h (warn_nonstring_bound): Remove unused function.
5086
5087 2017-11-21  Martin Sebor  <msebor@redhat.com>
5088
5089         PR tree-optimization/82945
5090         * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
5091         * calls.h (maybe_warn_nonstring_arg): Declare new function.
5092         * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
5093         functions.
5094         (initialize_argument_information): Call maybe_warn_nonstring_arg.
5095         * calls.h (get_attr_nonstring_decl): Declare new function.
5096         * doc/extend.texi (attribute nonstring): Update.
5097         * gimple-fold.c (gimple_fold_builtin_strncpy): Call
5098         get_attr_nonstring_decl and handle it.
5099         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
5100         detection of nul-termination.
5101         (strlen_to_stridx): Change to a pointer.
5102         (handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
5103         (pass_strlen::execute): Same.
5104
5105 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5106
5107         * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
5108         for the new option -mprefer-vector-width=[none|128|256|512].
5109         * config/i386/i386.c (ix86_target_string): remove old style options
5110         -mprefer-avx256 and make -mprefer-avx128 as alias.
5111         (ix86_option_override_internal):  Apply defaults for the
5112         -mprefer-vector-width=[128|256] option.
5113         * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
5114         Implement macros to work with -mprefer-vector-width=.
5115         * config/i386/i386.opt: Implemented option
5116         -mprefer-vector-width=[none|128|256|512].
5117         * doc/invoke.texi: Documentation for
5118         -mprefer-vector-width=[none|128|256|512].
5119
5120 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
5121
5122         * config/rs6000/ppc-asm.h (f50, vs50): Fix values.
5123
5124 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
5125
5126         * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
5127
5128 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
5129
5130         * doc/generic.texi: Document POINTER_DIFF_EXPR, update
5131         POINTER_PLUS_EXPR.
5132         * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
5133         * expr.c (expand_expr_real_2): Likewise.
5134         * fold-const.c (const_binop, fold_addr_of_array_ref_difference,
5135         fold_binary_loc): Likewise.
5136         * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
5137         P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
5138         (A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
5139         MINUS_EXPR transformations.
5140         * optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
5141         * tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
5142         * tree-inline.c (estimate_operator_cost): Likewise.
5143         * tree-pretty-print.c (dump_generic_node, op_code_prio,
5144         op_symbol_code): Likewise.
5145         * tree-vect-stmts.c (vectorizable_operation): Likewise.
5146         * vr-values.c (extract_range_from_binary_expr): Likewise.
5147         * varasm.c (initializer_constant_valid_p_1): Likewise.
5148         * tree.def: New tree code POINTER_DIFF_EXPR.
5149
5150 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
5151
5152         * config/i386/i386.md (*bswap<mode>2_movbe): Add
5153         integer suffix to movbe mnemonic.
5154         (*bswaphi2_movbe): Ditto.
5155         (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
5156
5157 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5158
5159         PR c++/83045
5160         * tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
5161         Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
5162         Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
5163
5164 2017-11-21  Martin Liska  <mliska@suse.cz>
5165
5166         * tree-inline.c (expand_call_inline): Remove not needed
5167         xstrdup_for_dump.
5168
5169 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
5170             Jakub Jelinek  <jakub@redhat.com>
5171
5172         PR target/82880
5173         * config/mips/frame-header-opt.c (mips_register_frame_header_opt):
5174         Remove static keyword from f variable.
5175
5176 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5177
5178         PR tree-optimization/83086
5179         * gimple-ssa-store-merging.c
5180         (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
5181         rather than n.base_addr.
5182
5183 2017-11-21  Martin Liska  <mliska@suse.cz>
5184
5185         PR rtl-optimization/82044
5186         PR tree-optimization/82042
5187         * dse.c (check_mem_read_rtx): Check for overflow.
5188
5189 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5190
5191         * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
5192         typo in comment.
5193
5194 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5195
5196         * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
5197         and its corresponding call arg location note.
5198
5199 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5200             Andrew Burgess  <andrew.burgess@embecosm.com>
5201
5202         * config/arc/arc-protos.h (arc_compute_frame_size): Delete
5203         declaration.
5204         (arc_return_slot_offset): Likewise.
5205         (arc_eh_return_address_location): New declaration.
5206         * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
5207         (MUST_SAVE_REGISTER): Add exception handler case.
5208         (MUST_SAVE_RETURN_ADDR): Likewise.
5209         (arc_frame_pointer_required): Likewise.
5210         (arc_frame_pointer_needed): New function.
5211         (arc_compute_frame_size): Changed.
5212         (arc_expand_prologue): Likewise.
5213         (arc_expand_epilogue): Likewise.
5214         (arc_initial_elimination_offset): Likewise.
5215         (arc_return_slot_offset): Delete.
5216         (arc_eh_return_address_location): New function.
5217         (arc_builtin_setjmp_frame_value): Likewise.
5218         * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
5219         (EH_RETURN_STACKADJ_RTX): Define.
5220         (EH_RETURN_HANDLER_RTX): Likewise.
5221         * config/arc/arc.md (eh_return): Delete.
5222
5223 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5224
5225         * print-tree.h (debug_vec_tree): Remove prototype.
5226         * gdbinit.in (pvt): Remove macro.
5227
5228 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5229
5230         PR tree-optimization/83047
5231         * gimple-ssa-store-merging.c
5232         (imm_store_chain_info::output_merged_store): If the loads with the
5233         same vuse are in different basic blocks, for load_gsi pick a load
5234         location that is dominated by the other loads.
5235
5236         PR c++/83059
5237         * config/i386/i386.c (ix86_memmodel_check): Start
5238         -Winvalid-memory-model diagnostics with lowercase letter.
5239
5240         PR debug/82718
5241         * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
5242         set in_cold_section_p to the partition containing loc_list->first.
5243         When seeing loc_list->last_before_switch node, update secname and
5244         perform range_across_switch second partition handling only after that.
5245
5246         PR debug/82933
5247         * run-rtl-passes.c: Include debug.h.
5248         (run_rtl_passes): Call debug_hooks->assembly_start.
5249         * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
5250         multiple times.
5251
5252         PR target/82981
5253         * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
5254         OPTAB_DIRECT in calls to expand_simple_binop.
5255
5256 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5257
5258         PR c/81404
5259         * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
5260
5261 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5262
5263         PR c++/72786
5264         * spellcheck.h (best_match::blithely_get_best_candidate): New
5265         accessor.
5266
5267 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5268
5269         * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
5270         with lower case letter.
5271
5272 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
5273
5274         * config/i386/i386.md (bswaphi2): New expander.
5275         (*bswaphi2_movbe): New insn pattern.
5276         (bswaphi -> rorhi pepehole2): New peephole pattern.
5277
5278 2017-11-20  Jeff Law  <law@redhat.com>
5279
5280         * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
5281         * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
5282         * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
5283         * gimple-ssa-evrp.c: Remove bits moved into new files.  Include
5284         gimple-ssa-evrp-analyze.h.
5285
5286         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
5287         set BB_VISITED here.
5288         (evrp_range_analyzer::enter): Set BB_VISITED here instead.
5289
5290 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5291
5292         * tree-predcom.c: Add general comment on Store-Store chains.
5293         (split_data_refs_to_components): Postpone clearing eliminate_store_p
5294         flag in component.
5295         (get_chain_last_ref_at): Rename into...
5296         (get_chain_last_write_at): ...this.
5297         (get_chain_last_write_before_load): New function.
5298         (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
5299         CT_STORE_STORE when write reference is added.
5300         (determine_roots_comp): Support load ref in CT_STORE_STORE chains.
5301         (is_inv_store_elimination_chain): Update get_chain_last_write_at call.
5302         (initialize_root_vars_store_elim_1): Ditto.
5303         (initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
5304         definition is created.
5305         (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
5306         chain by replacing it with dominant stored value.
5307
5308 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5309
5310         * tree-predcom.c (add_ref_to_chain): Remove check on distance.
5311
5312 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
5313
5314         * vr-values.c (extract_range_from_binary_expr): Use a full range
5315         for VR_VARYING.
5316
5317 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5318
5319         * config/arm/arm.md (R4_REGNUM): Define constant.
5320         (nonsecure_call_internal): Remove r4 clobber.
5321         (nonsecure_call_value_internal): Likewise.
5322         * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
5323         clobber and resequence match_operands.
5324         (nonsecure_call_value_reg_thumb1_v5): Likewise.
5325         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
5326         (nonsecure_call_value_reg_thumb2): Likewise.
5327
5328 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5329
5330         PR tree-optimization/78821
5331         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
5332         if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
5333         to the address of the base rather than the base itself.
5334         (find_bswap_or_nop_1): Just use pointer comparison for vuse check.
5335         (find_bswap_or_nop_finalize): New function.
5336         (find_bswap_or_nop): Use it.
5337         (bswap_replace): Return a tree rather than bool, change first
5338         argument from gimple * to gimple_stmt_iterator, allow inserting
5339         into an empty sequence, allow ins_stmt to be NULL - then emit
5340         all stmts into gsi.  Fix up MEM_REF address gimplification.
5341         (pass_optimize_bswap::execute): Adjust bswap_replace caller.
5342         (struct store_immediate_info): Add N and INS_STMT non-static
5343         data members.
5344         (store_immediate_info::store_immediate_info): Initialize them
5345         from newly added ctor args.
5346         (merged_store_group::apply_stores): Formatting fixes.  Sort by
5347         bitpos at the end.
5348         (stmts_may_clobber_ref_p): For stores call also
5349         refs_anti_dependent_p.
5350         (gather_bswap_load_refs): New function.
5351         (imm_store_chain_info::try_coalesce_bswap): New method.
5352         (imm_store_chain_info::coalesce_immediate_stores): Use it.
5353         (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
5354         (imm_store_chain_info::output_merged_store): Fail if number of
5355         new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
5356         and NOP_EXPR rhs_code.
5357         (pass_store_merging::process_store): Compute n and ins_stmt, if
5358         ins_stmt is non-NULL and the store rhs is otherwise invalid, use
5359         LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
5360         ctor.
5361         (pass_store_merging::execute): Calculate dominators.
5362
5363         * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
5364         BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
5365         CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
5366         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5367         find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
5368         class pass_optimize_bswap, bswap_replace,
5369         pass_optimize_bswap::execute): Moved to ...
5370         * gimple-ssa-store-merging.c: ... this file.
5371         Include optabs-tree.h.
5372         (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
5373         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5374         find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
5375         anonymous namespace, remove static keywords.
5376         (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
5377         (pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
5378
5379 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
5380
5381         PR bootstrap/83062
5382         * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
5383
5384 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
5385
5386         * vec.h (debug_helper): New function.
5387         (DEFINE_DEBUG_VEC): New macro.
5388         * hash-set.h (debug_helper): New function.
5389         (DEFINE_DEBUG_HASH_SET): New macro.
5390         * cfg.c (debug_slim (edge)): New function.
5391         Call DEFINE_DEBUG_VEC for edges.
5392         Call DEFINE_DEBUG_HASH_SET for edges.
5393         * cfghooks.c (debug_slim (basic_block)): New function.
5394         Call DEFINE_DEBUG_VEC for basic blocks.
5395         Call DEFINE_DEBUG_HASH_SET for basic blocks.
5396         * print-tree.c (debug_slim): New function to handle trees.
5397         Call DEFINE_DEBUG_VEC for trees.
5398         Call DEFINE_DEBUG_HASH_SET for trees.
5399         (debug (vec<tree, va_gc>) &): Remove.
5400         (debug (<vec<tree, va_gc>) *): Remove.
5401         * print-rtl.c (debug_slim): New function to handle const_rtx.
5402         Call DEFINE_DEBUG_VEC for rtx_def.
5403         Call DEFINE_DEBUG_VEC for rtx_insn.
5404         Call DEFINE_DEBUG_HASH_SET for rtx_def.
5405         Call DEFINE_DEBUG_HASH_SET for rtx_insn.
5406         * sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
5407         (debug (vec<rtx_insn *> *ptr): Remove.
5408         (debug_insn_vector): Remove.
5409         * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
5410
5411 2017-11-20  Tom de Vries  <tom@codesourcery.com>
5412
5413         PR rtl-optimization/82020
5414         * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
5415         IF_THEN_ELSE condition.
5416
5417 2017-11-19  Jeff Law  <law@redhat.com>
5418
5419         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
5420         of degenerates resulting from ignoring an edge.
5421
5422 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5423
5424         PR ipa/81360
5425         * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
5426
5427 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5428
5429         PR ipa/83001
5430         * profile-count.c (profile_count::to_sreal_scale): Fix return value
5431         for uninitialied counts.
5432
5433 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5434
5435         PR ipa/60243
5436         * tree-inline.c (estimate_num_insns): Set to 1 at least.
5437
5438 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5439
5440         PR target/82713
5441         * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
5442
5443 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5444
5445         * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
5446         "do while (0)".
5447
5448 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5449
5450         * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
5451         "do {} while (0)".
5452
5453 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5454
5455         * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
5456         macro body.
5457
5458 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5459
5460         * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
5461         "do {} while (0)".
5462         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
5463
5464 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5465
5466         * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
5467         "do {} while (0)".
5468         * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
5469         semicolon after MCORE_EXPORT_NAME call.
5470
5471 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5472
5473         PR target/82961
5474         * vmsdbgout.c (vmsdbgout_early_finish): New function.
5475         (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
5476
5477 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
5478
5479         * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
5480         (cgraph_edge::clone): Cleanup updating of profile.
5481         * ipa-cp.c (update_profiling_info): Likewise.
5482         * ipa-inline-transform.c (inline_transform): Likewise.
5483         * ipa-inline.c (inline_small_functions): Add missing space to dump.
5484         * ipa-split.c (execute_split_functions): Do not split when function
5485         is cold.
5486         * predict.c (estimate_bb_frequencies): Cleanup updating of profile.
5487         * profile-count.c (profile_count::dump): Add global0.
5488         (profile_count::to_cgraph_frequency): Do not ICE when entry is
5489         undefined.
5490         (profile_count::to_sreal_scale): Likewise.
5491         (profile_count::adjust_for_ipa_scaling): Fix typo in comment.
5492         (profile_count::combine_with_ipa_count): New function.
5493         * profile-count.h (profile_guessed_global0adjusted): New.
5494         (profile_count::adjusted_zero): New.
5495         (profile_count::global0adjusted): New.
5496         (profile_count::combine_with_ipa_count): New.
5497         * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
5498         correct profile of return block of split functions.
5499         (copy_cfg_body): Remove unused profile_count.
5500         (copy_body): Likewise.
5501         (expand_call_inline): Update.
5502         (tree_function_versioning): Update.
5503
5504 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
5505
5506         * hash-set.h (hash_set::empty): New.
5507         * tree-ssa-threadbackward.h: Delete.
5508         * tree-ssa-threadbackward.c (class thread_jumps): New.
5509         Move max_threaded_paths into class.
5510         (fsm_find_thread_path): Remove arguments that are now in class.
5511         (profitable_jump_thread_path): Rename to...
5512         (thread_jumps::profitable_jump_thread_path): ...this.
5513         (convert_and_register_jump_thread_path): Rename to...
5514         (thread_jumps::convert_and_register_current_path): ...this.
5515         (check_subpath_and_update_thread_path): Rename to...
5516         (thread_jumps::check_subpath_and_update_thread_path): ...this.
5517         (register_jump_thread_path_if_profitable): Rename to...
5518         (thread_jumps::register_jump_thread_path_if_profitable): ...this.
5519         (handle_phi): Rename to...
5520         (thread_jumps::handle_phi): ...this.
5521         (handle_assignment): Rename to...
5522         (thread_jumps::handle_assignment): ...this.
5523         (fsm_find_control_statement_thread_paths): Rename to...
5524         (thread_jumps::fsm_find_control_statement_thread_paths): ...this.
5525         (find_jump_threads_backwards): Rename to...
5526         (thread_jumps::find_jump_threads_backwards): ...this.
5527         Initialize path local data.
5528         (pass_thread_jumps::execute): Call find_jump_threads_backwards
5529         from within thread_jumps class.
5530         (pass_early_thread_jumps::execute): Same.
5531
5532 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5533
5534         * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
5535
5536 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
5537
5538         * config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
5539         to canonical location.
5540
5541 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
5542
5543         PR target/81356
5544         * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
5545         Remove.
5546         (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
5547
5548 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
5549
5550         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
5551         rcrt1.o%s/grcrt1.o%s for -static-pie.
5552
5553 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5554
5555         * i386.c (ix86_multiplication_cost, ix86_division_cost,
5556         ix86_shift_rotate_cost): Break out from ...
5557         (ix86_rtx_costs): ... here.
5558         (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
5559         vector operations.
5560
5561 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5562
5563         * predict.c (determine_unlikely_bbs): Set cgraph node count to 0
5564         when entry block was promoted unlikely.
5565         (estimate_bb_frequencies): Increase frequency scale.
5566         * profile-count.h (profile_count): Export precision info.
5567
5568 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5569
5570         * tree-tailcall.c (eliminate_tail_call): Be more careful about not
5571         disturbin profile of entry block.
5572
5573 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5574
5575         * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
5576         roundoff errors.
5577
5578 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
5579
5580         * ipa-cp.c (update_profiling_info): Handle conversion to local profile.
5581         * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
5582
5583 2017-11-17  Jeff Law  <law@redhat.com>
5584
5585         * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
5586         from evrp_dom_walker class.  Various methods moved into new class.
5587         (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
5588         (evrp_range_analyzer::enter): New method.
5589         (evrp_range_analyzer::leave): New method.
5590         (evrp_dom_walker): Remove delegators no longer needed by this class.
5591         Replace vr_values data member with evrp_range_analyzer
5592
5593         * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
5594         method extracted from evrp_dom_walker::before_dom_children.
5595         (evrp_dom_walker::record_ranges_from_stmt): Likewise.
5596         (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
5597
5598         * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
5599         Add private copy constructor and move assignment operators.
5600         Privatize methods and class data where trivially possible.
5601         (evrp_dom_walker::cleanup): New function, extracted from
5602         execute_early_vrp.  Simplify access to class data.
5603
5604         * vr-values.h (get_output_for_vrp): Prototype.
5605         * vr-values.c (get_output_for_vrp): New function extracted from
5606         vrp_visit_assignment_or_call and extract_range_from_stmt.
5607         (vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
5608
5609 2017-11-17  Luis Machado  <luis.machado@linaro.org>
5610
5611         * config/aarch64/aarch64.c
5612         (qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
5613         (qdf24xx_tunings) <autoprefetcher_model>: Set to
5614         tune_params::AUTOPREFETCHER_WEAK.
5615
5616 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
5617
5618         PR target/82641
5619         * config/arm/arm.c (arm_valid_target_attribute_rec):
5620         Parse "arch=" and "+<ext>".
5621         (arm_valid_target_attribute_tree): Re-init global options.
5622         (arm_option_override): Make non-static.
5623         (arm_options_perform_arch_sanity_checks): Make errors fatal.
5624         * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
5625         (__ARM_FEATURE_CRC32): Support undef.
5626         * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
5627         * doc/extend.texi (ARM Function Attributes): Add pragma and target.
5628
5629 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
5630
5631         * gdbinit.in (break-on-diagnostic): New command.
5632
5633 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5634
5635         * config/i386/i386.c (ix86_expand_epilogue): Change simple
5636         return to indirect jump for EH return if control-flow
5637         protection is enabled. Change explicit 'false' argument in
5638         pro_epilogue_adjust_stack with a value of
5639         flag_cf_protection.
5640         * config/i386/i386.md (simple_return_indirect_internal):
5641         Remove SImode restriction to support 64-bit.
5642
5643 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5644
5645         * combine.c (added_notes_insn): New.
5646         (try_combine): Handle added_notes_insn like added_links_insn.
5647         Rewrite return value code.
5648         (distribute_notes): Set added_notes_insn to the earliest insn we added
5649         a note to.
5650
5651 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5652
5653         PR rtl-optimization/82621
5654         * combine.c (try_combine): Do not split PARALLELs of two SETs if the
5655         dest of one of those SETs is unused.
5656
5657 2017-11-17  Richard Biener  <rguenther@suse.de>
5658
5659         PR fortran/83017
5660         * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
5661         * tree-pretty-print.c (dump_generic_node): Handle
5662         annot_expr_parallel_kind.
5663         * tree-cfg.c (replace_loop_annotate_in_block): Likewise.
5664         * gimplify.c (gimple_boolify): Likewise.
5665
5666 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5667
5668         * config.gcc (extra_headers): Add cet.h for x86 targets.
5669         * config/i386/cet.h: New file.
5670         * doc/install.texi: Add --enable-cet/--disable-cet.
5671
5672 2017-11-17  Richard Biener  <rguenther@suse.de>
5673
5674         PR tree-optimization/83017
5675         * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
5676         (gen_parallel_loop): Properly count iterations.
5677         (parallelize_loops): Handle loop->can_be_parallel independent
5678         of flag_loop_parallelize_all.  Make static profitability test match
5679         the runtime one.
5680         * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
5681         * invoke.texi (parloops-min-per-thread): Document.
5682
5683 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
5684
5685         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
5686         upstreaming review comments.
5687
5688 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
5689
5690         * expr.c (copy_blkmode_to_reg): Fix bitsize for targets
5691         with fast unaligned access.
5692         * doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
5693
5694 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5695
5696         * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
5697         to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
5698
5699 2017-11-17  Richard Biener  <rguenther@suse.de>
5700
5701         * tree-ssa-pre.c (phi_translate_1): Remove redundant constant
5702         folding of references.
5703
5704 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
5705
5706         PR middle-end/78809
5707         * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
5708         of replacing call to strncmp with corresponding call to strcmp when
5709         meeting conditions.
5710
5711 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5712
5713         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
5714         option prefer-avx256 for skylake-avx512 configuration.
5715         * config/i386/i386.c (ix86_option_override_internal): Ditto.
5716         (get_builtin_code_for_version): Ditto.
5717
5718 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5719             Monk Chiang  <sh.chiang04@gmail.com>
5720
5721         * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
5722         (FIXED_REGISTERS): Reserve more register numbers.
5723         (CALL_USED_REGISTERS): Likewise.
5724         (REG_ALLOC_ORDER): Likewise.
5725         (REG_CLASS_CONTENTS): Likewise.
5726         (REGISTER_NAMES): Likewise.
5727
5728 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5729             Kito Cheng  <kito.cheng@gmail.com>
5730
5731         * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
5732         V2SI.
5733         * config/nds32/iterators.md: Add vector mode iterators and attributes.
5734
5735 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
5736
5737         * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
5738         parameter list for vec_splats.
5739
5740 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
5741
5742         * doc/invoke.texi (-std=c17): Refer to 2018 expected publication
5743         date of C17.
5744         (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
5745
5746 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
5747
5748         PR bootstrap/82856
5749         * doc/install.texi: Document incompatibility of Perl >=5.6.26
5750         with the required version of automake 1.11.6.
5751
5752 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
5753
5754         * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
5755         for it.
5756         (DU_C2_3_power9): Correct reservation combinations.
5757         (FP_DIV_power9, VEC_DIV_power9): New.
5758         (power9-alu): Split out rotate/shift...
5759         (power9-rot): ...to here, correct dispatch resource.
5760         (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
5761         resource.
5762         (power9-fp): Correct latency.
5763         (power9-sdiv): Add div/sqrt resource.
5764         (power9-ddiv): Correct latency, add div/sqrt resource.
5765         (power9-sqrt, power9-dsqrt): Add div/sqrt resource.
5766         (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
5767         resource.
5768         (power9-qpdiv, power9-qpmul): Adjust resource usage.
5769
5770 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
5771
5772         * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
5773         switch statement mapping KF built-ins to TF built-ins if we don't
5774         have the proper ISA 3.0 assembler support.
5775
5776 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5777
5778         * tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
5779         (lower_emutls_function_body): Do not compute it.
5780
5781 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5782
5783         * ipa-split.c (split_bb_info): Turn time to sreal.
5784         (split_point): Likewise.
5785         (dump_split_point): Likewise.
5786         (fine_split_points): Likewise.
5787         (execute_split_functions): Only zero split_bbs; turn time to sreals.
5788
5789 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5790
5791         * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
5792         in sreal.
5793
5794 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5795
5796         * predict.c (combine_predictions_for_bb): Preserve zero predicted
5797         edges.
5798         (expensive_function_p): Remove useless assert.
5799         (determine_unlikely_bbs): Propagate also forward; determine cold blocks
5800
5801 2017-11-16  Martin Sebor  <msebor@redhat.com>
5802
5803         PR tree-optimization/82588
5804         PR tree-optimization/82583
5805         * tree-vrp.c (check_array_ref): Handle flexible array members,
5806         string literals, and inner indices.
5807         (search_for_addr_array): Add detail to diagnostics.
5808
5809 2017-11-16  Nathan Sidwell  <nathan@acm.org>
5810
5811         PR c++/82836
5812         PR c++/82737
5813         * tree.h (COPY_DECL_RTL): Rename parms for clarity.
5814         (SET_DECL_ASSEMBLER_NAME): Forward to
5815         overwrite_decl_assembler_name.
5816         (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
5817         (overwrite_decl_assembler_name): Declare.
5818         * tree.c (overwrite_decl_assembler_name): New.
5819         * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
5820         (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
5821         (LANG_HOOKS_INITIALIZER): Add it.
5822         * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
5823         * langhooks.c (lhd_set_decl_assembler_name): Use
5824         SET_DECL_ASSEMBLER_NAME.
5825         (lhd_overwrite_decl_assembler_name): Default implementation.
5826
5827 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5828             Jackson Woodruff  <jackson.woodruff@arm.com>
5829
5830         PR tree-optimization/71026
5831         * match.pd: Canonicalize constant multiplies in division.
5832
5833 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5834
5835         * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
5836         * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
5837         Remove OPT_fomit_frame_pointer entry.
5838         * common/config/arc/arc-common.c: Likewise.
5839         * common/config/arm/arm-common.c: Likewise.
5840         * common/config/avr/avr-common.c: Likewise.
5841         * common/config/c6x/c6x-common.c: Likewise.
5842         * common/config/cr16/cr16-common.c: Likewise.
5843         * common/config/cris/cris-common.c: Likewise.
5844         * common/config/epiphany/epiphany-common.c: Likewise.
5845         * common/config/fr30/fr30-common.c: Likewise.
5846         * common/config/frv/frv-common.c: Likewise.
5847         * common/config/ia64/ia64-common.c: Likewise.
5848         * common/config/iq2000/iq2000-common.c: Likewise.
5849         * common/config/lm32/lm32-common.c: Likewise.
5850         * common/config/m32r/m32r-common.c: Likewise.
5851         * common/config/mcore/mcore-common.c: Likewise.
5852         * common/config/microblaze/microblaze-common.c: Likewise.
5853         * common/config/mips/mips-common.c: Likewise.
5854         * common/config/mmix/mmix-common.c: Likewise.
5855         * common/config/mn10300/mn10300-common.c: Likewise.
5856         * common/config/nios2/nios2-common.c: Likewise.
5857         * common/config/pa/pa-common.c: Likewise.
5858         * common/config/pdp11/pdp11-common.c: Likewise.
5859         * common/config/powerpcspe/powerpcspe-common.c: Likewise.
5860         * common/config/riscv/riscv-common.c: Likewise.
5861         * common/config/rs6000/rs6000-common.c: Likewise.
5862         * common/config/rx/rx-common.c: Likewise.
5863         * common/config/s390/s390-common.c: Likewise.
5864         * common/config/sh/sh-common.c: Likewise.
5865         * common/config/sparc/sparc-common.c: Likewise.
5866         * common/config/tilegx/tilegx-common.c: Likewise.
5867         * common/config/tilepro/tilepro-common.c: Likewise.
5868         * common/config/v850/v850-common.c: Likewise.
5869         * common/config/visium/visium-common.c: Likewise.
5870         * common/config/xstormy16/xstormy16-common.c: Likewise.
5871         * common/config/xtensa/xtensa-common.c: Likewise.
5872         * invoke.texi (-fomit-frame-pointer): Update documentation.
5873
5874 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5875
5876         * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
5877
5878 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5879
5880         * cfg.c (scale_bbs_frequencies_int,
5881         cale_bbs_frequencies_gcov_type): Remove.
5882         * cfg.h (scale_bbs_frequencies_int,
5883         cale_bbs_frequencies_gcov_type): Remove.
5884
5885 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5886
5887         * tree-ssa-loop-manip.c
5888         (scale_dominated_blocks_in_loop): Update to profile counts.
5889         (tree_transform_and_unroll_loop): Likewise.
5890
5891 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5892
5893         * tree-vect-loop-manip.c (vect_do_peeling): Do not use
5894         scale_bbs_frequencies_int.
5895
5896 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5897
5898         * final.c (compute_alignments): Use counts rather than frequencies.
5899
5900 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5901
5902         * cfgloopanal.c: Include sreal.h
5903         (average_num_loop_insns): Use counts and sreal for accounting.
5904
5905 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5906
5907         * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
5908         manipulation.
5909
5910 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5911             Kito Cheng  <kito.cheng@gmail.com>
5912
5913         * config/nds32/constraints.md: Provide more constraints.
5914         * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
5915         REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
5916         support constraints usage.
5917
5918 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5919
5920         * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
5921
5922 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5923             Kito Cheng  <kito.cheng@gmail.com>
5924
5925         * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
5926         * config/nds32/nds32.opt: Refine the layout.
5927         * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
5928         TARGET_EXT_STRING): Support new options.
5929         * config/nds32/nds32.h: Likewise.
5930         * config/nds32/nds32.md: Likewise.
5931         * config/nds32/nds32-predicates.c: Likewise.
5932         * config/nds32/constraints.md: Likewise.
5933         * common/config/nds32/nds32-common.c: Likewise.
5934
5935 2017-11-16  Julia Koval  <julia.koval@intel.com>
5936
5937         PR target/82983
5938         * config/i386/gfniintrin.h: Add sse check.
5939         * config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
5940
5941 2017-11-16  Julia Koval  <julia.koval@intel.com>
5942
5943         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
5944         OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
5945         (ix86_handle_option): Handle -mavx512vbmi2.
5946         * config/i386/cpuid.h: Add bit_AVX512VBMI2.
5947         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
5948         * config/i386/i386-c.c (__AVX512VBMI2__): New.
5949         * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
5950         (ix86_valid_target_attribute_inner_p): Ditto.
5951         * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
5952         * config/i386/i386.opt (mavx512vbmi2): New option.
5953         * doc/invoke.texi: Add new option.
5954
5955 2017-11-16  Julia Koval  <julia.koval@intel.com>
5956
5957         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
5958         _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
5959         _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
5960         _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
5961         _mm512_gf2p8mul_epi8): New intrinsics.
5962         * config/i386/i386-builtin-types.def
5963         (V64QI_FTYPE_V64QI_V64QI): New type.
5964         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
5965         __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
5966         __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
5967         __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
5968         * config/i386/sse.md (vgf2p8mulb_*): New pattern.
5969         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
5970
5971 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
5972
5973         * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
5974         explicitly as a stream of bytes.
5975
5976 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5977
5978         * config/rs6000/altivec.h (vec_xst_be): New #define.
5979         * config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
5980         and externalize from *altivec_vperm_<mode>_internal.
5981         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
5982         instantiation.
5983         (XL_BE_V8HI): Likewise.
5984         (XL_BE_V4SI): Likewise.
5985         (XL_BE_V4SI): Likewise.
5986         (XL_BE_V2DI): Likewise.
5987         (XL_BE_V4SF): Likewise.
5988         (XL_BE_V2DF): Likewise.
5989         (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
5990         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
5991         all array entries with these keys: VSX_BUILTIN_VEC_XL,
5992         VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
5993         VSX_BUILTIN_VEC_XST_BE.
5994         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
5995         (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
5996         built-ins.
5997         (altivec_init_builtins): Replace conditional calls to def_builtin
5998         for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
5999         __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
6000         with unconditional calls.  Remove calls to def_builtin for
6001         __builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
6002         __builtin_vec_xst_be.
6003         * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
6004         to define_expand, and add alternate RTL generation for P8.
6005         (*vsx_ld_elemrev_v8hi_internal): New define_insn based on
6006         vsx_ld_elemrev_v8hi.
6007         (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
6008         add alternate RTL generation for P8.
6009         (*vsx_ld_elemrev_v16qi_internal): New define_insn based on
6010         vsx_ld_elemrev_v16qi.
6011         (vsx_st_elemrev_v8hi): Convert define_insn
6012         to define_expand, and add alternate RTL generation for P8.
6013         (*vsx_st_elemrev_v8hi_internal): New define_insn based on
6014         vsx_st_elemrev_v8hi.
6015         (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
6016         add alternate RTL generation for P8.
6017         (*vsx_st_elemrev_v16qi_internal): New define_insn based on
6018         vsx_st_elemrev_v16qi.
6019
6020 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
6021
6022         PR target/82990
6023         * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
6024         TARGET_AVX512ER check.
6025         (ix86_option_override_internal): Set MASK_VZEROUPPER if
6026         neither -mzeroupper nor -mno-zeroupper is used and
6027         TARGET_EMIT_VZEROUPPER is set.
6028         * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
6029         * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
6030
6031 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
6032
6033         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
6034         folding of vector compares.
6035         (fold_build_vec_cmp): New helper function.
6036         (fold_compare_helper): New helper function.
6037         (builtin_function_type): Add compare builtins to the list of functions
6038         having unsigned arguments.  Cosmetic updates to comment indentation.
6039         * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
6040         the not+eq combination.
6041
6042 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6043
6044         PR tree-optimization/82726
6045         PR tree-optimization/70754
6046         * tree-predcom.c (order_drefs_by_pos): New function.
6047         (combine_chains): Move code setting has_max_use_after to...
6048         (try_combine_chains): ...here.  New parameter.  Sort combined chains
6049         according to position information.
6050         (tree_predictive_commoning_loop): Update call to above function.
6051         (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
6052
6053 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6054
6055         PR tree-optimization/82726
6056         Revert
6057         2017-01-23  Bin Cheng  <bin.cheng@arm.com>
6058
6059         PR tree-optimization/70754
6060         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
6061         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
6062         combined stmt before it if not NULL.
6063         (combine_chains): Process refs reversely and compute dominance point
6064         for root ref.
6065
6066         Revert
6067         2017-02-23  Bin Cheng  <bin.cheng@arm.com>
6068
6069         PR tree-optimization/79663
6070         * tree-predcom.c (combine_chains): Process refs in reverse order
6071         only for ZERO length chains, and add explaining comment.
6072
6073 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6074
6075         * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
6076         * config/arm/arm-tables.opt (armv8.3-a): Regenerated.
6077         * doc/invoke.texi (ARM Options): Add armv8.3-a.
6078
6079 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6080
6081         * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
6082
6083 2017-11-15  Martin Liska  <mliska@suse.cz>
6084
6085         * tree-cfg.c (pass_warn_function_return::execute):
6086         Compare warn_return_type for greater than zero.
6087
6088 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
6089
6090         PR target/82941
6091         PR target/82942
6092         * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
6093         to return true on Xeon and not on Xeon Phi.
6094         (ix86_check_avx256_register): Changed to ...
6095         (ix86_check_avx_upper_register): ... this. Add extra check for
6096         VALID_AVX512F_REG_OR_XI_MODE.
6097         (ix86_avx_u128_mode_needed): Changed
6098         ix86_check_avx256_register to ix86_check_avx_upper_register.
6099         (ix86_check_avx256_stores): Changed to ...
6100         (ix86_check_avx_upper_stores): ... this. Changed
6101         ix86_check_avx256_register to ix86_check_avx_upper_register.
6102         (ix86_avx_u128_mode_after): Changed
6103         avx_reg256_found to avx_upper_reg_found. Changed
6104         ix86_check_avx256_stores to ix86_check_avx_upper_stores.
6105         (ix86_avx_u128_mode_entry): Changed
6106         ix86_check_avx256_register to ix86_check_avx_upper_register.
6107         (ix86_avx_u128_mode_exit): Ditto.
6108         * config/i386/i386.h: (host_detect_local_cpu): New define.
6109
6110 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
6111
6112         * config/arm/xgene1.md (xgene1): Split into automatons
6113         xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
6114         (xgene1_f_load): Adjust reservations and/or types.
6115         (xgene1_f_store): Likewise.
6116         (xgene1_load_pair): Likewise.
6117         (xgene1_store_pair): Likewise.
6118         (xgene1_fp_load1): Likewise.
6119         (xgene1_load1): Likewise.
6120         (xgene1_store1): Likewise.
6121         (xgene1_move): Likewise.
6122         (xgene1_alu): Likewise.
6123         (xgene1_simd): Likewise.
6124         (xgene1_bfm): Likewise.
6125         (xgene1_neon_load1): Likewise.
6126         (xgene1_neon_store1): Likewise.
6127         (xgene1_neon_logic): Likewise.
6128         (xgene1_neon_st1): Likewise.
6129         (xgene1_neon_ld1r): Likewise.
6130         (xgene1_alu_cond): Added.
6131         (xgene1_shift_reg): Likwise.
6132         (xgene1_bfx): Likewise.
6133         (xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
6134
6135 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
6136
6137         PR target/82981
6138         * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
6139         ssa-iterators.h.
6140         (can_widen_mult_without_libcall): New function.
6141         (expand_mul_overflow): If only checking unsigned mul overflow,
6142         not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
6143         Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
6144         no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
6145         (expand_DIVMOD): Formatting fix.
6146         * expmed.h (expand_mult): Add NO_LIBCALL argument.
6147         * expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
6148         than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
6149
6150         PR tree-optimization/82977
6151         * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
6152         constructed temporary to strlen_to_stridx.put.
6153
6154 2017-11-15  Martin Liska  <mliska@suse.cz>
6155
6156         * configure.ac: Remove -fkeep-inline-functions from coverage_flags.
6157         * configure: Regenerate.
6158
6159 2017-11-15  Martin Liska  <mliska@suse.cz>
6160
6161         PR target/82927
6162         * config/sh/sh-mem.cc: Use proper probability for
6163         REG_BR_PROB_NOTE.
6164
6165 2017-11-14  Jeff Law  <law@redhat.com>
6166
6167         * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
6168         the red zone for stack_clash_protection_final_dynamic_probe targets
6169         when the total dynamic stack size is zero bytes.
6170
6171         * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
6172         blocks is post order.
6173
6174 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
6175
6176         * dumpfile.h (TDF_COMPARE_DEBUG): New.
6177         * final.c (rest_of_clean_state): Set it for the
6178         -fcompare-debug dump.
6179         * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
6180         class when TDF_COMPARE_DEBUG is set.
6181
6182         * dwarf2out.c (gen_producer_string): Discard
6183         OPT_fcompare_debug.
6184
6185 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
6186
6187         PR c/81156
6188         * doc/extend.texi (Other Builtins): Document __builtin_tgmath.
6189         * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
6190         (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
6191         (__TGMATH_REAL_2_3): Remove macros.
6192         (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
6193         (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
6194         __builtin_tgmath.
6195         (frexp, ldexp, nexttoward, scalbn, scalbln): Define using
6196         __TGMATH_REAL_2.
6197         (remquo): Define using __TGMATH_REAL_3.
6198
6199 2017-11-14  Jeff Law  <law@redhat.com>
6200
6201         * vr-values.c: New file with contents extracted from tree-vrp.c.
6202         * Makefile.in (OBJS): Add vr-values.o
6203         * tree-vrp.h (set_value_range_to_nonnull): Prototype.
6204         (set_value_range, set_and_canonicalize_value_range): Likewise.
6205         (vrp_bitmap_equal_p, range_is_nonnull): Likewise.
6206         (value_range_constant_singleton, symbolic_range_p): Likewise.
6207         (compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
6208         (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
6209         (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
6210         (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
6211         (find_case_label_range, find_case_label_index): Likewise.
6212         (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
6213         (range_int_cst_singleton_p, value_inside_range): Likewise.
6214         (get_single_symbol): Likewise.
6215         (switch_update): Move structure definition here.
6216         (to_remove_edges, to_update_switch_stmts): Provide externs.
6217         * tree-vrp.c: Move all methods for vr-values class to vr-values.c
6218         (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
6219         (vrp_val_is_min, set_value_range): Likewise.
6220         (set_and_canonicalize_value_range, copy_value_range): Likewise.
6221         (set_value_range_to_value, set_value_range_to_nonnull): Likewise.
6222         (set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
6223         (range_is_nonnull, range_int_cst_p): Likewwise.
6224         (range_int_cst_singleton_p, symbolic_range_p): Likewise.
6225         (get_single_symbol, operand_less_p): Likewise
6226         (compare_values_warnv, compare_values): Likewise.
6227         (value_inside_range, value_range_constant_singleton): Likewise.
6228         (zero_nonzero_bitgs_from_vr): Likewise.
6229         (extract_range_from_binary_expr_1): Likewise.
6230         (overflow_comparison_p): Likewise.
6231         (to_remove_edges, to_update_switch_stmts): Likewise.
6232         (find_case_label-index, find_case_label_range): Likewise.
6233         (switch_update, set_value_range_to_nonnegative): Remove.
6234         (set_value_range_to_truthvalue): Likewise.
6235         (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
6236         (gimple_stmt_nonzero_p, compare_ranges): Likewise.
6237         (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
6238         (find_case_label_ranges, test_for_singularity): Likewise.
6239         (range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
6240         (x_vr_values): Move to its remaining use site.
6241
6242 2017-11-10  Jeff Law  <law@redhat.com>
6243
6244         * vr-values.h (VR_INITIALIZER): Move #define here.
6245         * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
6246         * Makefile.in (OBJS): Add tree-evrp.o
6247         * tree-vrp.h (assert_info): Move structure definition here.
6248         (set_value_range_to_varying): Prototype.
6249         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6250         (infer_value_range, register_edge_assert_for): Likewise.
6251         (stmt_interesting_for_vrp): Likewise.
6252         * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
6253         (set_value_range_to_varying): No longer static.
6254         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6255         (infer_value_range, register_edge_assert_for): Likewise.
6256
6257 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
6258
6259         * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
6260         generate the XXBRD instruction.
6261
6262         * config/rs6000/rs6000-c.c (is_float128_p): New helper function.
6263         (rs6000_builtin_type_compatible): Treat _Float128 and long double
6264         as being compatible if -mabi=ieeelongdouble.
6265         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
6266         to setup float128 built-ins with hardware support.
6267         (BU_FLOAT128_HW_2): Likewise.
6268         (BU_FLOAT128_HW_3): Likewise.
6269         (BU_FLOAT128_HW_VSX_1): Likewise.
6270         (BU_FLOAT128_HW_VSX_2): Likewise.
6271         (scalar_extract_expq): Change float128 built-in functions to
6272         accommodate having both KFmode and TFmode functions.  Use the
6273         KFmode variant as the default.
6274         (scalar_extract_sigq): Likewise.
6275         (scalar_test_neg_qp): Likewise.
6276         (scalar_insert_exp_q): Likewise.
6277         (scalar_insert_exp_qp): Likewise.
6278         (scalar_test_data_class_qp): Likewise.
6279         (sqrtf128_round_to_odd): Delete processing the round to odd
6280         built-in functions as special built-in functions, and define them
6281         as float128 built-ins.  Use the KFmode variant as the default.
6282         (truncf128_round_to_odd): Likewise.
6283         (addf128_round_to_odd): Likewise.
6284         (subf128_round_to_odd): Likewise.
6285         (mulf128_round_to_odd): Likewise.
6286         (divf128_round_to_odd): Likewise.
6287         (fmaf128_round_to_odd): Likewise.
6288         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
6289         support for KFmode and TFmode xststdcqp calls.
6290         (rs6000_expand_builtin): If long double is IEEE 128-bit floating
6291         point, switch the built-in handlers for the get/set float128
6292         exponent, get float128 mantissa, float128 test built-ins, and the
6293         float128 round to odd built-in functions.  Eliminate creating the
6294         float128 round to odd built-in functions as special built-ins.
6295         (rs6000_init_builtins): Eliminate special creation of the float128
6296         round to odd built-in functions.
6297         * config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
6298         function insns to support both TFmode and KFmode variants.
6299         (xsxsigqp_<mode>): Likewise.
6300         (xsiexpqpf_<mode>): Likewise.
6301         (xsiexpqp_<mode>): Likewise.
6302         (xststdcqp_<mode>): Likewise.
6303         (xststdcnegqp_<mode>): Likewise.
6304         (xststdcqp_<mode>): Likewise.
6305
6306 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6307
6308         * tree-ssa-threadupdate.c (compute_path_counts): Remove
6309         unused path_in_freq_ptr parameter.
6310         (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
6311
6312 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6313
6314         * ipa-inline.c (edge_badness): Dump sreal frequency.
6315         (compute_inlined_call_time): Match natural implementaiton ...
6316         * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
6317         forgotten division by CGRAPH_FREQ_BASE.
6318
6319 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6320
6321         * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
6322         Solaris 11.  Update comment.
6323         * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
6324         renaming.
6325         * config/sol2.h (STARTFILE_SPEC): Likewise.
6326         * configure: Regenerate.
6327
6328 2017-11-14  Carl Love  <cel@us.ibm.com>
6329
6330         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
6331         le_ and be_ prefixes to swap* variables.  Remove
6332         if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
6333         statements.
6334
6335 2017-11-14  Jason Merrill  <jason@redhat.com>
6336
6337         Support GTY((cache)) on hash_map.
6338         * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
6339         (ggc_cache_remove): Override it instead of ggc_mx.
6340         * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
6341         (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
6342         * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
6343         (simple_cache_map_traits): Override maybe_mx.
6344         * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
6345         (hash_map): Friend gt_cleare_cache.
6346         (gt_cleare_cache): New.
6347         * tree.h (tree_cache_traits): New hash_map traits class.
6348         (tree_cache_map): New typedef.
6349
6350 2017-11-14  Richard Biener  <rguenther@suse.de>
6351
6352         * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
6353         paramter and handling.
6354         (cleanup_control_flow_bb): Likewise.
6355         (cleanup_control_flow_pre): New helper performing a DFS walk
6356         to call cleanup_control_flow_bb in PRE order.
6357         (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
6358         via cleanup_control_flow_pre.
6359
6360 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
6361
6362         * config/aarch64/aarch64-simd.md
6363         (aarch64_simd_bsl<mode>_internal): Remove DImode.
6364         (*aarch64_simd_bsl<mode>_alt): Likewise.
6365         (aarch64_simd_bsldi_internal): New.
6366         (aarch64_simd_bsldi_alt): Likewise.
6367
6368 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6369
6370         * tracer.c (better_p): Do not compare frequencies.
6371         * reg-stack.c (better_edge): Likewise.
6372         * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
6373         and back.
6374
6375 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6376
6377         * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
6378         * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
6379         * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
6380         * lto-streamer-in.c (input_function): Use update_max_bb_count.
6381         * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
6382         * predict.c (maybe_hot_frequency_p): Inline to ...
6383         (maybe_hot_count_p): ... here; rewrite to counts.
6384         (counts_to_freqs): Rename to ...
6385         (update_max_bb_count): ... this one.
6386         (expensive_function_p): Use counts.
6387         (estimate_bb_frequencies): Update.
6388         (rebuild_frequencies): Update.
6389         * predict.h (counts_to_freqs): Rename to ...
6390         (update_max_bb_count): ... this one.
6391         * profile.c (compute_branch_probabilities): Add debug info
6392         * tree-inline.c (expand_call_inline): Update debug info.
6393         (optimize_inline_calls): Use update_max_bb_count..
6394         (tree_function_versioning): Use update_max_bb_count..
6395         * value-prof.c (gimple_value_profile_transformations):
6396         Do not use update_max_bb_count.
6397
6398 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6399
6400         * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
6401         always use frequencies.
6402
6403 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6404
6405         * bb-reorder.c: Remove frequencies from comments.
6406         (better_edge_p): Use profile counts.
6407         (find_traces): Dump profile counts.
6408         (rotate_loop): Use profile counts.
6409         (find_traces_1_round): Likewise.
6410         (connect_better_edge_p): Use counts instead of probabilities for
6411         reverse walk.
6412         (copy_bb_p): Drop early check for non-0 frequency.
6413         (sanitize_hot_paths): Update comments.
6414
6415 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6416
6417         * ipa-split.c (struct split_point): Add count.
6418         (consider_split): Do not compute incoming frequency; compute incoming
6419         count and store it to split_point.
6420         (split_function): Set count of the call to split part correctly.
6421
6422 2017-11-13  Carl Love  <cel@us.ibm.com>
6423
6424         * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
6425
6426 2017-11-13  Tom Tromey  <tom@tromey.com>
6427
6428         * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
6429
6430 2017-11-13  Carl Love  <cel@us.ibm.com>
6431
6432         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
6433         Add support for builtins:
6434         unsigned int vec_first_{,miss}_match_{,or_eos}index,
6435         vector {un,}signed {char,int,short},
6436         vector {un,}signed {char,int,short}) arguments.
6437         * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
6438         VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
6439         Add BU_P9V_AV_2 expansions for the builtins.
6440         * config/rs6000/altivec.h (vec_first_match_index,
6441         vec_first_mismatch_index, vec_first_match_or_eos_index,
6442         vec_first_mismatch_or_eos_index): Add #defines for the builtins.
6443         * config/rs6000/rs6000-protos.h (bytes_in_mode): Add
6444         new extern declaration.
6445         * config/rs6000/rs6000.c (bytes_in_mode): Add new function.
6446         * config/rs6000/vsx.md (first_match_index_<mode>,
6447         first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
6448         first_mismatch_or_eos_index_<mode>): Add define expand.
6449         (vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
6450         * doc/extend.texi: Update the built-in documenation file for the new
6451         built-in functions.
6452
6453 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
6454
6455         * match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
6456         into the min/max operations for _Float<N> and _Float<N>X types.
6457
6458 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6459
6460         PR lto/81351
6461         * dwarf2out.c (do_eh_frame): New static variable.
6462         (dwarf2out_begin_prologue): Set it.
6463         (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
6464
6465 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6466
6467         * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
6468
6469         * tree-ssa-sink.c (select_best_block): Do not use frequencies.
6470
6471 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6472
6473         PR lto/81351
6474         * debug.h (dwarf2out_do_eh_frame): Declare.
6475         * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
6476         (dwarf2out_do_frame): Use it.
6477         (dwarf2out_do_cfi_asm): Likewise.
6478         * dwarf2out.c (dwarf2out_frame_finish): Likewise.
6479         (dwarf2out_assembly_start): Likewise.
6480         (dwarf2out_begin_prologue): Fix comment.
6481         * toplev.c (compile_file): Always call dwarf2out_frame_finish
6482         if the target needs either debug or unwind DWARF2 info.
6483         * lto-opts.c (lto_write_options): Do not save -fexceptions,
6484         -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
6485         -ftrapping-math, -ftrapv and -fwrapv.
6486
6487 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6488
6489         * cgraph.c (cgraph_edge::sreal_frequency): New function.
6490         * cgraph.h (cgraph_edge::sreal_frequency): Declare.
6491         * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
6492         (estimate_edge_size_and_time): Likewise.
6493         (ipa_merge_fn_summary_after_inlining): Likewise.
6494         * ipa-inline.c (cgraph_freq_base_rec): Remove.
6495         (compute_uninlined_call_time): Use sreal_frequency.
6496         (compute_inlined_call_time): Likewise.
6497         (ipa_inline): Do not initialize cgraph_freq_base_rec.
6498         * profile-count.c: Include sreal.h.
6499         (profile_count::to_sreal_scale): New.
6500         * profile-count.h: Forward declare sreal.
6501         (profile_count::to_sreal_scale): Declare.
6502
6503 2017-11-13  Nathan Sidwell  <nathan@acm.org>
6504
6505         * diagnostic.c (maybe_line_and_column): New.
6506         (diagnostic_get_location_text): Use it.
6507         (diagnostic_report_current_module): Likewise.
6508         (test_diagnostic_get_location_text): Add tests.
6509
6510 2017-11-13  Luis Machado  <luis.machado@linaro.org>
6511
6512         * doc/md.texi (Specifying processor pipeline description): Fix
6513         incorrect latency for the div instruction example.
6514
6515 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
6516
6517         PR tree-optimization/78821
6518         * gimple-ssa-store-merging.c (compatible_load_p): Don't require
6519         that bit_not_p is the same.
6520         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
6521         (split_group): Count precisely bit_not_p bits in each statement.
6522         (invert_op): New function.
6523         (imm_store_chain_info::output_merged_store): Use invert_op to
6524         emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
6525         but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
6526
6527 2017-11-13  Martin Liska  <mliska@suse.cz>
6528
6529         * gcov.c (struct coverage_info): Remove typedef of coverage_t.
6530         (struct source_info): Likewise.
6531         (add_branch_counts): Likewise.
6532         (add_line_counts): Likewise.
6533         (function_summary): Likewise.
6534         (output_intermediate_line): Likewise.
6535         (generate_results): Likewise.
6536
6537 2017-11-13  Martin Liska  <mliska@suse.cz>
6538
6539         * gcov.c (struct block_info): Remove typedef for block_t.
6540         (struct line_info): Likewise.
6541         (line_info::has_block): Likewise.
6542         (EXIT_BLOCK): Likewise.
6543         (unblock): Likewise.
6544         (circuit): Likewise.
6545         (get_cycles_count): Likewise.
6546         (process_file): Likewise.
6547         (read_graph_file): Likewise.
6548         (solve_flow_graph): Likewise.
6549         (find_exception_blocks): Likewise.
6550         (add_line_counts): Likewise.
6551         (accumulate_line_info): Likewise.
6552         (output_line_details): Likewise.
6553
6554 2017-11-13  Martin Liska  <mliska@suse.cz>
6555
6556         * gcov.c (struct arc_info): Remove typedef for arc_t.
6557         (struct line_info): Likewise.
6558         (add_branch_counts): Likewise.
6559         (output_branch_count): Likewise.
6560         (function_info::~function_info): Likewise.
6561         (circuit): Likewise.
6562         (output_intermediate_line): Likewise.
6563         (read_graph_file): Likewise.
6564         (solve_flow_graph): Likewise.
6565         (find_exception_blocks): Likewise.
6566         (add_line_counts): Likewise.
6567         (accumulate_line_info): Likewise.
6568         (output_line_details): Likewise.
6569         (output_function_details): Likewise.
6570
6571 2017-11-13  Martin Liska  <mliska@suse.cz>
6572
6573         * gcov.c (struct function_info): Remove typedef for function_t.
6574         (struct source_info): Likewise.
6575         (source_info::get_functions_at_location): Likewise.
6576         (solve_flow_graph): Likewise.
6577         (find_exception_blocks): Likewise.
6578         (add_line_counts): Likewise.
6579         (output_intermediate_file): Likewise.
6580         (process_file): Likewise.
6581         (generate_results): Likewise.
6582         (release_structures): Likewise.
6583         (read_graph_file): Likewise.
6584         (read_count_file): Likewise.
6585         (accumulate_line_counts): Likewise.
6586         (output_lines): Likewise.
6587
6588 2017-11-13  Martin Liska  <mliska@suse.cz>
6589
6590         * gcov.c (function_info::function_info): Remove num_counts
6591         and add vector<gcov_type>.
6592         (function_info::~function_info): Use the vector.
6593         (process_file): Likewise.
6594         (read_graph_file): Likewise.
6595         (read_count_file): Likewise.
6596         (solve_flow_graph): Likewise.
6597
6598 2017-11-13  Martin Liska  <mliska@suse.cz>
6599
6600         * gcov.c (function_info::is_artificial): New function.
6601         (process_file): Erase all artificial early.
6602         (generate_results): Skip as all artificial are already
6603         removed.
6604
6605 2017-11-13  Martin Liska  <mliska@suse.cz>
6606
6607         * gcov.c (read_graph_file): Store to global vector of functions.
6608         (read_count_file): Iterate the vector.
6609         (process_file): Likewise.
6610         (generate_results): Likewise.
6611         (release_structures): Likewise.
6612
6613 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
6614
6615         PR tree-optimization/82954
6616         * gimple-ssa-store-merging.c
6617         (imm_store_chain_info::coalesce_immediate_stores): If
6618         !infof->ops[N].base_addr, split group if info->ops[N].base_addr.
6619
6620 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
6621
6622         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
6623         Upddate call to ENDIAN_LANE_N.
6624         (aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
6625         (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
6626         (*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
6627         and use aarch64_endian_lane_rtx.
6628         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
6629
6630 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6631
6632         * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
6633
6634 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6635
6636         * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
6637
6638 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6639
6640         * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
6641         body.
6642         * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6643         * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6644         * defaults.h (ASM_OUTPUT_LABELREF): Same.
6645
6646 2017-11-11  Martin Sebor  <msebor@redhat.com>
6647
6648         PR c/81117
6649         * doc/extend.texi (attribute nonstring): Remove spurious argument.
6650
6651         PR bootstrap/82948
6652         * prefic.c (translate_name): Replace strncpy with memcpy to
6653         avoid -Wstringop-truncation.
6654
6655 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6656
6657         * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
6658
6659 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6660
6661         * predict.c (maybe_hot_frequency_p): Do not use cfun.
6662
6663 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6664
6665         * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
6666         merging.
6667
6668 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6669
6670         * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
6671         enable generating XXBRH if the value is in a vector register.
6672         (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
6673         value is in a vector register.
6674         (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
6675         register to register bswap64's instead of doing the GPR sequence
6676         used on previous machines.
6677         (bswapdi2_xxbrd): New insn.
6678         (bswapdi2_reg): Disallow on ISA 3.0.
6679         (register to register bswap64 splitter): Do not split the insn on
6680         ISA 3.0 systems that use XXBRD.
6681
6682 2017-11-10  Martin Sebor  <msebor@redhat.com>
6683
6684         PR c/81117
6685         * config/darwin-c.c (framework_construct_pathname): Replace strncpy
6686         with memcpy.
6687         (find_subframework_file): Same.
6688
6689 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6690
6691         * auto-profile.c (afdo_indirect_call): Drop frequency.
6692         * cgraph.c (symbol_table::create_edge): Drop frequency argument.
6693         (cgraph_node::create_edge): Drop frequency argument.
6694         (cgraph_node::create_indirect_edge): Drop frequency argument.
6695         (cgraph_edge::make_speculative): Drop frequency arguments.
6696         (cgraph_edge::resolve_speculation): Do not update frequencies
6697         (cgraph_edge::dump_edge_flags): Do not dump frequency.
6698         (cgraph_node::dump): Check consistency in IPA mode.
6699         (cgraph_edge::maybe_hot_p): Use IPA counter.
6700         (cgraph_edge::verify_count_and_frequency): Rename to ...
6701         (cgraph_edge::verify_count): ... this one; drop frequency checking.
6702         (cgraph_node::verify_node): Update.
6703         * cgraph.h (struct cgraph_edge): Drop frequency.
6704         (cgraph_edge::frequency): New function.
6705         * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
6706         frequencies.
6707         (cgraph_edge::rebuild_edges): Likewise.
6708         * cgraphclones.c (cgraph_edge::clone): Scale only counts.
6709         (duplicate_thunk_for_node): Do not pass frequency.
6710         (cgraph_node::create_clone): Scale only counts.
6711         (cgraph_node::create_virtual_clone): Do not pass frequency.
6712         (cgraph_node::create_edge_including_clones): Do not pass frequency.
6713         (cgraph_node::create_version_clone): Do not pass frequency.
6714         * cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
6715         (cgraph_node::expand_thunk): Do not pass frequency.
6716         (cgraph_node::create_wrapper): Do not pass frequency.
6717         * gimple-iterator.c (update_call_edge_frequencies): Do not pass
6718         frequency.
6719         * gimple-streamer-in.c (input_bb): Scale only IPA counts.
6720         * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
6721         * ipa-cp.c (ipcp_lattice::print): Use frequency function.
6722         (gather_caller_stats): Use frequency function.
6723         (ipcp_cloning_candidate_p): Use frequency function.
6724         (ipcp_propagate_stage): Use frequency function.
6725         (get_info_about_necessary_edges): Use frequency function.
6726         (update_profiling_info): Update only IPA profile.
6727         (update_specialized_profile): Use frequency functoin.
6728         (perhaps_add_new_callers): Update only IPA profile.
6729         * ipa-devirt.c (ipa_devirt): Use IPA profile.
6730         * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
6731         (dump_ipa_call_summary): Use frequency function.
6732         (estimate_edge_size_and_time): Use frequency function.
6733         (ipa_merge_fn_summary_after_inlining): Use frequency function.
6734         * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
6735         * ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
6736         (update_noncloned_counts): ... ths one; scale counts only.
6737         (clone_inlined_nodes): Do not scale frequency.
6738         (inline_call): Do not pass frequency.
6739         * ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
6740         (compute_inlined_call_time): Use IPA profile.
6741         (want_inline_small_function_p): Use IPA profile.
6742         (want_inline_self_recursive_call_p): Use IPA profile.
6743         (edge_badness): Use IPA profile.
6744         (lookup_recursive_calls): Use IPA profile.
6745         (recursive_inlining): Do not pass frequency.
6746         (resolve_noninline_speculation): Do not update frequency.
6747         (inline_small_functions): Collect max of IPA profile.
6748         (dump_overall_stats): Dump IPA porfile.
6749         (dump_inline_stats): Dump IPA porfile.
6750         (ipa_inline): Collect IPA stats.
6751         * ipa-inline.h (clone_inlined_nodes): Update prototype.
6752         * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
6753         (ipa_propagate_frequency): Use frequency function.
6754         (ipa_profile): Cleanup.
6755         * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
6756         * ipa-utils.c (ipa_merge_profiles): Merge all profiles.
6757         * lto-cgraph.c (lto_output_edge): Do not stream frequency.
6758         (input_node): Do not stream frequency.
6759         (input_edge): Do not stream frequency.
6760         (merge_profile_summaries): Scale only IPA profiles.
6761         * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
6762         * predict.c (drop_profile): Do not recompute frequency.
6763         * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
6764         (ipa_tm_insert_gettmclone_call): Do not pass frequency.
6765         * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
6766         * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
6767         * tree-emutls.c (gen_emutls_addr): Do not pass frequency.
6768         * tree-inline.c (copy_bb): Do not scale frequency.
6769         (expand_call_inline): Do not scale frequency.
6770         (tree_function_versioning): Do not scale frequency.
6771         * ubsan.c (ubsan_create_edge): Do not pass frequency.
6772
6773 2017-11-10  Julia Koval  <julia.koval@intel.com>
6774
6775         * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
6776         (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
6777         (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
6778         (_mm256_maskz_gf2p8affine_epi64_epi8)
6779         (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
6780         (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
6781         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
6782         (__builtin_ia32_vgf2p8affineqb_v32qi)
6783         (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
6784         * config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
6785
6786 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
6787
6788         PR target/82641
6789         * config/arm/arm.c
6790         (arm_option_override): Refactor.
6791         (arm_option_reconfigure_globals): New.
6792         (arm_options_perform_arch_sanity_checks): New.
6793         * config/arm/arm-protos.h (arm_option_reconfigure_globals):
6794         New prototype.
6795         (arm_options_perform_arch_sanity_checks): Likewise
6796
6797 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
6798
6799         * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
6800         (power9-qpmul): New.
6801         * rs6000/rs6000.md ("type" attr): Add qmul.
6802         (mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
6803         *nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
6804         *nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
6805
6806 2017-11-10  Martin Sebor  <msebor@redhat.com>
6807
6808         PR c/81117
6809         * builtins.c (compute_objsize): Handle arrays that
6810         compute_builtin_object_size likes to fail for.  Make extern.
6811         * builtins.h (compute_objsize): Declare.
6812         (check_strncpy_sizes): New function.
6813         (expand_builtin_strncpy): Call check_strncpy_sizes.
6814         * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
6815         -Wstringop-truncation.
6816         (gimple_fold_builtin_strncat): Same.
6817         * gimple.c (gimple_build_call_from_tree): Set call location.
6818         * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
6819         (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
6820         (handle_builtin_stxncpy, handle_builtin_strncat): Same.
6821         (handle_builtin_strlen): Use strlen_to_stridx.
6822         (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
6823         stpncpy.
6824         Use strlen_to_stridx.
6825         (pass_strlen::execute): Release strlen_to_stridx.
6826         * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
6827         (-Wstringop-truncation): Document new option.
6828
6829 2017-11-10  Martin Liska  <mliska@suse.cz>
6830
6831         PR gcov-profile/82702
6832         * gcov.c (main): Handle intermediate files in a different
6833         way.
6834         (get_gcov_intermediate_filename): New function.
6835         (output_gcov_file): Remove support of intermediate files.
6836         (generate_results): Allocate intermediate file.
6837         (release_structures): Clean-up properly fn_end.
6838         (output_intermediate_file): Start iterating with line 1.
6839
6840 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
6841
6842         PR tree-optimization/82929
6843         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
6844         ops_swapped_p non-static data member.
6845         (store_immediate_info::store_immediate_info): Clear it.
6846         (imm_store_chain_info::coalesce_immediate_stores): If swapping
6847         ops set ops_swapped_p.
6848         (count_multiple_uses): Handle ops_swapped_p.
6849
6850 2017-11-10  Martin Liska  <mliska@suse.cz>
6851
6852         * coverage.c (coverage_init): Stream information about
6853         support of has_unexecuted_blocks.
6854         * doc/gcov.texi: Document that.
6855         * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
6856         * gcov.c (read_graph_file): Likewise.
6857         (output_line_beginning): Fix a small issue with
6858         color output.
6859
6860 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
6861
6862         * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
6863         reference of trivial component.
6864
6865 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
6866
6867         PR bootstrap/82916
6868         * gimple-ssa-store-merging.c
6869         (pass_store_merging::terminate_all_aliasing_chains): For
6870         gimple_store_p stmts also call refs_output_dependent_p.
6871
6872         PR rtl-optimization/82913
6873         * compare-elim.c (try_merge_compare): Punt if def_insn is not
6874         single set.
6875
6876 2017-11-09  Jeff Law  <law@redhat.com>
6877
6878         * vr-values.h: New file with vr_values class.
6879         * tree-vrp.c: Include vr-values.h
6880         (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
6881         data objects into the vr_values class.
6882         (vr_value, values_propagated, vr_phi_edge_counts): Likewise.
6883         (get_value_range): Make it a member function within vr_values class.
6884         (set_defs_to_varying, update_value_range, add_equivalence): Likewise.
6885         (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
6886         (op_with_constant_singleton_value_range): Likewise.
6887         (extract_range_for_var_from_comparison_expr): Likewise.
6888         (extract_range_from_assert, extract_range_from_ssa_name): Likewise.
6889         (extract_range_from_binary_expr): Likewise.
6890         (extract_range_from_unary_expr): Likewise.
6891         (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
6892         (check_for_binary_op_overflow, extract_range_basic): Likewise.
6893         (extract_range_from_assignment, adjust_range_with_scev): Likewise.
6894         (dump_all_value_ranges, get_vr_for_comparison): Likewise.
6895         (compare_name_with_value, compare_names): Likewise.
6896         (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
6897         (vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
6898         (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
6899         (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
6900         (extract_range_from_phi_node): Likewise.
6901         (simplify_truth_ops_using_ranges): Likewise.
6902         (simplify_div_or_mod_using_ranges): Likewise.
6903         (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
6904         (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
6905         (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
6906         (simplify_float_conversion_using_ranges): Likewise.
6907         (simplify_internal_call_using_ranges): Likewise.
6908         (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
6909         (vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
6910         poitner via x_vr_values for calls into gimple folder.
6911         (vrp_initialize_lattice): Make this the vr_values ctor.
6912         (vrp_free_lattice): Make this the vr_values dtor.
6913         (set_vr_value): New function.
6914         (class vrp_prop): Add vr_values data member.  Add various member
6915         functions as well as member functions that delegate to vr_values.
6916         (check_array_ref): Make a member function within vrp_prop class.
6917         (search_for_addr_array, vrp_initialize): Likewise.
6918         (vrp_finalize): Likewise.  Revamp to avoid direct access to
6919         vr_value, values_propagated, etc.
6920         (check_array_bounds): Extract vrp_prop class instance pointer from
6921         walk info structure.  Use it to call member functions.
6922         (check_all_array_refs): Make a member function within vrp_prop class.
6923         Smuggle class instance pointer via walk info structure.
6924         (x_vr_values): New local static.
6925         (vrp_valueize): Use x_vr_values to get class instance.
6926         (vr_valueize_1): Likewise.
6927         (class vrp_folder): Add vr_values data member.  Add various member
6928         functions as well as member functions that delegate to vr_values.
6929         (fold_predicate_in): Make a mber fucntion within vrp_folder class.
6930         (simplify_stmt_for_jump_threading): Extract smuggled vr_values
6931         class instance from vr_values.  Use it to call member functions.
6932         (vrp_dom_walker): Add vr_values data member.
6933         (vrp_dom_walker::after_dom_children): Smuggle vr_values class
6934         instance via x_vr_values.
6935         (identify_jump_threads): Accept vr_values as argument.  Store
6936         it into the walker structure.
6937         (evrp_dom_walker): Add vr_values class data member.  Add various
6938         delegators.
6939         (evrp_dom_walker::try_find_new_range): Use vr_values data
6940         member to access the memory allocator.
6941         (evrp_dom_walker::before_dom_children): Store vr_values class
6942         instance into the vrp_folder class.
6943         (evrp_dom_walker::push_value_range): Rework to avoid direct
6944         access to num_vr_values and vr_value.
6945         (evrp_dom_walker::pop_value_range): Likewise.
6946         (execute_early_vrp): Remove call to vrp_initialize_lattice.
6947         Use vr_values to get to dump_all_value_ranges member function.
6948         Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
6949         and simplify_cond_using_ranges_2 via vrp_prop class instance.
6950         Pass vr_values class instance down to identify_jump_threads.
6951         Remove call to vrp_free_lattice.
6952         (debug_all_value_ranges): Remove.
6953
6954         * tree-vrp.c (vrp_prop): Move class to earlier point in the file.
6955         (vrp_folder): Likewise.
6956
6957         * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
6958         Get it from the existing bitmap instead.
6959         (vrp_intersect_ranges_1): Likewise.
6960
6961 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
6962
6963         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
6964         bit_not_p field.
6965         (store_immediate_info::store_immediate_info): Add bitnotp argument,
6966         set bit_not_p to it.
6967         (imm_store_chain_info::coalesce_immediate_stores): Break group
6968         if bit_not_p is different.
6969         (count_multiple_uses, split_group,
6970         imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
6971         (handled_load): Avoid multiple chained BIT_NOT_EXPRs.
6972         (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
6973         result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
6974         to store_immediate_info ctor.
6975
6976 2017-11-09  Jim Wilson  <jimw@sifive.com>
6977
6978         * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
6979         (scan_prog_file): Likewise.
6980
6981 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
6982
6983         * bb-reorder.c (max_entry_frequency): Remove.
6984         (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
6985         connect_traces, push_to_next_round_p): Remove prototypes.
6986         (find_traces_1_round): Use counts only.
6987         (push_to_next_round_p): Likewise.
6988         (find_traces): Likewise.
6989         (rotate_loop): Likewise.
6990         (find_traces_1_round): Likewise.
6991         (connect_traces): Likewise.
6992         (edge_order): Likewise.
6993
6994 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6995
6996         * config/arm/arm.c (output_return_instruction): Add comments to
6997         indicate requirement for cmse_nonsecure_entry return to account
6998         for the size of clearing instruction output here.
6999         (thumb_exit): Likewise.
7000         * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
7001         return in hardfloat mode.
7002
7003 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
7004
7005         * config/rs6000/rs6000.c (machine_function): Add a bool,
7006         "toc_is_wrapped_separately".
7007         (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
7008         if it wasn't explicitly set or unset, we are optimizing for speed, and
7009         doing separate shrink-wrapping.
7010         (rs6000_get_separate_components): Enable the TOC component if
7011         saving the TOC register in the prologue.
7012         (rs6000_components_for_bb): Handle the TOC component.
7013         (rs6000_emit_prologue_components): Store the TOC register where needed.
7014         (rs6000_set_handled_components): Mark TOC as handled, if handled.
7015         (rs6000_emit_prologue): Don't save the TOC if that is already done.
7016
7017 2017-11-09  Martin Jambor  <mjambor@suse.cz>
7018
7019         * ipa-param-manipulation.c: New file.
7020         * ipa-param-manipulation.h: Likewise.
7021         * Makefile.in (OBJS): Add ipa-param-manipulation.o.
7022         (PLUGIN_HEADERS): Addded ipa-param-manipulation.h
7023         * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
7024         (ipa_parm_adjustment): Likewise.
7025         (ipa_parm_adjustment_vec): Likewise.
7026         (ipa_get_vector_of_formal_parms): Moved declaration to
7027         ipa-param-manipulation.h.
7028         (ipa_get_vector_of_formal_parm_types): Likewise.
7029         (ipa_modify_formal_parameters): Likewise.
7030         (ipa_modify_call_arguments): Likewise.
7031         (ipa_combine_adjustments): Likewise.
7032         (ipa_dump_param_adjustments): Likewise.
7033         (ipa_modify_expr): Likewise.
7034         (ipa_get_adjustment_candidate): Likewise.
7035         * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
7036         ipa-param-manipulation.c.
7037         (ipa_get_vector_of_formal_parm_types): Likewise.
7038         (ipa_modify_formal_parameters): Likewise.
7039         (ipa_modify_call_arguments): Likewise.
7040         (ipa_modify_expr): Likewise.
7041         (get_ssa_base_param): Likewise.
7042         (ipa_get_adjustment_candidate): Likewise.
7043         (index_in_adjustments_multiple_times_p): Likewise.
7044         (ipa_combine_adjustments): Likewise.
7045         (ipa_dump_param_adjustments): Likewise.
7046         * tree-sra.c: Also include ipa-param-manipulation.h
7047         * omp-simd-clone.c: Include ipa-param-manipulation.h instead of
7048         ipa-param.h.
7049
7050 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7051             Alan Hayward  <alan.hayward@arm.com>
7052             David Sherwood  <david.sherwood@arm.com>
7053
7054         * doc/sourcebuild.texi (vect_masked_store): Document.
7055
7056 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7057             Alan Hayward  <alan.hayward@arm.com>
7058             David Sherwood  <david.sherwood@arm.com>
7059
7060         * doc/sourcebuild.texi (vect_align_stack_vars): Document.
7061
7062 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7063             Alan Hayward  <alan.hayward@arm.com>
7064             David Sherwood  <david.sherwood@arm.com>
7065
7066         * doc/sourcebuild.texi (vect_variable_length): Document.
7067
7068 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7069             Alan Hayward  <alan.hayward@arm.com>
7070             David Sherwood  <david.sherwood@arm.com>
7071
7072         * doc/sourcebuild.texi (vect_unaligned_possible): Document.
7073
7074 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7075             Alan Hayward  <alan.hayward@arm.com>
7076             David Sherwood  <david.sherwood@arm.com>
7077
7078         * doc/sourcebuild.texi (vect_element_align_preferred): Document.
7079
7080 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7081             Alan Hayward  <alan.hayward@arm.com>
7082             David Sherwood  <david.sherwood@arm.com>
7083
7084         * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
7085         previously undocumented selectors.
7086         (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
7087
7088 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7089
7090         * doc/rtl.texi (const_vector): Say that elements can be
7091         const_wide_ints too.
7092         * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
7093         * emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
7094         (gen_vec_duplicate): Use it instead of CONSTANT_P.
7095         * optabs.c (expand_vector_broadcast): Likewise.
7096
7097 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7098             Alan Hayward  <alan.hayward@arm.com>
7099             David Sherwood  <david.sherwood@arm.com>
7100
7101         * tree-ssa-loop-ivopts.c (get_address_cost): Try using a
7102         scaled index even if the unscaled address was invalid.
7103         Don't increase the complexity of using a scale in that case.
7104
7105 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7106             Alan Hayward  <alan.hayward@arm.com>
7107             David Sherwood  <david.sherwood@arm.com>
7108
7109         * doc/rtl.texi: Rewrite the subreg rules so that they partition
7110         the inner register into REGMODE_NATURAL_SIZE bytes rather than
7111         UNITS_PER_WORD bytes.
7112         * emit-rtl.c (validate_subreg): Divide subregs into blocks
7113         based on REGMODE_NATURAL_SIZE of the inner mode.
7114         (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
7115         !SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
7116         * expmed.c (lowpart_bit_field_p): Divide the value up into
7117         chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
7118         * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
7119         whether something is likely to occupy more than one register.
7120
7121 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7122
7123         PR ipa/82879
7124         * ipa-inline-transform.c (update_noncloned_frequencies): Use
7125         profile_count::adjust_for_ipa_scaling.
7126         * tree-inline.c (copy_bb, copy_cfg_body): Likewise.
7127         * profile-count.c (profile_count::adjust_for_ipa_scaling): New member
7128         function.
7129         * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
7130
7131 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7132
7133         * gimple-ssa-store-merging.c (count_multiple_uses): New function.
7134         (split_group): Add total_orig and total_new arguments, estimate the
7135         number of statements related to the store group without store merging
7136         and with store merging.
7137         (imm_store_chain_info::output_merged_store): Adjust split_group
7138         callers, punt if estimated number of statements with store merging
7139         is not smaller than estimated number of statements without it.
7140         Formatting fix.
7141         (handled_load): Remove has_single_use checks.
7142         (pass_store_merging::process_store): Likewise.
7143
7144 2017-11-09  Richard Biener  <rguenther@suse.de>
7145
7146         PR tree-optimization/82902
7147         * tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
7148
7149 2017-11-09  Martin Liska  <mliska@suse.cz>
7150
7151         PR target/82863
7152         * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
7153         uninitialized.
7154
7155 2017-11-09  Martin Liska  <mliska@suse.cz>
7156
7157         PR tree-optimization/82669
7158         * sbitmap.h (bmp_iter_set_init): Remove non needed check.
7159
7160 2017-11-09  Martin Liska  <mliska@suse.cz>
7161
7162         PR gcov-profile/48463
7163         * coverage.c (coverage_begin_function): Output also end locus
7164         of a function and information whether the function is
7165         artificial.
7166         * gcov-dump.c (tag_function): Parse and print the information.
7167         * gcov.c (INCLUDE_MAP): Add include.
7168         (INCLUDE_SET): Likewise.
7169         (struct line_info): Move earlier in the source file because
7170         of vector<line_info> in function_info structure.
7171         (line_info::line_info): Likewise.
7172         (line_info::has_block): Likewise.
7173         (struct source_info): Add new member index.
7174         (source_info::get_functions_at_location): New function.
7175         (function_info::group_line_p): New function.
7176         (output_intermediate_line): New function.
7177         (output_intermediate_file): Use the mentioned function.
7178         (struct function_start): New.
7179         (struct function_start_pair_hash): Likewise.
7180         (process_file): Add code that identifies group functions.
7181         Assign lines either to global or function scope.
7182         (generate_results): Skip artificial functions.
7183         (find_source): Assign index for each source file.
7184         (read_graph_file): Read new flag artificial and end_line.
7185         (add_line_counts): Assign it either to global of function scope.
7186         (accumulate_line_counts): Isolate core of the function to
7187         accumulate_line_info and call it for both function and global
7188         scope lines.
7189         (accumulate_line_info): New function.
7190         (output_line_beginning): Fix GNU coding style.
7191         (print_source_line): New function.
7192         (output_line_details): Likewise.
7193         (output_function_details): Likewise.
7194         (output_lines): Iterate both source (global) scope and function
7195         scope.
7196         (struct function_line_start_cmp): New class.
7197         * doc/gcov.texi: Reflect changes in documentation.
7198
7199 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7200
7201         PR debug/82837
7202         * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
7203         (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
7204         and similarly for not instead of neg.
7205
7206 2017-11-08  Andi Kleen  <ak@linux.intel.com>
7207
7208         * config/i386/i386.opt: Add -mforce-indirect-call.
7209         * config/i386/predicates.md: Check for flag_force_indirect_call.
7210         * doc/invoke.texi: Document -mforce-indirect-call
7211
7212 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
7213
7214         * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
7215         New extern.
7216         (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
7217         config/riscv/riscv.c (predict.h): New include.
7218         (riscv_slow_unaligned_access_p): No longer static.
7219         (riscv_block_move_straight): Add require.
7220         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
7221
7222 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7223
7224         PR target/82855
7225         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
7226         <avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
7227         nonimmediate_operand predicate for operand 1 instead of
7228         register_operand.
7229
7230 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7231
7232         * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
7233         New pattern.
7234         * config/aarch64/constraints.md (Uml): New constraint.
7235         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
7236         predicate.
7237
7238 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7239
7240         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
7241         of two vec_duplicates into a vec_concat.
7242
7243 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7244
7245         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7246         Simplify vec_merge of vec_duplicate and vec_concat.
7247         * config/aarch64/constraints.md (Utq): New constraint.
7248         * config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
7249         define_insn.
7250
7251 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7252
7253         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7254         Simplify vec_merge of vec_duplicate and const_vector.
7255         * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
7256         New predicate.
7257         * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
7258         mode iterator.  Update predicate on operand 1 to
7259         handle non-const_vec constants.  Delete constraints.
7260         (*aarch64_combinez_be<mode>): Likewise for operand 2.
7261
7262 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7263
7264         PR tree-optimization/78821
7265         * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
7266         data member.
7267         (store_operand_info::store_operand_info): Initialize it to false.
7268         (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
7269         ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
7270         store in the group, and if chain_info is non-NULL, to ignore altogether
7271         that chain.
7272         (compatible_load_p): Fail if bit_not_p does not match.
7273         (imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
7274         (handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
7275         (pass_store_merging::process_store): Adjust
7276         terminate_all_aliasing_chains calls to pass NULL in all current spots,
7277         call terminate_all_aliasing_chains newly when adding a store into
7278         a chain with non-NULL chain_info.
7279
7280 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7281
7282         * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
7283
7284 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7285
7286         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
7287         Remove.
7288         (aarch64_layout_frame): Initialise emit_frame_chain.
7289         (aarch64_can_eliminate): Remove omit leaf frame pointer code.
7290         (TARGET_FRAME_POINTER_REQUIRED): Remove define.
7291
7292 2017-11-08  Martin Liska  <mliska@suse.cz>
7293
7294         * gimplify.c (expand_FALLTHROUGH_r): Simplify usage
7295         of gimple_call_internal_p.
7296
7297 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7298
7299         * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
7300
7301 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7302
7303         * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
7304         "do {} while (0)".
7305
7306 2017-11-08  Martin Liska  <mliska@suse.cz>
7307
7308         PR sanitizer/82792
7309         * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
7310
7311 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7312
7313         * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
7314
7315 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
7316
7317         PR target/82855
7318         * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
7319         (*cmp<mode>_ccz_1): New insn with $k alternative.
7320
7321         PR target/82855
7322         * config/i386/i386.c (ix86_swap_binary_operands_p): Treat
7323         RTX_COMM_COMPARE as commutative as well.
7324         (ix86_binary_operator_ok): Formatting fix.
7325         * config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
7326         *<code><mode>3<mask_name><round_saeonly_name>,
7327         *<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
7328         *<s>mul<mode>3_highpart<mask_name>,
7329         *vec_widen_umult_even_v16si<mask_name>,
7330         *vec_widen_umult_even_v8si<mask_name>,
7331         *vec_widen_umult_even_v4si<mask_name>,
7332         *vec_widen_smult_even_v16si<mask_name>,
7333         *vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
7334         *avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
7335         *avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
7336         *sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
7337         *sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
7338         <avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
7339         *sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
7340         *<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
7341         *<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
7342         !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
7343         ix86_binary_operator_ok.  Formatting fixes.
7344         (*<plusminus_insn><mode>3<mask_name><round_name>,
7345         *<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
7346         fixes.
7347
7348 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
7349
7350         * config/rs6000/rs6000.md (GPR2): New mode_iterator.
7351         ("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
7352         eq and ne if TARGET_ISEL.
7353         (cmp): New code_iterator.
7354         (UNS, UNSU_, UNSIK): New code_attrs.
7355         (<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
7356         ("eq<mode>3"): New define_expand, rename the define_insn_and_split
7357         to...
7358         ("eq<mode>3"): ... this.
7359         ("ne<mode>3"): New define_expand, rename the define_insn_and_split
7360         to...
7361         ("ne<mode>3"): ... this.
7362
7363 2017-11-07  Julia Koval  <julia.koval@intel.com>
7364
7365         PR target/82812
7366         * common/config/i386/i386-common.c
7367         (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
7368         (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
7369         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
7370         * config/i386/i386.opt: Ditto.
7371         * config/i386/i386.c (ix86_target_string): Ditto.
7372         (ix86_option_override_internal): Ditto.
7373         (ix86_init_mpx_builtins): Move MPX to args2.
7374         (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
7375         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
7376         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
7377         __builtin_ia32_vgf2p8affineinvqb_v32qi,
7378         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
7379         __builtin_ia32_vgf2p8affineinvqb_v16qi,
7380         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
7381
7382 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
7383
7384         PR target/80425
7385         * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
7386         and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
7387         (zero-extendsidi peephole2): Remove peephole.
7388
7389 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7390
7391         PR c/53037
7392         * stor-layout.c: Include attribs.h.
7393         (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
7394         explicit lookup of "aligned" attribute.
7395
7396 2017-11-07  Andrew Waterman  <andrew@sifive.com>
7397
7398         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
7399         (riscv_expand_block_move): Likewise.
7400         * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
7401         implementation.
7402         (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
7403         (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
7404         * config/riscv/riscv.c (riscv_block_move_straight): New function.
7405         (riscv_adjust_block_mem): Likewise.
7406         (riscv_block_move_loop): Likewise.
7407         (riscv_expand_block_move): Likewise.
7408         * config/riscv/riscv.md (movmemsi): New pattern.
7409
7410 2017-11-07  Michael Clark  <michaeljclark@mac.com>
7411
7412         * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
7413         (MUSL_DYNAMIC_LINKER): Likewise.
7414
7415 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
7416
7417         * config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
7418         (rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
7419         nonmmory_operand.
7420
7421 2017-11-07  Richard Biener  <rguenther@suse.de>
7422
7423         * match.pd: Fix build.
7424
7425 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
7426             Jackson Woodruff  <jackson.woodruff@arm.com>
7427
7428         PR tree-optimization/71026
7429         * match.pd: Canonicalize negate in division.
7430
7431 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
7432
7433         PR middle-end/80131
7434         * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
7435
7436 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7437
7438         * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
7439         (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
7440
7441 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7442
7443         * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
7444         non-scalar integral types.
7445         * match.pd (negate_expr_p): Handle MINUS_EXPR.
7446         (-(A-B), -(~A)): New transformations.
7447
7448 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7449
7450         * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
7451         semicolon after "do {} while (0)".
7452         * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7453         * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7454         * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7455         * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7456         * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7457
7458 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7459
7460         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
7461         after "do {} while (0)".
7462         * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7463         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7464         * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7465         * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7466         * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7467
7468 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7469
7470         PR other/82784
7471         * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
7472         "while {} do (0)".
7473         (arm_rtx_costs_internal): Add missing semicolon after
7474         HANDLE_NARROW_SHIFT_ARITH call.
7475
7476 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7477
7478         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7479         disable isel if it was not set explicitly.
7480
7481 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
7482
7483         * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
7484         (add_type_attribute) likewise.
7485
7486 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
7487
7488         * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
7489         of struct ix86_frame.
7490         (ix86_initial_elimination_offset): Likewise.
7491         (ix86_expand_split_stack_prologue): Likewise.
7492
7493 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
7494
7495         * tree-vrp.h (enum value_range_type): Update stale comment.
7496
7497 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7498             Alan Hayward  <alan.hayward@arm.com>
7499             David Sherwood  <david.sherwood@arm.com>
7500
7501         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
7502         (aarch64_expand_vec_perm_const): Take the number of units too.
7503         * config/aarch64/aarch64.c (aarch64_expand_vec_perm)
7504         (aarch64_expand_vec_perm_const): Likewise.
7505         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
7506         (vec_perm<mode>): Update accordingly.
7507
7508 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7509             Alan Hayward  <alan.hayward@arm.com>
7510             David Sherwood  <david.sherwood@arm.com>
7511
7512         * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
7513         Take the number of units too.
7514         * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
7515         (aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
7516         but check for a vector mode before rather than after the call.
7517         * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
7518         (move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
7519         (vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
7520         (vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
7521         (vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
7522         (aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
7523         (widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
7524         (aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
7525         (aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
7526         (aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
7527         (aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
7528         (aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
7529         (aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
7530         (aarch64_sqdmull2_n<mode>): Update accordingly.
7531
7532 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7533             Alan Hayward  <alan.hayward@arm.com>
7534             David Sherwood  <david.sherwood@arm.com>
7535
7536         * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
7537         the number of units too.
7538         * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
7539         * config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
7540         (vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
7541         (vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
7542         (vec_store_lanesxi<mode>): Update accordingly.
7543
7544 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7545             Alan Hayward  <alan.hayward@arm.com>
7546             David Sherwood  <david.sherwood@arm.com>
7547
7548         * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
7549         * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
7550         * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
7551         of units rather than the mode.
7552         * config/aarch64/iterators.md (nunits): New mode attribute.
7553         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
7554         Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
7555         * config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
7556         (aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
7557         (*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
7558         (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
7559         (*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
7560         (*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
7561         (*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
7562         (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
7563         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
7564         (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
7565         (reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
7566         (reduc_<maxmin_uns>_scal_<mode>): Likewise.
7567         (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
7568         (*aarch64_get_lane_zero_extendsi<mode>): Likewise.
7569         (aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
7570         (*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
7571         (aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
7572         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
7573         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
7574         (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
7575         (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
7576         (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
7577         (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
7578         (aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
7579         (aarch64_sqdmull2_lane<mode>_internal): Likewise.
7580         (aarch64_sqdmull2_laneq<mode>_internal): Likewise.
7581         (aarch64_vec_load_lanesoi_lane<mode>): Likewise.
7582         (aarch64_vec_store_lanesoi_lane<mode>): Likewise.
7583         (aarch64_vec_load_lanesci_lane<mode>): Likewise.
7584         (aarch64_vec_store_lanesci_lane<mode>): Likewise.
7585         (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
7586         (aarch64_vec_store_lanesxi_lane<mode>): Likewise.
7587         (aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
7588         (aarch64_simd_vec_setv2di): Likewise.
7589
7590 2017-11-06  Carl Love  <cel@us.ibm.com>
7591
7592         * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
7593         definitions.
7594         (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
7595         * config/rs6000/altivec.h (vec_revb): Change the #define from power 9
7596         to power 8.
7597         * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
7598         extern declaration.
7599         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
7600         * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
7601         Add power 8 macro expansions.
7602         (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
7603         * config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
7604         power 8 instructions.  (VSX_XXBR): Add iterator.
7605
7606 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
7607
7608         * config/arm/arm.md (predicable_short_it): Change default to "no",
7609         improve documentation, remove uses that are identical to the default.
7610         (enabled_for_depr_it): Rename to enabled_for_short_it.
7611         * gcc/config/arm/arm-fixed.md (predicable_short_it):
7612         Remove default uses.
7613         * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
7614         * gcc/config/arm/sync.md (predicable_short_it): Likewise.
7615         * gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
7616         * gcc/config/arm/vfp.md (predicable_short_it): Likewise.
7617
7618 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
7619
7620         PR target/82748
7621         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
7622         float128 helper macros, which are no longer used after deleting
7623         the old 'q' built-in functions, and moving the round to odd
7624         built-in functions to being special built-in functions.
7625         (BU_FLOAT128_2): Likewise.
7626         (BU_FLOAT128_1_HW): Likewise.
7627         (BU_FLOAT128_2_HW): Likewise.
7628         (BU_FLOAT128_3_HW): Likewise.
7629         (FABSQ): Delete old 'q' built-in functions.
7630         (COPYSIGNQ): Likewise.
7631         (SQRTF128_ODD): Move round to odd built-in functions to be
7632         special built-in functions, so that we can handle
7633         -mabi=ieeelongdouble.
7634         (TRUNCF128_ODD): Likewise.
7635         (ADDF128_ODD): Likewise.
7636         (SUBF128_ODD): Likewise.
7637         (MULF128_ODD): Likewise.
7638         (DIVF128_ODD): Likewise.
7639         (FMAF128_ODD): Likewise.
7640         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
7641         built-in names to 'f128'.
7642         * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
7643         old 'q' built-in functions, as the machine independent code for
7644         'f128' built-in functions handles this.
7645         (rs6000_expand_builtin): Add expansion for float128 round to odd
7646         functions, keying off on -mabi=ieeelongdouble of whether to use
7647         the KFmode or TFmode variant.
7648         (rs6000_init_builtins): Initialize the _Float128 round to odd
7649         built-in functions.
7650         * doc/extend.texi (PowerPC Built-in Functions): Document the old
7651         _Float128 'q' built-in functions are now mapped into the new
7652         'f128' built-in functions.
7653
7654 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
7655
7656         * collect2.c (add_lto_object): Compile for OBJECT_COFF.
7657         (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
7658
7659 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
7660
7661         PR jit/82826
7662         * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
7663         * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
7664         * toplev.c: Include "ipa-fnsummary.h".
7665         (toplev::finalize): Call ipa_fnsummary_c_finalize.
7666
7667 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
7668
7669         PR tree-optimization/82838
7670         * gimple-ssa-store-merging.c
7671         (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
7672         on a separate gimple_seq which is then appended to seq.
7673
7674 2017-11-06  Jeff Law  <law@redhat.com>
7675
7676         PR target/82788
7677         * config/i386/i386.c (PROBE_INTERVAL): Remove.
7678         (get_probe_interval): New functions.
7679         (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
7680         (ix86_adjust_stack_and_probe): Likewise.
7681         (output_adjust_stack_and_probe): Likewise.
7682         (ix86_emit_probe_stack_range): Likewise.
7683         (ix86_expand_prologue): Likewise.
7684
7685 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7686
7687         PR tree-optimization/82816
7688         * tree-ssa-math-opts.c (convert_mult_to_widen): Return false
7689         if the modes of the two types are the same.
7690         (convert_plusminus_to_widen): Likewise.
7691
7692 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7693
7694         * config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
7695         p9_vadu<mode>3.
7696         (usadv16qi): New define_expand.
7697         (usadv8hi): New define_expand.
7698
7699 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
7700
7701         PR bootstrap/82832
7702         * ipa-inline-transform.c (update_noncloned_frequencies): Always
7703         scale.
7704         (inline_transform): Likewise.
7705         * predict.c (counts_to_freqs): Remove useless conditional.
7706         * profile-count.h (profile_count::apply_scale): Move sanity check.
7707         * tree-inline.c (copy_bb): Always scale.
7708         (copy_cfg_body): Likewise.
7709
7710 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
7711
7712         PR target/67591
7713         * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
7714         attribute.
7715         (*cmp_ite0): Add enabled_for_depr_it attribute.
7716         (*cmp_ite1): Likewise.
7717
7718 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7719
7720         * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
7721         TYPE_MFCRF.
7722
7723 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7724
7725         * tree-vrp.c (vrp_int_const_binop): Return true on success and
7726         return the value by pointer.
7727         (extract_range_from_multiplicative_op_1): Update accordingly.
7728         Return as soon as an operation fails.
7729
7730 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7731
7732         PR other/82784
7733         * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
7734         (DEF_SANITIZER_BUILTIN): ... here.
7735         (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
7736         DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
7737
7738 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7739
7740         PR other/82784
7741         * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
7742         macro body.
7743         (ASM_OUTPUT_CASE_LABEL): Add semicolon after
7744         ASM_OUTPUT_BEFORE_CASE_LABEL call.
7745         * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
7746         after macro body.
7747         * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7748         * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7749         * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7750
7751 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7752
7753         PR other/82784
7754         * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
7755         "do {} while (0)".
7756
7757 2017-11-04  Michael Clark  <michaeljclark@mac.com>
7758
7759         * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
7760         config/riscv/riscv.md (addsi3): Use 'i' for immediates.
7761         (adddi3): Likewise.
7762         (*addsi3_extended): Likewise.
7763         (*addsi3_extended2): Likewise.
7764         (<optab>si3): Likewise.
7765         (<optab>di3): Likewise.
7766         (<optab><mode>3): Likewise.
7767         (<*optabe>si3_internal): Likewise.
7768         (zero_extendqi<SUPERQI:mode>2): Likewise.
7769         (*add<mode>hi3): Likewise.
7770         (*xor<mode>hi3): Likewise.
7771         (<optab>di3): Likewise.
7772         (*<optab>si3_extend): Likewise.
7773         (*sge<u>_<X:mode><GPR:mode>): Likewise.
7774         (*slt<u>_<X:mode><GPR:mode>): Likewise.
7775         (*sle<u>_<X:mode><GPR:mode>): Likewise.
7776
7777 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7778
7779         * config/riscv/riscv.c (riscv_option_override): Conditionally set
7780         TARGET_STRICT_ALIGN based upon -mtune argument.
7781
7782 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7783
7784         * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
7785
7786 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
7787
7788         * config/i386/i386.c (choose_basereg): Use optional scratch
7789         register and add assertion.
7790         (x86_emit_outlined_ms2sysv_save): Use scratch register when
7791         needed, and don't allocate stack.
7792         (ix86_expand_prologue): Rearrange where SSE saves/stub call is
7793         emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
7794         (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
7795
7796 2017-11-03  Jeff Law  <law@redhat.com>
7797
7798         * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
7799         (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
7800         to probe at the start of a noreturn function.
7801
7802 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
7803
7804         PR tree-optimization/78821
7805         * gimple-ssa-store-merging.c: Update the file comment.
7806         (MAX_STORE_ALIAS_CHECKS): Define.
7807         (struct store_operand_info): New type.
7808         (store_operand_info::store_operand_info): New constructor.
7809         (struct store_immediate_info): Add rhs_code and ops data members.
7810         (store_immediate_info::store_immediate_info): Add rhscode, op0r
7811         and op1r arguments to the ctor, initialize corresponding data members.
7812         (struct merged_store_group): Add load_align_base and load_align
7813         data members.
7814         (merged_store_group::merged_store_group): Initialize them.
7815         (merged_store_group::do_merge): Update them.
7816         (merged_store_group::apply_stores): Pick the constant for
7817         encode_tree_to_bitpos from one of the two operands, or skip
7818         encode_tree_to_bitpos if neither operand is a constant.
7819         (class pass_store_merging): Add process_store method decl.  Remove
7820         bool argument from terminate_all_aliasing_chains method decl.
7821         (pass_store_merging::terminate_all_aliasing_chains): Remove
7822         var_offset_p argument and corresponding handling.
7823         (stmts_may_clobber_ref_p): New function.
7824         (compatible_load_p): New function.
7825         (imm_store_chain_info::coalesce_immediate_stores): Terminate group
7826         if there is overlap and rhs_code is not INTEGER_CST.  For
7827         non-overlapping stores terminate group if rhs is not mergeable.
7828         (get_alias_type_for_stmts): Change first argument from
7829         auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
7830         BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
7831         instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
7832         alias type.
7833         (get_location_for_stmts): Change first argument from
7834         auto_vec<gimple *> & to vec<gimple *> &.
7835         (struct split_store): Remove orig_stmts data member, add orig_stores.
7836         (split_store::split_store): Create orig_stores rather than orig_stmts.
7837         (find_constituent_stmts): Renamed to ...
7838         (find_constituent_stores): ... this.  Change second argument from
7839         vec<gimple *> * to vec<store_immediate_info *> *, push pointers
7840         to info structures rather than the statements.
7841         (split_group): Rename ALLOW_UNALIGNED argument to
7842         ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
7843         it.  Adjust find_constituent_stores caller.
7844         (imm_store_chain_info::output_merged_store): Handle rhs_code other
7845         than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
7846         get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
7847         MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
7848         (mem_valid_for_store_merging): New function.
7849         (handled_load): New function.
7850         (pass_store_merging::process_store): New method.
7851         (pass_store_merging::execute): Use process_store method.  Adjust
7852         terminate_all_aliasing_chains caller.
7853
7854 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
7855
7856         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
7857         Return true for more constants, symbols and label references.
7858         (aarch64_valid_floating_const): Remove unused function.
7859
7860 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
7861
7862         PR target/82786
7863         * config/aarch64/aarch64.c (aarch64_layout_frame):
7864         Undo forcing of LR at bottom of frame.
7865
7866 2017-11-03  Jeff Law  <law@redhat.com>
7867
7868         PR target/82823
7869         * config/i386/i386.c (ix86_expand_prologue): Tighten assert
7870         for int_registers_saved.
7871
7872         * cfganal.c (single_pred_edge_ignoring_loop_edges): New function
7873         extracted from tree-ssa-dom.c.
7874         * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
7875         * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
7876         (record_equivalences_from_incoming_edge): Add additional argument
7877         to single_pred_edge_ignoring_loop_edges call.
7878         * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
7879         (uncprop_dom_walker::before_dom_children): Add additional argument
7880         to single_pred_edge_ignoring_loop_edges call.
7881         * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
7882         single_pred_edge_ignoring_loop_edges rather than open coding.
7883         * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
7884
7885 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
7886
7887         * match.pd (-(-A)): Rewrite.
7888
7889 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
7890
7891         * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
7892         (rs6000_emit_int_cmove): New declaration.
7893         * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
7894         (rs6000_emit_sISEL): Delete.
7895         (rs6000_emit_int_cmove): Make non-static.
7896         * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
7897         instead of rs6000_emit_sISEL.
7898
7899 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
7900
7901         * asan.c (create_cond_insert_point): Maintain profile.
7902         * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
7903         merged.
7904         * basic-block.h (struct basic_block_def): Remove frequency.
7905         (EDGE_FREQUENCY): Use to_frequency
7906         * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
7907         heuristics.
7908         (find_traces): Update to use to_frequency.
7909         (find_traces_1_round): Likewise; use only IPA counts.
7910         (bb_to_key): Likewise.
7911         (connect_traces): Use IPA counts only.
7912         (copy_bb_p): Update to use to_frequency.
7913         (fix_up_crossing_landing_pad): Likewise.
7914         (sanitize_hot_paths): Likewise.
7915         * bt-load.c (basic_block_freq): Likewise.
7916         * cfg.c (init_flow): Set count_max to uninitialized.
7917         (check_bb_profile): Remove frequencies; check counts.
7918         (dump_bb_info): Do not dump frequencies.
7919         (update_bb_profile_for_threading): Update counts only.
7920         (scale_bbs_frequencies_int): Likewise.
7921         (MAX_SAFE_MULTIPLIER): Remove.
7922         (scale_bbs_frequencies_gcov_type): Update counts only.
7923         (scale_bbs_frequencies_profile_count): Update counts only.
7924         (scale_bbs_frequencies): Update counts only.
7925         * cfg.h (struct control_flow_graph): Add count-max.
7926         (update_bb_profile_for_threading): Update prototype.
7927         * cfgbuild.c (find_bb_boundaries): Do not update frequencies.
7928         (find_many_sub_basic_blocks): Likewise.
7929         * cfgcleanup.c (try_forward_edges): Likewise.
7930         (try_crossjump_to_edge): Likewise.
7931         * cfgexpand.c (expand_gimple_cond): Likewise.
7932         (expand_gimple_tailcall): Likewise.
7933         (construct_init_block): Likewise.
7934         (construct_exit_block): Likewise.
7935         * cfghooks.c (verify_flow_info): Check consistency of counts.
7936         (dump_bb_for_graph): Do not dump frequencies.
7937         (split_block_1): Do not update frequencies.
7938         (split_edge): Do not update frequencies.
7939         (make_forwarder_block): Do not update frequencies.
7940         (duplicate_block): Do not update frequencies.
7941         (account_profile_record): Do not update frequencies.
7942         * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
7943         for global heuristics.
7944         * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
7945         (expected_loop_iterations_unbounded): Use counts only.
7946         * cfgloopmanip.c (scale_loop_profile): Simplify.
7947         (create_empty_loop_on_edge): Simplify
7948         (loopify): Simplify
7949         (duplicate_loop_to_header_edge): Simplify
7950         * cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
7951         (update_br_prob_note): Take care of removing note when profile
7952         becomes undefined.
7953         (relink_block_chain): Do not dump frequency.
7954         (rtl_account_profile_record): Use to_frequency.
7955         * cgraph.c (symbol_table::create_edge): Convert count to ipa count.
7956         (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
7957         (cgraph_update_edges_for_call_stmt_node): Likewise.
7958         (cgraph_edge::verify_count_and_frequency): Update.
7959         (cgraph_node::verify_node): Temporarily disable frequency verification.
7960         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use
7961         to_cgraph_frequency.
7962         (cgraph_edge::rebuild_edges): Convert to ipa counts.
7963         * cgraphunit.c (init_lowered_empty_function): Do not initialize
7964         frequencies.
7965         (cgraph_node::expand_thunk): Update profile.
7966         * except.c (dw2_build_landing_pads): Do not update frequency.
7967         * final.c (compute_alignments): Use to_frequency.
7968         (dump_basic_block_info): Do not dump frequency.
7969         * gimple-pretty-print.c (dump_profile): Do not dump frequency.
7970         (dump_gimple_bb_header): Do not dump frequency.
7971         * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
7972         do update count.
7973         * gimple-streamer-in.c (input_bb): Do not stream frequency.
7974         * gimple-streamer-out.c (output_bb): Do not stream frequency.
7975         * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
7976         (init_before_recovery): Do not update frequency.
7977         (sched_create_recovery_edges): Do not update frequency.
7978         * hsa-gen.c (convert_switch_statements): Do not update frequency.
7979         * ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
7980         (ipa_cp_c_finalize): Set max_count to uninitialized.
7981         * ipa-fnsummary.c (get_minimal_bb): Use counts.
7982         (param_change_prob): Use counts.
7983         * ipa-profile.c (ipa_profile_generate_summary): Do not summarize
7984         local profiles.
7985         * ipa-split.c (consider_split): Use to_frequency.
7986         (split_function): Use to_frequency.
7987         * ira-build.c (loop_compare_func): Likewise.
7988         (mark_loops_for_removal): Likewise.
7989         (mark_all_loops_for_removal): Likewise.
7990         * loop-doloop.c (doloop_modify): Do not update frequency.
7991         * loop-unroll.c (unroll_loop_runtime_iterations): Do not update
7992         frequency.
7993         * lto-streamer-in.c (input_function): Update count_max.
7994         * omp-expand.c (expand_omp_taskreg): Update count_max.
7995         * omp-simd-clone.c (simd_clone_adjust): Update profile.
7996         * predict.c (maybe_hot_frequency_p): Use to_frequency.
7997         (maybe_hot_count_p): Use ipa counts only.
7998         (maybe_hot_bb_p): Simplify.
7999         (maybe_hot_edge_p): Simplify.
8000         (probably_never_executed): Do not take frequency argument.
8001         (probably_never_executed_bb_p): Do not pass frequency.
8002         (probably_never_executed_edge_p): Likewise.
8003         (combine_predictions_for_bb): Check that profile is nonzero.
8004         (propagate_freq): Do not set frequency.
8005         (drop_profile): Simplify.
8006         (counts_to_freqs): Simplify.
8007         (expensive_function_p): Use to_frequency.
8008         (propagate_unlikely_bbs_forward): Simplify.
8009         (determine_unlikely_bbs): Simplify.
8010         (estimate_bb_frequencies): Add hack to silence graphite issues.
8011         (compute_function_frequency): Use ipa counts.
8012         (pass_profile::execute): Update.
8013         (rebuild_frequencies): Use counts only.
8014         (force_edge_cold): Use counts only.
8015         * profile-count.c (profile_count::dump): Dump new count types.
8016         (profile_count::differs_from_p): Check compatiblity.
8017         (profile_count::to_frequency): New function.
8018         (profile_count::to_cgraph_frequency): New function.
8019         * profile-count.h (struct function): Declare.
8020         (enum profile_quality): Add profile_guessed_local and
8021         profile_guessed_global0.
8022         (class profile_proability): Decrease number of bits to 29;
8023         update from_reg_br_prob_note and to_reg_br_prob_note.
8024         (class profile_count: Update comment; decrease number of bits
8025         to 61. Check compatibility.
8026         (profile_count::compatible_p): New private member function.
8027         (profile_count::ipa_p): New member function.
8028         (profile_count::operator<): Handle global zero correctly.
8029         (profile_count::operator>): Handle global zero correctly.
8030         (profile_count::operator<=): Handle global zero correctly.
8031         (profile_count::operator>=): Handle global zero correctly.
8032         (profile_count::nonzero_p): New member function.
8033         (profile_count::force_nonzero): New member function.
8034         (profile_count::max): New member function.
8035         (profile_count::apply_scale): Handle IPA scalling.
8036         (profile_count::guessed_local): New member function.
8037         (profile_count::global0): New member function.
8038         (profile_count::ipa): New member function.
8039         (profile_count::to_frequency): Declare.
8040         (profile_count::to_cgraph_frequency): Declare.
8041         * profile.c (OVERLAP_BASE): Delete.
8042         (compute_frequency_overlap): Delete.
8043         (compute_branch_probabilities): Do not use compute_frequency_overlap.
8044         * regs.h (REG_FREQ_FROM_BB): Use to_frequency.
8045         * sched-ebb.c (rank): Use counts only.
8046         * shrink-wrap.c (handle_simple_exit): Use counts only.
8047         (try_shrink_wrapping): Use counts only.
8048         (place_prologue_for_one_component): Use counts only.
8049         * tracer.c (find_best_predecessor): Use to_frequency.
8050         (find_trace): Use to_frequency.
8051         (tail_duplicate): Use to_frequency.
8052         * trans-mem.c (expand_transaction): Do not update frequency.
8053         * tree-call-cdce.c: Do not update frequency.
8054         * tree-cfg.c (gimple_find_sub_bbs): Likewise.
8055         (gimple_merge_blocks): Likewise.
8056         (gimple_split_edge): Likewise.
8057         (gimple_duplicate_sese_region): Likewise.
8058         (gimple_duplicate_sese_tail): Likewise.
8059         (move_sese_region_to_fn): Likewise.
8060         (gimple_account_profile_record): Likewise.
8061         (insert_cond_bb): Likewise.
8062         * tree-complex.c (expand_complex_div_wide): Likewise.
8063         * tree-eh.c (lower_resx): Update profile.
8064         * tree-inline.c (copy_bb): Simplify count scaling; do not scale
8065         frequencies.
8066         (initialize_cfun): Do not initialize frequencies
8067         (freqs_to_counts): Delete.
8068         (copy_cfg_body): Ignore count parameter.
8069         (copy_body): Update.
8070         (expand_call_inline): Update count_max.
8071         (optimize_inline_calls): Update count_max.
8072         (tree_function_versioning): Update count_max.
8073         * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
8074         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
8075         frequency.
8076         * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
8077         * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
8078         (try_peel_loop): Likewise.
8079         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
8080         to_frequency.
8081         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
8082         (tree_transform_and_unroll_loop): Do not use frequencies
8083         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
8084         Use reliable prediction only.
8085         * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
8086         * tree-ssa-sink.c (select_best_block): Use to_frequency.
8087         * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
8088         probability scaling.
8089         * tree-ssa-threadupdate.c (create_block_for_threading): Do
8090         not update frequency
8091         (any_remaining_duplicated_blocks): Likewise.
8092         (update_profile): Likewise.
8093         (estimated_freqs_path): Delete.
8094         (freqs_to_counts_path): Delete.
8095         (clear_counts_path): Delete.
8096         (ssa_fix_duplicate_block_edges): Likewise.
8097         (duplicate_thread_path): Likewise.
8098         * tree-switch-conversion.c (gen_inbound_check): Use counts.
8099         * tree-tailcall.c (decrease_profile): Do not update frequency.
8100         (eliminate_tail_call): Likewise.
8101         * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
8102         * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
8103         (optimize_mask_stores): Likewise.
8104         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
8105         * ubsan.c (ubsan_expand_null_ifn): Update profile.
8106         (ubsan_expand_ptr_ifn): Update profile.
8107         * value-prof.c (gimple_ic): Simplify.
8108         * value-prof.h (gimple_ic): Update prototype.
8109         * ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
8110         * ipa-inline.c (compute_uninlined_call_time): Be sure that
8111         counts are nonzero.
8112         (want_inline_self_recursive_call_p): Likewise.
8113         (resolve_noninline_speculation): Only cummulate defined counts.
8114         (inline_small_functions): Use nonzero_p.
8115         (ipa_inline): Do not access freed node.
8116
8117 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8118
8119         * config/aarch64/aarch64.c (aarch64_override_options_internal):
8120         Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
8121
8122 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
8123
8124         * config/riscv/riscv.c (riscv_legitimize_move): Handle
8125         non-legitimate address.
8126
8127 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8128
8129         * config/rs6000/rs6000.md (*lt0_disi): Delete.
8130         (*lt0_<mode>di, *lt0_<mode>si): New.
8131
8132 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8133
8134         * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
8135         TARGET_PAIRED_FLOAT.
8136
8137 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
8138             Jim Wilson  <jim.wilson@linaro.org>
8139
8140         * config/aarch64/aarch64-cores.def (saphira): New CPU.
8141         * config/aarch64/aarch64-tune.md: Regenerated.
8142         * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
8143         * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
8144
8145 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
8146
8147         * config/arc/arc.c (arc_save_restore): Corrected CFA note.
8148         (arc_expand_prologue): Restore blink for millicode.
8149         * config/arc/linux.h (LINK_EH_SPEC): Defined.
8150
8151 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
8152
8153         PR target/82809
8154         * config/i386/i386.c (ix86_vector_duplicate_value): Use
8155         gen_vec_duplicate after forcing the scalar into a register.
8156
8157 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
8158
8159         * combine (try_combine): Print the insns input to try_combine to the
8160         dump file.
8161
8162 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
8163
8164         PR target/79868
8165         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
8166         Remove second argument from aarch64_process_target_attr call.
8167         * config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
8168         Ditto.
8169         * config/aarch64/aarch64.c (aarch64_attribute_info): Change
8170         field type.
8171         (aarch64_handle_attr_arch): Remove second argument.
8172         (aarch64_handle_attr_cpu): Ditto.
8173         (aarch64_handle_attr_tune): Ditto.
8174         (aarch64_handle_attr_isa_flags): Ditto.
8175         (aarch64_process_one_target_attr): Ditto.
8176         (aarch64_process_target_attr): Ditto.
8177         (aarch64_option_valid_attribute_p): Remove second argument.
8178         on aarch64_process_target_attr call.
8179
8180 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8181
8182         * diagnostic.c: Include "selftest-diagnostic.h".
8183         (selftest::assert_location_text): New function.
8184         (selftest::test_diagnostic_get_location_text): New function.
8185         (selftest::diagnostic_c_tests): Call it.
8186
8187 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8188
8189         * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
8190         * diagnostic-show-locus.c: Include "selftest-diagnostic.h".
8191         (class selftest::test_diagnostic_context): Move to...
8192         * selftest-diagnostic.c: New file.
8193         * selftest-diagnostic.h: New file.
8194
8195 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
8196
8197         * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
8198         offset range for FT32B.
8199         * config/ft32/ft32.h: option "mcompress" enables relaxation.
8200         * config/ft32/ft32.md: Add TARGET_NOPM.
8201         * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
8202         * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
8203
8204 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
8205
8206         * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
8207
8208 2017-11-02  Jeff Law  <law@redhat.com>
8209
8210         * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
8211         virtual keyword on FINAL OVERRIDE members.
8212
8213         * tree-ssa-propagate.h (ssa_propagation_engine): Group
8214         virtuals together.  Add virtual destructor.
8215         (substitute_and_fold_engine): Similarly.
8216
8217 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
8218
8219         * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
8220
8221 2017-11-02  Richard Biener  <rguenther@suse.de>
8222
8223         PR tree-optimization/82795
8224         * tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
8225
8226 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8227
8228         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
8229         gcc_SUN_LD_VERSION.
8230         (gcc_GAS_CHECK_FEATURE): Remove.
8231         * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
8232         gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
8233         * configure: Regenerate.
8234
8235 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
8236
8237         * config/arc/arc.c (hwloop_optimize): Account for empty
8238         body loops.
8239
8240 2017-11-02  Richard Biener  <rguenther@suse.de>
8241
8242         PR middle-end/82765
8243         * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
8244         Truncate ARRAY_REF index and element size.
8245
8246 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8247
8248         * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
8249
8250 2017-11-01  Jeff Law  <law@redhat.com>
8251
8252         * tree-ssa-ccp.c (ccp_folder): New class derived from
8253         substitute_and_fold_engine.
8254         (ccp_folder::get_value): New member function.
8255         (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
8256         (ccp_fold_stmt): Remove prototype.
8257         (ccp_finalize): Call substitute_and_fold from the ccp_class.
8258         * tree-ssa-copy.c (copy_folder): New class derived from
8259         substitute_and_fold_engine.
8260         (copy_folder::get_value): Renamed from get_value.
8261         (fini_copy_prop): Call substitute_and_fold from copy_folder class.
8262         * tree-vrp.c (vrp_folder): New class derived from
8263         substitute_and_fold_engine.
8264         (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
8265         (vrp_folder::get_value): New member function.
8266         (vrp_finalize): Call substitute_and_fold from vrp_folder class.
8267         (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
8268         * tree-ssa-propagate.h (substitute_and_fold_engine): New class to
8269         provide a class interface to folder/substitute routines.
8270         (ssa_prop_fold_stmt_fn): Remove typedef.
8271         (ssa_prop_get_value_fn): Likewise.
8272         (subsitute_and_fold): Remove prototype.
8273         (replace_uses_in): Likewise.
8274         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
8275         Renamed from replace_uses_in.  Call the virtual member function
8276         (substitute_and_fold_engine::replace_phi_args_in): Similarly.
8277         (substitute_and_fold_dom_walker): Remove initialization of
8278         data member entries for calbacks.  Add substitute_and_fold_engine
8279         member and initialize it.
8280         (substitute_and_fold_dom_walker::before_dom_children0: Use the
8281         member functions for get_value, replace_phi_args_in c
8282         replace_uses_in, and fold_stmt calls.
8283         (substitute_and_fold_engine::substitute_and_fold): Renamed from
8284         substitute_and_fold.  Remove assert.   Update ctor call.
8285
8286         * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
8287         (ssa_prop_visit_phi_fn): Likewise.
8288         (class ssa_propagation_engine): New class to provide an interface
8289         into ssa_propagate.
8290         * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
8291         variable.
8292         (ssa_prop_visit_phi): Likewise.
8293         (ssa_propagation_engine::simulate_stmt): Moved into class.
8294         Call visit_phi/visit_stmt from the class rather than via
8295         file scoped static variables.
8296         (ssa_propagation_engine::simulate_block): Moved into class.
8297         (ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
8298         (ssa_propagation_engine::ssa_propagate): Similarly.  No longer
8299         set file scoped statics for the visit_stmt/visit_phi callbacks.
8300         * tree-complex.c (complex_propagate): New class derived from
8301         ssa_propagation_engine.
8302         (complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
8303         (complex_propagate::visit_phi): Renamed from complex_visit_phi.
8304         (tree_lower_complex): Call ssa_propagate via the complex_propagate
8305         class.
8306         * tree-ssa-ccp.c: (ccp_propagate): New class derived from
8307         ssa_propagation_engine.
8308         (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
8309         (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
8310         (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
8311         * tree-ssa-copy.c (copy_prop): New class derived from
8312         ssa_propagation_engine.
8313         (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
8314         (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
8315         (execute_copy_prop): Call ssa_propagate from the copy_prop class.
8316         * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
8317         (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
8318         (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
8319         (execute_vrp): Call ssa_propagate from the vrp_prop class.
8320
8321 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
8322
8323         PR rtl-optimization/82778
8324         PR rtl-optimization/82597
8325         * compare-elim.c (struct comparison): Add in_a_setter field.
8326         (find_comparison_dom_walker::before_dom_children): Remove killed
8327         bitmap and df_simulate_find_defs call, instead walk the defs.
8328         Compute last_setter and initialize in_a_setter.  Merge definitions
8329         with first initialization for a few variables.
8330         (try_validate_parallel): Use insn_invalid_p instead of
8331         recog_memoized.  Return insn rather than just the pattern.
8332         (try_merge_compare): Fix up comment.  Don't uselessly test if
8333         in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
8334         chains.
8335         (execute_compare_elim_after_reload): Remove df_chain_add_problem
8336         call.
8337
8338 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8339             Alan Hayward  <alan.hayward@arm.com>
8340             David Sherwood  <david.sherwood@arm.com>
8341
8342         * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
8343         aarch64_hard_regno_nregs to get the number of registers
8344         in a mode.
8345
8346 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8347             Alan Hayward  <alan.hayward@arm.com>
8348             David Sherwood  <david.sherwood@arm.com>
8349
8350         * config/aarch64/constraints.md (Upl): Rename to...
8351         (Uaa): ...this.
8352         * config/aarch64/aarch64.md
8353         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
8354         Update accordingly.
8355
8356 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8357             Alan Hayward  <alan.hayward@arm.com>
8358             David Sherwood  <david.sherwood@arm.com>
8359
8360         * config/aarch64/aarch64.c (aarch64_add_constant_internal)
8361         (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
8362         earlier in file.
8363
8364 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8365             Alan Hayward  <alan.hayward@arm.com>
8366             David Sherwood  <david.sherwood@arm.com>
8367
8368         * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
8369         (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
8370         (aarch64_evpc_dup): Generate rtl direcly, rather than using
8371         named expanders.
8372         (aarch64_expand_vec_perm_const_1): Explicitly check for permutes
8373         of a single element.
8374         * config/aarch64/iterators.md: Add a comment above the permute
8375         unspecs to say that they are generated directly by
8376         aarch64_expand_vec_perm_const.
8377         * config/aarch64/aarch64-simd.md: Likewise the permute instructions.
8378
8379 2017-11-01  Nathan Sidwell  <nathan@acm.org>
8380
8381         * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
8382
8383 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8384
8385         * doc/invoke.texi (RISC-V Options): Explicitly name the medlow
8386         and medany code models, and describe what they do.
8387
8388 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8389
8390         Revert accidental duplicate:
8391
8392         * combine.c (can_change_dest_mode): Reject changes in
8393         REGMODE_NATURAL_SIZE.
8394
8395 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
8396
8397         PR rtl-optimization/64682
8398         PR rtl-optimization/69567
8399         PR rtl-optimization/69737
8400         PR rtl-optimization/82683
8401         * combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
8402         register mentioned in the note, drop the note, unless it came from I3,
8403         in which case it should go to I3 again.
8404
8405 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8406
8407         * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
8408         and return false if not.
8409         (clear_bytes_written_by, live_bytes_read): Update accordingly.
8410
8411 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8412
8413         * tree-ssa-alias.h (ranges_overlap_p): Return false if either
8414         range is known to be empty.
8415
8416 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8417             Alan Hayward  <alan.hayward@arm.com>
8418             David Sherwood  <david.sherwood@arm.com>
8419
8420         * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
8421         and CONST_VECTOR_NUNITS instead of computing the number of units from
8422         the byte sizes of the vector and element.
8423         (simplify_binary_operation_1): Likewise.
8424         (simplify_const_binary_operation): Likewise.
8425         (simplify_ternary_operation): Likewise.
8426
8427 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8428             Alan Hayward  <alan.hayward@arm.com>
8429             David Sherwood  <david.sherwood@arm.com>
8430
8431         * var-tracking.c (INT_MEM_OFFSET): Replace with...
8432         (int_mem_offset): ...this new function.
8433         (var_mem_set, var_mem_delete_and_set, var_mem_delete)
8434         (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
8435         (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
8436         Update accordingly.
8437
8438 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8439             Alan Hayward  <alan.hayward@arm.com>
8440             David Sherwood  <david.sherwood@arm.com>
8441
8442         * lower-subreg.c (interesting_mode_p): New function.
8443         (compute_costs, find_decomposable_subregs, decompose_register)
8444         (simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
8445         (resolve_clobber, dump_choices): Use it.
8446
8447 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8448             Alan Hayward  <alan.hayward@arm.com>
8449             David Sherwood  <david.sherwood@arm.com>
8450
8451         * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
8452
8453 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8454             Alan Hayward  <alan.hayward@arm.com>
8455             David Sherwood  <david.sherwood@arm.com>
8456
8457         * alias.c (find_base_value, find_base_term): Only process integer
8458         truncations.  Check the precision rather than the size.
8459
8460 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8461             Alan Hayward  <alan.hayward@arm.com>
8462             David Sherwood  <david.sherwood@arm.com>
8463
8464         * machmode.h (is_narrower_int_mode): New function
8465         * optabs.c (expand_float, expand_fix): Use it.
8466         * dwarf2out.c (rotate_loc_descriptor): Likewise.
8467
8468 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8469             Alan Hayward  <alan.hayward@arm.com>
8470             David Sherwood  <david.sherwood@arm.com>
8471
8472         * rtl.h (narrower_subreg_mode): New function.
8473         * ira-color.c (update_costs_from_allocno): Use it.
8474
8475 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8476             Alan Hayward  <alan.hayward@arm.com>
8477             David Sherwood  <david.sherwood@arm.com>
8478
8479         * optabs-query.h (convert_optab_p): New function, split out from...
8480         (convert_optab_handler): ...here.
8481         (widening_optab_handler): Delete.
8482         (find_widening_optab_handler): Remove permit_non_widening parameter.
8483         (find_widening_optab_handler_and_mode): Likewise.  Provide an
8484         override that operates on mode class wrappers.
8485         * optabs-query.c (widening_optab_handler): Delete.
8486         (find_widening_optab_handler_and_mode): Remove permit_non_widening
8487         parameter.  Assert that the two modes are the same class and that
8488         the "from" mode is narrower than the "to" mode.  Use
8489         convert_optab_handler instead of widening_optab_handler.
8490         * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
8491         instead of widening_optab_handler.
8492         * expr.c (expand_expr_real_2): Update calls to
8493         find_widening_optab_handler.
8494         * optabs.c (expand_widen_pattern_expr): Likewise.
8495         (expand_binop_directly): Take the insn_code as a parameter.
8496         (expand_binop): Only call find_widening_optab_handler for
8497         conversion optabs; use optab_handler otherwise.  Update calls
8498         to find_widening_optab_handler and expand_binop_directly.
8499         Use convert_optab_handler instead of widening_optab_handler.
8500         * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
8501         find_widening_optab_handler and use scalar_mode rather than
8502         machine_mode.
8503         (convert_plusminus_to_widen): Likewise.
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         * machmode.h (fixed_size_mode): New class.
8510         * rtl.h (get_pool_mode): Return fixed_size_mode.
8511         * gengtype.c (main): Add fixed_size_mode.
8512         * target.def (get_raw_result_mode): Return a fixed_size_mode.
8513         (get_raw_arg_mode): Likewise.
8514         * doc/tm.texi: Regenerate.
8515         * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
8516         * targhooks.c (default_get_reg_raw_mode): Likewise.
8517         * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
8518         * config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
8519         * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
8520         (msp430_get_raw_result_mode): Likewise.
8521         * config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
8522         * dbxout.c (dbxout_parms): Require fixed-size modes.
8523         * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
8524         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
8525         * omp-low.c (lower_oacc_reductions): Likewise.
8526         * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
8527         (simplify_subreg): Update accordingly.
8528         * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
8529         (force_const_mem): Update accordingly.  Return NULL_RTX for modes
8530         that aren't fixed-size.
8531         (get_pool_mode): Return a fixed_size_mode.
8532         (output_constant_pool_2): Take a fixed_size_mode.
8533
8534 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8535             Alan Hayward  <alan.hayward@arm.com>
8536             David Sherwood  <david.sherwood@arm.com>
8537
8538         * doc/rtl.texi (vec_series): Document.
8539         (const): Say that the operand can be a vec_series.
8540         * rtl.def (VEC_SERIES): New rtx code.
8541         * rtl.h (const_vec_series_p_1): Declare.
8542         (const_vec_series_p): New function.
8543         * emit-rtl.h (gen_const_vec_series): Declare.
8544         (gen_vec_series): Likewise.
8545         * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
8546         (gen_vec_series): Likewise.
8547         * optabs.c (expand_mult_highpart): Use gen_const_vec_series.
8548         * simplify-rtx.c (simplify_unary_operation): Handle negations
8549         of vector series.
8550         (simplify_binary_operation_series): New function.
8551         (simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
8552         (test_vector_ops_series): New function.
8553         (test_vector_ops): Call it.
8554         * config/powerpcspe/altivec.md (altivec_lvsl): Use
8555         gen_const_vec_series.
8556         (altivec_lvsr): Likewise.
8557         * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
8558
8559 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8560             Alan Hayward  <alan.hayward@arm.com>
8561             David Sherwood  <david.sherwood@arm.com>
8562
8563         * doc/rtl.texi (const): Update description of address constants.
8564         Say that vector constants are allowed too.
8565         * common.md (E, F): Use CONSTANT_P instead of checking for
8566         CONST_VECTOR.
8567         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
8568         checking for CONST_VECTOR.
8569         * expmed.c (make_tree): Use build_vector_from_val for a CONST
8570         VEC_DUPLICATE.
8571         * expr.c (expand_expr_real_2): Check for vector modes instead
8572         of checking for CONST_VECTOR.
8573         * rtl.h (const_vec_p): New function.
8574         (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
8575         (unwrap_const_vec_duplicate): Handle them here too.
8576
8577 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8578             David Malcolm  <dmalcolm@redhat.com>
8579             Alan Hayward  <alan.hayward@arm.com>
8580             David Sherwood  <david.sherwood@arm.com>
8581
8582         * rtl.h (vec_duplicate_p): New function.
8583         * selftest-rtl.c (assert_rtx_eq_at): New function.
8584         * selftest-rtl.h (ASSERT_RTX_EQ): New macro.
8585         (assert_rtx_eq_at): Declare.
8586         * selftest.h (selftest::simplify_rtx_c_tests): Declare.
8587         * selftest-run-tests.c (selftest::run_tests): Call it.
8588         * simplify-rtx.c: Include selftest.h and selftest-rtl.h.
8589         (simplify_unary_operation_1): Recursively handle vector duplicates.
8590         (simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
8591         vector duplicates.
8592         (simplify_subreg): Handle subregs of vector duplicates.
8593         (make_test_reg, test_vector_ops_duplicate, test_vector_ops)
8594         (selftest::simplify_rtx_c_tests): New functions.
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         * emit-rtl.h (gen_const_vec_duplicate): Declare.
8601         (gen_vec_duplicate): Likewise.
8602         * emit-rtl.c (gen_const_vec_duplicate_1): New function, split
8603         out from...
8604         (gen_const_vector): ...here.
8605         (gen_const_vec_duplicate, gen_vec_duplicate): New functions.
8606         (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
8607         whose elements are all equal.
8608         * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
8609         * simplify-rtx.c (simplify_const_unary_operation): Likewise.
8610         (simplify_relational_operation): Likewise.
8611         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
8612         Likewise.
8613         (aarch64_simd_dup_constant): Use gen_vec_duplicate.
8614         (aarch64_expand_vector_init): Likewise.
8615         * config/arm/arm.c (neon_vdup_constant): Likewise.
8616         (neon_expand_vector_init): Likewise.
8617         (arm_expand_vec_perm): Use gen_const_vec_duplicate.
8618         (arm_block_set_unaligned_vect): Likewise.
8619         (arm_block_set_aligned_vect): Likewise.
8620         * config/arm/neon.md (neon_copysignf<mode>): Likewise.
8621         * config/i386/i386.c (ix86_expand_vec_perm): Likewise.
8622         (expand_vec_perm_even_odd_pack): Likewise.
8623         (ix86_vector_duplicate_value): Use gen_vec_duplicate.
8624         * config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
8625         * config/ia64/ia64.c (ia64_expand_vecint_compare): Use
8626         gen_const_vec_duplicate.
8627         * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
8628         * config/mips/mips.c (mips_gen_const_int_vector): Use
8629         gen_const_vec_duplicate.
8630         (mips_expand_vector_init): Use CONST0_RTX.
8631         * config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
8632         (define_split): Use gen_const_vec_duplicate.
8633         * config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
8634         (define_split): Use gen_const_vec_duplicate.
8635         * config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
8636         (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
8637         * config/spu/spu.c (spu_const): Likewise.
8638
8639 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8640             Alan Hayward  <alan.hayward@arm.com>
8641             David Sherwood  <david.sherwood@arm.com>
8642
8643         * combine.c (can_change_dest_mode): Reject changes in
8644         REGMODE_NATURAL_SIZE.
8645
8646 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
8647
8648         * configure.ac (--enable-libssp): New.
8649         (gcc_cv_libc_provides_ssp): Check for explicit setting before
8650         trying to determine target-specific default.  Adjust indentation.
8651         * configure: Regenerated.
8652         * doc/install.texi (Configuration): Expand --disable-libssp
8653         documentation.
8654
8655 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
8656
8657         config/i386/i386.c (ix86_expand_epilogue): Correct stack
8658         calculation.
8659
8660 2017-10-31  Martin Jambor  <mjambor@suse.cz>
8661
8662         PR c++/81702
8663         * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
8664
8665 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
8666
8667         * auto-profile.c (autofdo_source_profile::read): Use
8668         UNKNOWN_LOCATION rather than 0.
8669         * diagnostic-core.h (warning_at_rich_loc): Rename to...
8670         (warning_at): ...this overload.
8671         (warning_at_rich_loc_n): Rename to...
8672         (warning_n): ...this overload.
8673         (error_at_rich_loc): Rename to...
8674         (error_at): ...this overload.
8675         (pedwarn_at_rich_loc): Rename to...
8676         (pedwarn): ...this overload.
8677         (permerror_at_rich_loc): Rename to...
8678         (permerror): ...this overload.
8679         (inform_at_rich_loc): Rename to...
8680         (inform): ...this overload.
8681         * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
8682         (diagnostic_n_impl_richloc): Rename to...
8683         (diagnostic_n_impl): ...this rich_location *-based decl.
8684         (inform_at_rich_loc): Rename to...
8685         (inform): ...this, and add an assertion.
8686         (inform_n): Update for removal of location_t-based diagnostic_n_impl.
8687         (warning_at_rich_loc): Rename to...
8688         (warning_at): ...this, and add an assertion.
8689         (warning_at_rich_loc_n): Rename to...
8690         (warning_n): ...this, and add an assertion.
8691         (warning_n): Update location_t-based implementation for removal of
8692         location_t-based diagnostic_n_impl.
8693         (pedwarn_at_rich_loc): Rename to...
8694         (pedwarn): ...this, and add an assertion.
8695         (permerror_at_rich_loc): Rename to...
8696         (permerror): ...this, and add an assertion.
8697         (error_n): Update for removal of location_t-based diagnostic_n_impl.
8698         (error_at_rich_loc): Rename to...
8699         (error_at): ...this, and add an assertion.
8700         * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
8701         (driver::do_spec_on_infiles): Likewise.
8702         * substring-locations.c (format_warning_va): Update for renaming
8703         of inform_at_rich_loc.
8704
8705 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
8706
8707         * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
8708         _Float<N>X built-in functions so that the variant without the
8709         "__builtin_" prefix is only enabled for the GNU C and Objective C
8710         languages when they are in non-strict ANSI/ISO mode.
8711         (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
8712         * target.def (floatn_builtin_p): Add a target hook to control
8713         whether _Float<N> and _Float<N>X built-in functions without the
8714         "__builtin_" prefix are enabled, and return true for C and
8715         Objective C in the default hook.  Include langhooks.h in
8716         targhooks.c.
8717         * targhooks.h (default_floatn_builtin_p): Likewise.
8718         * targhooks.c (default_floatn_builtin_p): Likewise.
8719         * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
8720         floatn_builtin_p target hook.
8721         * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
8722
8723 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
8724             Eric Botcazou  <ebotcazou@adacore.com>
8725
8726         PR rtl-optimization/81803
8727         * lra-constraints.c (curr_insn_transform): Also reload the whole
8728         register for a strict subreg no wider than a word if this is for
8729         a WORD_REGISTER_OPERATIONS target.
8730
8731 2017-10-31  Jason Merrill  <jason@redhat.com>
8732
8733         * gdbinit.in: Skip over inlines from timevar.h.
8734
8735 2017-10-31  Martin Liska  <mliska@suse.cz>
8736
8737         * doc/gcov.texi: Document new option.
8738         * gcov.c (print_usage): Likewise print it.
8739         (process_args): Support the argument.
8740         (format_count): New function.
8741         (format_gcov): Use the function.
8742
8743 2017-10-31  Martin Liska  <mliska@suse.cz>
8744
8745         * gcov.c (struct name_map): do not use typedef.
8746         Define operator== and operator<.
8747         (name_search): Remove.
8748         (name_sort): Remove.
8749         (main): Do not allocate names.
8750         (process_file): Add vertical space.
8751         (generate_results): Use std::find.
8752         (release_structures): Do not release memory.
8753         (find_source): Use std::find.
8754
8755 2017-10-31  Martin Liska  <mliska@suse.cz>
8756
8757         * gcov.c (struct line_info): Remove it's typedef.
8758         (line_info::line_info): Add proper ctor.
8759         (line_info::has_block): Do not use a typedef.
8760         (struct source_info): Do not use typedef.
8761         (circuit): Likewise.
8762         (get_cycles_count): Likewise.
8763         (output_intermediate_file): Iterate via vector iterator.
8764         (add_line_counts): Use std::vector methods.
8765         (accumulate_line_counts): Likewise.
8766         (output_lines): Likewise.
8767
8768 2017-10-31  Martin Liska  <mliska@suse.cz>
8769
8770         * gcov.c (struct source_info): Remove typedef.
8771         (source_info::source_info): Add proper ctor.
8772         (accumulate_line_counts): Use struct, not it's typedef.
8773         (output_gcov_file): Likewise.
8774         (output_lines): Likewise.
8775         (main): Do not allocate an array.
8776         (output_intermediate_file): Use size of vector container.
8777         (process_file): Resize the vector.
8778         (generate_results): Do not preallocate, use newly added vector
8779         lines.
8780         (release_structures): Do not release sources.
8781         (find_source): Use vector methods.
8782         (add_line_counts): Do not use typedef.
8783
8784 2017-10-31  Martin Liska  <mliska@suse.cz>
8785
8786         * doc/gcov.texi: Document that.
8787         * gcov.c (add_line_counts): Mark lines with a non-executed
8788         statement.
8789         (output_line_beginning): Handle such lines.
8790         (output_lines): Pass new argument.
8791         (output_intermediate_file): Print it in intermediate format.
8792
8793 2017-10-31  Martin Liska  <mliska@suse.cz>
8794
8795         * color-macros.h: New file.
8796         * diagnostic-color.c: Factor out color related to macros to
8797         color-macros.h.
8798         * doc/gcov.texi: Document -k option.
8799         * gcov.c (INCLUDE_STRING): Include string.h.
8800         (print_usage): Add -k option.
8801         (process_args): Parse it.
8802         (pad_count_string): New function.
8803         (output_line_beginning): Likewise.
8804         (DEFAULT_LINE_START): New macro.
8805         (output_lines): Support color output.
8806
8807 2017-10-31  Martin Liska  <mliska@suse.cz>
8808
8809         PR gcov-profile/82633
8810         * doc/gcov.texi: Document -fkeep-{static,inline}-functions and
8811         their interaction with GCOV infrastructure.
8812         * configure.ac: Add -fkeep-{inline,static}-functions to
8813         coverage_flags.
8814         * configure: Regenerate.
8815
8816 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
8817
8818         PR target/82772
8819         * config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
8820
8821 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
8822
8823         PR target/82674
8824         * config/rs6000/rs6000.md (allocate_stack): Force update interval
8825         into a register if it does not fit into an immediate offset field.
8826
8827 2017-10-31  Olivier Hainque  <hainque@adacore.com>
8828
8829         * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
8830
8831 2017-10-31  Julia Koval  <julia.koval@intel.com>
8832
8833         * config.gcc: Add gfniintrin.h.
8834         * config/i386/gfniintrin.h: New.
8835         * config/i386/i386-builtin-types.def
8836         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
8837         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
8838         __builtin_ia32_vgf2p8affineinvqb_v32qi,
8839         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
8840         __builtin_ia32_vgf2p8affineinvqb_v16qi,
8841         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
8842         * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
8843         V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
8844         V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
8845         V64QI_FTYPE_V64QI_V64QI_INT): New types.
8846         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
8847         * config/i386/immintrin.h: Include gfniintrin.h.
8848         * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
8849
8850 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
8851
8852         * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
8853
8854 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
8855
8856         * config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
8857         (arm_ashldi3_1bit): Remove pattern.
8858         (ashrdi3): Remove shift by 1 expansion.
8859         (arm_ashrdi3_1bit): Remove pattern.
8860         (lshrdi3): Remove shift by 1 expansion.
8861         (arm_lshrdi3_1bit): Remove pattern.
8862         * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
8863         cost of ashldi3 by 1.
8864         * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
8865         (<shift>di3_neon): Likewise.
8866
8867 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
8868
8869         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
8870         both identically named patterns to (*aarch64_simd_mov<VD:mode>)
8871         and (*aarch64_simd_mov<VQ:mode>).
8872         (*aarch64_simd_mov<VD:mode>): Change type attribute to match
8873         pattern alternative.
8874         (*aarch64_simd_mov<VQ:mode>): Re-order and change type
8875         attributes to match pattern alternative.
8876
8877 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
8878
8879         * config.gcc (powerpc*-*-*): Add emmintrin.h.
8880         * config/rs6000/emmintrin.h: New file.
8881         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
8882
8883 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
8884
8885         * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
8886         * (movdi_vfp_cortexa8): Remove pattern.
8887
8888 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8889
8890         * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
8891         etc. reference.
8892         (Specific, alpha*-dec-osf5.1): Remove.
8893         (Specific, mips-sgi-irix5): Remove.
8894         (Specific, mips-sgi-irix6): Remove.
8895
8896 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
8897
8898         PR middle-end/22141
8899         * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
8900         arguments to clear_bit_region_be.
8901
8902 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
8903
8904         * gimplify.c: Include memmodel.h.
8905
8906 2017-10-30  Martin Jambor  <mjambor@suse.cz>
8907
8908         * omp-grid.c (grid_attempt_target_gridification): Also insert a
8909         condition whether loop should be executed at all.
8910
8911 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
8912
8913         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
8914         gimple folding of vec_madd() intrinsics.
8915         * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
8916         fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
8917         * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
8918
8919 2017-10-30  Richard Biener  <rguenther@suse.de>
8920
8921         PR tree-optimization/82762
8922         Revert
8923         2017-10-23  Richard Biener  <rguenther@suse.de>
8924
8925         PR tree-optimization/82129
8926         Revert
8927         2017-08-01  Richard Biener  <rguenther@suse.de>
8928
8929         PR tree-optimization/81181
8930         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
8931         (compute_antic): ... end of iteration here.
8932
8933 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
8934
8935         * doc/invoke.texi (C Dialect Options): Document -std=c17,
8936         -std=iso9899:2017 and -std=gnu17.
8937         * doc/standards.texi (C Language): Document C17 support.
8938         * doc/cpp.texi (Overview): Mention -std=c17.
8939         (Standard Predefined Macros): Document C11 and C17 values of
8940         __STDC_VERSION__.  Do not refer to C99 support as incomplete.
8941         * doc/extend.texi (Inline): Do not list individual options for
8942         standards newer than C99.
8943         * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
8944         "GNU C17".
8945         * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
8946         language name.
8947
8948 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
8949
8950         * asan.c (asan_finish_file): Align asan globals array by shadow
8951         granularity.
8952
8953 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
8954
8955         PR middle-end/22141
8956         * gimple-ssa-store-merging.c: Include rtl.h and expr.h.
8957         (struct store_immediate_info): Add bitregion_start and bitregion_end
8958         fields.
8959         (store_immediate_info::store_immediate_info): Add brs and bre
8960         arguments and initialize bitregion_{start,end} from those.
8961         (struct merged_store_group): Add bitregion_start, bitregion_end,
8962         align_base and mask fields.  Drop unnecessary struct keyword from
8963         struct store_immediate_info.  Add do_merge method.
8964         (clear_bit_region_be): Use memset instead of loop storing zeros.
8965         (merged_store_group::do_merge): New method.
8966         (merged_store_group::merge_into): Use do_merge.  Allow gaps in between
8967         stores as long as the surrounding bitregions have no gaps.
8968         (merged_store_group::merge_overlapping): Use do_merge.
8969         (merged_store_group::apply_stores): Test that bitregion_{start,end}
8970         is byte aligned, rather than requiring that start and width are
8971         byte aligned.  Drop unnecessary struct keyword from
8972         struct store_immediate_info.  Allocate and populate also mask array.
8973         Make start of the arrays relative to bitregion_start rather than
8974         start and size them according to bitregion_{end,start} difference.
8975         (struct imm_store_chain_info): Drop unnecessary struct keyword from
8976         struct store_immediate_info.
8977         (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
8978         (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
8979         struct keyword from struct store_immediate_info.
8980         (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
8981         between stores as long as the surrounding bitregions have no gaps.
8982         Formatting fixes.
8983         (struct split_store): Add orig non-static data member.
8984         (split_store::split_store): Initialize orig to false.
8985         (find_constituent_stmts): Return store_immediate_info *, non-NULL
8986         if there is exactly a single original stmt.  Change stmts argument
8987         to pointer from reference, if NULL, don't push anything to it.  Add
8988         first argument, use it to optimize skipping over orig stmts that
8989         are known to be before bitpos already.  Simplify.
8990         (split_group): Return unsigned int count how many stores are or
8991         would be needed rather than a bool.  Add allow_unaligned argument.
8992         Change split_stores argument from reference to pointer, if NULL,
8993         only do a dry run computing how many stores would be produced.
8994         Rewritten algorithm to use both alignment and misalign if
8995         !allow_unaligned and handle bitfield stores with gaps.
8996         (imm_store_chain_info::output_merged_store): Set start_byte_pos
8997         from bitregion_start instead of start.  Compute allow_unaligned
8998         here, if true, do 2 split_group dry runs to compute which one
8999         produces fewer stores and prefer aligned if equal.  Punt if
9000         new count is bigger or equal than original before emitting any
9001         statements, rather than during that.  Remove no longer needed
9002         new_ssa_names tracking.  Replace num_stmts with
9003         split_stores.length ().  Use 32-bit stack allocated entries
9004         in split_stores auto_vec.  Try to reuse original store lhs/rhs1
9005         if possible.  Handle bitfields with gaps.
9006         (pass_store_merging::execute): Ignore bitsize == 0 stores.
9007         Compute bitregion_{start,end} for the stores and construct
9008         store_immediate_info with that.  Formatting fixes.
9009
9010 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
9011
9012         PR target/82725
9013         * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
9014         UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
9015
9016 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
9017
9018         * gimplify.c: Include tm_p.h.
9019
9020         * common.opt (gcoff): Re-add as ignored option.
9021         (gcoff1, gcoff2, gcoff3): Likewise.
9022
9023         * Makefile.in (OBJS): Delete sdbout.o.
9024         (GTFILES): Delete $(srcdir)/sdbout.c.
9025         * debug.h: Delete sdb_debug_hooks.
9026         * final.c: Delete sdbout.h include.
9027         (final_scan_insn): Delete SDB_DEBUG check.
9028         (rest_of_clean_state): Likewise.
9029         * output.h: Delete sdb_begin_function_line.
9030         * sdbout.c: Delete.
9031         * sdbout.h: Delete.
9032         * toplev.c: Delete sdbout.h include.
9033         (process_options): Delete SDB_DEBUG check.
9034         * tree-core.h (tree_type_common): Delete pointer field of
9035         tree_type_symtab.
9036         * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
9037         TYPE_SYMTAB_POINTER.
9038         * tree.h (TYPE_SYMTAB_POINTER): Delete.
9039         (TYPE_SYMTAB_IS_POINTER): Delete.
9040         (TYPE_SYMTAB_IS_DIE): Renumber.
9041         * xcoffout.c: Refer to former sdbout.c file.
9042         (xcoffout_begin_prologue): Use past tense for sdbout.c reference.
9043
9044         * doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
9045         * doc/invoke.texi (SEEALSO): Delete adb and sdb references.
9046         (Debugging Options): Delete -gcoff.
9047         (-gstabs): Delete SDB reference.
9048         (-gcoff): Delete.
9049         (-gcoff@var{level}): Delete.
9050         * doc/passes.texi (Debugging information output): Delete SDB and
9051         sdbout.c references.
9052         * doc/tm.texi: Regenerate.
9053         * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
9054         (SDB and DWARF): Change node name to DWARF and delete SDB and COFF
9055         references.
9056         (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
9057         (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
9058         (SDB_DEBUGGING_INFO): Delete.
9059         (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
9060         SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
9061         * target.def (output_source_filename): Delete COFF reference.
9062
9063         * common.opt (gcoff): Delete.
9064         (gxcoff+): Update Negative chain.
9065         * defaults.h: Delete all references to SDB_DEBUGGING_INFO and
9066         SDB_DEBUG.
9067         * dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
9068         * flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
9069         * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
9070         and SDB references.
9071         (expand_function_start): Change sdb reference to past tense.
9072         (expand_function_end): Change sdb reference to past tense.
9073         * gcc.c (cpp_unique_options): Delete gcoff3 reference.
9074         * opts.c (debug_type_names): Delete coff entry.
9075         (common_handle_option): Delete OPT_gcoff case.
9076         * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
9077
9078         * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
9079         * config/cris/cris.h: Delete SDB reference in comment.
9080         * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
9081         (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
9082         * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
9083         * config/i386/i386.c (svr4_dbx_register_map): Change SDB references
9084         to past tense.
9085         (ix86_expand_prologue): Likewise.
9086         * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
9087         * config/ia64/ia64.h: Likewise.
9088         * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
9089         * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
9090         support.
9091         * config/mmix/mmix.h: Likewise.
9092         * config/nds32/nds32.c: Likewise.
9093         * config/stormy/storym16.h: Likewise.
9094         * config/visium/visium.h: Likewise.
9095         * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
9096
9097 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
9098
9099         * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
9100         * config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
9101         FRAME_POINTER_REGNUM point at high end of local var area.
9102
9103 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
9104
9105         * bb-reorder.c (find_traces_1_round): Fix off-by-one index.
9106         Move comment around.  Do not reset best_edge for a copiable
9107         destination if the copy would cause a partition change.
9108         (better_edge_p): Remove redundant check.
9109
9110 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9111
9112         * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
9113
9114 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9115
9116         * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
9117         for math functions that have _Float<N> and _Float<N>X variants.
9118         (mathfn_built_in_2): Add support for math functions that have
9119         _Float<N> and _Float<N>X variants.
9120         (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
9121         (expand_builtin_mathfn_ternary): Add support for fma with
9122         _Float<N> and _Float<N>X variants.
9123         (expand_builtin): Likewise.
9124         (fold_builtin_3): Likewise.
9125         * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
9126         create math function _Float<N> and _Float<N>X variants as external
9127         library builtins.
9128         (BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
9129         DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
9130         the __builtin_ prefix and if not strict ansi, without the prefix.
9131         (BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
9132         (BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
9133         (BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
9134         (BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
9135         (BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
9136         (BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
9137         * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
9138         function signatures for fma _Float<N> and _Float<N>X variants.
9139         (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
9140         (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
9141         (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
9142         (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
9143         (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
9144         (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
9145         * gencfn-macros.c (print_case_cfn): Add support for math functions
9146         that have _Float<N> and _Float<N>X variants.
9147         (print_define_operator_list): Likewise.
9148         (fltfn_suffixes): Likewise.
9149         (main): Likewise.
9150         * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
9151         for math functions that have _Float<N> and _Float<N>X variants.
9152         (SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
9153         and _Float<N>X variants.
9154         (COPYSIGN): Likewise.
9155         (FMIN): Likewise.
9156         (FMAX): Likewise.
9157         * fold-const.c (tree_call_nonnegative_warnv_p): Add support for
9158         copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
9159         variants.
9160         (integer_valued_read_call_p): Likewise.
9161         * fold-const-call.c (fold_const_call_ss): Likewise.
9162         (fold_const_call_sss): Add support for copysign, fmin, and fmax
9163         _Float<N> and _Float<N>X variants.
9164         (fold_const_call_ssss): Add support for fma _Float<N> and
9165         _Float<N>X variants.
9166         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
9167         support for copysign and fma _Float<N> and _Float<N>X variants.
9168         (backprop::process_builtin_call_use): Likewise.
9169         * tree-call-cdce.c (can_test_argument_range); Add support for
9170         sqrt _Float<N> and _Float<N>X variants.
9171         (edom_only_function): Likewise.
9172         (get_no_error_domain): Likewise.
9173         * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
9174         * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
9175         copysign _Float<N> and _Float<N>X variants.
9176         * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
9177         handled by machine independent code.
9178         (FMAF128): Likewise.
9179         * doc/cpp.texi (Common Predefined Macros): Document defining
9180         __FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
9181         fma _Float<N> and _Float<N>X variants.
9182
9183 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9184
9185         PR target/82692
9186         * config/i386/i386-modes.def (CCFPU): Remove definition.
9187         * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
9188         (ix86_cc_modes_compatible): Ditto.
9189         (ix86_expand_carry_flag_compare): Ditto.
9190         (ix86_expand_int_movcc): Ditto.
9191         (ix86_expand_int_addcc): Ditto.
9192         (ix86_reverse_condition): Ditto.
9193         (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
9194         Return true/false for unordered/ordered fp comparisons.
9195         (ix86_cc_mode): Always return CCFPmode for float mode comparisons.
9196         (ix86_prepare_fp_compare_args): Update for rename.
9197         (ix86_expand_fp_compare): Update for rename.  Generate unordered
9198         compare RTXes wrapped with UNSPEC_NOTRAP unspec.
9199         (ix86_expand_sse_compare_and_jump): Ditto.
9200         * config/i386/predicates.md (fcmov_comparison_operator):
9201         Remove CCFPU mode handling.
9202         (ix86_comparison_operator): Ditto.
9203         (ix86_carry_flag_operator): Ditto.
9204         * config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
9205         (*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
9206         (*cmpu<mode>_cc_i387): Ditto.
9207         (FPCMP): Remove mode iterator.
9208         (unord): Remove mode attribute.
9209         (unord_subst): New define_subst transformation
9210         (unord): New define_subst attribute.
9211         (unordered): Ditto.
9212         (*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
9213         (*cmpi<unord>xf_i387): Ditto.
9214         * config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
9215         from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
9216         using unord_subst transformation.
9217         * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
9218         (round_saeonly): Also handle CCFP mode.
9219         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
9220         Remove UNSPEC_SAHF unspec handling.
9221
9222 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9223
9224         * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
9225
9226 2017-10-27  Jeff Law  <law@redhat.com>
9227
9228         * gimple-ssa-sprintf.c: Include domwalk.h.
9229         (class sprintf_dom_walker): New class, derived from dom_walker.
9230         (sprintf_dom_walker::before_dom_children): New function.
9231         (struct call_info): Moved into sprintf_dom_walker class
9232         (compute_formath_length, handle_gimple_call): Likewise.
9233         (sprintf_length::execute): Call the dominator walker rather
9234         than walking the statements.
9235
9236         * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
9237         gimple statement locations.
9238         (check_array_bounds): Corresponding changes.  Get the statement's
9239         location directly from wi->stmt.
9240
9241 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
9242
9243         PR target/82717
9244         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
9245
9246 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9247
9248         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
9249         X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
9250
9251 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
9252
9253         PR target/82703
9254         * config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
9255         * config/i386/i386.c (maybe_get_pool_constant): Removed.
9256         (ix86_split_to_parts): Use avoid_constant_pool_reference instead of
9257         maybe_get_pool_constant.
9258         * config/i386/predicates.md (zero_extended_scalar_load_operand):
9259         Likewise.
9260
9261 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9262
9263         * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
9264         2.26 caveat.  Update gas and gld versions.
9265         (Specific, *-*-solaris2*): Update binutils version.  Remove caveat
9266         reference.
9267
9268 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9269
9270         * cgraph.h (set_malloc_flag): Declare.
9271         * cgraph.c (set_malloc_flag_1): New function.
9272         (set_malloc_flag): Likewise.
9273         * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
9274         * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
9275         false.
9276         (read_ipa_call_summary): Add support for reading is_return_callee.
9277         (write_ipa_call_summary): Stream is_return_callee.
9278         * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
9279         * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
9280         ipa-prop.h, ipa-fnsummary.h.
9281         (pure_const_names): Change to static.
9282         (malloc_state_e): Define.
9283         (malloc_state_names): Define.
9284         (funct_state_d): Add field malloc_state.
9285         (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
9286         (check_retval_uses): New function.
9287         (malloc_candidate_p): Likewise.
9288         (analyze_function): Add support for malloc attribute.
9289         (pure_const_write_summary): Stream malloc_state.
9290         (pure_const_read_summary): Add support for reading malloc_state.
9291         (dump_malloc_lattice): New function.
9292         (propagate_malloc): New function.
9293         (warn_function_malloc): New function.
9294         (ipa_pure_const::execute): Call propagate_malloc and
9295         ipa_free_fn_summary.
9296         (pass_local_pure_const::execute): Add support for malloc attribute.
9297         * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
9298         * doc/invoke.texi: Document Wsuggest-attribute=malloc.
9299
9300 2017-10-27  Martin Liska  <mliska@suse.cz>
9301
9302         PR gcov-profile/82457
9303         * doc/invoke.texi: Document that one needs a non-strict ISO mode
9304         for fork-like functions to be properly instrumented.
9305
9306 2017-10-27  Richard Biener  <rguenther@suse.de>
9307
9308         PR middle-end/81659
9309         * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
9310         info when we redirected EH.
9311
9312 2017-10-26  Michael Collison  <michael.collison@arm.com>
9313
9314         * config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
9315         New pattern.
9316         (<optab>_trunchf<GPI:mode>2: New pattern.
9317         (<optab>_trunc<vgp><GPI:mode>2: New pattern.
9318         * config/aarch64/iterators.md (wv): New mode attribute.
9319         (vf, VF): New mode attributes.
9320         (vgp, VGP): New mode attributes.
9321         (s): Update attribute with SImode and DImode prefixes.
9322
9323 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9324
9325         * config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
9326         * config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
9327         * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
9328         (nios2_option_overide): Initialize it.  Don't allow R0-relative
9329         addressing with PIC.
9330         (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
9331         (nios2_symbolic_constant_p): Likewise.
9332         (nios2_legitimate_address_p): Likewise.
9333         (nios2_r0rel_section_name_p): New.
9334         (nios2_symbol_ref_in_r0rel_data_p): New.
9335         (nios2_emit_move_sequence): Handle r0rel_constant_p.
9336         (r0rel_constant_p): New.
9337         (nios2_print_operand_address): Handle r0rel_constant_p.
9338         (nios2_cdx_narrow_form_p): Likewise.
9339         * config/nios2/nios2.opt (mr0rel-sec=): New option.
9340         * doc/invoke.texi (Option Summary): Add -mr0rel-sec.
9341         (Nios II Options): Document -mr0rel-sec.
9342
9343 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9344
9345         * config/nios2/nios2.c: Include xregex.h.
9346         (nios2_gprel_sec_regex): New.
9347         (nios2_option_overide): Initialize it.  Don't allow GP-relative
9348         addressing with PIC.
9349         (nios2_small_section_name_p): Check for regex match.
9350         * config/nios2/nios2.opt (mgprel-sec=): New option.
9351         * doc/invoke.texi (Option Summary): Add -mgprel-sec.
9352         (Nios II Options): Document -mgprel-sec.
9353
9354 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
9355
9356         * doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
9357
9358 2017-10-26  Tom de Vries  <tom@codesourcery.com>
9359
9360         PR tree-optimization/82707
9361         * gimple.c (gimple_copy): Fix unsharing of
9362         GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
9363
9364 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
9365
9366         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
9367         _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
9368         _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
9369         _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
9370         _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
9371         _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
9372         _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
9373         _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
9374         _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
9375         _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
9376         _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
9377         _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
9378         _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
9379         _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
9380         _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
9381         _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
9382         _mm512_mask_cmpunord_ps_mask): New intrinsics.
9383
9384 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
9385
9386         * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
9387         default to IBM.
9388         * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
9389         * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
9390         warning to rs6000.c.  Remove the Undocumented flag, since it has
9391         been documented.
9392         (-mabi=ibmlongdouble): Likewise.
9393         * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
9394         already set, set the default format for long double.
9395         (rs6000_debug_reg_global): Print whether long double is IBM or
9396         IEEE.
9397         (rs6000_option_override_internal): Rework setting long double
9398         format.  Only warn if the user is changing the long double default
9399         and they did not use -Wno-psabi.
9400         * doc/invoke.texi (PowerPC options): Update the documentation for
9401         -mabi=ieeelongdouble and -mabi=ibmlongdouble.
9402
9403 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9404             Alan Hayward  <alan.hayward@arm.com>
9405             David Sherwood  <david.sherwood@arm.com>
9406
9407         * rtl.h (wider_subreg_mode): New function.
9408         * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
9409         rather than an unsigned int *.
9410         * ira-color.c (regno_max_ref_width): Replace with...
9411         (regno_max_ref_mode): ...this new variable.
9412         (coalesced_pseudo_reg_slot_compare): Update accordingly.
9413         Use wider_subreg_mode.
9414         (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
9415         rather than an unsigned int *.
9416         * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
9417         (process_alt_operands): Likewise.
9418         (invariant_p): Likewise.
9419         * lra-spills.c (assign_mem_slot): Likewise.
9420         (add_pseudo_to_slot): Likewise.
9421         * lra.c (collect_non_operand_hard_regs): Likewise.
9422         (add_regs_to_insn_regno_info): Likewise.
9423         * reload1.c (regno_max_ref_width): Replace with...
9424         (regno_max_ref_mode): ...this new variable.
9425         (reload): Update accordingly.  Update call to
9426         ira_sort_regnos_for_alter_reg.
9427         (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
9428         (init_eliminable_invariants): Update to use regno_max_ref_mode.
9429         (scan_paradoxical_subregs): Likewise.
9430
9431 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9432
9433         * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
9434         (aarch64_frame): Add emit_frame_chain boolean.
9435         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
9436         Move eh_return case to aarch64_layout_frame.
9437         (aarch64_layout_frame): Initialize emit_frame_chain.
9438         (aarch64_expand_prologue): Use emit_frame_chain.
9439
9440 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9441
9442         * config/aarch64/aarch64.c (aarch64_layout_frame):
9443         Ensure LR is always stored at the bottom of the callee-saves.
9444         Remove rarely used frame layout which saves callee-saves at top of
9445         frame, so the store of LR can be used as a valid probe in all cases.
9446
9447 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9448
9449         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9450         Improve unaligned TImode/TFmode base/offset split.
9451
9452 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9453             Alan Hayward  <alan.hayward@arm.com>
9454             David Sherwood  <david.sherwood@arm.com>
9455
9456         * caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
9457         * combine.c (find_single_use_1): Likewise.
9458         (expand_field_assignment): Likewise.
9459         (move_deaths): Likewise.
9460         * lra-constraints.c (simplify_operand_subreg): Likewise.
9461         (curr_insn_transform): Likewise.
9462         * lra.c (collect_non_operand_hard_regs): Likewise.
9463         (add_regs_to_insn_regno_info): Likewise.
9464         * rtlanal.c (reg_referenced_p): Likewise.
9465         (covers_regno_no_parallel_p): Likewise.
9466
9467 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9468
9469         * wide-int-print.cc (print_hex): Loop based on extract_uhwi.
9470         Don't print any bits outside the precision of the value.
9471         * wide-int.cc (test_printing): Add some new tests.
9472
9473 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9474
9475         * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
9476         supports -xbrace_comment option.
9477         * configure: Regenerate.
9478         * config.in: Regenerate.
9479         * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
9480         (ASM_CPU_SPEC): Use it.
9481
9482 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9483
9484         * target.def (static_rtx_alignment): New hook.
9485         * targhooks.h (default_static_rtx_alignment): Declare.
9486         * targhooks.c (default_static_rtx_alignment): New function.
9487         * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
9488         * doc/tm.texi: Regenerate.
9489         * varasm.c (force_const_mem): Use targetm.static_rtx_alignment
9490         instead of targetm.constant_alignment.  Remove call to
9491         set_mem_attributes.
9492         * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9493         (cris_preferred_mininum_alignment): New function, split out from...
9494         (cris_constant_alignment): ...here.
9495         (cris_static_rtx_alignment): New function.
9496         * config/i386/i386.c (ix86_static_rtx_alignment): New function,
9497         split out from...
9498         (ix86_constant_alignment): ...here.
9499         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9500         * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9501         (mmix_static_rtx_alignment): New function.
9502         * config/spu/spu.c (spu_static_rtx_alignment): New function.
9503         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9504
9505 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
9506
9507         PR target/81800
9508         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
9509         Add flag_trapping_math and flag_fp_int_builtin_inexact.
9510
9511 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
9512
9513         * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
9514         * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
9515         mark as a sign-extending load.
9516         (local_pic_load_u): Define.
9517
9518 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
9519
9520         PR middle-end/82062
9521         * fold-const.c (operand_equal_for_comparison_p): Also return true
9522         if ARG0 is a simple variant of ARG1 with narrower precision.
9523         (fold_ternary_loc): Always pass unstripped operands to the predicate.
9524
9525 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
9526
9527         * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
9528         cost correctly.
9529         * i386.h (processor_costs): Add gather_static, gather_per_elt,
9530         scatter_static, scatter_per_elt.
9531         * x86-tune-costs.h: Add new cost entries.
9532
9533 2017-10-25  Richard Biener  <rguenther@suse.de>
9534
9535         * tree-ssa-sccvn.h (vn_eliminate): Declare.
9536         * tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
9537         class pass_fre): Move to ...
9538         * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
9539         class pass_fre): ... here and adjust for statistics.
9540
9541 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
9542
9543         PR libstdc++/81706
9544         * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
9545         for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
9546         (duplicate_one_attribute, copy_attributes_to_builtin): New functions.
9547         * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
9548         declarations.
9549
9550 2017-10-25  Richard Biener  <rguenther@suse.de>
9551
9552         * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
9553         el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
9554         eliminate_push_avail, eliminate_insert): Move inside...
9555         (class eliminate_dom_walker): ... this class in preparation
9556         of move.
9557         (fini_eliminate): Remove by merging with ...
9558         (eliminate): ... this function.  Adjust for class changes.
9559         (pass_pre::execute): Remove fini_eliminate call.
9560         (pass_fre::execute): Likewise.
9561
9562 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
9563
9564         PR target/82460
9565         * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
9566         (VPERMI2, VPERMI2I): New mode iterators.
9567         (<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
9568         (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
9569         patterns.
9570         (<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
9571         mode iterator.  Remove 3 old define_insn patterns.
9572         (*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
9573         (<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
9574         VPERMI2 mode iterator, remove the other two expanders.
9575         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
9576         to use VPERMI2 mode iterator, add another alternative for vpermi2*
9577         instructions, remove the other two patterns.
9578         (<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
9579         mode iterator, remove the other two patterns.
9580         * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
9581         (ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
9582         arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
9583         and adjust argument order accordingly.
9584         (ix86_expand_vec_perm): Adjust caller.
9585         (expand_vec_perm_1): Likewise.
9586         (expand_vec_perm_vpermi2_vpshub2): Rename to ...
9587         (expand_vec_perm_vpermt2_vpshub2): ... this.
9588         (ix86_expand_vec_perm_const_1): Adjust caller.
9589         (ix86_vectorize_vec_perm_const_ok): Adjust comments.
9590
9591         PR target/82370
9592         * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
9593         (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
9594         (vec_shl_<mode>): Remove unused expander.
9595         (avx512bw_<shift_insn><mode>3): New define_insn.
9596         (<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
9597         (<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
9598
9599 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
9600
9601         PR c++/82466
9602         * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
9603         description.
9604
9605 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
9606
9607         PR rtl-optimization/82396
9608         * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
9609         (autopref_multipass_init): Simplify initialization.
9610         (autopref_rank_data): Simplify sort order.
9611         * gcc/sched-int.h (autopref_multipass_data_): Remove
9612         multi_mem_insn_p, min_offset and max_offset.
9613
9614 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
9615
9616         PR middle-end/60580
9617         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
9618         Check special value of flag_omit_frame_pointer.
9619         (aarch64_can_eliminate): Likewise.
9620         (aarch64_override_options_after_change_1): Simplify handling of
9621         -fomit-frame-pointer and -fomit-leaf-frame-pointer.
9622
9623 2017-10-24  Richard Biener  <rguenther@suse.de>
9624
9625         PR tree-optimization/82697
9626         * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
9627         zero for conditional load and unconditional store.
9628
9629 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
9630
9631         * doc/install.texi: Document bootstrap-cet.
9632
9633 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
9634
9635         PR target/82659
9636         * config/i386/i386.c (rest_of_insert_endbranch): Don't insert
9637         ENDBR instruction at function entrance if function is only
9638         called directly.
9639
9640 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
9641
9642         PR target/82628
9643         * config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
9644         patterns to better describe from which operation the CF is computed.
9645         (addcarry<mode>_0, subborrow<mode>_0): New patterns.
9646         * config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
9647         one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
9648         is 0, use _0 suffixed expanders instead of emitting a comparison
9649         before it.
9650
9651 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
9652
9653         * config/i386/i386.md(*movsf_internal, *movdf_internal):
9654         Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
9655
9656 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
9657
9658         PR middle-end/82569
9659         * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
9660         * expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
9661         * loop-iv.c (iv_get_reaching_def): Likewise.
9662         * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
9663         variable is promoted and the partition contains undefined values.
9664
9665 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9666
9667         * config/nios2/nios2.c (nios2_rtx_costs): Make costs better
9668         reflect reality.
9669         (nios2_address_cost): Define.
9670         (nios2_legitimize_address): Recognize (exp + constant) directly.
9671         (TARGET_ADDRESS_COST): Define.
9672
9673 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9674
9675         * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
9676         (nios2_symbolic_memory_operand_p): Declare.
9677         (nios2_split_large_constant): Declare.
9678         (nios2_split_symbolic_memory_operand): Declare.
9679         * config/nios2/nios2.c: Adjust includes.
9680         (nios2_symbolic_constant_allowed): New.
9681         (nios2_symbolic_constant_p): New.
9682         (nios2_plus_symbolic_constant_p): New.
9683         (nios2_valid_addr_expr_p): Recognize addresses involving
9684         symbolic constants.
9685         (nios2_legitimate_address_p): Likewise, also LO_SUM.
9686         (nios2_symbolic_memory_operand_p): New.
9687         (nios2_large_constant_p): New.
9688         (nios2_split_large_constant): New.
9689         (nios2_split_plus_large_constant): New.
9690         (nios2_split_symbolic_memory_operand): New.
9691         (nios2_legitimize_address): Code refactoring.  Handle addresses
9692         involving symbolic constants.
9693         (nios2_emit_move_sequence): Likewise.
9694         (nios2_print_operand): Improve error output.
9695         (nios2_print_operand_address): Handle LO_SUM.
9696         (nios2_cdx_narrow_form_p): Likewise.
9697         * config/nios2/nios2.md (movqi_internal): Add splitter for memory
9698         operands involving symbolic constants.
9699         (movhi_internal, movsi_internal): Likewise.
9700         (zero_extendhisi2, zero_extendqi<mode>2): Likewise.
9701         (extendhisi2, extendqi<mode>2): Likewise.
9702
9703 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9704
9705         * tree-pass.h (PROP_rtl_split_insns): Define.
9706         * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
9707
9708 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9709
9710         * config/nios2/nios2.c (TARGET_LRA_P): Don't override.
9711
9712 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9713
9714         PR debug/82630
9715         * target.def (const_not_ok_for_debug_p): Default to
9716         default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
9717         * targhooks.h (default_const_not_ok_for_debug_p): New declaration.
9718         * targhooks.c (default_const_not_ok_for_debug_p): New function.
9719         * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
9720         which targetm.const_not_ok_for_debug_p returned true.
9721         * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
9722         for UNSPECs.
9723         * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
9724         Likewise.
9725         * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
9726         * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
9727         UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
9728         if !base_term_p.
9729         (ix86_const_not_ok_for_debug_p): New function.
9730         (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
9731         (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
9732
9733 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
9734
9735         PR bootstrap/82610
9736         * system.h: Conditionally include "unique-ptr.h" if
9737         INCLUDE_UNIQUE_PTR is defined.
9738         * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
9739         of defining INCLUDE_UNIQUE_PTR before including "system.h".
9740
9741 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
9742
9743         * config/rl78/rl78.md: New define_expand "subdi3".
9744
9745 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
9746
9747         PR target/82673
9748         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
9749         DF_REF_INSN if DF_REF_INSN_INFO is false.
9750
9751 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
9752
9753         * i386.c (dimode_scalar_chain::compute_convert_gain): Use
9754         xmm_move instead of sse_move.
9755         (sse_store_index): New function.
9756         (ix86_register_move_cost): Be more sensible about mismatch stall;
9757         model AVX moves correctly; make difference between sse->integer and
9758         integer->sse.
9759         (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
9760         moves; make difference between SSE and AVX.
9761         * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
9762         and zmm_move. Increase size of sse load and store tables;
9763         add unaligned load and store tables; add ssemmx_to_integer.
9764         * x86-tune-costs.h: Update all entries according to real
9765         move latencies from Agner Fog's manual and chip documentation.
9766
9767 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9768
9769         PR target/82628
9770         * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
9771         * config/i386/constraints.md (Wf): New constraint.
9772         * config/i386/i386.md (UNSPEC_SBB): New unspec.
9773         (cmp<dwi>_doubleword): Removed.
9774         (sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
9775         (sub<mode>3_carry_ccgz): Use unspec instead of compare.
9776         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
9777         expand with cmp<dwi>_doubleword.  For LTU and GEU use
9778         sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
9779
9780         * common.opt (gcolumn-info): Enable by default.
9781         * doc/invoke.texi (gcolumn-info): Document new default.
9782
9783 2017-10-23  Richard Biener  <rguenther@suse.de>
9784
9785         PR tree-optimization/82672
9786         * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
9787         Fold the stmt if we propagated into it.
9788
9789 2017-10-23  Richard Biener  <rguenther@suse.de>
9790
9791         * tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
9792         (bitmap_remove_expr_from_set): ... this.  All callers call this
9793         for non-constant values.
9794         (bitmap_set_subtract): Rename to...
9795         (bitmap_set_subtract_expressions): ... this.  Adjust and
9796         optimize.
9797         (bitmap_set_contains_value): Remove superfluous check.
9798         (bitmap_set_replace_value): Inline into single caller ...
9799         (bitmap_value_replace_in_set): ... here and simplify.
9800         (dependent_clean): Merge into ...
9801         (clean): ... this using an overload.  Adjust.
9802         (prune_clobbered_mems): Adjust.
9803         (compute_antic_aux): Likewise.
9804         (compute_partial_antic_aux): Likewise.
9805
9806 2017-10-23  Richard Biener  <rguenther@suse.de>
9807
9808         PR tree-optimization/82129
9809         Revert
9810         2017-08-01  Richard Biener  <rguenther@suse.de>
9811
9812         PR tree-optimization/81181
9813         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9814         (compute_antic): ... end of iteration here.
9815
9816 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9817
9818         * target.def (starting_frame_offset): New hook.
9819         * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
9820         (TARGET_STARTING_FRAME_OFFSET): ...this new hook.
9821         * doc/tm.texi.in: Regenerate.
9822         * hooks.h (hook_hwi_void_0): Declare.
9823         * hooks.c (hook_hwi_void_0): New function.
9824         * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
9825         STARTING_FRAME_OFFSET.
9826         * builtins.c (expand_builtin_setjmp_receiver): Likewise.
9827         * reload1.c (reload): Likewise.
9828         * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
9829         instead of STARTING_FRAME_OFFSET.
9830         * function.c (try_fit_stack_local): Likewise.
9831         (assign_stack_local_1): Likewise
9832         (instantiate_virtual_regs): Likewise.
9833         * rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
9834         * config/avr/avr.md (nonlocal_goto_receiver): Likewise.
9835         * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
9836         * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
9837         * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
9838         * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
9839         * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
9840         * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
9841         * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
9842         * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
9843         * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
9844         * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
9845         * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
9846         * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
9847         * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
9848         * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
9849         * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
9850         * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
9851         * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
9852         * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
9853         * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
9854         * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
9855         * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
9856         * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
9857         * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
9858         * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
9859         * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
9860         * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
9861         * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
9862         * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
9863         * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
9864         * config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
9865         * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
9866         * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
9867         * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
9868         * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
9869         * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
9870         * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
9871         * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
9872         * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
9873         * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
9874         * config/avr/avr.c (avr_starting_frame_offset): Make static and
9875         return a HOST_WIDE_INT.
9876         (avr_builtin_setjmp_frame_value): Use it instead of
9877         STARTING_FRAME_OFFSET.
9878         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9879         * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
9880         * config/epiphany/epiphany.c (epiphany_starting_frame_offset):
9881         New function.
9882         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9883         * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
9884         * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
9885         (TARGET_CONSTANT_ALIGNMENT): Redefine.
9886         * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
9887         * config/lm32/lm32.c (lm32_starting_frame_offset): New function.
9888         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9889         * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
9890         * config/m32r/m32r.c (m32r_starting_frame_offset): New function.
9891         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9892         * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
9893         * config/microblaze/microblaze.c (microblaze_starting_frame_offset):
9894         New function.
9895         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9896         * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
9897         * config/mips/mips.c (mips_compute_frame_info): Refer to
9898         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
9899         (mips_starting_frame_offset): New function.
9900         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9901         * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
9902         * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
9903         * config/mmix/mmix.c (mmix_starting_frame_offset): Make static
9904         and return a HOST_WIDE_INT.
9905         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9906         (mmix_initial_elimination_offset): Refer to
9907         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
9908         * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
9909         * config/pa/pa.c (pa_starting_frame_offset): New function.
9910         (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
9911         (pa_expand_prologue): Likewise.
9912         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9913         * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
9914         !FRAME_GROWS_DOWNWARD handling to...
9915         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9916         * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
9917         !FRAME_GROWS_DOWNWARD handling to...
9918         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9919         * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
9920         !FRAME_GROWS_DOWNWARD handling to...
9921         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9922         * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
9923         Redefine.
9924         (rs6000_starting_frame_offset): New function.
9925         * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
9926         !FRAME_GROWS_DOWNWARD handling to...
9927         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9928         * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
9929         !FRAME_GROWS_DOWNWARD handling to...
9930         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9931         * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
9932         !FRAME_GROWS_DOWNWARD handling to...
9933         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9934         * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
9935         (rs6000_starting_frame_offset): New function.
9936         * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
9937         * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
9938         * config/vax/vax.c (vax_starting_frame_offset): New function.
9939         (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
9940         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9941         * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
9942         * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
9943         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9944         * system.h (STARTING_FRAME_OFFSET): Poison.
9945
9946 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9947
9948         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
9949         SCALAR_TYPE_MODE instead of TYPE_MODE.
9950
9951 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9952             Alan Hayward  <alan.hayward@arm.com>
9953             David Sherwood  <david.sherwood@arm.com>
9954
9955         * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
9956
9957 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9958             Alan Hayward  <alan.hayward@arm.com>
9959             David Sherwood  <david.sherwood@arm.com>
9960
9961         * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
9962
9963 2017-10-23  Richard Biener  <rguenther@suse.de>
9964
9965         PR tree-optimization/82129
9966         * tree-ssa-pre.c (bitmap_set_and): Remove.
9967         (compute_antic_aux): Compute ANTIC_OUT intersection in a way
9968         canonicalizing expressions in the set to those with lowest
9969         ID rather than taking that from the first edge.
9970
9971 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9972
9973         * combine.c (rtx_equal_for_field_assignment_p): Use
9974         byte_lowpart_offset.
9975
9976 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9977             Alan Hayward  <alan.hayward@arm.com>
9978             David Sherwood  <david.sherwood@arm.com>
9979
9980         * internal-fn.c (expand_direct_optab_fn): Don't assign directly
9981         to a SUBREG_PROMOTED_VAR.
9982
9983 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9984             Alan Hayward  <alan.hayward@arm.com>
9985             David Sherwood  <david.sherwood@arm.com>
9986
9987         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
9988         (expand_debug_source_expr): Likewise.
9989         * combine.c (combine_simplify_rtx): Likewise.
9990         * cse.c (fold_rtx): Likewise.
9991         * optabs.c (expand_float): Likewise.
9992         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
9993         (simplify_binary_operation_1): Likewise.
9994
9995 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9996             Alan Hayward  <alan.hayward@arm.com>
9997             David Sherwood  <david.sherwood@arm.com>
9998
9999         * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
10000         (record_promoted_value): Likewise.
10001         * expr.c (expand_expr_real_2): Likewise.
10002         * ree.c (update_reg_equal_equiv_notes): Likewise.
10003         (combine_set_extension): Likewise.
10004         * rtlanal.c (low_bitmask_len): Likewise.
10005         * simplify-rtx.c (neg_const_int): Likewise.
10006         (simplify_binary_operation_1): Likewise.
10007
10008 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10009             Alan Hayward  <alan.hayward@arm.com>
10010             David Sherwood  <david.sherwood@arm.com>
10011
10012         * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
10013         * regcprop.c (maybe_mode_change): Likewise.
10014         * reload1.c (alter_reg): Likewise.
10015
10016 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10017
10018         * inchash.h (inchash::hash::add_wide_int): New function.
10019         * lto-streamer-out.c (hash_tree): Use it.
10020
10021 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10022
10023         * inchash.h (inchash::hash::add_wide_int): Rename to...
10024         (inchash::hash::add_hwi): ...this.
10025         * ipa-devirt.c (hash_odr_vtable): Update accordingly.
10026         (polymorphic_call_target_hasher::hash): Likewise.
10027         * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
10028         (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
10029         (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
10030         * lto-streamer-out.c (hash_tree): Likewise.
10031         * optc-save-gen.awk: Likewise.
10032         * tree.c (add_expr): Likewise.
10033
10034 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10035
10036         PR target/52451
10037         * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
10038         for ordered inequality comparisons even with TARGET_IEEE_FP.
10039
10040 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10041
10042         PR target/82628
10043         * config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
10044         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10045         Expand with cmp<dwi>_doubleword.
10046
10047 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10048
10049         * extend.texi: Add x86 specific to 'nocf_check' attribute.
10050         List CET intrinsics.
10051         * invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
10052         specific to -fcf-protection option.
10053
10054 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10055
10056         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
10057         (OPTION_MASK_ISA_SHSTK_SET): Likewise.
10058         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
10059         (OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
10060         (ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
10061         * config.gcc (extra_headers): Add cetintrin.h for x86 targets.
10062         (extra_objs): Add cet.o for Linux/x86 targets.
10063         (tmake_file): Add i386/t-cet for Linux/x86 targets.
10064         * config/i386/cet.c: New file.
10065         * config/i386/cetintrin.h: Likewise.
10066         * config/i386/t-cet: Likewise.
10067         * config/i386/cpuid.h (bit_SHSTK): New.
10068         (bit_IBT): Likewise.
10069         * config/i386/driver-i386.c (host_detect_local_cpu): Detect and
10070         pass IBT and SHSTK bits.
10071         * config/i386/i386-builtin-types.def
10072         (VOID_FTYPE_UNSIGNED_PVOID): New.
10073         (VOID_FTYPE_UINT64_PVOID): Likewise.
10074         * config/i386/i386-builtin.def: Add CET intrinsics.
10075         * config/i386/i386-c.c (ix86_target_macros_internal): Add
10076         OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
10077         * config/i386/i386-passes.def: Add pass_insert_endbranch pass.
10078         * config/i386/i386-protos.h (make_pass_insert_endbranch): New
10079         prototype.
10080         * config/i386/i386.c (rest_of_insert_endbranch): New.
10081         (pass_data_insert_endbranch): Likewise.
10082         (pass_insert_endbranch): Likewise.
10083         (make_pass_insert_endbranch): Likewise.
10084         (ix86_notrack_prefixed_insn_p): Likewise.
10085         (ix86_target_string): Add -mibt, -mshstk flags.
10086         (ix86_option_override_internal): Add flag_cf_protection
10087         processing.
10088         (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
10089         (ix86_print_operand): Add 'notrack' prefix output.
10090         (ix86_init_mmx_sse_builtins): Add CET intrinsics.
10091         (ix86_expand_builtin): Expand CET intrinsics.
10092         (x86_output_mi_thunk): Add 'endbranch' instruction.
10093         * config/i386/i386.h (TARGET_IBT): New.
10094         (TARGET_IBT_P): Likewise.
10095         (TARGET_SHSTK): Likewise.
10096         (TARGET_SHSTK_P): Likewise.
10097         * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
10098         UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
10099         UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
10100         (builtin_setjmp_setup): New pattern.
10101         (builtin_longjmp): Likewise.
10102         (rdssp<mode>): Likewise.
10103         (incssp<mode>): Likewise.
10104         (saveprevssp): Likewise.
10105         (rstorssp): Likewise.
10106         (wrss<mode>): Likewise.
10107         (wruss<mode>): Likewise.
10108         (setssbsy): Likewise.
10109         (clrssbsy): Likewise.
10110         (nop_endbr): Likewise.
10111         * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
10112         options.
10113         * config/i386/immintrin.h: Include <cetintrin.h>.
10114         * config/i386/linux-common.h
10115         (file_end_indicate_exec_stack_and_cet): New prototype.
10116         (TARGET_ASM_FILE_END): New.
10117
10118 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10119
10120         * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
10121         latencies instead of having separate table; make difference between
10122         integer and float costs.
10123         * i386.h (processor_costs): Remove scalar_stmt_cost,
10124         scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
10125         scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
10126         vec_store_cost.
10127         * x86-tune-costs.h: Remove entries which has been removed in
10128         procesor_costs from all tables; make cond_taken_branch_cost
10129         and cond_not_taken_branch_cost COST_N_INSNS based.
10130
10131 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10132
10133         * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
10134
10135 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10136
10137         * config/i386/i386.md (isa): Remove fma_avx512f.
10138         * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
10139         <avx512>_fmadd_<mode>_mask3<round_name>,
10140         <avx512>_fmsub_<mode>_mask<round_name>,
10141         <avx512>_fmsub_<mode>_mask3<round_name>,
10142         <avx512>_fnmadd_<mode>_mask<round_name>,
10143         <avx512>_fnmadd_<mode>_mask3<round_name>,
10144         <avx512>_fnmsub_<mode>_mask<round_name>,
10145         <avx512>_fnmsub_<mode>_mask3<round_name>,
10146         <avx512>_fmaddsub_<mode>_mask<round_name>,
10147         <avx512>_fmaddsub_<mode>_mask3<round_name>,
10148         <avx512>_fmsubadd_<mode>_mask<round_name>,
10149         <avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
10150         (*vec_widen_umult_even_v16si<mask_name>,
10151         *vec_widen_smult_even_v16si<mask_name>): Likewise.
10152         (<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
10153
10154 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10155
10156         * extend.texi: Add 'nocf_check' documentation.
10157         * gimple.texi: Add second parameter to
10158         gimple_build_call_from_tree.
10159         * invoke.texi: Add -fcf-protection documentation.
10160         * rtl.texi: Add REG_CALL_NOTRACK documenation.
10161
10162 2017-10-20  Richard Biener  <rguenther@suse.de>
10163
10164         PR tree-optimization/82473
10165         * tree-vect-loop.c (vectorizable_reduction): Properly get at
10166         the largest input type.
10167
10168 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10169
10170         * c-attribs.c (handle_nocf_check_attribute): New function.
10171         (c_common_attribute_table): Add 'nocf_check' handling.
10172         * gimple-parser.c: Add second argument NULL to
10173         gimple_build_call_from_tree.
10174         * attrib.c (comp_type_attributes): Check nocf_check attribute.
10175         * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
10176         call insn.
10177         * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
10178         * common.opt: Add fcf-protection flag.
10179         * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
10180         * flag-types.h: Add enum cf_protection_level.
10181         * gimple.c (gimple_build_call_from_tree): Add second parameter.
10182         Add 'nocf_check' attribute propagation to gimple call.
10183         * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
10184         (gimple_build_call_from_tree): Update prototype.
10185         (gimple_call_nocf_check_p): New function.
10186         (gimple_call_set_nocf_check): Likewise.
10187         * gimplify.c: Add second argument to gimple_build_call_from_tree.
10188         * ipa-icf.c: Add nocf_check attribute in statement hash.
10189         * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
10190         * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
10191         * toplev.c (process_options): Add flag_cf_protection handling.
10192
10193 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10194
10195         * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
10196
10197 2017-10-20  Richard Biener  <rguenther@suse.de>
10198
10199         PR tree-optimization/82603
10200         * tree-if-conv.c (predicate_mem_writes): Make sure to only
10201         remove false predicated stores.
10202
10203 2017-10-20  Richard Biener  <rguenther@suse.de>
10204
10205         * graphite-isl-ast-to-gimple.c
10206         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
10207         Remove return value and simplify, dump copied stmt after lhs
10208         adjustment.
10209         (translate_isl_ast_to_gimple::translate_isl_ast_node_user):
10210         Reduce dump verbosity.
10211         (gsi_insert_earliest): Likewise.
10212         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
10213         * graphite.c (print_global_statistics): Adjust dumping.
10214         (print_graphite_scop_statistics): Likewise.
10215         (print_graphite_statistics): Do not dump loops here.
10216         (graphite_transform_loops): But here.
10217
10218 2017-10-20  Nicolas Roche  <roche@adacore.com>
10219
10220         * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
10221         * configure: Regenerate.
10222
10223 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10224
10225         PR target/82158
10226         * tree-cfg.c (pass_warn_function_return::execute): In noreturn
10227         functions when optimizing replace GIMPLE_RETURN stmts with
10228         calls to __builtin_unreachable ().
10229
10230         PR sanitizer/82595
10231         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
10232         for -fsanitize=thread link of executables.
10233         (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
10234         link of executables.
10235
10236         PR target/82370
10237         * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
10238         New mode iterators.
10239         (<shift_insn><mode>3<mask_name>): Change the last of the 3
10240         define_insns for logical vector shifts to use VI248_AVX512BW
10241         iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
10242         condition, useless isa and prefix attributes.  Change the first
10243         2 of these define_insns to ...
10244         (<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
10245         define_insn for avx512vl.
10246         (<shift_insn><mode>3): ... and this, new define_insn without
10247         masking for non-avx512vl.
10248
10249         PR target/82370
10250         * config/i386/sse.md (*andnot<mode>3,
10251         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
10252         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
10253         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
10254         not applied use empty suffix even for TARGET_AVX512VL.
10255         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
10256         is applied, supply evex,evex or evex,evex,evex instead of just
10257         evex.
10258
10259 2017-10-20  Julia Koval  <julia.koval@intel.com>
10260
10261         * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
10262         (OPTION_MASK_ISA_GFNI_UNSET): New.
10263         (ix86_handle_option): Handle OPT_mgfni.
10264         * config/i386/cpuid.h (bit_GFNI): New.
10265         * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
10266         * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
10267         * config/i386/i386.c (ix86_target_string): Add -mgfni.
10268         (ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
10269         * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
10270         * config/i386/i386.opt: Add mgfni.
10271
10272 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
10273
10274         * config/msp430/msp430.c (msp430_option_override): Disable
10275         -fdelete-null-pointer-checks.
10276         * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
10277
10278 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10279
10280         * x86-tune-costs.h (generic_cost, core_cost): Correct costs
10281         of x87 and SSE instructions.
10282
10283 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10284
10285         * asan.c (create_cond_insert_point): Do not update edge count.
10286         * auto-profile.c (afdo_propagate_edge): Update for edge count removal.
10287         (afdo_propagate_circuit): Likewise.
10288         (afdo_calculate_branch_prob): Likewise.
10289         (afdo_annotate_cfg): Likewise.
10290         * basic-block.h (struct edge_def): Remove count.
10291         (edge_def::count): New accessor.
10292         * bb-reorder.c (rotate_loop): Update.
10293         (find_traces_1_round): Update.
10294         (connect_traces): Update.
10295         (sanitize_hot_paths): Update.
10296         * cfg.c (unchecked_make_edge): Update.
10297         (make_single_succ_edge): Update.
10298         (check_bb_profile): Update.
10299         (dump_edge_info): Update.
10300         (update_bb_profile_for_threading): Update.
10301         (scale_bbs_frequencies_int): Update.
10302         (scale_bbs_frequencies_gcov_type): Update.
10303         (scale_bbs_frequencies_profile_count): Update.
10304         (scale_bbs_frequencies): Update.
10305         * cfganal.c (connect_infinite_loops_to_exit): Update.
10306         * cfgbuild.c (compute_outgoing_frequencies): Update.
10307         (find_many_sub_basic_blocks): Update.
10308         * cfgcleanup.c (try_forward_edges): Update.
10309         (try_crossjump_to_edge): Update
10310         * cfgexpand.c (expand_gimple_cond): Update
10311         (expand_gimple_tailcall): Update
10312         (construct_exit_block): Update
10313         * cfghooks.c (verify_flow_info): Update
10314         (redirect_edge_succ_nodup): Update
10315         (split_edge): Update
10316         (make_forwarder_block): Update
10317         (duplicate_block): Update
10318         (account_profile_record): Update
10319         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
10320         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
10321         * cfgloopmanip.c (scale_loop_profile): Update.
10322         (loopify): Update.
10323         (lv_adjust_loop_entry_edge): Update.
10324         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
10325         (force_nonfallthru_and_redirect): Update.
10326         (purge_dead_edges): Update.
10327         (rtl_flow_call_edges_add): Update.
10328         * cgraphunit.c (init_lowered_empty_function): Update.
10329         (cgraph_node::expand_thunk): Update.
10330         * gimple-pretty-print.c (dump_probability): Update.
10331         (dump_edge_probability): Update.
10332         * gimple-ssa-isolate-paths.c (isolate_path): Update.
10333         * haifa-sched.c (sched_create_recovery_edges): Update.
10334         * hsa-gen.c (convert_switch_statements): Update.
10335         * ifcvt.c (dead_or_predicable): Update.
10336         * ipa-inline-transform.c (inline_transform): Update.
10337         * ipa-split.c (split_function): Update.
10338         * ipa-utils.c (ipa_merge_profiles): Update.
10339         * loop-doloop.c (add_test): Update.
10340         * loop-unroll.c (unroll_loop_runtime_iterations): Update.
10341         * lto-streamer-in.c (input_cfg): Update.
10342         (input_function): Update.
10343         * lto-streamer-out.c (output_cfg): Update.
10344         * modulo-sched.c (sms_schedule): Update.
10345         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
10346         * predict.c (maybe_hot_edge_p): Update.
10347         (unlikely_executed_edge_p): Update.
10348         (probably_never_executed_edge_p): Update.
10349         (dump_prediction): Update.
10350         (drop_profile): Update.
10351         (propagate_unlikely_bbs_forward): Update.
10352         (determine_unlikely_bbs): Update.
10353         (force_edge_cold): Update.
10354         * profile.c (compute_branch_probabilities): Update.
10355         * reg-stack.c (better_edge): Update.
10356         * shrink-wrap.c (handle_simple_exit): Update.
10357         * tracer.c (better_p): Update.
10358         * trans-mem.c (expand_transaction): Update.
10359         (split_bb_make_tm_edge): Update.
10360         * tree-call-cdce.c: Update.
10361         * tree-cfg.c (gimple_find_sub_bbs): Update.
10362         (gimple_split_edge): Update.
10363         (gimple_duplicate_sese_region): Update.
10364         (gimple_duplicate_sese_tail): Update.
10365         (gimple_flow_call_edges_add): Update.
10366         (insert_cond_bb): Update.
10367         (execute_fixup_cfg): Update.
10368         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
10369         * tree-complex.c (expand_complex_div_wide): Update.
10370         * tree-eh.c (lower_resx): Update.
10371         (unsplit_eh): Update.
10372         (cleanup_empty_eh_move_lp): Update.
10373         * tree-inline.c (copy_edges_for_bb): Update.
10374         (freqs_to_counts): Update.
10375         (copy_cfg_body): Update.
10376         * tree-ssa-dce.c (remove_dead_stmt): Update.
10377         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
10378         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
10379         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
10380         (unloop_loops): Update.
10381         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
10382         * tree-ssa-loop-split.c (connect_loops): Update.
10383         (split_loop): Update.
10384         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
10385         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
10386         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
10387         * tree-ssa-reassoc.c (branch_fixup): Update.
10388         * tree-ssa-tail-merge.c (replace_block_by): Update.
10389         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
10390         (compute_path_counts): Update.
10391         (update_profile): Update.
10392         (recompute_probabilities): Update.
10393         (update_joiner_offpath_counts): Update.
10394         (estimated_freqs_path): Update.
10395         (freqs_to_counts_path): Update.
10396         (clear_counts_path): Update.
10397         (ssa_fix_duplicate_block_edges): Update.
10398         (duplicate_thread_path): Update.
10399         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
10400         (case_bit_test_cmp): Update.
10401         (collect_switch_conv_info): Update.
10402         (gen_inbound_check): Update.
10403         (do_jump_if_equal): Update.
10404         (emit_cmp_and_jump_insns): Update.
10405         * tree-tailcall.c (decrease_profile): Update.
10406         (eliminate_tail_call): Update.
10407         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
10408         (vect_do_peeling): Update.
10409         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
10410         * ubsan.c (ubsan_expand_null_ifn): Update.
10411         (ubsan_expand_ptr_ifn): Update.
10412         * value-prof.c (gimple_divmod_fixed_value): Update.
10413         (gimple_mod_pow2): Update.
10414         (gimple_mod_subtract): Update.
10415         (gimple_ic): Update.
10416         (gimple_stringop_fixed_value): Update.
10417
10418 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10419
10420         PR target/82618
10421         * config/i386/i386.md (sub to cmp): New peephole2 pattern.
10422
10423 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
10424
10425         PR rtl-optimization/82395
10426         * ira-color.c (allocno_priority_compare_func): Fix comparison step
10427         based on non_spilled_static_chain_regno_p.
10428
10429 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10430
10431         * config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
10432         (ix86_emit_mode_set): Rewrite insn mnemonic construction.
10433         (ix86_prepare_fp_compare_args): Redefine is_sse as bool.
10434
10435 2017-10-19  Martin Sebor  <msebor@redhat.com>
10436
10437         PR tree-optimization/82596
10438         * tree.c (array_at_struct_end_p): Handle STRING_CST.
10439
10440 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10441
10442         * asan.c (handle_builtin_alloca): Deal with all alloca variants.
10443         (get_mem_refs_of_builtin_call): Likewise.
10444         * builtins.c (expand_builtin_apply): Adjust call to
10445         allocate_dynamic_stack_space.
10446         (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
10447         the third argument to allocate_dynamic_stack_space, otherwise -1.
10448         (expand_builtin): Deal with all alloca variants.
10449         (is_inexpensive_builtin): Likewise.
10450         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
10451         * calls.c (special_function_p): Deal with all alloca variants.
10452         (initialize_argument_information): Adjust call to
10453         allocate_dynamic_stack_space.
10454         (expand_call): Likewise.
10455         * cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
10456         * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
10457         * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
10458         use it for the stack usage computation.
10459         * explow.h (allocate_dynamic_stack_space): Adjust prototype.
10460         * function.c (gimplify_parameters): Call build_alloca_call_expr.
10461         * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
10462         Take into account 3rd argument of __builtin_alloca_with_align_and_max.
10463         (in_loop_p): Remove first argument and useless check.
10464         (pass_walloca::execute): Remove useless test and adjust call to above.
10465         * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
10466         * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
10467         (gimplify_call_expr): Deal with all alloca variants.
10468         * hsa-gen.c (gen_hsa_alloca): Likewise.
10469         (gen_hsa_insns_for_call): Likewise.
10470         * ipa-pure-const.c (special_builtin_state): Likewise.
10471         * tree-chkp.c (chkp_build_returned_bound): Likewise.
10472         * tree-object-size.c (alloc_object_size): Likewise.
10473         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
10474         (call_may_clobber_ref_p_1): Likewise.
10475         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
10476         (ccp_fold_stmt): Likewise.
10477         (optimize_stack_restore): Likewise.
10478         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
10479         (mark_all_reaching_defs_necessary_1): Likewise.
10480         (propagate_necessity): Likewise.
10481         (eliminate_unnecessary_stmts): Likewise.
10482         * tree.c (build_common_builtin_nodes): Build
10483         BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
10484         (build_alloca_call_expr): New function.
10485         * tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
10486         (CASE_BUILT_IN_ALLOCA): Likewise.
10487         (build_alloca_call_expr): Declare.
10488         * varasm.c (incorporeal_function_p): Deal with all alloca variants.
10489
10490 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10491
10492         PR debug/82509
10493         * dwarf2out.c (new_die_raw): New static inline function.
10494         (new_die): Use it to create the DIE.
10495         (add_AT_external_die_ref): Likewise.
10496         (clone_die): Likewise.
10497         (clone_as_declaration): Likewise.
10498         (dwarf2out_vms_debug_main_pointer): Likewise.
10499         (base_type_die): Likewise.  Remove early return for corner cases.
10500         Do not call add_pubtype on the DIE here.
10501         (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
10502         (modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
10503         typedefs for base types with DW_AT_endianity.  Make sure a DIE with
10504         native order exists for base types, attach the DIE manually and call
10505         add_pubtype on it.  Do not equate a reverse order DIE to the type.
10506
10507 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
10508
10509         * config/arm/arm.c (align_ok_ldrd_strd): New function.
10510         (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
10511         the mem into it.
10512         (gen_operands_ldrd_strd): Validate the alignment of the accesses.
10513
10514 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
10515
10516         * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
10517         SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
10518         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
10519         BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
10520         * opts.c (sanitizer_opts): Add builtin.
10521         * ubsan.c (instrument_builtin): New function.
10522         (pass_ubsan::execute): Call it.
10523         (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
10524         * doc/invoke.texi: Document -fsanitize=builtin.
10525
10526         * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
10527         builtins, store max (log2 (align), 0) into uchar field instead of
10528         align into uptr field.
10529         (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
10530         store uchar 0 field instead of uptr 0 field.
10531         (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
10532         instead of passing one address of struct with 2 locations pass
10533         two addresses of structs with 1 location each.
10534         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
10535         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
10536         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
10537         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
10538         (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
10539         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
10540         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
10541         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
10542
10543 2017-10-19  Martin Liska  <mliska@suse.cz>
10544
10545         PR driver/81829
10546         * file-find.c (remove_prefix): Remove.
10547         * file-find.h (remove_prefix): Likewise.
10548         * gcc-ar.c: Remove smartness of lookup.
10549
10550 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
10551
10552         * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
10553         *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
10554         *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
10555
10556 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
10557
10558         PR target/82580
10559         * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
10560         (setcc + and to xor + setcc): New peephole2.
10561
10562 2017-10-19  Tom de Vries  <tom@codesourcery.com>
10563
10564         * doc/sourcebuild.texi (Test Directives, Variants of
10565         dg-require-support): Add dg-require-stack-size.
10566
10567 2017-10-19  Martin Liska  <mliska@suse.cz>
10568
10569         PR sanitizer/82517
10570         * gimplify.c (gimplify_decl_expr): Do not instrument variables
10571         that have a large alignment.
10572         (gimplify_target_expr): Likewise.
10573
10574 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
10575
10576         PR rtl-optimization/82602
10577         * ira.c (rtx_moveable_p): Return false for volatile asm.
10578
10579 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
10580
10581         PR target/82580
10582         * config/i386/i386-modes.def (CCGZ): New CC mode.
10583         * config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
10584         * config/i386/predicates.md (ix86_comparison_operator):
10585         Handle CCGZmode.
10586         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10587         Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
10588         with double-word subtraction.
10589         (put_condition_code): Handle CCGZmode.
10590
10591 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
10592
10593         * wide-int.cc (debug (const wide_int &)): New.
10594         (debug (const wide_int *)): New.
10595         (debug (const widest_int &)): New.
10596         (debug (const widest_int *)): New.
10597
10598 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
10599
10600         PR middle-end/82556
10601         * lra-constraints.c (curr_insn_transform): Use non-input operand
10602         instead of output one for matched reload.
10603
10604 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
10605
10606         * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
10607         (tree-ssa-loop-ivopts.h): New header file.
10608         (struct builtin_info): New fields.
10609         (classify_builtin_1): Compute and record base and offset parts for
10610         memset builtin partition by calling strip_offset.
10611         (offset_cmp, fuse_memset_builtins): New functions.
10612         (finalize_partitions): Fuse adjacent memset partitions by calling
10613         above function.
10614         * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
10615         Expose the interface.
10616         * tree-ssa-loop-ivopts.h (strip_offset): New declaration.
10617
10618 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
10619
10620         PR tree-optimization/82574
10621         * tree-loop-distribution.c (find_single_drs): New parameter.  Check
10622         that data reference must be executed exactly once per iteration
10623         against the outermost loop in nest.
10624         (classify_partition): Update call to above function.
10625
10626 2017-10-18  Richard Biener  <rguenther@suse.de>
10627
10628         PR tree-optimization/82591
10629         * graphite.c (graphite_transform_loops): Move code gen message
10630         printing ...
10631         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
10632         Here.  Handle scop_to_isl_ast failing.
10633         (scop_to_isl_ast): Limit the number of ISL operations.
10634
10635 2017-10-18  Richard Biener  <rguenther@suse.de>
10636
10637         * graphite-isl-ast-to-gimple.c
10638         (translate_isl_ast_to_gimple::set_rename): Simplify.
10639         (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
10640         (graphite_copy_stmts_from_block): ... here.
10641         (copy_bb_and_scalar_dependences): Simplify.
10642         (add_parameters_to_ivs_params): Canonicalize.
10643         (generate_entry_out_of_ssa_copies): Simplify.
10644         * graphite-sese-to-poly.c (extract_affine_name): Simplify
10645         by passing in ISL dimension.
10646         (parameter_index_in_region_1): Rename to ...
10647         (parameter_index_in_region): ... this.
10648         (extract_affine): Adjust assert, pass down parameter index.
10649         (add_param_constraints): Use range-info when available.
10650         (build_scop_context): Adjust.
10651         * sese.c (new_sese_info): Adjust.
10652         (free_sese_info): Likewise.
10653         * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
10654         Remove unused typedefs.
10655         (struct sese_info_t): Simplify rename_map, remove incomplete_phis.
10656
10657 2017-10-18  Martin Liska  <mliska@suse.cz>
10658
10659         * combine.c (simplify_compare_const): Add gcc_fallthrough.
10660
10661 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10662
10663         * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
10664         (s390_sched_init): Do not reset s390_sched_state if we entered the
10665         current basic block via a fallthru edge and all others are unlikely.
10666
10667 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10668
10669         * config/s390/s390.c (NUM_SIDES): New variable.
10670         (LONGRUNNING_THRESHOLD): New variable.
10671         (LATENCY_FACTOR): New variable.
10672         (s390_sched_score): Decrease score for long-running instructions on
10673         wrong side.
10674         (s390_sched_variable_issue): Perform bookkeeping for long-running
10675         instructions.
10676
10677 2017-10-18  Richard Biener  <rguenther@suse.de>
10678
10679         * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
10680         Simplify with removal of the parameter rename map.
10681         (set_rename): Likewise.
10682         (should_copy_to_new_region): Likewise.
10683         (graphite_copy_stmts_from_block): Likewise.
10684         (copy_bb_and_scalar_dependences): Remove initialization of
10685         unused copied_bb_map.
10686         (copy_def): Remove.
10687         (copy_internal_parameters): Likewise.
10688         (graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
10689         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
10690         Use INTEGRAL_TYPE_P.
10691         (parameter_index_in_region_1): Rename to ...
10692         (assign_parameter_index_in_region): ... this.  Assert we have
10693         a parameter we handle.
10694         (scan_tree_for_params): Adjust.
10695         * sese.h (parameter_rename_map_t): Remove.
10696         (struct sese_info_t): Remove unused parameter_rename_map and
10697         copied_bb_map members.
10698         * sese.c (new_sese_info): Adjust.
10699         (free_sese_info): Likewise.
10700
10701 2017-10-18  Martin Liska  <mliska@suse.cz>
10702
10703         PR sanitizer/82545
10704         * asan.c (asan_expand_poison_ifn): Do not put gimple stmt
10705         on an abnormal edge.
10706
10707 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10708
10709         * doc/invoke.texi (ffunction-sections and fdata-sections):
10710         Update.
10711
10712 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10713
10714         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
10715         the use statement can throw internally.
10716
10717 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10718
10719         * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
10720         any RTX present on the RHS of a SET.
10721         * compare-elim.c (try_eliminate_compare): Restore comment.
10722
10723 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10724
10725         * langhooks.h (struct lang_hooks): Document that tree_size langhook
10726         may be also called on tcc_type nodes.
10727         * langhooks.c (lhd_tree_size): Likewise.
10728
10729 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
10730
10731         * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
10732         format_warning_at_substring.
10733         (maybe_warn): Convert source_range * param to a location_t.  Pass
10734         UNKNOWN_LOCATION rather than NULL to fmtwarn.
10735         (format_directive): Remove code to extract source_ranges and
10736         source_range * in favor of just a location_t.
10737         (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
10738         fmtwarn.
10739         * substring-locations.c (format_warning_va): Convert
10740         source_range * param to a location_t.
10741         (format_warning_at_substring): Likewise.
10742         * substring-locations.h (format_warning_va): Likewise.
10743         (format_warning_at_substring): Likewise.
10744
10745 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
10746
10747         * target.h (enum vect_cost_for_stmt): Add vec_gather_load and
10748         vec_scatter_store
10749         * tree-vect-stmts.c (record_stmt_cost): Make difference between normal
10750         and scatter/gather ops.
10751
10752         * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
10753         vec_gather_load and vec_scatter_store.
10754         * arm/arm.c (arm_builtin_vectorization_cost): Likewise.
10755         * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
10756         * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
10757         * s390/s390.c (s390_builtin_vectorization_cost): Likewise.
10758         * spu/spu.c (spu_builtin_vectorization_cost): Likewise.
10759         * i386/i386.c (x86_builtin_vectorization_cost): Likewise.
10760
10761 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
10762
10763         * reg-stack.c (compare_for_stack_reg): Add bool argument.
10764         Detect FTST instruction and handle its register pops.  Only pop
10765         second operand if can_pop_second_op is true.
10766         (subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
10767         set can_pop_second_op to false in the compare_for_stack_reg call.
10768
10769         * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
10770         output_fp_compare for stack register operands.
10771         * config/i386/i386.c (output_fp_compare): Do not output SSE compare
10772         instructions here.  Do not emit stack register pops here.  Assert
10773         that FCOMPP pops next to top stack register.  Rewrite function.
10774
10775 2017-10-17  Nathan Sidwell  <nathan@acm.org>
10776
10777         PR middle-end/82577
10778         * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
10779         use DECL_ASSEMBLER_NAME_RAW.
10780
10781         PR middle-end/82546
10782         * tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
10783         TYPE nodes.
10784
10785 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
10786             Wilco Dijkstra <wilco.dijkstra@arm.com>
10787
10788         * builtins.c (expand_builtin_update_setjmp_buf): Add a
10789         converstion to Pmode from the buf_addr.
10790
10791 2017-10-17  Richard Biener  <rguenther@suse.de>
10792
10793         * graphite-dependences.c (scop_get_reads_and_writes): Change
10794         output parameters to references.
10795
10796 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
10797
10798         PR 71026/tree-optimization
10799         * fold-const.c (distribute_real_division): Removed.
10800         (fold_binary_loc): Remove calls to distribute_real_divison.
10801
10802 2017-10-17  Richard Biener  <rguenther@suse.de>
10803
10804         * graphite-scop-detection.c
10805         (scop_detection::stmt_has_simple_data_refs_p): Always use
10806         the full nest as region.
10807         (try_generate_gimple_bb): Likewise.
10808         * sese.c (scalar_evolution_in_region): Simplify now that
10809         SCEV can handle instantiation in regions.
10810         * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
10811         in the non-loop part of a function if requested.
10812
10813 2017-10-17  Richard Biener  <rguenther@suse.de>
10814
10815         PR tree-optimization/82563
10816         * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
10817         New function.
10818         (graphite_regenerate_ast_isl): Call it.
10819         * graphite-scop-detection.c (build_scops): Remove entry edge split.
10820
10821 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10822
10823         PR tree-optimization/82549
10824         * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
10825         Formatting fixes.  Instead of calling make_bit_field_ref with negative
10826         bitpos return 0.
10827
10828 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
10829
10830         * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
10831         _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
10832         _mm_maskz_reduce_ss): New.
10833         * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
10834         __builtin_ia32_reducess_mask): Ditto..
10835         (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
10836         * config/i386/sse.md (reduces<mode>): Renamed to ...
10837         (reduces<mode><mask_scalar_name>): ... this.
10838         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
10839         Changed to ...
10840         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
10841         %0<mask_scalar_operand4>, %1, %2, %3}): ... this.
10842
10843 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
10844
10845         * Makefile.in (OBJS): Add unique-ptr-tests.o.
10846         * selftest-run-tests.c (selftest::run_tests): Call
10847         selftest::unique_ptr_tests_cc_tests.
10848         * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
10849         * unique-ptr-tests.cc: New file.
10850
10851 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
10852
10853         PR sanitizer/82353
10854         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
10855         locations.
10856         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
10857         (make_hard_regno_born, make_hard_regno_dead): Update
10858         bb_killed_pseudos and bb_gen_pseudos for fixed regs.
10859
10860 2017-10-16  Jeff Law  <law@redhat.com>
10861
10862         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
10863
10864 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
10865
10866         * x86-tune-costs.h (znver1_cost): Fix move cost tables.
10867
10868 2017-10-16  Olivier Hainque  <hainque@adacore.com>
10869
10870         * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
10871         with_cpu if we were configured for an e500v2 target cpu name.
10872
10873 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
10874
10875         * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
10876         * doc/invoke.texi: Document +nodsp as a valid extension for
10877         -mcpu=cortex-m33.
10878
10879 2017-10-16  Martin Liska  <mliska@suse.cz>
10880
10881         * sbitmap.c (bitmap_bit_in_range_p_checking): New function.
10882         (test_set_range): Likewise.
10883         (test_range_functions): Rename to ...
10884         (test_bit_in_range): ... this.
10885         (sbitmap_c_tests): Add new test.
10886
10887 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10888
10889         * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
10890         New.
10891         (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
10892         (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
10893
10894 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10895
10896         * config/aarch64/aarch64-builtins.c
10897         (aarch64_types_quadopu_lane_qualifiers): New.
10898         (TYPES_QUADOPU_LANE): New.
10899         * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
10900         (<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
10901         (aarch64_<sur>dot_laneq<vsi2qi>): New.
10902         * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
10903         (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
10904         * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
10905         (Vdottype, DOTPROD): New.
10906         (sur): Add SDOT and UDOT.
10907
10908 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10909
10910         * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
10911         (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
10912         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10913         Add TARGET_DOTPROD.
10914         * config/aarch64/aarch64-option-extensions.def (dotprod): New.
10915         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
10916         Enable TARGET_DOTPROD.
10917         (cortex-a75.cortex-a55): Likewise.
10918         * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
10919
10920 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10921
10922         * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
10923         (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
10924         New.
10925         * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
10926         New.
10927         * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
10928         (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
10929         * config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
10930         (neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
10931         * config/arm/types.md (neon_dot, neon_dot_q): New.
10932         * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
10933
10934 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10935
10936         * config/arm/arm.h (TARGET_DOTPROD): New.
10937         * config/arm/arm.c (arm_arch_dotprod): New.
10938         (arm_option_reconfigure_globals): Add arm_arch_dotprod.
10939         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
10940         * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
10941         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
10942         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
10943         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
10944         * doc/invoke.texi (armv8.2-a): Document dotprod
10945
10946 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
10947
10948         * i386.c (ix86_vec_cost): New function.
10949         (ix86_rtx_costs): Handle vector operations better.
10950         * i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
10951         * x86-tune-costs.h: Add new costs to all tables.
10952
10953 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
10954
10955         * i386.c (ix86_rtx_costs): Make difference between x87 and SSE
10956         operations.
10957         * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
10958         divsd, sqrtss and sqrtsd
10959         * x86-tune-costs.h: Add new entries to all costs.
10960         (znver1_cost): Fix to match real instruction latencies.
10961
10962 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10963             Michael Collison <michael.collison@arm.com>
10964
10965         * compare-elim.c: Include emit-rtl.h.
10966         (can_merge_compare_into_arith): New function.
10967         (try_validate_parallel): Likewise.
10968         (try_merge_compare): Likewise.
10969         (try_eliminate_compare): Call the above when no previous clobber
10970         is available.
10971         (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
10972         dataflow problems.
10973
10974 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
10975
10976         PR middle-end/62263
10977         PR middle-end/82498
10978         * tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
10979         up to 2 preparation statements for ASSIGN in MIDDLE_BB.
10980
10981         PR middle-end/62263
10982         PR middle-end/82498
10983         * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
10984         to be any operand_equal_p operands.  For & (B - 1) require
10985         B to be power of 2.  Recognize
10986         (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
10987
10988 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
10989
10990         PR bootstrap/82553
10991         * optabs.c (expand_memory_blockage): Fix call of
10992         targetm.have_memory_blockage.
10993
10994 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
10995
10996         PR bootstrap/82548
10997         * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
10998         x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
10999         objects to extra_objs instead of overwriting it.
11000
11001 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11002
11003         * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
11004         Use any_fp_register_operand as operand[3] predicate.  Simplify
11005         equality test for operands[2] and operands[4] memory location.
11006         (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
11007         (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
11008         (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
11009         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
11010         any_fp_register_operand as operand[1] predicate.  Simplify
11011         equality test for operands[0] and operands[3] memory location.
11012         (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
11013         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
11014         (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
11015
11016 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11017
11018         * target-insns.def: Add memory_blockage.
11019         * optabs.c (expand_memory_blockage): New function.
11020         (expand_asm_memory_barrier): Rename ...
11021         (expand_asm_memory_blockage): ... to this.
11022         (expand_mem_thread_fence): Call expand_memory_blockage
11023         instead of expand_asm_memory_barrier.
11024         (expand_mem_singnal_fence): Ditto.
11025         (expand_atomic_load): Ditto.
11026         (expand_atomic_store): Ditto.
11027         * doc/md.texi (Standard Pattern Names For Generation):
11028         Document memory_blockage instruction pattern.
11029
11030 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
11031
11032         * config/rl78/rl78.c (rl78_emit_libcall): New function.
11033         * config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
11034         * config/rl78/rl78.md: New define_expand "adddi3".
11035
11036 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11037
11038         * cfghooks.c (verify_flow_info): Disable check that all probabilities
11039         are set correctly.
11040
11041 2017-10-13  Jeff Law  <law@redhat.com>
11042
11043         * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
11044
11045 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11046
11047         PR target/82274
11048         * internal-fn.c (expand_mul_overflow): If both operands have
11049         the same highpart of -1 or 0 and the topmost bit of lowpart
11050         is different, overflow is if res <= 0 rather than res < 0.
11051
11052 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
11053
11054         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
11055         TARGET_P9_VECTOR code for unaligned_load case.
11056
11057 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11058
11059         * cfghooks.c (verify_flow_info): Check that edge probabilities are set.
11060
11061 2017-10-13  Nathan Sidwell  <nathan@acm.org>
11062
11063         * tree-core.h (tree_contains_struct): Make bool.
11064         * tree.c (tree_contains_struct): Likewise.
11065         * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
11066         (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
11067         MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
11068         MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
11069         MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
11070
11071 2017-10-13  Richard Biener  <rguenther@suse.de>
11072
11073         * graphite-isl-ast-to-gimple.c
11074         (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
11075         parameters and dominance check.
11076         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
11077         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
11078         (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
11079         Do not update SSA form here or do intermediate IL verification.
11080         * graphite.c: Include tree-ssa.h and tree-into-ssa.h.
11081         (graphite_initialize): Remove check on the number of loops in
11082         the function and inline into graphite_transform_loops.
11083         (graphite_finalize): Inline into graphite_transform_loops.
11084         (graphite_transform_loops): Perform SSA update and IL verification
11085         here.
11086         * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
11087
11088 2017-10-13  Richard Biener  <rguenther@suse.de>
11089
11090         * graphite-isl-ast-to-gimple.c (max_mode_int_precision,
11091         graphite_expression_type_precision): Avoid global constructor
11092         by moving ...
11093         (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
11094         (translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
11095         (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
11096         (translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
11097         (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
11098         * graphite-sese-to-poly.c (build_original_schedule): Return nothing.
11099
11100 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
11101
11102         PR target/82499
11103         * config/i386/i386.h (ix86_red_zone_size): New.
11104         * config/i386/i386.md (push peephole2s): Replace
11105         "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
11106
11107 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11108             Alan Hayward  <alan.hayward@arm.com>
11109             David Sherwood  <david.sherwood@arm.com>
11110
11111         * combine.c (can_change_dest_mode): Reject changes in
11112         REGMODE_NATURAL_SIZE.
11113
11114 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11115             Alan Hayward  <alan.hayward@arm.com>
11116             David Sherwood  <david.sherwood@arm.com>
11117
11118         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
11119         (expand_debug_source_expr): Likewise.
11120         * combine.c (combine_simplify_rtx): Likewise.
11121         * cse.c (fold_rtx): Likewise.
11122         * fwprop.c (canonicalize_address): Likewise.
11123         * targhooks.c (default_shift_truncation_mask): Likewise.
11124
11125 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11126             Alan Hayward  <alan.hayward@arm.com>
11127             David Sherwood  <david.sherwood@arm.com>
11128
11129         * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
11130         (widened_mode): Likewise.
11131         (expand_unop): Likewise.
11132         * ree.c (transform_ifelse): Likewise.
11133         (merge_def_and_ext): Likewise.
11134         (combine_reaching_defs): Likewise.
11135         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11136
11137 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11138             Alan Hayward  <alan.hayward@arm.com>
11139             David Sherwood  <david.sherwood@arm.com>
11140
11141         * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
11142         * combine.c (gen_lowpart_for_combine): Likewise.
11143         * dwarf2out.c (rtl_for_decl_location): Likewise.
11144         * final.c (alter_subreg): Likewise.
11145         * rtlhooks.c (gen_lowpart_general): Likewise.
11146         (gen_lowpart_if_possible): Likewise.
11147
11148 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11149             Alan Hayward  <alan.hayward@arm.com>
11150             David Sherwood  <david.sherwood@arm.com>
11151
11152         * calls.c (expand_call): Use subreg_lowpart_offset.
11153         * cse.c (cse_insn): Likewise.
11154         * regcprop.c (copy_value): Likewise.
11155         (copyprop_hardreg_forward_1): Likewise.
11156
11157 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11158
11159         PR target/82524
11160         * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
11161         *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
11162         =Q constraints to +Q and into insn condition add check
11163         that operands[0] and operands[1] are equal.
11164         (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
11165         =Q constraints to +Q and into insn condition add check
11166         that operands[0] is equal to either operands[1] or operands[2].
11167
11168         PR target/82498
11169         * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
11170         instead of handling MINUS_EXPR twice (once for each argument),
11171         canonicalize operand order and handle just once, use rtype where
11172         possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
11173
11174         PR target/82498
11175         * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
11176         any values of __C while still being pattern recognizable as a simple
11177         rotate instruction.
11178
11179 2017-10-13  Richard Biener  <rguenther@suse.de>
11180
11181         PR tree-optimization/82451
11182         Revert
11183         2017-10-02  Richard Biener  <rguenther@suse.de>
11184
11185         PR tree-optimization/82355
11186         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
11187         a mapping for the enclosing loop but avoid generating one for
11188         the loop tree root.
11189         (copy_bb_and_scalar_dependences): Remove premature codegen
11190         error on PHIs in blocks duplicated into multiple places.
11191         * graphite-scop-detection.c
11192         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
11193         in the region use it as loop and nest to analyze the DR in.
11194         (try_generate_gimple_bb): Likewise.
11195         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
11196         (add_loop_constraints): For blocks in a loop not in the region
11197         create a dimension with a single iteration.
11198         * sese.h (gbb_loop_at_index): Remove assert.
11199
11200         * cfgloop.c (loop_preheader_edge): For the loop tree root
11201         return the single successor of the entry block.
11202         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11203         Reset the SCEV hashtable and niters.
11204         * graphite-scop-detection.c
11205         (scop_detection::graphite_can_represent_scev): Add SCOP parameter,
11206         assert that we only have POLYNOMIAL_CHREC that vary in loops
11207         contained in the region.
11208         (scop_detection::graphite_can_represent_expr): Adjust.
11209         (scop_detection::stmt_has_simple_data_refs_p): For loops
11210         not in the region set loop to NULL.  The nest is now the
11211         entry edge to the region.
11212         (try_generate_gimple_bb): Likewise.
11213         * sese.c (scalar_evolution_in_region): Adjust for
11214         instantiate_scev change.
11215         * tree-data-ref.h (graphite_find_data_references_in_stmt):
11216         Make nest parameter the edge into the region.
11217         (create_data_ref): Likewise.
11218         * tree-data-ref.c (dr_analyze_indices): Make nest parameter an
11219         entry edge into a region and adjust instantiate_scev calls.
11220         (create_data_ref): Likewise.
11221         (graphite_find_data_references_in_stmt): Likewise.
11222         (find_data_references_in_stmt): Pass the loop preheader edge
11223         from the nest argument.
11224         * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
11225         parameter the edge into the region.
11226         (instantiate_parameters): Use the loop preheader edge as entry.
11227         * tree-scalar-evolution.c (analyze_scalar_evolution): Handle
11228         NULL loop.
11229         (get_instantiated_value_entry): Make instantiate_below parameter
11230         the edge into the region.
11231         (instantiate_scev_name): Likewise.  Adjust dominance checks,
11232         when we cannot use loop-based instantiation instantiate by
11233         walking use-def chains.
11234         (instantiate_scev_poly): Adjust.
11235         (instantiate_scev_binary): Likewise.
11236         (instantiate_scev_convert): Likewise.
11237         (instantiate_scev_not): Likewise.
11238         (instantiate_array_ref): Remove.
11239         (instantiate_scev_3): Likewise.
11240         (instantiate_scev_2): Likewise.
11241         (instantiate_scev_1): Likewise.
11242         (instantiate_scev_r): Do not blindly handle N-operand trees.
11243         Do not instantiate array-refs.  Handle all constants and invariants.
11244         (instantiate_scev): Make instantiate_below parameter
11245         the edge into the region.
11246         (resolve_mixers): Use the loop preheader edge for the region
11247         parameter to instantiate_scev_r.
11248         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
11249
11250 2017-10-13  Richard Biener  <rguenther@suse.de>
11251
11252         PR tree-optimization/82525
11253         * graphite-isl-ast-to-gimple.c
11254         (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
11255         out from ...
11256         (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
11257         Fail code generation when we cannot represent the isl integer.
11258         (binary_op_to_tree): Elide modulo operations that are no-ops
11259         in the type we code generate.  Remove now superfluous code
11260         generation errors.
11261
11262 2017-10-13  Richard Biener  <rguenther@suse.de>
11263
11264         * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
11265         (scop_detection::harmful_loop_in_region): Remove premature
11266         IV type restriction.
11267         (scop_detection::graphite_can_represent_scev): We can handle
11268         pointer IVs just fine.
11269
11270 2017-10-13  Alan Modra  <amodra@gmail.com>
11271
11272         * doc/extend.texi (Extended Asm <Clobbers>): Rename to
11273         "Clobbers and Scratch Registers".  Add paragraph on
11274         alternative to clobbers for scratch registers and OpenBLAS
11275         example.
11276
11277 2017-10-13  Alan Modra  <amodra@gmail.com>
11278
11279         * doc/extend.texi (Clobbers): Correct vax example.  Delete old
11280         example of a memory input for a string of known length.  Move
11281         commentary out of table.  Add a number of new examples
11282         covering array memory inputs.
11283
11284 2017-10-12  Martin Liska  <mliska@suse.cz>
11285
11286         PR tree-optimization/82493
11287         * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
11288         (test_range_functions): New function.
11289         (sbitmap_c_tests): Likewise.
11290         * selftest-run-tests.c (selftest::run_tests): Run new tests.
11291         * selftest.h (sbitmap_c_tests): New function.
11292
11293         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11294
11295 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
11296
11297         * config/rs6000/amo.h: Fix spacing issue.
11298
11299 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11300
11301         PR target/82498
11302         * config/i386/i386.md (*ashl<mode>3_mask_1,
11303         *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
11304         *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
11305         patterns.
11306
11307 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11308
11309         * profile-count.h (safe_scale_64bit): Fix GCC4.x path.
11310         (profile_probability): Set max_probability
11311         to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
11312         in temporaries.
11313         * profile-count.c (profile_probability::differs_from_p): Do not
11314         rely on max_probaiblity == 10000
11315
11316 2017-10-12  Jeff Law  <law@redhat.com>
11317
11318         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
11319         negative offsets.
11320
11321 2017-10-12  Martin Sebor  <msebor@redhat.com>
11322
11323         PR other/82301
11324         PR c/82435
11325         * cgraphunit.c (maybe_diag_incompatible_alias): New function.
11326         (handle_alias_pairs): Call it.
11327         * common.opt (-Wattribute-alias): New option.
11328         * doc/extend.texi (ifunc attribute): Discuss C++ specifics.
11329         * doc/invoke.texi (-Wattribute-alias): Document.
11330
11331 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
11332
11333         Revert
11334         2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11335         PR sanitizer/82353
11336         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11337         locations.
11338         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11339         (make_hard_regno_born, make_hard_regno_dead): Update
11340         bb_killed_pseudos and bb_gen_pseudos.
11341
11342 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11343
11344         * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
11345
11346 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
11347
11348         * config/alpha/alpha.c (alpha_split_conditional_move):
11349         Use std::swap instead of manually swapping.
11350         (alpha_stdarg_optimize_hook): Ditto.
11351         (alpha_canonicalize_comparison): Ditto.
11352
11353 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11354
11355         * tree-loop-distribution.c (struct builtin_info): New struct.
11356         (struct partition): Refactor fields into struct builtin_info.
11357         (partition_free): Free struct builtin_info.
11358         (build_size_arg_loc, build_addr_arg_loc): Delete.
11359         (generate_memset_builtin, generate_memcpy_builtin): Get memory range
11360         information from struct builtin_info.
11361         (find_single_drs): New function refactored from classify_partition.
11362         Also moved builtin validity checks to this function.
11363         (compute_access_range, alloc_builtin): New functions.
11364         (classify_builtin_st, classify_builtin_ldst): New functions.
11365         (classify_partition): Refactor code into functions find_single_drs,
11366         classify_builtin_st and classify_builtin_ldst.
11367         (distribute_loop): Don't do runtime alias check when distributing
11368         loop nest.
11369         (find_seed_stmts_for_distribution): New function.
11370         (pass_loop_distribution::execute): Refactor code finding seed
11371         stmts into above function.  Support distribution for the innermost
11372         two-level loop nest.  Adjust dump information.
11373
11374 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11375
11376         * tree-loop-distribution.c: Adjust the general comment.
11377         (NUM_PARTITION_THRESHOLD): New macro.
11378         (ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
11379         (classify_partition): Skip builtin pattern of loop nest's inner loop.
11380         (merge_dep_scc_partitions): New parameter ignore_alias_p and use it
11381         in call to build_partition_graph.
11382         (finalize_partitions): New parameter.  Make loop distribution more
11383         conservative by fusing more partitions.
11384         (distribute_loop): Don't do runtime alias check in case of loop nest
11385         distribution.
11386         (find_seed_stmts_for_distribution): New function.
11387         (prepare_perfect_loop_nest): New function.
11388         (pass_loop_distribution::execute): Refactor code finding seed stmts
11389         and loop nest into above functions.  Support loop nest distribution.
11390         Adjust dump information accordingly.
11391
11392 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11393
11394         * tree-loop-distribution.c (break_alias_scc_partitions): Add comment
11395         and set PTYPE_SEQUENTIAL for merged partition.
11396
11397 2017-10-12  Richard Biener  <rguenther@suse.de>
11398
11399         PR tree-optimization/69728
11400         Revert
11401         2017-09-19  Richard Biener  <rguenther@suse.de>
11402
11403         PR tree-optimization/69728
11404         * graphite-sese-to-poly.c (schedule_error): New global.
11405         (add_loop_schedule): Handle empty domain by failing the
11406         schedule.
11407         (build_original_schedule): Handle schedule_error.
11408
11409         * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
11410         domain by returning an unchanged schedule.
11411
11412 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11413
11414         * genrecog.c (validate_pattern): For VEC_SELECT verify that
11415         CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
11416
11417 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
11418
11419         * Makefile.in (TAGS): Merge all the *.def files into one pattern.
11420         Handle params.def.
11421
11422 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11423
11424         PR c++/82159
11425         * expr.c (store_field): Don't optimize away bitsize == 0 store
11426         from CALL_EXPR with addressable return type.
11427
11428 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11429
11430         * config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
11431         * config/rs6000/rs6000.md (sel): Delete mode attribute.
11432         (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
11433         *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
11434         TARGET_ISEL instead of TARGET_ISEL<sel>.
11435
11436 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
11437
11438         * config/rs6000/rs6000.c
11439         (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
11440
11441 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11442
11443         * config/rs6000/predicates.md (zero_constant, all_ones_constant):
11444         Move up in file.
11445         (reg_or_cint_operand): Fix comment.
11446         (reg_or_zero_operand): New predicate.
11447         * config/rs6000/rs6000-protos.h (output_isel): Delete.
11448         * config/rs6000/rs6000.c (output_isel): Delete.
11449         * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
11450         instead of reg_or_cint_operand.  Output instruction directly (not via
11451         output_isel).
11452         (isel_unsigned_<mode>): Ditto.
11453         (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
11454         gpc_reg_operand.  Add an instruction alternative for this.  Output
11455         instruction directly.
11456         (*isel_reversed_unsigned_<mode>): Ditto.
11457
11458 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11459
11460         * config/i386/i386.c (ix86_canonicalize_comparison): New function.
11461         (TARGET_CANONICALIZE_COMPARISON): Define.
11462
11463 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
11464
11465         PR target/81422
11466         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
11467         Check whether the dest is REG before adding REG_EQUIV note.
11468
11469 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11470
11471         PR sanitizer/82353
11472         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11473         locations.
11474         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11475         (make_hard_regno_born, make_hard_regno_dead): Update
11476         bb_killed_pseudos and bb_gen_pseudos.
11477
11478 2017-10-11  Nathan Sidwell  <nathan@acm.org>
11479
11480         * incpath.h (enum incpath_kind): Name enum, prefix values.
11481         (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
11482         * incpath.c (heads, tails): Use INC_MAX.
11483         (add_env_var_paths, add_standard_paths): Use incpath_kind.
11484         (merge_include_chains, split_quote_chain,
11485         register_include_chains): Update incpath_kind names.
11486         (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
11487         * config/darwin-c.c (add_system_framework_path): Update incpath_kind
11488         names.
11489         (add_framework_path, darwin_register_objc_includes): Likewise.
11490         * config/vms/vms-c.c (vms_c_register_includes): Likewise.
11491
11492 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11493
11494         * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
11495         Do not use float_operator operator predicate.
11496         (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
11497         * config/i386/predicates.md (float_operator): Remove predicate.
11498
11499 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11500
11501         * config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
11502         (*jccxf_i387): Ditto.
11503         (*jcc<mode>_i387): Ditto.
11504         (*jccu<mode>_i387): Ditto.
11505         (*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
11506         (*jcc_*_i387 splitters): Remove.
11507         * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
11508         * config/i386/i386.c (ix86_split_fp_branch): Remove.
11509         * config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
11510         Remove predicate.
11511
11512 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
11513
11514         * profile-count.h (slow_safe_scale_64bit): New function.
11515         (safe_scale_64bit): New inline.
11516         (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
11517         * profile-count.c: Include wide-int.h
11518         (slow_safe_scale_64bit): New.
11519
11520 2017-10-11  Nathan Sidwell  <nathan@acm.org>
11521
11522         * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
11523         HAS_DECL_ASSEMBLER_NAME_P.
11524         * gimple-expr.c (gimple_decl_printable_name: Check
11525         HAS_DECL_ASSEMBLER_NAME_P too.
11526         * ipa-utils.h (type_in_anonymous_namespace_p): Check
11527         DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
11528         (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
11529         * passes.c (rest_of_decl_compilation): Check
11530         HAS_DECL_ASSEMBLER_NAME_P too.
11531         * recog.c (verify_changes): Likewise.
11532         * tree-pretty-print.c (dump_decl_name): Likewise.
11533         * tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
11534
11535         * tree.h (DECL_ASSEMBLER_NAME_RAW): New.
11536         (SET_DECL_ASSEMBLER_NAME): Use it.
11537         (DECL_ASSEMBLER_NAME_SET_P): Likewise.
11538         (COPY_DECL_ASSEMBLER_NAME): Likewise.
11539         * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
11540
11541 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
11542
11543         * config.gcc (i386, x86_64): Add extra objects.
11544         * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
11545         (ix86_min_insn_size): Declare.
11546         (ix86_issue_rate): Declare.
11547         (ix86_adjust_cost): Declare.
11548         (ia32_multipass_dfa_lookahead): Declare.
11549         (ix86_macro_fusion_p): Declare.
11550         (ix86_macro_fusion_pair_p): Declare.
11551         (ix86_bd_has_dispatch): Declare.
11552         (ix86_bd_do_dispatch): Declare.
11553         (ix86_core2i7_init_hooks): Declare.
11554         (ix86_atom_sched_reorder): Declare.
11555         * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
11556         (COSTS_N_BYTES): Move to x86-tune-costs.h.
11557         (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
11558         (rip_relative_addr_p): Rename to ...
11559         (ix86_rip_relative_addr_p): ... this one; export.
11560         (memory_address_length): Update.
11561         (ix86_issue_rate): Move to x86-tune-sched.c.
11562         (ix86_flags_dependent): Move to x86-tune-sched.c.
11563         (ix86_agi_dependent): Move to x86-tune-sched.c.
11564         (exact_dependency_1): Move to x86-tune-sched.c.
11565         (exact_store_load_dependency): Move to x86-tune-sched.c.
11566         (ix86_adjust_cost): Move to x86-tune-sched.c.
11567         (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
11568         (ix86_macro_fusion_p): Move to x86-tune-sched.c.
11569         (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
11570         (do_reorder_for_imul): Move to x86-tune-sched-atom.c.
11571         (swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
11572         (ix86_sched_reorder): Move to x86-tune-sched-atom.c.
11573         (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
11574         (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
11575         (min_insn_size): Rename to ...
11576         (ix86_min_insn_size): ... this one; export.
11577         (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
11578         (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
11579         (core2i7_first_cycle_multipass_backtrack): Move to
11580         x86-tune-sched-core.c.
11581         (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
11582         (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
11583         (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
11584         (ix86_avoid_jump_mispredicts): Update.
11585         (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
11586         (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
11587         (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
11588         (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
11589         (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
11590         (MAX_INSN): Move to ix86-tune-sched-bd.c.
11591         (MAX_IMM): Move to ix86-tune-sched-bd.c.
11592         (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
11593         (MAX_IMM_32): Move to ix86-tune-sched-bd.c.
11594         (MAX_IMM_64): Move to ix86-tune-sched-bd.c.
11595         (MAX_LOAD): Move to ix86-tune-sched-bd.c.
11596         (MAX_STORE): Move to ix86-tune-sched-bd.c.
11597         (BIG): Move to ix86-tune-sched-bd.c.
11598         (enum dispatch_group): Move to ix86-tune-sched-bd.c.
11599         (enum insn_path): Move to ix86-tune-sched-bd.c.
11600         (get_mem_group): Move to ix86-tune-sched-bd.c.
11601         (is_cmp): Move to ix86-tune-sched-bd.c.
11602         (dispatch_violation): Move to ix86-tune-sched-bd.c.
11603         (is_branch): Move to ix86-tune-sched-bd.c.
11604         (is_prefetch): Move to ix86-tune-sched-bd.c.
11605         (init_window): Move to ix86-tune-sched-bd.c.
11606         (allocate_window): Move to ix86-tune-sched-bd.c.
11607         (init_dispatch_sched): Move to ix86-tune-sched-bd.c.
11608         (is_end_basic_block): Move to ix86-tune-sched-bd.c.
11609         (process_end_window): Move to ix86-tune-sched-bd.c.
11610         (allocate_next_window): Move to ix86-tune-sched-bd.c.
11611         (find_constant): Move to ix86-tune-sched-bd.c.
11612         (get_num_immediates): Move to ix86-tune-sched-bd.c.
11613         (has_immediate): Move to ix86-tune-sched-bd.c.
11614         (get_insn_path): Move to ix86-tune-sched-bd.c.
11615         (get_insn_group): Move to ix86-tune-sched-bd.c.
11616         (count_num_restricted): Move to ix86-tune-sched-bd.c.
11617         (fits_dispatch_window): Move to ix86-tune-sched-bd.c.
11618         (add_insn_window): Move to ix86-tune-sched-bd.c.
11619         (add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
11620         (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
11621         (debug_dispatch_window): Move to ix86-tune-sched-bd.c.
11622         (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
11623         (debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
11624         (do_dispatch): Move to ix86-tune-sched-bd.c.
11625         (has_dispatch): Move to ix86-tune-sched-bd.c.
11626         * config/i386/t-i386: Add new object files.
11627         * config/i386/x86-tune-costs.h: New file.
11628         * config/i386/x86-tune-sched-atom.c: New file.
11629         * config/i386/x86-tune-sched-bd.c: New file.
11630         * config/i386/x86-tune-sched-core.c: New file.
11631         * config/i386/x86-tune-sched.c: New file.
11632
11633 2017-10-11  Liu Hao  <lh_mouse@126.com>
11634
11635         * pretty-print.c [_WIN32] (colorize_init): Remove.  Use
11636         the generic version below instead.
11637         (should_colorize): Recognize Windows consoles as terminals
11638         for MinGW targets.
11639         * pretty-print.c [__MINGW32__] (write_all): New function.
11640         [__MINGW32__] (find_esc_head): Likewise.
11641         [__MINGW32__] (find_esc_terminator): Likewise.
11642         [__MINGW32__] (eat_esc_sequence): Likewise.
11643         [__MINGW32__] (mingw_ansi_fputs): New function that handles
11644         ANSI escape codes.
11645         (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
11646         for MinGW targets.
11647
11648 2017-10-11  Richard Biener  <rguenther@suse.de>
11649
11650         * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
11651         Properly call analyze_scalar_evolution with the loop of the stmt.
11652
11653 2017-10-11  Richard Biener  <rguenther@suse.de>
11654
11655         * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
11656         * tree-core.h (tree_base): Add chrec_var union member.
11657         * tree.h (CHREC_VAR): Remove.
11658         (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
11659         * tree-chrec.h (build_polynomial_chrec): Adjust.
11660         * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
11661         * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
11662
11663 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
11664
11665         * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
11666         * match.pd: ... here.
11667         ((T) X == (T) Y): Relax condition.
11668
11669 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
11670
11671         PR tree-optimization/82472
11672         * tree-loop-distribution.c (sort_partitions_by_post_order): Refine
11673         comment.
11674         (break_alias_scc_partitions): Update postorder number.
11675
11676 2017-10-11  Martin Liska  <mliska@suse.cz>
11677
11678         PR sanitizer/82490
11679         * opts.c (parse_no_sanitize_attribute): Do not use error_value
11680         variable.
11681         * opts.h (parse_no_sanitize_attribute): Remove last argument.
11682
11683 2017-10-11  Martin Liska  <mliska@suse.cz>
11684
11685         * print-rtl.c (print_insn): Move declaration of idbuf
11686         to same scope as name.
11687
11688 2017-10-11  Martin Liska  <mliska@suse.cz>
11689
11690         Revert r253637:
11691
11692         PR sanitizer/82484
11693         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11694         volatile arguments.
11695
11696 2017-10-11  Martin Liska  <mliska@suse.cz>
11697
11698         PR sanitizer/82484
11699         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11700         volatile arguments.
11701
11702 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
11703
11704         * config.gcc (default_gnu_indirect_function): Default to yes for
11705         arm*-*-linux* with glibc.
11706
11707 2017-10-11  Richard Biener  <rguenther@suse.de>
11708
11709         * tree-scalar-evolution.c (get_scalar_evolution): Handle
11710         default-defs and types we do not want to analyze.
11711         (interpret_loop_phi): Replace unreachable code with an assert.
11712         (compute_scalar_evolution_in_loop): Remove and inline ...
11713         (analyze_scalar_evolution_1): ... here, replacing condition with
11714         what makes the intent clearer.  Remove handling of cases
11715         get_scalar_evolution now handles.
11716
11717 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
11718
11719         PR rtl-optimization/81434
11720         * haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
11721         comment for main loop.  In sched_group_found if, also add checks for
11722         pass and min_cost_group.
11723
11724 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
11725
11726         * config/rs6000/rs6000.c (TARGET_INSN_COST): New.
11727         (rs6000_insn_cost): New function.
11728         * config/rs6000/rs6000.md (cost): New attribute.
11729
11730 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
11731             H.J. Lu  <hongjiu.lu@intel.com>
11732
11733         PR target/79565
11734         PR target/82483
11735         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
11736         OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
11737         __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
11738         (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
11739         to OPTION_MASK_ISA_AVX512VL - builtins that have both
11740         OPTION_MASK_ISA_MMX and some other bit set require both
11741         mmx and the ISAs without the mmx bit.
11742         * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
11743         __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
11744         __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
11745         __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
11746         __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
11747         __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
11748         __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
11749         __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
11750         __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
11751         __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
11752         __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
11753         __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
11754         __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
11755         __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
11756         Add OPTION_MASK_ISA_MMX.
11757
11758 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
11759
11760         * config.gcc (armv7*-*-freebsd*): New target.
11761         (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
11762
11763 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
11764
11765         * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
11766         X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
11767         spot in the file.
11768
11769 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
11770
11771         * wide-int.h (wide_int_ref_storage): Make host_dependent_precision
11772         a template parameter.
11773         (WIDE_INT_REF_FOR): Update accordingly.
11774         * tree.h (wi::int_traits <const_tree>): Delete.
11775         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
11776         (wi::to_widest, wi::to_offset): Use them.  Expand commentary.
11777         (wi::tree_to_wide_ref): New typedef.
11778         (wi::to_wide): New function.
11779         * calls.c (get_size_range): Use wi::to_wide when operating on
11780         trees as wide_ints.
11781         * cgraph.c (cgraph_node::create_thunk): Likewise.
11782         * config/i386/i386.c (ix86_data_alignment): Likewise.
11783         (ix86_local_alignment): Likewise.
11784         * dbxout.c (stabstr_O): Likewise.
11785         * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
11786         * expr.c (const_vector_from_tree): Likewise.
11787         * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
11788         * fold-const.c (may_negate_without_overflow_p, negate_expr_p)
11789         (fold_negate_expr_1, int_const_binop_1, const_binop)
11790         (fold_convert_const_int_from_real, optimize_bit_field_compare)
11791         (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
11792         (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
11793         (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
11794         (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
11795         (fold_not_const, round_up_loc): Likewise.
11796         * gimple-fold.c (gimple_fold_indirect_ref): Likewise.
11797         * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
11798         (alloca_call_type): Likewise.
11799         * gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
11800         * godump.c (go_output_typedef): Likewise.
11801         * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
11802         * internal-fn.c (get_min_precision): Likewise.
11803         * ipa-cp.c (ipcp_store_vr_results): Likewise.
11804         * ipa-polymorphic-call.c
11805         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
11806         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
11807         (ipa_modify_call_arguments): Likewise.
11808         * match.pd: Likewise.
11809         * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
11810         * print-tree.c (print_node_brief, print_node): Likewise.
11811         * stmt.c (expand_case): Likewise.
11812         * stor-layout.c (layout_type): Likewise.
11813         * tree-affine.c (tree_to_aff_combination): Likewise.
11814         * tree-cfg.c (group_case_labels_stmt): Likewise.
11815         * tree-data-ref.c (dr_analyze_indices): Likewise.
11816         (prune_runtime_alias_test_list): Likewise.
11817         * tree-dump.c (dequeue_and_dump): Likewise.
11818         * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
11819         * tree-predcom.c (is_inv_store_elimination_chain): Likewise.
11820         * tree-pretty-print.c (dump_generic_node): Likewise.
11821         * tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
11822         (simple_iv_with_niters): Likewise.
11823         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
11824         * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
11825         * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
11826         * tree-ssa-loop-niter.c (split_to_var_and_offset)
11827         (refine_value_range_using_guard, number_of_iterations_ne_max)
11828         (number_of_iterations_lt_to_ne, number_of_iterations_lt)
11829         (get_cst_init_from_scev, record_nonwrapping_iv)
11830         (scev_var_range_cant_overflow): Likewise.
11831         * tree-ssa-phiopt.c (minmax_replacement): Likewise.
11832         * tree-ssa-pre.c (compute_avail): Likewise.
11833         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
11834         (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
11835         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
11836         * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
11837         * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
11838         * tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
11839         (dump_case_nodes, try_switch_expansion): Likewise.
11840         * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
11841         (vect_do_peeling): Likewise.
11842         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
11843         * tree-vect-stmts.c (vectorizable_load): Likewise.
11844         * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
11845         (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
11846         (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
11847         (overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
11848         (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
11849         (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
11850         (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
11851         (evrp_dom_walker::before_dom_children): Likewise.
11852         * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
11853         (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
11854         (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
11855         (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
11856         (get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
11857         (get_range_pos_neg): Likewise.
11858         * ubsan.c (ubsan_expand_ptr_ifn): Likewise.
11859         * config/darwin.c (darwin_mergeable_constant_section): Likewise.
11860         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
11861         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
11862         * config/avr/avr.c (avr_fold_builtin): Likewise.
11863         * config/bfin/bfin.c (bfin_local_alignment): Likewise.
11864         * config/msp430/msp430.c (msp430_attr): Likewise.
11865         * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
11866         * config/powerpcspe/powerpcspe-c.c
11867         (altivec_resolve_overloaded_builtin): Likewise.
11868         * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
11869         (rs6000_expand_ternop_builtin): Likewise.
11870         * config/rs6000/rs6000-c.c
11871         (altivec_resolve_overloaded_builtin): Likewise.
11872         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
11873         (rs6000_expand_ternop_builtin): Likewise.
11874         * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
11875
11876 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11877
11878         * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
11879         when copying loop nest with only one inner loop.
11880
11881 2017-10-10  Richard Biener  <rguenther@suse.de>
11882
11883         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
11884         blocks if SCEV is active.
11885         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
11886         dead code.
11887         (analyze_scalar_evolution): Handle cached evolutions the obvious way.
11888         (scev_initialize): Assert we are not yet initialized.
11889
11890 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11891
11892         * tree-loop-distribution.c (generate_loops_for_partition): Remove
11893         inner loop's exit stmt by making it always exit the loop, otherwise
11894         we would generate an infinite empty loop.
11895
11896 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11897
11898         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
11899         renaming variables in new preheader if it's deleted.
11900
11901 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11902
11903         * tree-loop-distribution.c (struct partition): Remove unused field
11904         loops of the structure.
11905         (partition_alloc, partition_free): Ditto.
11906         (build_rdg_partition_for_vertex): Ditto.
11907
11908 2017-10-09  Jeff Law  <law@redhat.com>
11909
11910         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
11911         return type to match prototype and documentation.
11912
11913 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11914
11915         * config/rs6000/rs6000.c (processor_costs): Move to ...
11916         * config/rs6000/rs6000.h: ... here.
11917         (rs6000_cost): Declare.
11918
11919 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
11920
11921         * except.c (setjmp_fn): New global variable.
11922         (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
11923         (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
11924         if DONT_USE_BUILTIN_SETJMP is defined.
11925
11926 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11927
11928         * target.def (insn_cost): New hook.
11929         * doc/tm.texi.in (TARGET_INSN_COST): New hook.
11930         * doc/tm.texi: Regenerate.
11931         * rtlanal.c (insn_cost): Use the new hook.
11932
11933 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11934
11935         * combine.c (combine_validate_cost): Compute the new insn_cost,
11936         not just pattern_cost.
11937         (try_combine): Adjust comment.
11938
11939 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11940
11941         * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
11942         insn_cost.
11943         * combine.c (uid_insn_cost): Adjust comment.
11944         (combine_validate_cost): Adjust comment.  Use pattern_cost instead
11945         of insn_rtx_cost
11946         (combine_instructions): Use insn_cost instead of insn_rtx_cost.
11947         * dse.c (find_shift_sequence): Ditto.
11948         * ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
11949         (bb_valid_for_noce_process_p): Use pattern_cost.
11950         * rtl.h (insn_rtx_cost): Delete.
11951         (pattern_cost): New prototype.
11952         (insn_cost): New prototype.
11953         * rtlanal.c (insn_rtx_cost): Rename to...
11954         (pattern_cost): ... this.
11955         (insn_cost): New.
11956
11957 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
11958
11959         * config/i386/i386.md (*jcc_2): Remove insn pattern.
11960         (*jcc<mode>_0_r_i387): Ditto.
11961         (*jccxf_r_i387): Ditto.
11962         (*jcc<mode>_r_i387): Ditto.
11963         (*jccu<mode>_r_i387): Ditto.
11964         (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
11965         (*jcc): Rename from *jcc_1.
11966
11967 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11968
11969         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
11970         deferred rescans after the lvx/stvx recombination pre-pass.
11971
11972 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
11973
11974         * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
11975         memory operation instruction support.
11976         * config.gcc (powerpc*-*-*): Include amo.h as an extra header.
11977         (rs6000-ibm-aix[789]*): Likewise.
11978         * doc/extend.texi (PowerPC Atomic Memory Operation Functions):
11979         Document new functions.
11980
11981 2017-10-09  Richard Biener  <rguenther@suse.de>
11982
11983         PR tree-optimization/82397
11984         * tree-data-ref.c (data_ref_compare_tree): Make sure to return
11985         equality only for semantically equal trees.
11986
11987 2017-10-09  Richard Biener  <rguenther@suse.de>
11988
11989         PR tree-optimization/82449
11990         * sese.c (scev_analyzable_p): Check whether the SCEV is linear.
11991         * tree-chrec.h (evolution_function_is_constant_p): Adjust to
11992         allow constant addresses.
11993         * tree-chrec.c (scev_is_linear_expression): Constant evolutions
11994         are linear.
11995
11996 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11997
11998         * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
11999         flags.
12000
12001 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12002
12003         PR target/82463
12004         * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
12005         definitions.
12006
12007 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12008
12009         PR target/82465
12010         * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
12011
12012 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
12013
12014         PR target/82464
12015         * config/s390/s390-builtins.def (s390_vec_xor_flt_a,
12016         s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
12017
12018 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
12019
12020         * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
12021         (WI_BINARY_PREDICATE_RESULT): Likewise.
12022         (wi::binary_traits::operator_result): New type.
12023         (wi::binary_traits::predicate_result): Likewise.
12024         (generic_wide_int::operator~, unary generic_wide_int::operator-)
12025         (generic_wide_int::operator==, generic_wide_int::operator!=)
12026         (generic_wide_int::operator&, generic_wide_int::and_not)
12027         (generic_wide_int::operator|, generic_wide_int::or_not)
12028         (generic_wide_int::operator^, generic_wide_int::operator+
12029         (binary generic_wide_int::operator-, generic_wide_int::operator*):
12030         Delete.
12031         (operator~, unary operator-, operator==, operator!=, operator&)
12032         (operator|, operator^, operator+, binary operator-, operator*): New
12033         functions.
12034         * expr.c (get_inner_reference): Use wi::bit_and_not.
12035         * fold-const.c (fold_binary_loc): Likewise.
12036         * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
12037         * tree-ssa-ccp.c (get_value_from_alignment): Likewise.
12038         (bit_value_binop): Likewise.
12039         * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
12040         * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
12041         (extract_range_from_binary_expr_1): Likewise.
12042         (masked_increment): Likewise.
12043         (simplify_bit_ops_using_ranges): Likewise.
12044
12045 2017-10-09  Martin Jambor  <mjambor@suse.cz>
12046
12047         PR hsa/82416
12048         * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
12049         * hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
12050         (hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
12051         COMPLEX types.
12052         (hsa_fixup_mov_insn_type): New function.
12053         (hsa_op_with_type::get_in_type): Use it.
12054         (hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
12055         immediates in an assert.
12056         (hsa_op_with_type::extend_int_to_32bit): New method.
12057         (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
12058         types.  Convert to dest type if necessary.
12059         (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
12060         (reg_for_gimple_ssa): Pass false as min32int to
12061         hsa_type_for_scalar_tree_type.
12062         (gen_hsa_addr): Fixup type when creating addresable temporary.
12063         (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
12064         (gen_hsa_unary_operation): Extend operands and convert to dest type if
12065         necessary.  Call hsa_fixup_mov_insn_type.
12066         (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
12067         extend operands and convert to dest type if necessary.
12068         (gen_hsa_insns_for_operation_assignment): Extend operands and convert
12069         to dest type if necessary.
12070         (set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
12071         if conversion nt necessary and size matches.
12072         (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
12073         to dest type if necessary.
12074         (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
12075         (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
12076         necessary.
12077         (gen_hsa_clrsb): Likewise.
12078         (gen_hsa_ffs): Likewise.
12079         (gen_hsa_divmod): Extend operands and convert to dest type if
12080         necessary.
12081         (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
12082
12083 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12084
12085         * config/rs6000/rs6000.md (conditional branch): Clean up formatting.
12086         Remove empty default arguments.  Use a brace block as output
12087         statement.
12088         (conditional return): Ditto.
12089         (jump): Ditto.
12090         (indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
12091         (tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
12092         Ditto.
12093         (group_ending_nop): Ditto.
12094         (doloop_end): Ditto.
12095         (ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
12096         (splitters for those): Ditto.
12097
12098 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12099
12100         * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
12101         a conditional jump (and the compare for it) so that pc_rtx is the
12102         last operand.
12103         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
12104         for the deleted and renamed ctr<mode>_internal[234] patterns.
12105         * config/rs6000/rs6000.md: Delete second conditional branch pattern.
12106         Delete second conditional return pattern.
12107         (ctr<mode>_internal2): Delete this second bdnz pattern.
12108         (ctr<mode>_internal3): Rename to ctr<mode>_internal2.
12109         (ctr<mode>_internal4): Delete this second bdz pattern.
12110
12111 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12112
12113         * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
12114         (always_initialized_rtx_for_ssa_name_p): New predicate.
12115         * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
12116         (finish_out_of_ssa): Free new field of SA.
12117         * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
12118         * tree-ssa-coalesce.c: Include tree-ssa.h.
12119         (get_parm_default_def_partitions): Remove extern keyword.
12120         (get_undefined_value_partitions): New function.
12121         * expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
12122         not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
12123         uninitialized bits.
12124         * loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
12125
12126 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12127
12128         * builtins.def (BUILT_IN_SETJMP): Revert latest change.
12129
12130 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12131
12132         * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
12133         for targets that preffer 128bit.
12134
12135 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12136
12137         * config/i386/i386.c (has_dispatch): Disable for Ryzen.
12138
12139 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12140
12141         * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
12142         on the target mem instead of RTX_FRAME_RELATED_P on the insn to
12143         prevent DSE.
12144         (thumb_set_return_address): Likewise.
12145
12146 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12147
12148         * common/config/arm/arm-common.c (arm_except_unwind_info):
12149         Handle DWARF2_UNWIND_INFO.
12150
12151 2017-10-07  Michael Collison <michael.collison@arm.com>
12152
12153         * config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
12154         New pattern.
12155
12156 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
12157
12158         * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
12159         of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
12160         * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
12161         defined, force the creation of a new block for a dispatch label.
12162
12163 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
12164
12165         * invoke.texi (Wsuggest-attribute=cold): Document.
12166         * common.opt (Wsuggest-attribute=cold): New
12167         * ipa-pure-const.c (warn_function_cold): New function.
12168         * predict.c (compute_function_frequency): Use it.
12169         * predict.h (warn_function_cold): Declare.
12170
12171 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
12172
12173         * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
12174         Update profile.
12175
12176 2017-10-06  Martin Liska  <mliska@suse.cz>
12177
12178         * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
12179         keyword for member functions.
12180         (struct sanopt_tree_couple): New struct.
12181         (struct sanopt_tree_couple_hash): New function.
12182         (struct sanopt_ctx): Add new hash_map.
12183         (has_dominating_ubsan_ptr_check): New function.
12184         (record_ubsan_ptr_check_stmt): Likewise.
12185         (maybe_optimize_ubsan_ptr_ifn): Likewise.
12186         (sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
12187         (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
12188
12189 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
12190
12191         PR target/82440
12192         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
12193         aarch64_simd_valid_immediate on CONST_VECTORs.
12194         (aarch64_reg_or_bic_imm): Likewise.
12195
12196 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
12197
12198         PR rtl-optimization/82396
12199         * haifa-sched.c (ready_sort_real): Disable qsort checking.
12200
12201 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
12202
12203         * graphite-dependences.c (scop_get_reads): Move code to...
12204         (scop_get_must_writes): Move code to...
12205         (scop_get_may_writes): Move code to...
12206         (scop_get_reads_and_writes): ... here.
12207         (scop_get_dependences): Call scop_get_reads_and_writes.
12208
12209 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
12210
12211         PR tree-optimization/82434
12212         * fold-const.h (can_native_encode_type_p,
12213         can_native_encode_string_p): Remove.
12214         * fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
12215         don't encode anything, just return what would be otherwise returned.
12216         (native_encode_fixed, native_encode_complex, native_encode_vector):
12217         Likewise.
12218         (native_encode_string): Likewise.  Inline by hand
12219         can_native_encode_string_p.
12220         (can_native_encode_type_p): Remove.
12221         (can_native_encode_string_p): Remove.
12222         * tree-vect-stmts.c (vectorizable_store): Instead of testing just
12223         STRING_CSTs using can_native_encode_string_p, test all
12224         CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
12225         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
12226         argument from native_encode_expr.
12227         (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
12228         (pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
12229         but just 2.
12230
12231 2017-10-06  Richard Biener  <rguenther@suse.de>
12232
12233         PR tree-optimization/82397
12234         * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
12235         operand_equal_p but rely on data_ref_compare_tree for detecting
12236         equalities.
12237         (vect_analyze_data_ref_accesses): Use data_ref_compare_tree
12238         to match up with dr_group_sort_cmp.
12239
12240 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12241
12242         PR target/82322
12243         * config/s390/s390-builtins.def (s390_vfi): Define new overloaded
12244         builtin.
12245         * config/s390/s390-builtin-types.def: Regenerate.
12246
12247 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12248
12249         PR target/82317
12250         * config/s390/s390-builtin-types.def: Regenerate.
12251         * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
12252         Change flag from B_VXE to B_VX.
12253         (s390_vec_min_dbl): Remove B_VXE flag.
12254
12255 2017-10-06  Richard Biener  <rguenther@suse.de>
12256
12257         * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
12258         (translate_isl_ast_to_gimple::translate_pending_phi_nodes,
12259         translate_isl_ast_to_gimple::is_valid_rename,
12260         translate_isl_ast_to_gimple::get_rename,
12261         translate_isl_ast_to_gimple::get_def_bb_for_const,
12262         translate_isl_ast_to_gimple::get_new_name,
12263         translate_isl_ast_to_gimple::collect_all_ssa_names,
12264         translate_isl_ast_to_gimple::copy_loop_phi_args,
12265         translate_isl_ast_to_gimple::collect_all_ssa_names,
12266         translate_isl_ast_to_gimple::copy_loop_phi_args,
12267         translate_isl_ast_to_gimple::copy_loop_phi_nodes,
12268         translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
12269         translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
12270         translate_isl_ast_to_gimple::copy_loop_close_phi_args,
12271         translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
12272         translate_isl_ast_to_gimple::copy_cond_phi_args,
12273         translate_isl_ast_to_gimple::copy_cond_phi_nodes,
12274         translate_isl_ast_to_gimple::edge_for_new_close_phis,
12275         translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
12276         translate_isl_ast_to_gimple::rename_uses,
12277         translate_isl_ast_to_gimple::rename_all_uses): Remove.
12278         (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
12279         (set_rename_for_each_def): Likewise.
12280         (graphite_copy_stmts_from_block): Handle debug stmt resetting
12281         here.  Handle rewriting SCEV analyzable uses here.
12282         (copy_bb_and_scalar_dependences): Generate code for PHI
12283         copy-in/outs.
12284         (graphite_regenerate_ast_isl): Adjust.
12285         * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
12286         (add_write, add_read): New functions.
12287         (build_cross_bb_scalars_def): Use it and simplify.
12288         (build_cross_bb_scalars_use): Likewise.
12289         (graphite_find_cross_bb_scalar_vars): Inline into...
12290         (try_generate_gimple_bb): ...here.  Add dependences for PHIs,
12291         simulating out-of-SSA.  Compute liveout and add dependencies.
12292         (build_scops): Force an empty entry block.
12293         * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
12294         members.
12295         (sese_build_liveouts): Declare.
12296         (sese_trivially_empty_bb_p): Likewise.
12297         * sese.c (sese_build_liveouts_bb): Properly handle PHIs,
12298         compute liveout and debug_liveout.
12299         (sese_bad_liveouts_use): Remove.
12300         (sese_reset_debug_liveouts_bb): Likewise.
12301         (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
12302         (sese_build_liveouts): Build liveout and debug_liveout and store
12303         it in region.
12304         (new_sese_info): Adjust.
12305         (free_sese_info): Likewise.
12306         (sese_insert_phis_for_liveouts): Reset debug stmts from here,
12307         do not build liveout here.
12308         (move_sese_in_condition): Adjust region entry.
12309         (scev_analyzable_p): Match up with chrec_apply requirements.
12310         (sese_trivially_empty_bb_p): New.
12311         * tree-into-ssa.c (get_reaching_def): Properly support generating
12312         default-defs for incremental rewrite of anonymous names.
12313
12314 2017-10-06  Richard Biener  <rguenther@suse.de>
12315
12316         * graphite-sese-to-poly.c (extract_affine): For casts increasing
12317         precision do not perform modulo reduction.
12318
12319 2017-10-06  Richard Biener  <rguenther@suse.de>
12320
12321         PR tree-optimization/82436
12322         * tree-vect-slp.c (vect_supported_load_permutation_p): More
12323         conservatively choose the vectorization factor when checking
12324         whether we can perform the required load permutation.
12325         (vect_transform_slp_perm_load): Assert when we may not fail.
12326
12327 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
12328
12329         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
12330         message for incompatible -msdata=* and -mcall-* options.
12331
12332 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12333
12334         * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
12335         rate for post-reload scheduling.
12336
12337 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12338
12339         * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
12340
12341 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12342
12343         * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
12344         to improve monte carlo in scimark.
12345
12346 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12347
12348         * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
12349         pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
12350         athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
12351         pentium4_cost, nocona_cost): Set reassociation width to 1.
12352         (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
12353         width to 2 for fp operations and 1 otherwise.
12354         (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
12355         for int and fp.
12356         (atom_cost): Set reassociation width to 2.
12357         (slm_cost, generic_cost): Set fp reassociation width
12358         to 2 and 1 otherwise.
12359         (intel_cost): Set fp reassociation width to 4 and 1 otherwise.
12360         (core_cost): Set fp reassociation width to 4 and vector to 2.
12361         (ix86_reassociation_width): Rewrite using cost table; special case
12362         plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
12363         and TARGET_AVX128_OPTIMAL.
12364         * config/i386/i386.h (processor_costs): Add
12365         reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
12366         (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
12367         TARGET_REASSOC_FP_TO_PARALLEL): Remove.
12368         * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
12369         (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
12370         (X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
12371
12372 2017-10-05  Nathan Sidwell  <nathan@acm.org>
12373
12374         * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
12375
12376 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12377
12378         * config/arm/arm.c (arm_test_fpu_data): New.
12379         (arm_run_selftests): Call arm_test_fpu_data.
12380
12381 2017-10-04  Nathan Sidwell  <nathan@acm.org>
12382
12383         * toplev.c (toplev::main): Remove excess parens on pretty_printer
12384         decl.
12385         * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
12386
12387 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
12388
12389         * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
12390         check type for aarch64_simd_valid_immediate.
12391         (aarch64_output_simd_mov_immediate): Update prototype.
12392         (aarch64_simd_valid_immediate): Update prototype.
12393         * config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
12394         support for ORR-immediate.
12395         (and<mode>3): modified pattern to add support for BIC-immediate.
12396         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
12397         now checks for valid immediate for BIC and ORR based on new enum
12398         argument.
12399         (aarch64_output_simd_mov_immediate): Function now used to output
12400         BIC/ORR imm as well based on new enum argument.
12401         * config/aarch64/constraints.md (Do): New vector immediate constraint.
12402         (Db) : Likewise.
12403         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
12404         (aarch64_reg_or_bic_imm): Likewise.
12405
12406 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12407
12408         * config/s390/vx-builtins.md ("vec_mergeh<mode>")
12409         ("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
12410
12411 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12412
12413         Revert r253399:
12414
12415         PR rtl-optimization/82396
12416         * haifa-sched.c (autopref_multipass_init): Simplify
12417         initialization.
12418         (autopref_rank_data): Simplify sort order.
12419         * sched-int.h (autopref_multipass_data_): Remove
12420         multi_mem_insn_p, min_offset and max_offset.
12421
12422 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12423
12424         * doc/sourcebuild.texi: Document vect_peeling_profitable.
12425
12426 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12427
12428         * doc/sourcebuild.texi: Document vect_intdouble_cvt and
12429         vect_doubleint_cvt.
12430
12431 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12432
12433         * doc/sourcebuild.texi: Document vect_long_mult.
12434
12435 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
12436
12437         PR tree-optimization/82413
12438         * fold-const.c (build_range_check): Use widest_int when comparing
12439         the maximum ETYPE value with HIGH.
12440
12441 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12442
12443         PR rtl-optimization/82396
12444         * haifa-sched.c (autopref_multipass_init): Simplify
12445         initialization.
12446         (autopref_rank_data): Simplify sort order.
12447         * sched-int.h (autopref_multipass_data_): Remove
12448         multi_mem_insn_p, min_offset and max_offset.
12449
12450 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
12451
12452         PR tree-optimization/82381
12453         * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
12454         oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
12455         is not.
12456
12457         PR tree-optimization/82374
12458         * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
12459         DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
12460         DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
12461         current_function_decl to the new decl.
12462
12463 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
12464
12465         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
12466         helper macro for IEEE float128 hardware built-in functions.
12467         (SQRTF128_ODD): Add built-in functions with the round-to-odd
12468         semantics.
12469         (TRUNCF128_ODD): Likewise.
12470         (ADDF128_ODD): Likewise.
12471         (SUBF128_ODD): Likewise.
12472         (MULF128_ODD): Likewise.
12473         (DIVF128_ODD): Likewise.
12474         (FMAF128_ODD): Likewise.
12475         * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
12476         UNSPEC_TRUNC_ROUND_TO_ODD.
12477         (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
12478         (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
12479         floating point round to odd instructions.
12480         (UNSPEC_SUB_ROUND_TO_ODD): Likewise.
12481         (UNSPEC_MUL_ROUND_TO_ODD): Likewise.
12482         (UNSPEC_DIV_ROUND_TO_ODD): Likewise.
12483         (UNSPEC_FMA_ROUND_TO_ODD): Likewise.
12484         (UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
12485         (trunc<mode>sf2_hw): Change the truncate with round to odd
12486         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
12487         (add<mode>3_odd): Add insns for IEEE 128-bit floating point round
12488         to odd hardware instructions.
12489         (sub<mode>3_odd): Likewise.
12490         (mul<mode>3_odd): Likewise.
12491         (div<mode>3_odd): Likewise.
12492         (sqrt<mode>2_odd): Likewise.
12493         (fma<mode>4_odd): Likewise.
12494         (fms<mode>4_odd): Likewise.
12495         (nfma<mode>4_odd): Likewise.
12496         (nfms<mode>4_odd): Likewise.
12497         (trunc<mode>df2_odd): Change the truncate with round to odd
12498         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
12499         function.
12500         * doc/extend.texi (PowerPC built-in functions): Update documentation
12501         for existing IEEE float128-bit built-in functions.  Add built-in
12502         functions that generate the IEEE 128-bit floating point round to
12503         odd instructions.
12504
12505 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
12506
12507         PR rtl-optimization/77729
12508         * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
12509         to (X&(C1&~C2))|C2 transformations.
12510
12511 2017-10-03  Martin Jambor  <mjambor@suse.cz>
12512
12513         PR tree-optimization/82363
12514         * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
12515         mismatch, mark lacc written regardless of racc.
12516
12517 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
12518
12519         PR tree-optimization/82381
12520         * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
12521         stmt_to_insert nor wheather SSA_NAMEs are default defs.
12522         Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
12523         fallthrough into reassoc_stmt_dominates_stmt_p.
12524
12525         PR target/82386
12526         * combine.c (combine_instructions): Don't combine in unreachable
12527         basic blocks.
12528
12529 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
12530
12531         PR target/80210
12532         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
12533         function to not use the have_cpu variable.  Do not set cpu_index,
12534         rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
12535         or the default cpu.
12536         (rs6000_valid_attribute_p): Remove duplicate initializations of
12537         old_optimize and func_optimize.
12538         (rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
12539         (rs6000_activate_target_options): Make global.
12540         * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
12541         prototype.
12542
12543 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
12544
12545         * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
12546         if *poffset + *pmax_size overflows in HOST_WIDE_INT.
12547         Set *poffset to 0 and *psize and *pmax_size to -1 if
12548         *poffset + *psize overflows in HOST_WIDE_INT.
12549
12550         PR tree-optimization/82387
12551         PR tree-optimization/82388
12552         PR tree-optimization/82389
12553         * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
12554         instead of live_bytes non-NULL.
12555
12556 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
12557
12558         PR target/41076
12559         * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
12560         alternative.
12561
12562 2017-10-02  Richard Biener  <rguenther@suse.de>
12563
12564         * graphite-isl-ast-to-gimple.c (set_codegen_error): With
12565         -fchecking and --param graphite-allow-codegen-errors=0 ICE.
12566         * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
12567
12568 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
12569
12570         * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
12571         requested precision matches the type's.
12572         * calls.c (alloc_max_size): Calculate the new candidate size as
12573         a widest_int and use wi::to_widest when comparing it with the
12574         current candidate size.
12575         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
12576         zero rather than integer_zero_node.
12577         * match.pd: Check for a no-op conversion before using wi::add
12578         rather than after.  Use tree_to_uhwi when summing small shift
12579         counts into an unsigned int.
12580
12581 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
12582             Alan Hayward  <alan.hayward@arm.com>
12583             David Sherwood  <david.sherwood@arm.com>
12584
12585         PR target/71307
12586         * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
12587         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
12588         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
12589         POINTER_AND_FP_REGS.
12590
12591 2017-10-02  Richard Biener  <rguenther@suse.de>
12592
12593         PR tree-optimization/82355
12594         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
12595         a mapping for the enclosing loop but avoid generating one for
12596         the loop tree root.
12597         (copy_bb_and_scalar_dependences): Remove premature codegen
12598         error on PHIs in blocks duplicated into multiple places.
12599         * graphite-scop-detection.c
12600         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
12601         in the region use it as loop and nest to analyze the DR in.
12602         (try_generate_gimple_bb): Likewise.
12603         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
12604         (add_loop_constraints): For blocks in a loop not in the region
12605         create a dimension with a single iteration.
12606         * sese.h (gbb_loop_at_index): Remove assert.
12607
12608 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
12609
12610         * omp-expand.c (adjust_context_scope): New function.
12611         (expand_parallel_call): Call adjust_context_scope.
12612
12613 2017-10-01  Jeff Law  <law@redhat.com>
12614
12615         * tree-ssa-dom.c (optimize_stmt): Make this a method within the
12616         dom_opt_dom_walker class with direct access to private members.
12617         Add comments.  Call test_for_singularity.
12618         (dom_opt_dom_walker::before_dom_children): Corresponding changes.
12619         (dom_opt_dom_walker::after_dom_children): Do not lazily initialize
12620         m_dummy_cond anymore.
12621         (class dom_opt_dom_walker): Initialize m_dummy_cond member in the
12622         class ctor.
12623         (pass_dominator:execute): Build the dummy_cond here and pass it
12624         to the dom_opt_dom_walker ctor.
12625         (test_for_singularity): New function.
12626
12627 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
12628             Maya Rashish  <coypu@sdf.org>
12629
12630         * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
12631         netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
12632         (alpha*-*-netbsd*) Use nbsd_tm_file.
12633         (arm*-*-netbsdelf*) Likewise.
12634         (i[34567]86-*-netbsdelf*) Likewise.
12635         (x86_64-*-netbsd*) Likewise.
12636         (mips*-*-netbsd*) Likewise.
12637         (powerpc-*-netbsd*) Likewise.
12638         (sh*-*-netbsd*) Likewise.
12639         (sparc-*-netbsdelf*) Likewise.
12640         (sparc64-*-netbsd*) Likewise.
12641         (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
12642         to tm_defines.
12643         (vax-*-netbsdelf*) Likewise.
12644         * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
12645         (UINT_FAST8_TYPE) Likewise.
12646         (INT_FAST16_TYPE) Check CHAR_FAST16.
12647         (UINT_FAST16_TYPE) Likewise.
12648
12649 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
12650
12651         PR target/82361
12652         * config/i386/i386.md
12653         (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
12654         (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
12655         *divmodsi4_zext_2): New define_insn_and_split.
12656         (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
12657         (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
12658         (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
12659         *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
12660         New define_insn_and_split.
12661         (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
12662         * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
12663         operands[1] having DImode when mode is SImode.
12664
12665         * config/i386/i386.c (ix86_split_idivmod): Use mode instead of
12666         always SImode for DIV and MOD in REG_EQUAL notes.
12667
12668 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
12669
12670         PR middle-end/82319
12671         * match.pd: Fix handling of NaNs in pattern.
12672
12673 2017-09-29  Jeff Law  <law@redhat.com>
12674
12675         * sbitmap.c (bitmap_bit_in_range_p): New function.
12676         * sbitmap.h (bitmap_bit_in_range_p): Prototype.
12677         * tree-ssa-dse.c (live_bytes_read): New function.
12678         (dse_classify_store): Ignore reads of dead bytes.
12679
12680         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
12681         typos and whitespace errors.
12682         * config/i386/predicates.md (address_no_seg_operand): Likewise.
12683         * config/s390/s390.c (s390_emit_prologue): Likewise.
12684
12685 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12686
12687         PR target/81481
12688         * ira-costs.c (scan_one_insn): Don't take into account PIC equiv
12689         with a symbol for LRA.
12690
12691 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12692
12693         PR rtl-optimization/82338
12694         * lra-constraints.c (inherit_in_ebb): Check usage_insns check.
12695
12696 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
12697
12698         * genmodes.c (calc_wider_mode): Suppress qsort macro.
12699         * system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
12700         (qsort_chk): Declare.
12701         * vec.c [CHECKING_P] (qsort_chk_error): New static function.
12702         (qsort_chk): New function.
12703
12704 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12705
12706         PR tree-optimization/82337
12707         * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
12708         phi definition if the PHI result appears in an abnormal PHI.
12709         (find_basis_for_base_expr): Don't record a basis if the LHS of the
12710         basis appears in an abnormal PHI.
12711
12712 2017-09-29  Richard Biener  <rguenther@suse.de>
12713
12714         * graphite-isl-ast-to-gimple.c
12715         (translate_isl_ast_to_gimple::set_codegen_error): New function.
12716         (binary_op_to_tree): Use it.
12717         (get_rename_from_scev): Likewise.
12718         (copy_loop_phi_nodes): Likewise.
12719         (copy_bb_and_scalar_dependences): Likewise.
12720         (translate_pending_phi_nodes): Likewise.
12721
12722 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
12723
12724         PR target/82339
12725         * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
12726         for movabsq $(i32 << shift), r64.
12727
12728 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
12729
12730         * config/i386/i386.c (ix86_print_operand_address_as): Do not check
12731         index when encoding %esp as %rsp to avoid 0x67 prefix.
12732
12733 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
12734
12735         * config/i386/i386.md (*movsf_internal, *movdf_internal):
12736         Return 256-bit AVX modes for TARGET_PREFER_AVX256.
12737
12738 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
12739
12740         * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
12741         Extensions with more than 16 double VFP registers.
12742         (cmse_nonsecure_entry_clear_before_return): Remove second entry of
12743         to_clear_mask and all code related to it.  Replace the remaining
12744         entry by a sbitmap and adapt code accordingly.
12745
12746 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
12747
12748         * brig-builtins.def: Change pure attributes to const.
12749
12750 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12751
12752         * config.gcc (default_gnu_indirect_function): Default to yes for
12753         sparc*-*-linux* with glibc.
12754
12755 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12756
12757         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
12758         (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
12759         when creating .init_array and .fini_array sections with priority
12760         specified.
12761
12762 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
12763
12764         PR target/71727
12765         * config/aarch64/aarch64.c
12766         (aarch64_builtin_support_vector_misalignment): Always return false
12767         when misalignment is unknown.
12768
12769 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
12770
12771         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
12772         this function to return false if the definition used by the swap
12773         instruction is artificial, or if the memory address from which the
12774         constant value is loaded is not represented by a base address held
12775         in a register or if the base address register is a frame or stack
12776         pointer.  Additionally, return false if the base address of the
12777         loaded constant is a SYMBOL_REF but is not considered to be a
12778         constant.
12779         (replace_swapped_load_constant): New function.
12780         (rs6000_analyze_swaps): Add a new pass to replace a swap of a
12781         loaded constant vector with a load of a swapped constant vector.
12782
12783 2017-09-27  Carl Love  <cel@us.ibm.com>
12784
12785         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
12786         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
12787         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
12788         fctiw instruction.
12789
12790 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
12791
12792         * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
12793         first, always call autopref_rank_data otherwise.
12794
12795 2017-09-27  Richard Biener  <rguenther@suse.de>
12796
12797         * graphite-scop-detection.c (find_scop_parameters): Move
12798         loop bound handling ...
12799         (gather_bbs::before_dom_children): ... here, avoiding the need
12800         to build scop_info->loop_nest.
12801         (record_loop_in_sese): Remove.
12802         * sese.h (sese_info_t::loop_nest): Remove.
12803         * sese.c (new_sese_info): Do not allocate loop_nest.
12804         (free_sese_info): Do not free loop_nest.
12805
12806 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
12807
12808         PR c++/82159
12809         * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
12810         lhs from calls if the lhs has addressable type.
12811
12812 2017-09-27  Richard Biener  <rguenther@suse.de>
12813
12814         * graphite.h (scop::max_alias_set): New member.
12815         * graphite-scop-detection.c: Remove references to non-existing
12816         --param in comments.
12817         (build_alias_sets): Record the maximum alias set used for drs.
12818         (build_scops): Support zero as unlimited for
12819         --param graphite-max-arrays-per-scop.
12820         * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
12821         and inline into ...
12822         (build_poly_sr_1): ... here.  Compute alias set based on the
12823         maximum alias set used for drs rather than
12824         PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
12825
12826 2017-09-27  Richard Biener  <rguenther@suse.de>
12827
12828         * graphite-optimize-isl.c (get_schedule_for_node_st): Allow
12829         --param loop-block-tile-size=0 to disable tiling.
12830
12831 2017-09-27  Richard Biener  <rguenther@suse.de>
12832
12833         * doc/invoke.texi (graphite-max-bbs-per-function): Remove.
12834         (graphite-max-nb-scop-params): Document special value zero.
12835         * domwalk.h (dom_walker::STOP): New symbolical constant.
12836         (dom_walker::dom_walker): Add optional parameter for bb to
12837         RPO mapping.
12838         (dom_walker::~dom_walker): Declare.
12839         (dom_walker::before_dom_children): Document STOP return value.
12840         (dom_walker::m_user_bb_to_rpo): New member.
12841         (dom_walker::m_bb_to_rpo): Likewise.
12842         * domwalk.c (dom_walker::dom_walker): Compute bb to RPO
12843         mapping here if not provided by the user.
12844         (dom_walker::~dom_walker): Free bb to RPO mapping if not
12845         provided by the user.
12846         (dom_walker::STOP): Define.
12847         (dom_walker::walk): Do not compute bb to RPO mapping here.
12848         Support STOP return value from before_dom_children to stop
12849         walking.
12850         * graphite-optimize-isl.c (optimize_isl): If the schedule
12851         is the same still generate code if -fgraphite-identity
12852         or -floop-parallelize-all are given.
12853         * graphite-scop-detection.c: Include cfganal.h.
12854         (gather_bbs::gather_bbs): Get and pass through bb to RPO
12855         mapping.
12856         (gather_bbs::before_dom_children): Return STOP for BBs
12857         not in the region.
12858         (build_scops): Compute bb to RPO mapping and pass it to
12859         the domwalk.  Treat --param graphite-max-nb-scop-params=0
12860         as not limiting the number of params.
12861         * graphite.c (graphite_initialize): Remove limit on the
12862         number of basic-blocks in a function.
12863         * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
12864         (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
12865         default value of 10.
12866
12867 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
12868
12869         * config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
12870         Adjust code to eliminate needing to do the shift right 32-bits
12871         operation after XSCVDPSPN.
12872
12873 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12874
12875         * match.pd ((X / Y) == 0 -> X < Y): New pattern.
12876         ((X / Y) != 0 -> X >= Y): Likewise.
12877
12878 2017-09-26  Carl Love  <cel@us.ibm.com>
12879
12880         * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
12881         P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
12882         vector unsigned char vec_xl_len_r (unsigned char *, size_t);
12883         void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
12884         * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
12885         * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
12886         definitions and overloading.
12887         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case
12888         statement for P9V_BUILTIN_XST_LEN_R.
12889         (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
12890         * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
12891         define_expand and define_insn for the instructions and builtins.
12892         * doc/extend.texi: Update the built-in documentation file for the new
12893         built-in functions.
12894         * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
12895         define_insn for the instructions
12896
12897 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
12898
12899         PR target/39570
12900         * gcc/config/netbsd-protos.h: New file.
12901         * gcc/config/netbsd.c: New file.
12902         * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
12903         * gcc/config/t-netbsd: New file.
12904         * gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
12905         (tmake_file) Add t-netbsd.
12906         (extra_objs) Add netbsd.o.
12907
12908 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
12909
12910         PR fortran/82143
12911         PR fortran/82324
12912         * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
12913
12914 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
12915
12916         * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
12917         sign extension from a vector register to a GPR by doing a 32-bit
12918         direct move and then an EXTSW.
12919         (extendsi<mode>2 splitter): Likewise.
12920         (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
12921         right or vector extract after doing XSCVDPSPN.  Use
12922         zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
12923         the GPRs.
12924         (movdi_from_sf_zero_ext): Likewise.
12925         (reload_gpr_from_vsxsf): Likewise.
12926         (p8_mfvsrd_4_disf): Delete, no longer used.
12927         (movsi_from_df): Optimize converting a DFmode to a SFmode, and
12928         then needing to move the SFmode to a GPR to use the XSCVDPSP
12929         instruction instead of FRSP and XSCVDPSPN.
12930         * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
12931         it is adjacent to the other XSCVSPDP insns.
12932         (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
12933         SFmode to be in traditional Altivec registers.
12934         (vsx_xscvdpspn): Eliminate useless alternative constraint.
12935         (vsx_xscvspdpn): Likewise.
12936         (vsx_xscvspdpn_scalar): Likewise.
12937
12938 2017-09-26  Martin Jambor  <mjambor@suse.cz>
12939
12940         * tree-sra.c (compare_access_positions): Put integral types first,
12941         stabilize sorting of integral types, remove conditions putting
12942         non-full-precision integers last.
12943         (sort_and_splice_var_accesses): Disable scalarization if a
12944         non-integert would be represented by a non-full-precision integer.
12945
12946 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
12947
12948         * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
12949         * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
12950         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
12951         * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
12952         Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
12953         conditionals inside the function instead of around it.  Call
12954         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
12955         (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
12956
12957 2017-09-26  Richard Biener  <rguenther@suse.de>
12958
12959         * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
12960         fold in ...
12961         (scop_detection::build_scop_breadth): ... this.  Removed.
12962         (scop_detection::loop_is_valid_in_scop): Fold into single caller.
12963         (scop_detection::harmful_stmt_in_bb): Likewise.
12964         (scop_detection::graphite_can_represent_stmt): Likewise.
12965         (scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
12966         (scop_detection::can_represent_loop): Remove recursion, fold in ...
12967         (scop_detection::can_represent_loop_1): ... this.  Removed.
12968         (scop_detection::harmful_loop_in_region): Simplify after inlining
12969         the above and remove more quadraticness.
12970         (build_scops): Adjust.
12971         * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
12972         quadraticness.
12973
12974 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
12975
12976         PR target/82267
12977         * config/i386/i386.c (ix86_print_operand_address_as): Only test
12978         REGNO (base) == SP_REG if base is a REG.
12979
12980         PR middle-end/35691
12981         * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
12982         if it is different SSA_NAME.
12983         (optimize_range_tests_cmp_bitwise): New function.
12984         (optimize_range_tests): Call it.
12985
12986 2017-09-26  Richard Biener  <rguenther@suse.de>
12987
12988         PR tree-optimization/82321
12989         * graphite.c (canonicalize_loop_closed_ssa): Properly check
12990         for the def being inside the loop.
12991
12992 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12993
12994         * config/s390/vx-builtins.md ("vmslg"): Add missing operand in
12995         assembler output.
12996         * config/s390/s390-builtins.def: Fix constraint on op4.
12997
12998 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12999
13000         * config/s390/s390.c (s390_expand_vec_compare): Use the new mode
13001         independent expanders.
13002         * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
13003         ("vec_ordered", "vec_unordered"): New expanders.
13004
13005 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13006
13007         * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
13008         for SFmode.
13009
13010 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13011
13012         * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
13013         vec_unpacks_lo_v16qi.
13014         ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
13015
13016 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13017
13018         * config/s390/vector.md ("vec_unpacks_lo_v4sf")
13019         ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
13020         ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
13021
13022 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13023
13024         * config/s390/predicates.md ("const_shift_by_byte_operand"): New
13025         predicate.
13026         * config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
13027         and V16QI.
13028         ("*vec_slb<mode>"): New insn pattern.
13029         ("vec_shr_<mode>"): New expander.
13030         * config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
13031         and force the shift count operand to V16QImode.
13032         ("vec_srb<mode>"): Set shift count mode to V16QI.
13033
13034 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13035
13036         * config/s390/vector.md ("vec_widen_umult_lo_<mode>")
13037         ("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
13038         ("vec_widen_smult_hi_<mode>"): New expander definitions.
13039
13040 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
13041
13042         PR target/82175
13043         * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
13044
13045 2017-09-26  Richard Biener  <rguenther@suse.de>
13046
13047         PR tree-optimization/82320
13048         * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
13049         isn't a change.
13050
13051 2017-09-25  Jeff Law  <law@redhat.com>
13052
13053         * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
13054         prototype for new argument.
13055         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
13056         mostly extracted from rs6000_emit_allocate_stack.
13057         (rs6000_emit_probe_stack_range_stack_clash): New function.
13058         (rs6000_emit_allocate_stack): Call
13059         rs6000_emit_probe_stack_range_stack_clash as needed.
13060         (rs6000_emit_probe_stack_range): Add additional argument
13061         to call to gen_probe_stack_range{si,di}.
13062         (output_probe_stack_range): New.
13063         (output_probe_stack_range_1): Renamed from output_probe_stack_range.
13064         (output_probe_stack_range_stack_clash): New.
13065         (rs6000_emit_prologue): Emit notes into dump file as requested.
13066         * rs6000.md (allocate_stack): Handle -fstack-clash-protection.
13067         (probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
13068         Add additional operand and pass it to output_probe_stack_range.
13069
13070 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
13071
13072         PR tree-optimization/82163
13073         * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
13074         (checking_verify_loop_closed_ssa): New parameter.
13075         * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
13076         (check_loop_closed_ssa_stmt): Delete.
13077         (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
13078         (verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
13079         (tree_transform_and_unroll_loop): Check loop closed ssa form only for
13080         changed loops.
13081
13082 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
13083
13084         * brig-builtins.def: Treat HSAIL barrier builtins as
13085         setjmp/longjump style functions.
13086
13087 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13088
13089         * target.def (constant_alignment): New hook.
13090         * defaults.h (CONSTANT_ALIGNMENT): Delete.
13091         * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
13092         (TARGET_CONSTANT_ALIGNMENT): ...this new hook.
13093         * doc/tm.texi: Regenerate.
13094         * targhooks.h (default_constant_alignment): Declare.
13095         (constant_alignment_word_strings): Likewise.
13096         * targhooks.c (default_constant_alignment): New function.
13097         (constant_alignment_word_strings): Likewise.
13098         * builtins.c (get_object_alignment_2): Use targetm.constant_alignment
13099         instead of CONSTANT_ALIGNMENT.
13100         * varasm.c (align_variable, get_variable_align, build_constant_desc)
13101         (force_const_mem): Likewise.
13102         * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
13103         * config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
13104         (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
13105         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13106         * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
13107         definition.
13108         * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
13109         * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13110         constant_alignment_word_strings.
13111         * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
13112         (CONSTANT_ALIGNMENT): Likewise.
13113         * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13114         (arm_constant_alignment): New function.
13115         * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
13116         * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13117         constant_alignment_word_strings.
13118         * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
13119         * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13120         constant_alignment_word_strings.
13121         * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
13122         * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13123         (cris_constant_alignment): New function.
13124         * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
13125         * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13126         (epiphany_constant_alignment): New function.
13127         * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
13128         * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13129         constant_alignment_word_strings.
13130         * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
13131         * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13132         constant_alignment_word_strings.
13133         * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
13134         * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13135         constant_alignment_word_strings.
13136         * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
13137         * config/i386/i386-protos.h (ix86_constant_alignment): Delete.
13138         * config/i386/i386.c (ix86_constant_alignment): Make static.
13139         Use the same interface as the target hook.
13140         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13141         * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
13142         * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13143         constant_alignment_word_strings.
13144         * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
13145         * config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
13146         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13147         * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
13148         * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13149         constant_alignment_word_strings.
13150         * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
13151         * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13152         constant_alignment_word_strings.
13153         * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
13154         * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13155         constant_alignment_word_strings.
13156         * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
13157         * config/microblaze/microblaze.c (microblaze_constant_alignment):
13158         New function.
13159         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13160         * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
13161         * config/mips/mips.c (mips_constant_alignment): New function.
13162         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13163         * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
13164         * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
13165         * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13166         (mmix_constant_alignment): Make static.  Use the same interface
13167         as the target hook.
13168         * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
13169         * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13170         constant_alignment_word_strings.
13171         * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
13172         * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13173         constant_alignment_word_strings.
13174         * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
13175         * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13176         constant_alignment_word_strings.
13177         * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
13178         * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13179         (rs6000_constant_alignment): New function.
13180         * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
13181         * config/riscv/riscv.c (riscv_constant_alignment): New function.
13182         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13183         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
13184         * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13185         (rs6000_constant_alignment): New function.
13186         * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
13187         * config/s390/s390.c (s390_constant_alignment): New function.
13188         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13189         * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
13190         * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13191         constant_alignment_word_strings.
13192         * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
13193         * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13194         (sparc_constant_alignment): New function.
13195         * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
13196         * config/spu/spu.c (spu_constant_alignment): New function.
13197         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13198         * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
13199         * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13200         constant_alignment_word_strings.
13201         * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
13202         * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13203         constant_alignment_word_strings.
13204         * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
13205         * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13206         constant_alignment_word_strings.
13207         * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
13208         * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13209         (visium_constant_alignment): New function.
13210         * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
13211         * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13212         (xtensa_constant_alignment): New function.
13213         * system.h (CONSTANT_ALIGNMENT): Poison.
13214
13215 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
13216
13217         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13218         for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
13219         (rs6000_builtin_valid_without_lhs): New helper function.
13220         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13221         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
13222
13223 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13224
13225         * target.h (vec_perm_indices): Use unsigned short rather than
13226         unsigned char.
13227         (auto_vec_perm_indices): Likewise.
13228         * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
13229         Use unsigned int rather than unsigned char.
13230         * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
13231
13232 2017-09-25  Richard Biener  <rguenther@suse.de>
13233
13234         * cfgloop.h (sort_sibling_loops): Declare.
13235         * cfgloop.c (sort_sibling_loops_cmp): New helper.
13236         (sort_sibling_loops): New function sorting the sibling loop list
13237         in RPO order.
13238         * graphite.c (graphite_transform_loops): Sort sibling loops.
13239
13240 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
13241
13242         * target.def (vec_perm_const_ok): Change sel parameter to
13243         vec_perm_indices.
13244         * optabs-query.c (can_vec_perm_p): Update accordingly.
13245         * doc/tm.texi: Regenerate.
13246         * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
13247         auto_vec_perm_indices and remove separate nelt field.
13248         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13249         (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
13250         (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
13251         (aarch64_expand_vec_perm_const): Update accordingly.
13252         (aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
13253         to vec_perm_indices.
13254         * config/arm/arm.c (expand_vec_perm_d): Change perm to
13255         auto_vec_perm_indices and remove separate nelt field.
13256         (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
13257         (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
13258         (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
13259         accordingly.
13260         (arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
13261         to vec_perm_indices.
13262         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
13263         sel to vec_perm_indices.
13264         * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
13265         * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
13266         * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
13267         Likewise.
13268         * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
13269         Likewise.
13270
13271 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
13272
13273         PR debug/82155
13274         * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
13275         on the FUNCTION_DECL function context if it has a DIE that is a
13276         declaration.
13277
13278 2017-09-25  Richard Biener  <rguenther@suse.de>
13279
13280         PR tree-optimization/82285
13281         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
13282         enumeral types.
13283
13284 2017-09-25  Tom de Vries  <tom@codesourcery.com>
13285
13286         PR target/80035
13287         PR target/81069
13288         * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
13289         noreturn function.
13290
13291 2017-09-25  Richard Biener  <rguenther@suse.de>
13292
13293         * graphite-optimize-isl.c (optimize_isl): Fail and dump if
13294         ISL errors other than isl_error_quota happen.  Dump if the
13295         schedule is the same.
13296         * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
13297         errors instead of aborting inside ISL.
13298
13299 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
13300
13301         PR target/80556
13302         * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
13303         of libgcc_eh for m64.
13304         * config/i386/darwin64.h: Likewise.
13305
13306 2017-09-25  Richard Biener  <rguenther@suse.de>
13307
13308         PR middle-end/82144
13309         * dwarf2out.c (gen_enumeration_type_die): Do not add alignment
13310         attribute for incomplete types nor twice for complete ones.
13311
13312 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
13313
13314         PR target/82267
13315         * config/i386/i386.c (ix86_print_operand_address_as): Encode
13316         %esp as %rsp to avoid 0x67 prefix if there is no index or base
13317         register.
13318
13319 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
13320
13321         PR bootstrap/82306
13322         * config/i386/i386.opt (mprefer-avx256): Use
13323         ix86_target_flags variable.
13324         * config/i386/i386.c (ix86_target_string): Move
13325         -mprefer-avx256 to flag2_opts.
13326
13327 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
13328
13329         PR middle-end/35691
13330         * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
13331         and x != -1 | y != -1 into (x & y) != -1.
13332
13333 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
13334
13335         * config.gcc: Add new case statement to set
13336         default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
13337         i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
13338         s390x-*-linux* case statements.   Added aarch64 to the list of
13339         supported architectures.
13340
13341 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13342
13343         PR tree-optimization/82289
13344         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
13345         STMT_VINFO_RELEVANT_P.
13346
13347 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13348             Alan Hayward  <alan.hayward@arm.com>
13349             David Sherwood  <david.sherwood@arm.com>
13350
13351         * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
13352         for VR_RANGE only; don't allow VR_ANTI_RANGE.
13353         (extract_range_from_binary_expr_1): Don't call
13354         extract_range_from_multiplicative_op_1 if !range_int_cst_p.
13355
13356 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13357             Alan Hayward  <alan.hayward@arm.com>
13358             David Sherwood  <david.sherwood@arm.com>
13359
13360         * target.def (preferred_vector_alignment): New hook.
13361         * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
13362         hook.
13363         * doc/tm.texi: Regenerate.
13364         * targhooks.h (default_preferred_vector_alignment): Declare.
13365         * targhooks.c (default_preferred_vector_alignment): New function.
13366         * tree-vectorizer.h (dataref_aux): Add a target_alignment field.
13367         Expand commentary.
13368         (DR_TARGET_ALIGNMENT): New macro.
13369         (aligned_access_p): Update commentary.
13370         (vect_known_alignment_in_bytes): New function.
13371         * tree-vect-data-refs.c (vect_calculate_required_alignment): New
13372         function.
13373         (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
13374         Calculate the misalignment based on the target alignment rather than
13375         the vector size.
13376         (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
13377         rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
13378         (vect_enhance_data_refs_alignment): Mask the byte misalignment with
13379         the target alignment, rather than masking the element misalignment
13380         with the number of elements in a vector.  Also use the target
13381         alignment when calculating the maximum number of peels.
13382         (vect_find_same_alignment_drs): Use vect_calculate_required_alignment
13383         instead of TYPE_ALIGN_UNIT.
13384         (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
13385         Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
13386         (vect_create_addr_base_for_vector_ref): Update call accordingly.
13387         (vect_create_data_ref_ptr): Likewise.
13388         (vect_setup_realignment): Realign by ANDing with
13389         -DR_TARGET_MISALIGNMENT.
13390         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
13391         the number of peels based on DR_TARGET_ALIGNMENT.
13392         * tree-vect-stmts.c (get_group_load_store_type): Compare the gap
13393         with the guaranteed alignment boundary when deciding whether
13394         overrun is OK.
13395         (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
13396         relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
13397         (ensure_base_align): Remove stmt_info parameter.  Get the
13398         target base alignment from DR_TARGET_ALIGNMENT.
13399         (vectorizable_store): Update call accordingly.   Interpret
13400         DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
13401         TYPE_ALIGN_UNIT.
13402         (vectorizable_load): Likewise.
13403
13404 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13405             Alan Hayward  <alan.hayward@arm.com>
13406             David Sherwood  <david.sherwood@arm.com>
13407
13408         * tree-vectorizer.h (vect_get_scalar_dr_size): New function.
13409         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
13410         (vect_enhance_data_refs_alignment): Likewise.
13411
13412 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13413
13414         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
13415         error.  Only quit immediately if parsing is complete.
13416         (BEGIN): Initialize fatal_err and parse_done.
13417         (begin fpu, end fpu): Check number of arguments.
13418         (begin arch, end arch): Likewise.
13419         (begin cpu, end cpu): Likewise.
13420         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
13421         (optalias): Likewise.
13422
13423 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13424
13425         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
13426         * config/arm/arm-isa.h: Delete.  Move definitions to ...
13427         * arm-cpus.in: ... here.  Use new feature and fgroup values.
13428         * config/arm/arm.c (arm_option_override): Use lower case for feature
13429         bit names.
13430         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
13431         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
13432         * config/arm/parsecpu.awk (END): Add new command 'isa'.
13433         (isa_pfx): Delete.
13434         (print_isa_bits_for): New function.
13435         (gen_isa): New function.
13436         (gen_comm_data): Use print_isa_bits_for.
13437         (define feature): New keyword.
13438         (define fgroup): New keyword.
13439         * config/arm/t-arm (TM_H): Remove.
13440         (GTM_H): Add arm-isa.h.
13441         (arm-isa.h): Add rule to generate file.
13442         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
13443         case for feature bit names.
13444
13445 2017-09-22  Richard Biener  <rguenther@suse.de>
13446
13447         * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
13448         single caller.
13449         (graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
13450         print of no dependency loops ...
13451         * graphite.c (graphite_transform_loops): ... here.
13452         (canonicalize_loop_closed_ssa_form): Work from inner to outer
13453         loops.
13454         (same_close_phi_node, remove_duplicate_close_phi,
13455         make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
13456         (canonicalize_loop_closed_ssa): ... here and simplify.
13457         * graphite-optimize-isl.c: Include tree-vectorizer.h.
13458         (optimize_isl): Use dump_printf_loc to tell when we stopped
13459         optimizing because of an ISL timeout.
13460
13461 2017-09-22  Richard Biener  <rguenther@suse.de>
13462
13463         PR tree-optimization/82291
13464         * tree-if-conv.c (predicate_mem_writes): Make sure to
13465         remove writes in blocks predicated with false.
13466
13467 2017-09-22  Richard Biener  <rguenther@suse.de>
13468
13469         * sese.c: Include cfganal.h.
13470         (if_region_set_false_region): Remove.
13471         (create_if_region_on_edge): Likewise.
13472         (move_sese_in_condition): Re-implement without destroying
13473         dominators.
13474
13475 2017-09-22  Richard Biener  <rguenther@suse.de>
13476
13477         * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
13478         Verify both BBs contain loop PHI nodes before dispatching to
13479         copy_loop_phi_args.
13480         (graphite_regenerate_ast_isl): Do not recompute dominators,
13481         do not verify three times.  Restructure for clarity.
13482         * graphite-scop-detection.c (same_close_phi_node,
13483         remove_duplicate_close_phi, make_close_phi_nodes_unique,
13484         defined_in_loop_p, canonicalize_loop_closed_ssa,
13485         canonicalize_loop_closed_ssa_form): Simplify, remove excess
13486         checking and SSA rewrite, move to ...
13487         * graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
13488         (graphite_initialize): Do not pass in ctx, do not reset the
13489         SCEV cache, compute only dominators.
13490         (graphite_transform_loops): Allocate ISL ctx after
13491         graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
13492         Maintain post-dominators only around build_scops.
13493         * sese.c (if_region_set_false_region): Make static.  Free
13494         and recompute dominators.
13495         (move_sese_in_condition): Assert we don't get called with
13496         post-dominators computed.
13497         * sese.h (if_region_set_false_region): Remove.
13498
13499 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
13500
13501         * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
13502         mode attribute for TARGET_AVX512VL.
13503
13504 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
13505
13506         * config/i386/i386.opt (mprefer-avx256): New option.
13507         * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
13508         to flag_opts.
13509         (ix86_preferred_simd_mode): Return 256-bit AVX modes
13510         for TARGET_PREFER_AVX256.
13511         * doc/invoke.texi (x86 Options): Document -mprefer-avx256.
13512
13513 2017-09-21  Jeff Law  <law@redhat.com>
13514
13515         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
13516         Fix dump output if the only stack space is for pushed registers.
13517
13518 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13519
13520         * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
13521         of insn_cost.
13522
13523 2017-09-21  Martin Sebor  <msebor@redhat.com>
13524
13525         PR c/81882
13526         * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
13527         code (in C++) or code that triggers warnings.
13528
13529 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
13530
13531         * stor-layout.c (bit_from_pos): Do not distribute the conversion.
13532
13533 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
13534
13535         * haifa-sched.c: Rename insn_cost to insn_sched_cost.
13536         * sched-rgn.c: Ditto.
13537         * sel-sched-ir.c: Ditto.
13538
13539 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
13540
13541         * toplev.h (set_random_seed): Adjust return type.
13542         * toplev.c (init_local_tick): Move eager initialization of random_seed
13543         to get_random_seed.  Adjust comment.
13544         (init_random_seed): Inline to get_random_seed, delete.
13545         (get_random_seed): Initialize random_seed lazily.
13546         (set_random_seed): Do not return previous value.
13547         (print_switch_value): Do not call get_random_seed.
13548
13549 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
13550
13551         * cgraph.c (delete_function_version): New, broken out from...
13552         (cgraph_node::delete_function_version): ...here.  Rename to
13553         cgraph_node::delete_function_version_by_decl.  Update all uses.
13554         (cgraph_node::remove): Call delete_function_version.
13555
13556 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
13557
13558         PR sanitizer/81715
13559         * tree-inline.c (expand_call_inline): Emit clobber stmts for
13560         VAR_DECLs to which addressable non-volatile parameters are mapped
13561         and for id->retvar after the return value assignment.  Clear
13562         id->retval and id->retbnd after inlining.
13563
13564 2017-09-21  Richard Biener  <rguenther@suse.de>
13565
13566         PR tree-optimization/82276
13567         PR tree-optimization/82244
13568         * tree-vrp.c (build_assert_expr_for): Set
13569         SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
13570         has it set.
13571         (remove_range_assertions): Revert earlier change.
13572
13573 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
13574
13575         PR target/71951
13576         * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
13577
13578 2017-09-21  Richard Biener  <rguenther@suse.de>
13579
13580         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
13581         Restore valid IL after code generation errors.
13582         * graphite.c (graphite_transform_loops): Diagnose code
13583         generation issues as MSG_MISSED_OPTIMIZATION and continue
13584         with processing SCOPs.
13585
13586 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13587             Alan Hayward  <alan.hayward@arm.com>
13588             David Sherwood  <david.sherwood@arm.com>
13589
13590         * calls.c (compute_argument_addresses): Use simplify_gen_binary
13591         rather than choosing between plus_constant and gen_rtx_<CODE>.
13592         * expr.c (emit_push_insn): Likewise.
13593         (expand_expr_real_2): Likewise.
13594
13595 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13596             Alan Hayward  <alan.hayward@arm.com>
13597             David Sherwood  <david.sherwood@arm.com>
13598
13599         * loop-unroll.c (split_iv): Call copy_rtx on the step.
13600
13601 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13602             Alan Hayward  <alan.hayward@arm.com>
13603             David Sherwood  <david.sherwood@arm.com>
13604
13605         * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
13606         calling tree_to_uhwi.
13607
13608 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13609             Alan Hayward  <alan.hayward@arm.com>
13610             David Sherwood  <david.sherwood@arm.com>
13611
13612         * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
13613         INTEGER_CST rather than a negative test for ADDR_EXPR.
13614
13615 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
13616             Alan Hayward  <alan.hayward@arm.com>
13617             David Sherwood  <david.sherwood@arm.com>
13618
13619         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13620         int_cst_rangeN before calling value_range_constant_singleton (&vrN).
13621
13622 2017-09-21  Richard Biener  <rguenther@suse.de>
13623
13624         PR tree-optimization/71351
13625         * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
13626         graphite_create_new_loop_guard): Remove, fold remaining parts
13627         into caller ...
13628         (translate_isl_ast_node_for): ... here and simplify.
13629
13630 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
13631
13632         PR target/82260
13633         * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
13634         with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
13635         latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
13636         alternative always use QI mode, for -Os imov (=R,R) alternative
13637         always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
13638         ignore -Os.
13639
13640 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13641             Jeff Law  <law@redhat.com>
13642
13643         * config/s390/s390.c (MIN_UNROLL_PROBES): Define.
13644         (allocate_stack_space): New function, partially extracted from
13645         s390_emit_prologue.
13646         (s390_emit_prologue): Track offset to most recent stack probe.
13647         Code to allocate space moved into allocate_stack_space.
13648         Dump actions when no stack is allocated.
13649         (s390_prologue_plus_offset): New function.
13650         (s390_emit_stack_probe): Likewise.
13651
13652 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
13653
13654         * common.opt (Wa, Wl, Wp, g, gz=): Add
13655         RejectNegative.
13656         (gno-column-info): Remove.
13657         (gcolumn-info): Drop RejectNegative.
13658         (gno-): New prefix.
13659         (gno-record-gcc-switches): Remove.
13660         (grecord-gcc-switches): Drop RejectNegative.
13661         (gno-split-dwarf): Remove.
13662         (gsplit-dwarf): Drop RejectNegative.
13663         (gno-strict-dwarf): Remove.
13664         (gstrict-dwarf): Drop RejectNegative.
13665         * config/darwin.opt (gfull, gused): Add RejectNegative.
13666         * dwarf2out.c (gen_producer_string): Drop
13667         gno-record-gcc-switches handler.
13668         * optc-gen.awk: Add g to prefixes with negative forms.
13669         * opts-common.c (remapping_prefix_p): New.
13670         (find_opt): Check it.
13671         (generate_canonical_option): Test g prefix.
13672         (option_map): Add -gno- mapping.
13673         (add_misspelling_candidates): Check remapping_prefix_p.
13674
13675 2017-09-20  Jeff Law  <law@redhat.com>
13676
13677         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
13678         thinko in stack clash protection support.
13679
13680         * explow.c (compute_stack_clash_protection_loop_data): Use
13681         CONST_INT_P instead of explicit test.  Verify object is a
13682         CONST_INT_P before looking at INTVAL.
13683         (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
13684         instead of explicit test.
13685
13686 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
13687
13688         PR target/77687
13689         * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
13690         address instead of to r1 and r11.
13691
13692 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
13693
13694         * config.gcc: Support "knm".
13695         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
13696         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13697         PROCESSOR_KNM.
13698         * config/i386/i386.c (m_KNM): Define.
13699         (processor_target_table): Add "knm".
13700         (PTA_KNM): Define.
13701         (ix86_option_override_internal): Add "knm".
13702         (ix86_issue_rate): Add PROCESSOR_KNM.
13703         (ix86_adjust_cost): Ditto.
13704         (ia32_multipass_dfa_lookahead): Ditto.
13705         (get_builtin_code_for_version): Handle PROCESSOR_KNM.
13706         (fold_builtin_cpu): Add M_INTEL_KNM.
13707         * config/i386/i386.h (processor_costs): Define TARGET_KNM.
13708         (processor_type): Add PROCESSOR_KNM.
13709         * config/i386/x86-tune.def: Add m_KNM.
13710         * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
13711
13712 2017-09-20  Richard Biener  <rguenther@suse.de>
13713
13714         PR tree-optimization/80213
13715         * graphite-scop-detection.c (trivially_empty_bb_p): Labels
13716         are allowed in empty BBs as well.
13717         (canonicalize_loop_closed_ssa): Also look for other complex
13718         edges.
13719         (scop_detection::get_sese): Include the loop-closed PHI block
13720         in loop SESEs.
13721         (scop_detection::merge_sese): Remove code adding extra blocks.
13722         (scop_detection::region_has_one_loop): Adjust for get_sese changes.
13723         (build_scops): Assert the final returned scop is invalid.
13724
13725 2017-09-20  Richard Biener  <rguenther@suse.de>
13726
13727         PR tree-optimization/82264
13728         * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
13729         for GIMPLE_CONDs.
13730         (vn_phi_lookup): Likewise.
13731         (vn_phi_insert): Likewise.
13732
13733 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
13734
13735         * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
13736         that fits into uhwi or shwi, add DW_AT_const_value regardless
13737         of early_dwarf without going through RTL, using add_AT_unsigned
13738         or add_AT_int.
13739
13740         * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
13741         (DEBUG_LTO_ABBREV_SECTION): Likewise.
13742         (DEBUG_LTO_MACINFO_SECTION): Likewise.
13743         (DEBUG_MACRO_SECTION): Likewise.
13744         (DEBUG_LTO_MACRO_SECTION): Likewise.
13745         (DEBUG_STR_DWO_SECTION): Likewise.
13746         (DEBUG_LTO_STR_DWO_SECTION): Likewise.
13747         (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
13748         (DEBUG_LTO_DWO_LINE_SECTION): Define.
13749         (DEBUG_LTO_LINE_STR_SECTION): Define.
13750         (init_sections_and_labels): Initialize debug_line_str_section
13751         variable.  Initialize debug_loc_section for -gdwarf-5 to
13752         DEBUG_LOCLISTS_SECTION.  Formatting fixes.
13753
13754 2017-09-20  Richard Biener  <rguenther@suse.de>
13755
13756         * graphite-sese-to-poly.c (extract_affine): Properly handle
13757         POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
13758
13759 2017-09-20  Richard Biener  <rguenther@suse.de>
13760
13761         PR tree-optimization/81373
13762         * graphite-scop-detection.c (build_cross_bb_scalars_def):
13763         Force SESE live-out defs to be handled even if they are
13764         scev_analyzable_p.
13765
13766 2017-09-19  Jeff Law  <law@redhat.com>
13767
13768         * combine-stack-adj.c (combine_stack_adjustments_for_block): Do
13769         nothing for stack adjustments with REG_STACK_CHECK.
13770         * sched-deps.c (parse_add_or_inc): Reject insns with
13771         REG_STACK_CHECK from dependency breaking.
13772         * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
13773         (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
13774         * reg-notes.def (STACK_CHECK): New note.
13775
13776         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
13777         (ix86_expand_prologue): Dump stack clash info as needed.
13778         Call ix86_adjust_stack_and_probe_stack_clash as needed.
13779
13780         * function.c (dump_stack_clash_frame_info): New function.
13781         * function.h (dump_stack_clash_frame_info): Prototype.
13782         (enum stack_clash_probes): New enum.
13783
13784         * config/alpha/alpha.c (alpha_expand_prologue): Also check
13785         flag_stack_clash_protection.
13786         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
13787         (arm_expand_prologue, thumb1_expand_prologue): Likewise.
13788         (arm_frame_pointer_required): Likewise.
13789         * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
13790         (ia64_expand_prologue): Likewise.
13791         * config/mips/mips.c (mips_expand_prologue): Likewise.
13792         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
13793         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13794         (sparc_flat_expand_prologue): Likewise.
13795         * config/spu/spu.c (spu_expand_prologue): Likewise.
13796
13797         * explow.c: Include "params.h".
13798         (anti_adjust_stack_and_probe_stack_clash): New function.
13799         (get_stack_check_protect): Likewise.
13800         (compute_stack_clash_protection_loop_data): Likewise.
13801         (emit_stack_clash_protection_loop_start): Likewise.
13802         (emit_stack_clash_protection_loop_end): Likewise.
13803         (allocate_dynamic_stack_space): Use get_stack_check_protect.
13804         Use anti_adjust_stack_and_probe_stack_clash.
13805         * explow.h (compute_stack_clash_protection_loop_data): Prototype.
13806         (emit_stack_clash_protection_loop_start): Likewise.
13807         (emit_stack_clash_protection_loop_end): Likewise.
13808         * rtl.h (get_stack_check_protect): Prototype.
13809         * target.def (stack_clash_protection_final_dynamic_probe): New hook.
13810         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
13811         * targhooks.h (default_stack_clash_protection_final_dynamic_probe):
13812         Prototype.
13813         * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
13814         Add @hook.
13815         * doc/tm.texi: Rebuilt.
13816         * config/aarch64/aarch64.c (aarch64_expand_prologue): Use
13817         get_stack_check_protect.
13818         * config/alpha/alpha.c (alpha_expand_prologue): Likewise.
13819         * config/arm/arm.c (arm_expand_prologue): Likewise.
13820         (arm_frame_pointer_required): Likewise.
13821         * config/i386/i386.c (ix86_expand_prologue): Likewise.
13822         * config/ia64/ia64.c (ia64_expand_prologue): Likewise.
13823         * config/mips/mips.c (mips_expand_prologue): Likewise.
13824         * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
13825         * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
13826         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13827         (sparc_flat_expand_prologue): Likewise.
13828
13829         * common.opt (-fstack-clash-protection): New option.
13830         * flag-types.h (enum stack_check_type): Note difference between
13831         -fstack-check= and -fstack-clash-protection.
13832         * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
13833         (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
13834         * toplev.c (process_options): Issue warnings/errors for cases
13835         not handled with -fstack-clash-protection.
13836         * doc/invoke.texi (-fstack-clash-protection): Document new option.
13837         (-fstack-check): Note additional problem with -fstack-check=generic.
13838         Note that -fstack-check is primarily for Ada and refer users
13839         to -fstack-clash-protection for stack-clash-protection.
13840         Document new params for stack clash protection.
13841
13842 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
13843
13844         * config/i386/i386.c (ix86_split_long_move): Do not handle
13845         address used for LEA in a special way.
13846
13847 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
13848
13849         * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
13850
13851 2017-09-19  Martin Sebor  <msebor@redhat.com>
13852
13853         PR c/81854
13854         * cgraphunit.c (handle_alias_pairs): Reject aliases between functions
13855         of incompatible types.
13856
13857 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
13858
13859         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13860         for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
13861         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13862         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
13863
13864 2017-09-19  Richard Biener  <rguenther@suse.de>
13865
13866         PR tree-optimization/82244
13867         * tree-vrp.c (remove_range_assertions): Do not propagate
13868         a constant to abnormals but replace the assert with a copy.
13869
13870 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
13871
13872         PR rtl-optimization/57878
13873         PR rtl-optimization/68988
13874         * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
13875         avoidance test involving non_reload_pseudos.  Move frequency test
13876         below the general fragmentation avoidance test.
13877
13878 2017-09-19  Richard Biener  <rguenther@suse.de>
13879
13880         PR tree-optimization/69728
13881         * graphite-sese-to-poly.c (schedule_error): New global.
13882         (add_loop_schedule): Handle empty domain by failing the
13883         schedule.
13884         (build_original_schedule): Handle schedule_error.
13885
13886 2017-09-19  Richard Biener  <rguenther@suse.de>
13887
13888         * graphite-scop-detection.c (scop_detection::can_represent_loop):
13889         Do not iterate to sibling loops but only to siblings of inner
13890         loops.
13891
13892 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
13893
13894         PR target/81613
13895         * config/m68k/m68k.md (moveq feeding equality comparison): Check
13896         that the registers are different.
13897
13898 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
13899
13900         * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
13901         to processor_model and "amdfam17h" to arch_names_table.
13902         * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
13903
13904 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
13905
13906         PR c/82234
13907         * doc/extend.texi: Add @findex entry for __builtin_shuffle.
13908
13909 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13910             Alan Hayward  <alan.hayward@arm.com>
13911             David Sherwood  <david.sherwood@arm.com>
13912
13913         * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
13914         with a vec_info *.
13915         * tree-vect-loop.c (vect_analyze_loop_operations): Update call
13916         accordingly.
13917         * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
13918         parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
13919         vect_schedule_slp_instance.
13920         (vect_slp_analyze_operations): Replace parameters with a vec_info *.
13921         Update call to vect_slp_analyze_node_operations.  Simplify return
13922         value.
13923         (vect_slp_analyze_bb_1): Update call accordingly.
13924         (vect_schedule_slp_instance): Remove vectorization_factor parameter.
13925         Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
13926         (vect_schedule_slp): Update call accordingly.
13927
13928 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13929             Alan Hayward  <alan.hayward@arm.com>
13930             David Sherwood  <david.sherwood@arm.com>
13931
13932         * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
13933         with types that aren't in fact scalar.
13934
13935 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13936
13937         * tree-vect-slp.c (vect_record_max_nunits): New function,
13938         split out from...
13939         (vect_build_slp_tree_1): ...here.
13940         (vect_build_slp_tree_2): Call it for phis too.
13941
13942 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13943
13944         * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
13945         to vect_get_vec_def_for_operand when getting the mask operand.
13946
13947 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13948             Alan Hayward  <alan.hayward@arm.com>
13949             David Sherwood  <david.sherwood@arm.com>
13950
13951         * tree-vect-loop.c (vectorizable_live_operation): Fix type of
13952         bitstart.
13953
13954 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13955             Alan Hayward  <alan.hayward@arm.com>
13956             David Sherwood  <david.sherwood@arm.com>
13957
13958         * tree-vect-loop.c (vectorizable_live_operation): Fix element size
13959         calculation for vector booleans.
13960
13961 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13962             Alan Hayward  <alan.hayward@arm.com>
13963             David Sherwood  <david.sherwood@arm.com>
13964
13965         * tree-vect-stmts.c (can_vectorize_live_stmts): New function,
13966         split out from...
13967         (vect_transform_stmt): ...here.
13968         (vect_analyze_stmt): Use it instead of calling
13969         vectorizable_live_operation directly.
13970
13971 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
13972
13973         * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
13974         non-SIMT targets in acc vector loops.
13975
13976 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
13977
13978         * configure.ac: Add arc and check if assembler supports gdwarf2.
13979         * configure: Regenerate.
13980
13981 2017-09-18  Richard Biener  <rguenther@suse.de>
13982
13983         PR tree-optimization/82220
13984         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
13985         epilogue niters from the min_profitable_iters compute.
13986
13987 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
13988
13989         PR target/82145
13990         * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
13991         changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
13992         (ix86_init_pic_reg): Revert 2017-09-01 changes.
13993
13994 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
13995
13996         PR target/81361
13997         * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
13998         switching to a new text section.
13999
14000 2017-09-18  Richard Biener  <rguenther@suse.de>
14001
14002         * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
14003         Simplify.
14004         (build_alias_set): Reject aliases with no access function.
14005
14006 2017-09-18  Richard Biener  <rguenther@suse.de>
14007
14008         PR tree-optimization/79622
14009         * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
14010         handle PHIs.
14011         (build_cross_bb_scalars_use): Likewise.
14012
14013 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
14014
14015         * cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
14016
14017 2017-09-18  Alan Modra  <amodra@gmail.com>
14018
14019         PR target/81996
14020         * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
14021         stack_pointer_rtx for count 0.  Update comments.  Break up
14022         large rtl expression.
14023
14024 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
14025
14026         * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
14027         Increase to 20 bytes.
14028         (xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
14029         (xlogue_layout::get_stub_name): Modify to select the appropairate sse
14030         or avx version of the stub.
14031
14032 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
14033
14034         PR target/82166
14035         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
14036         compute the minimum stack alignment.  Also update preferred stack
14037         boundary for leaf functions.
14038
14039 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
14040
14041         PR tree-optimization/82228
14042         * tree-vect-loop.c (vectorizable_live_operation): Move initialization
14043         of ncopies.
14044
14045 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14046
14047         * common/config/nds32/nds32-common.c
14048         (nds32_option_optimization_table): Refine formatting.
14049         (nds32_option_optimization_table): Use -fsched-pressure and
14050         -fomit-frame-pointer for specific optimization level.
14051
14052 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14053
14054         * config/nds32/nds32.c: Refine formatting and comments.
14055         * config/nds32/nds32.h: Likewise.
14056         * config/nds32/nds32.md: Likewise.
14057         * config/nds32/nds32-cost.c: Likewise.
14058         * config/nds32/nds32-isr.c: Likewise.
14059         * config/nds32/nds32-md-auxiliary.c: Likewise.
14060         * config/nds32/nds32-multiple.md: Likewise.
14061         * config/nds32/nds32-predicates.c: Likewise.
14062
14063 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
14064             Jakub Jelinek  <jakub@redhat.com>
14065
14066         Add support for -std=c++2a.
14067         * doc/cpp.texi (__cplusplus): Document value for -std=c++2a
14068         or -std=gnu+2a.
14069         * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
14070
14071 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
14072
14073         PR target/82066
14074         * doc/extend.texi (Common Function Attributes): Add 
14075         references to ARM, AArch64, and S/390 specific attributes.
14076         (Function Specific Option Pragmas): Add AArch64 and S/390
14077         to list of back ends that support the target pragma.
14078
14079 2017-09-15  Nathan Sidwell  <nathan@acm.org>
14080
14081         * doc/standards.texi: Fix C++17 description.  Update URLs for
14082         C++11 & 14.
14083
14084 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
14085
14086         * common.opt (Wcast-align=strict): New warning option.
14087         * doc/invoke.texi: Document -Wcast-align=strict. 
14088
14089 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
14090
14091         * cgraph.h (cgraph_thunk_info): Add comments.
14092         * cgraph.c (cgraph_node::create_thunk): Adjust comment, make
14093         assert for VIRTUAL_* arguments stricter.
14094
14095 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
14096
14097         PR tree-optimization/71026
14098         * match.pd: Move RDIV patterns from fold-const.c
14099         * fold-const.c (distribute_real_division): Removed.
14100         (fold_binary_loc): Remove calls to distribute_real_divison.
14101
14102 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14103
14104         * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
14105         c++1z and gnu++1z as deprecated.  Change other references to
14106         -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
14107         Change -Wc++1z-compat to -Wc++17-compat.
14108         * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
14109         * dwarf2out.c (highest_c_language): Handle C++17.
14110         (gen_compile_unit_die): Likewise.
14111
14112 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14113
14114         PR rtl-optimization/82192
14115         * combine.c (make_extraction): Don't look through non-paradoxical
14116         SUBREGs or TRUNCATE if pos + len is or might be bigger than
14117         inner's mode.
14118
14119 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14120             Alan Hayward  <alan.hayward@arm.com>
14121             David Sherwood  <david.sherwood@arm.com>
14122
14123         * target.def (function_arg_offset): New hook.
14124         * targhooks.h (default_function_arg_offset): Declare.
14125         * targhooks.c (default_function_arg_offset): New function.
14126         * function.c (locate_and_pad_parm): Use
14127         targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
14128         * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
14129         (TARGET_FUNCTION_ARG_OFFSET): ...this.
14130         * doc/tm.texi: Regenerate.
14131         * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
14132         * config/spu/spu.c (spu_function_arg_offset): New function.
14133         (TARGET_FUNCTION_ARG_OFFSET): Redefine.
14134         * system.h (FUNCTION_ARG_OFFSET): Poison.
14135
14136 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14137             Alan Hayard  <alan.hayward@arm.com>
14138             David Sherwood  <david.sherwood@arm.com>
14139
14140         * target.def (truly_noop_truncation): New hook.
14141         (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
14142         than TRULY_NOOP_TRUNCATION.
14143         * hooks.h (hook_bool_uint_uint_true): Declare.
14144         * hooks.c (hook_bool_uint_uint_true): New function.
14145         * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
14146         (TARGET_TRULY_NOOP_TRUNCATION): ...this.
14147         * doc/tm.texi: Regenerate.
14148         * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
14149         rather than TRULY_NOOP_TRUNCATION in comments.
14150         (simplify_comparison): Likewise.
14151         (record_truncated_value): Likewise.
14152         * expmed.c (extract_bit_field_1): Likewise.
14153         (extract_split_bit_field): Likewise.
14154         * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
14155         instead of TRULY_NOOP_TRUNCATION.
14156         * function.c (assign_parm_setup_block): Likewise.
14157         * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
14158         * rtlhooks.c: Include target.h.
14159         * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
14160         * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
14161         * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
14162         * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
14163         * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
14164         * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
14165         * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
14166         * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
14167         * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
14168         * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
14169         * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
14170         * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
14171         * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
14172         * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
14173         * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
14174         * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
14175         * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
14176         * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
14177         * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
14178         * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
14179         * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
14180         * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
14181         * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
14182         * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
14183         * config/mips/mips.c (mips_truly_noop_truncation): New function.
14184         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14185         * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14186         rather than TRULY_NOOP_TRUNCATION in comments.
14187         * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
14188         * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
14189         * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
14190         * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
14191         * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
14192         * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
14193         * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
14194         * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
14195         * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
14196         * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
14197         * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
14198         * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14199         rather than TRULY_NOOP_TRUNCATION in comments.
14200         * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
14201         * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
14202         * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
14203         * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
14204         * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
14205         TRULY_NOOP_TRUNCATION condition.
14206         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14207         (TRULY_NOOP_TRUNCATION): Delete.
14208         * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
14209         * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
14210         * config/spu/spu.c (spu_truly_noop_truncation): New function.
14211         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14212         * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
14213         * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
14214         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
14215         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14216         * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14217         rather than TRULY_NOOP_TRUNCATION in comments.
14218         * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
14219         * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
14220         * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
14221         * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
14222         * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
14223         * system.h (TRULY_NOOP_TRUNCATION): Poison.
14224
14225 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
14226
14227         PR target/67591
14228         * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
14229         (*cmp_ior): Likewise.
14230         (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
14231         (*ior_scc_scc_cmp): Likewise.
14232         (*and_scc_scc): Likewise.
14233         (*and_scc_scc_cmp): Likewise.
14234
14235 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14236             Alan Hayard  <alan.hayward@arm.com>
14237             David Sherwood  <david.sherwood@arm.com>
14238
14239         * target.def (can_change_mode_class): New hook.
14240         (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
14241         (hard_regno_nregs): Likewise.
14242         * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
14243         * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
14244         * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
14245         (TARGET_CAN_CHANGE_MODE_CLASS): ...this.
14246         (LOAD_EXTEND_OP): Update accordingly.
14247         * doc/tm.texi: Regenerate.
14248         * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
14249         CANNOT_CHANGE_MODE_CLASS.
14250         * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
14251         (REG_CAN_CHANGE_MODE_P): ...this new macro.
14252         * combine.c (simplify_set): Update accordingly.
14253         * emit-rtl.c (validate_subreg): Likewise.
14254         * recog.c (general_operand): Likewise.
14255         * regcprop.c (mode_change_ok): Likewise.
14256         * reload1.c (choose_reload_regs): Likewise.
14257         (inherit_piecemeal_p): Likewise.
14258         * rtlanal.c (simplify_subreg_regno): Likewise.
14259         * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
14260         instead of CANNOT_CHANGE_MODE_CLASS.
14261         (reload_cse_simplify_operands): Likewise.
14262         * reload.c (push_reload): Use targetm.can_change_mode_class
14263         instead of CANNOT_CHANGE_MODE_CLASS.
14264         (push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
14265         REG_CANNOT_CHANGE_MODE_P.
14266         * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14267         * config/alpha/alpha.c (alpha_can_change_mode_class): New function.
14268         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14269         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14270         * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14271         (arm_can_change_mode_class): New function.
14272         * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14273         than CANNOT_CHANGE_MODE_CLASS in comments.
14274         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14275         * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
14276         * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
14277         (ix86_can_change_mode_class): ...this new function, inverting the
14278         sense of the return value.
14279         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14280         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14281         * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14282         (ia64_can_change_mode_class): New function.
14283         * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14284         * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
14285         * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
14286         (m32c_can_change_mode_class): ...this new function, inverting the
14287         sense of the return value.
14288         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14289         * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14290         * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
14291         * config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
14292         (mips_can_change_mode_class): ...this new function, inverting the
14293         sense of the return value.
14294         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14295         * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14296         * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14297         (msp430_can_change_mode_class): New function.
14298         * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14299         * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
14300         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14301         * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14302         * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14303         * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
14304         * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14305         (pa_cannot_change_mode_class): Replace with...
14306         (pa_can_change_mode_class): ...this new function, inverting the
14307         sense of the return value.
14308         (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14309         than CANNOT_CHANGE_MODE_CLASS in comments.
14310         * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14311         * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
14312         * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14313         (pdp11_cannot_change_mode_class): Replace with...
14314         (pdp11_can_change_mode_class): ...this new function, inverting the
14315         sense of the return value.
14316         * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14317         * config/powerpcspe/powerpcspe-protos.h
14318         (rs6000_cannot_change_mode_class_ptr): Delete.
14319         * config/powerpcspe/powerpcspe.c
14320         (rs6000_cannot_change_mode_class_ptr): Delete.
14321         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14322         (rs6000_option_override_internal): Assign to
14323         targetm.can_change_mode_class instead of
14324         rs6000_cannot_change_mode_class_ptr.
14325         (rs6000_cannot_change_mode_class): Replace with...
14326         (rs6000_can_change_mode_class): ...this new function, inverting the
14327         sense of the return value.
14328         (rs6000_debug_cannot_change_mode_class): Replace with...
14329         (rs6000_debug_can_change_mode_class): ...this new function.
14330         * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14331         * config/riscv/riscv.c (riscv_can_change_mode_class): New function.
14332         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14333         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14334         * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
14335         Delete.
14336         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
14337         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14338         (rs6000_option_override_internal): Assign to
14339         targetm.can_change_mode_class instead of
14340         rs6000_cannot_change_mode_class_ptr.
14341         (rs6000_cannot_change_mode_class): Replace with...
14342         (rs6000_can_change_mode_class): ...this new function, inverting the
14343         sense of the return value.
14344         (rs6000_debug_cannot_change_mode_class): Replace with...
14345         (rs6000_debug_can_change_mode_class): ...this new function.
14346         * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14347         * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
14348         * config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
14349         (s390_can_change_mode_class): ...this new function, inverting the
14350         sense of the return value.
14351         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14352         * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14353         * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
14354         * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14355         (sh_cannot_change_mode_class): Replace with...
14356         (sh_can_change_mode_class): ...this new function, inverting the
14357         sense of the return value.
14358         * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14359         * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14360         (sparc_can_change_mode_class): New function.
14361         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14362         * config/spu/spu.c (spu_can_change_mode_class): New function.
14363         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14364         * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14365         * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14366         (visium_can_change_mode_class): New function.
14367         * system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
14368
14369 2017-09-15  Richard Biener  <rguenther@suse.de>
14370
14371         PR tree-optimization/82217
14372         * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
14373         but not undefined case.
14374
14375 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14376
14377         PR target/82145
14378         * postreload.c (reload_cse_simplify_operands): Skip
14379         NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
14380
14381 2017-09-15  Richard Biener  <rguenther@suse.de>
14382
14383         PR tree-optimization/68823
14384         * graphite-scop-detection.c (build_alias_set): If we have a
14385         possible dependence check whether we can handle them by just
14386         looking at the DRs DR_ACCESS_FNs.
14387         (build_scops): If build_alias_set fails, fail the SCOP.
14388
14389 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
14390
14391         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
14392         to support float128 built-in functions that require the ISA 3.0
14393         hardware.
14394         (BU_FLOAT128_3_HW): Likewise.
14395         (SQRTF128): Add support for the IEEE 128-bit square root and fma
14396         built-in functions.
14397         (FMAF128): Likewise.
14398         (FMAQ): Likewise.
14399         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
14400         support for built-in functions that need the ISA 3.0 IEEE 128-bit
14401         floating point instructions.
14402         (rs6000_invalid_builtin): Likewise.
14403         (rs6000_builtin_mask_names): Likewise.
14404         * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
14405         (RS6000_BTM_FLOAT128_HW): Likewise.
14406         (RS6000_BTM_COMMON): Likewise.
14407         * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
14408         function.
14409         * doc/extend.texi (RS/6000 built-in functions): Document the
14410         IEEE 128-bit floating point square root and fused multiply-add
14411         built-in functions.
14412
14413 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
14414
14415         * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
14416         reg (r2) isn't in the set of registers defined in the prologue.
14417
14418 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14419             Alan Hayward  <alan.hayward@arm.com>
14420             David Sherwood  <david.sherwood@arm.com>
14421
14422         * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
14423         (LOOP_VINFO_MAX_VECT_FACTOR): New macro.
14424         (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
14425         (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
14426         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
14427         accordingly.
14428         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
14429         max_vectorization_factor.
14430         (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
14431
14432 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14433             Alan Hayward  <alan.hayward@arm.com>
14434             David Sherwood  <david.sherwood@arm.com>
14435
14436         * tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
14437         (vect_worthwhile_without_simd_p): Declare.
14438         * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
14439         (vectorizable_reduction): Use it.
14440         * tree-vect-stmts.c (vectorizable_shift): Likewise.
14441         (vectorizable_operation): Likewise.
14442
14443 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14444             Alan Hayward  <alan.hayward@arm.com>
14445             David Sherwood  <david.sherwood@arm.com>
14446
14447         * tree-vectorizer.h (vect_get_num_copies): New function.
14448         * tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
14449         * tree-vect-loop.c (vectorizable_reduction): Likewise.
14450         (vectorizable_induction): Likewise.
14451         (vectorizable_live_operation): Likewise.
14452         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
14453         (vectorizable_bswap): Likewise.
14454         (vectorizable_call): Likewise.
14455         (vectorizable_conversion): Likewise.
14456         (vectorizable_assignment): Likewise.
14457         (vectorizable_shift): Likewise.
14458         (vectorizable_operation): Likewise.
14459         (vectorizable_store): Likewise.
14460         (vectorizable_load): Likewise.
14461         (vectorizable_condition): Likewise.
14462         (vectorizable_comparison): Likewise.
14463         (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
14464
14465 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14466             Alan Hayward  <alan.hayward@arm.com>
14467             David Sherwood  <david.sherwood@arm.com>
14468
14469         * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
14470         of vect_init_vector.
14471
14472 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14473             Alan Hayward  <alan.hayward@arm.com>
14474             David Sherwood  <david.sherwood@arm.com>
14475
14476         * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
14477         an inline wrapper that provides a location.
14478         (gimple_build_vector): Likewise.
14479         * gimple-fold.c (gimple_build_vector_from_val): New function.
14480         (gimple_build_vector): Likewise.
14481         * tree-vect-loop.c (get_initial_def_for_reduction): Use the new
14482         functions to build the initial value.  Always return a gimple value.
14483         (get_initial_defs_for_reduction): Likewise.  Only compute
14484         neutral_vec once.
14485         (vect_create_epilog_for_reduction): Don't call force_gimple_operand or
14486         vect_init_vector on the results from get_initial_def(s)_for_reduction.
14487         (vectorizable_induction): Use gimple_build_vector rather than
14488         vect_init_vector.
14489
14490 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14491             Alan Hayward  <alan.hayward@arm.com>
14492             David Sherwood  <david.sherwood@arm.com>
14493
14494         * target.h (vec_perm_indices): New typedef.
14495         (auto_vec_perm_indices): Likewise.
14496         * optabs-query.h: Include target.h
14497         (can_vec_perm_p): Take a vec_perm_indices *.
14498         * optabs-query.c (can_vec_perm_p): Likewise.
14499         (can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
14500         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14501         * tree-vect-generic.c (lower_vec_perm): Likewise.
14502         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14503         (vect_grouped_load_supported): Likewise.
14504         (vect_shift_permute_load_chain): Likewise.
14505         (vect_permute_store_chain): Use auto_vec_perm_indices.
14506         (vect_permute_load_chain): Likewise.
14507         * fold-const.c (fold_vec_perm): Take vec_perm_indices.
14508         (fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
14509         Update uses of can_vec_perm_p.
14510         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
14511         mode with a number of elements.  Take a vec_perm_indices *.
14512         (vect_create_epilog_for_reduction): Update accordingly.
14513         Use auto_vec_perm_indices.
14514         (have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
14515         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14516         (vect_transform_slp_perm_load): Likewise.
14517         (vect_schedule_slp_instance): Use auto_vec_perm_indices.
14518         * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
14519         (vect_gen_perm_mask_checked): Likewise.
14520         * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
14521         (vect_gen_perm_mask_checked): Likewise.
14522         (vectorizable_mask_load_store): Use auto_vec_perm_indices.
14523         (vectorizable_store): Likewise.
14524         (vectorizable_load): Likewise.
14525         (perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
14526         (vectorizable_bswap): Likewise.
14527
14528 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14529             Alan Hayward  <alan.hayward@arm.com>
14530             David Sherwood  <david.sherwood@arm.com>
14531
14532         * tree.h (build_vector): Take a vec<tree> instead of a tree *.
14533         * tree.c (build_vector): Likewise.
14534         (build_vector_from_ctor): Update accordingly.
14535         (build_vector_from_val): Likewise.
14536         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
14537         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14538         * tree-vect-generic.c (add_rshift): Likewise.
14539         (expand_vector_divmod): Likewise.
14540         (optimize_vector_constructor): Likewise.
14541         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
14542         (vect_transform_slp_perm_load): Likewise.
14543         (vect_schedule_slp_instance): Likewise.
14544         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14545         (vectorizable_call): Likewise.
14546         (vect_gen_perm_mask_any): Likewise.  Add elements in order.
14547         * expmed.c (make_tree): Likewise.
14548         * fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
14549         a vector passed to build_vector.
14550         (fold_convert_const): Likewise.
14551         (exact_inverse): Likewise.
14552         (fold_ternary_loc): Likewise.
14553         (fold_relational_const): Likewise.
14554         (const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
14555         on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
14556         (const_unop): Likewise.  Store the reduction accumulator in a
14557         variable rather than an array.
14558         (vec_cst_ctor_to_array): Take the number of elements as a parameter.
14559         (fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
14560         the new vector, rather than constructing it after the input arrays.
14561         (native_interpret_vector): Use auto_vec<tree> when building
14562         a vector passed to build_vector.  Add elements in order.
14563         * tree-vect-loop.c (get_initial_defs_for_reduction): Use
14564         auto_vec<tree> when building a vector passed to build_vector.
14565         (vect_create_epilog_for_reduction): Likewise.
14566         (vectorizable_induction): Likewise.
14567         (get_initial_def_for_reduction): Likewise.  Fix indentation of
14568         case statements.
14569         * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
14570         to a vec<tree> *.
14571         (sparc_fold_builtin): Use auto_vec<tree> when building a vector
14572         passed to build_vector.
14573
14574 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14575             Alan Hayward  <alan.hayward@arm.com>
14576             David Sherwood  <david.sherwood@arm.com>
14577
14578         * tree-core.h (tree_base::u): Add an "nelts" field.
14579         (tree_vector): Use VECTOR_CST_NELTS as the length.
14580         * tree.c (tree_size): Likewise.
14581         (make_vector): Initialize VECTOR_CST_NELTS.
14582         * tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
14583         * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
14584         TYPE_VECTOR_SUBPARTS.
14585         * expr.c (const_vector_mask_from_tree): Consistently use "units"
14586         as the number of units, setting it from VECTOR_CST_NELTS.
14587         (const_vector_from_tree): Likewise.
14588         * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
14589         TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
14590         (fold_negate_expr_1): Likewise.
14591         (fold_convert_const): Likewise.
14592         (const_binop): Likewise.  Differentiate the number of output and
14593         input elements.
14594         (const_unop): Likewise.
14595         (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
14596         in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
14597         in cases that did the opposite.
14598
14599 2017-09-14  Richard Biener  <rguenther@suse.de>
14600
14601         * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
14602         to VN_TOP.
14603
14604 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
14605
14606         * dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
14607
14608 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
14609
14610         PR target/81325
14611         * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
14612         if and where to split a bb, except for splitting before debug insn
14613         sequences followed by non-label real insn.  Delete debug insns
14614         in between basic blocks.
14615
14616         * combine.c (make_compound_operation_int): Formatting fixes.
14617
14618         * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
14619         * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14620         * config/netbsd.h (LINK_EH_SPEC): Likewise.
14621         * config/sol2.h (LINK_EH_SPEC): Likewise.
14622         * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14623         * config/s390/linux.h (LINK_SPEC): Likewise.
14624         * config/freebsd.h (LINK_EH_SPEC): Likewise.
14625         * config/openbsd.h (LINK_EH_SPEC): Likewise.
14626         * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14627         * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
14628         * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
14629         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14630         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
14631         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
14632
14633 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
14634
14635         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
14636         support.
14637         (ENDFILE_LINUX_SPEC): Likewise.
14638         (LINK_EH_SPEC): Likewise.
14639         * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
14640         (LINK_OS_LINUX_SPEC32): Likewise.
14641         (LINK_OS_LINUX_SPEC64): Likewise.
14642         * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
14643         (LINK_OS_LINUX_SPEC): Likewise.
14644
14645 2017-09-13  Martin Liska  <mliska@suse.cz>
14646
14647         PR middle-end/82154
14648         * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
14649         CASE_HIGH is NULL_TREE.
14650
14651 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14652             Alan Hayward  <alan.hayward@arm.com>
14653             David Sherwood  <david.sherwood@arm.com>
14654
14655         * target.def (secondary_memory_needed): New hook.
14656         (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
14657         instead of SECONDARY_MEMORY_NEEDED.
14658         (secondary_memory_needed_mode): Likewise.
14659         * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
14660         * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
14661         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
14662         (TARGET_SECONDARY_MEMORY_NEEDED): ...this.
14663         (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
14664         * doc/tm.texi: Regenerate.
14665         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
14666         * config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
14667         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14668         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
14669         * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
14670         * config/i386/i386.c (inline_secondary_memory_needed): Put the
14671         mode argument first and change the reg_class arguments to reg_class_t.
14672         (ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
14673         Make static.  Update the call to inline_secondary_memory_needed.
14674         (ix86_register_move_cost): Update the call to
14675         inline_secondary_memory_needed.
14676         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14677         * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
14678         definition.
14679         * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
14680         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14681         in comment.
14682         * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
14683         * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
14684         * config/mips/mips.c (mips_secondary_memory_needed): Make static
14685         and match hook interface.  Add comment from mips.h.
14686         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14687         * config/mmix/mmix.md (truncdfsf2): Refer to
14688         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14689         in comment.
14690         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
14691         (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
14692         * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14693         (pa_secondary_memory_needed): New function.
14694         * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
14695         * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
14696         * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14697         (pdp11_secondary_memory_needed): Make static and match hook interface.
14698         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
14699         * config/powerpcspe/powerpcspe-protos.h
14700         (rs6000_secondary_memory_needed_ptr): Delete.
14701         * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
14702         Delete.
14703         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14704         (rs6000_option_override_internal): Assign to
14705         targetm.secondary_memory_needed rather than
14706         rs6000_secondary_memory_needed_ptr.
14707         (rs6000_secondary_memory_needed): Match hook interface.
14708         (rs6000_debug_secondary_memory_needed): Likewise.
14709         * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
14710         * config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
14711         (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
14712         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14713         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
14714         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
14715         Delete.
14716         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
14717         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14718         (rs6000_option_override_internal): Assign to
14719         targetm.secondary_memory_needed rather than
14720         rs6000_secondary_memory_needed_ptr.
14721         (rs6000_secondary_memory_needed): Match hook interface.
14722         (rs6000_debug_secondary_memory_needed): Likewise.
14723         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
14724         * config/s390/s390.c (s390_secondary_memory_needed): New function.
14725         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14726         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
14727         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14728         (sparc_secondary_memory_needed): New function.
14729         * lra-constraints.c (check_and_process_move): Refer to
14730         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14731         in comment.
14732         (curr_insn_transform): Likewise.
14733         (process_alt_operands): Use targetm.secondary_memory_needed
14734         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14735         (check_secondary_memory_needed_p): Likewise.
14736         (choose_split_class): Likewise.
14737         * reload.c: Unconditionally include code that was previously
14738         conditional on SECONDARY_MEMORY_NEEDED.
14739         (push_secondary_reload): Use targetm.secondary_memory_needed
14740         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14741         (push_reload): Likewise.
14742         * reload1.c: Unconditionally include code that was previously
14743         conditional on SECONDARY_MEMORY_NEEDED.
14744         (choose_reload_regs): Use targetm.secondary_memory_needed
14745         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14746         (gen_reload): Likewise.
14747         * system.h (SECONDARY_MEMORY_NEEDED): Poison.
14748
14749 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14750             Alan Hayward  <alan.hayward@arm.com>
14751             David Sherwood  <david.sherwood@arm.com>
14752
14753         * target.def (secondary_memory_needed_mode): New hook:
14754         * targhooks.c (default_secondary_memory_needed_mode): Declare.
14755         * targhooks.h (default_secondary_memory_needed_mode): New function.
14756         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
14757         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
14758         * doc/tm.texi: Regenerate.
14759         * lra-constraints.c (check_and_process_move): Use
14760         targetm.secondary_memory_needed_mode instead of
14761         TARGET_SECONDARY_MEMORY_NEEDED_MODE.
14762         (curr_insn_transform): Likewise.
14763         * reload.c (get_secondary_mem): Likewise.
14764         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14765         * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
14766         function.
14767         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14768         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14769         * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
14770         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14771         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
14772         Delete.
14773         * config/powerpcspe/powerpcspe-protos.h
14774         (rs6000_secondary_memory_needed_mode): Delete.
14775         * config/powerpcspe/powerpcspe.c
14776         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14777         (rs6000_secondary_memory_needed_mode): Make static.
14778         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14779         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
14780         Delete.
14781         * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14782         Redefine.
14783         (rs6000_secondary_memory_needed_mode): Make static.
14784         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14785         * config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
14786         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14787         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14788         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14789         Redefine.
14790         (sparc_secondary_memory_needed_mode): New function.
14791         * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
14792
14793 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
14794
14795         * config/aarch64/constraints.md (Umq): New constraint.
14796         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
14797         Change to use Umq.
14798         (mov<mode>): Update condition.
14799
14800 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14801
14802         * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
14803         when bitposition is the same.
14804
14805 2017-09-13  Richard Biener  <rguenther@suse.de>
14806
14807         * dwarf2out.c (output_die_symbol): Remove.
14808         (output_die): Do not output a DIEs symbol.
14809
14810 2017-09-13  Richard Biener  <rguenther@suse.de>
14811
14812         PR middle-end/82128
14813         * gimple-fold.c (gimple_fold_call): Update SSA name in-place to
14814         default-def to avoid breaking iterator update with the weird
14815         interaction with cgraph_update_edges_for_call_stmt_node.
14816
14817 2017-09-13  Richard Biener  <rguenther@suse.de>
14818
14819         * tree-cfg.c (verify_gimple_assign_binary): Add verification
14820         for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
14821         VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
14822         (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
14823
14824 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
14825
14826         * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
14827         Disable pc relative literal load irrespective of
14828         TARGET_FIX_ERR_A53_84341 for default.
14829
14830 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
14831
14832         * config/sparc/sparc.c (output_return): Output the source location of
14833         the insn in the delay slot, if any.
14834         (output_sibcall): Likewise.
14835
14836 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
14837
14838         PR driver/81498
14839         * common.opt (-static-pie): New alias.
14840         (shared): Negate static-pie.
14841         (-no-pie): Update help text.
14842         (-pie): Likewise.
14843         (static-pie): New option.
14844         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
14845         -static-pie support.
14846         (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
14847         (LINK_EH_SPEC): Likewise.
14848         (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14849         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
14850         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
14851         * gcc.c (LINK_COMMAND_SPEC): Likewise.
14852         (init_gcc_specs): Likewise.
14853         (init_spec): Likewise.
14854         (display_help): Update help message for -pie.
14855         * doc/invoke.texi: Update -pie, -no-pie and -static.  Document
14856         -static-pie.
14857
14858 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
14859
14860         * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
14861         (movdi_aarch64): Likewise.
14862         (movti_aarch64): Likewise.
14863
14864 2017-09-12 Simon Wright <simon@pushface.org>
14865
14866         PR target/80204
14867         * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
14868         calculation of the minor version, always output as 0.
14869
14870 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
14871
14872         PR target/82112
14873         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
14874         ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
14875         on it early, rather than manual conversion late.  For
14876         ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
14877         instead of performing manual conversion.
14878
14879 2017-09-12  Carl Love  <cel@us.ibm.com>
14880
14881         * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
14882         vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
14883         vmulouw, vmulosw.
14884         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
14885         VMULOSW): Add definitions.
14886         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14887         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
14888         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
14889         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
14890         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
14891
14892 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
14893
14894         * config/aarch64/aarch64.md (movdi_aarch64): Set load/store
14895         types correctly.
14896         (movti_aarch64): Likewise.
14897         (movdf_aarch64): Likewise.
14898         (movtf_aarch64): Likewise.
14899         (load_pairdi): Likewise.
14900         (store_pairdi): Likewise.
14901         (load_pairdf): Likewise.
14902         (store_pairdf): Likewise.
14903         (loadwb_pair<GPI:mode>_<P:mode>): Likewise.
14904         (storewb_pair<GPI:mode>_<P:mode>): Likewise.
14905         (ldr_got_small_<mode>): Likewise.
14906         (ldr_got_small_28k_<mode>): Likewise.
14907         (ldr_got_tiny): Likewise.
14908         * config/aarch64/iterators.md (ldst_sz): New.
14909         (ldpstp_sz): Likewise.
14910         * config/aarch64/thunderx.md (thunderx_storepair): Split store_8
14911         to store_16.
14912         (thunderx_load): Split load_8 to load_16.
14913         * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
14914         load_8 to load_16.
14915         (thunderx2t99_storepair_basic): Split store_8 to store_16.
14916         * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
14917         (xgene1_store_pair): Split store_8 to store_16.
14918         * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
14919         (falkor_st_0_st_sd): Split store_8 to store_16.
14920
14921 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
14922
14923         * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
14924         and store1/2/3/4 to store_4/8/12/16.
14925         * config/aarch64/aarch64.md: Update for rename.
14926         * config/arm/arm.md: Likewise.: Likewise.
14927         * config/arm/arm.c: Likewise.
14928         * config/arm/thumb1.md: Likewise.
14929         * config/arm/thumb2.md: Likewise.
14930         * config/arm/vfp.md: Likewise.
14931         * config/arm/arm-generic.md: Likewise.
14932         * config/arm/arm1020e.md: Likewise.
14933         * config/arm/arm1026ejs.md: Likewise.
14934         * config/arm/arm1136jfs.md: Likewise.
14935         * config/arm/arm926ejs.md: Likewise.
14936         * config/arm/cortex-a15.md: Likewise.
14937         * config/arm/cortex-a17.md: Likewise.
14938         * config/arm/cortex-a5.md: Likewise.
14939         * config/arm/cortex-a53.md: Likewise.
14940         * config/arm/cortex-a57.md: Likewise.
14941         * config/arm/cortex-a7.md: Likewise.
14942         * config/arm/cortex-a8.md: Likewise.
14943         * config/arm/cortex-a9.md: Likewise.
14944         * config/arm/cortex-m4.md: Likewise.
14945         * config/arm/cortex-m7.md: Likewise.
14946         * config/arm/cortex-r4.md: Likewise.
14947         * config/arm/exynos-m1.md: Likewise.
14948         * config/arm/fa526.md: Likewise.
14949         * config/arm/fa606te.md: Likewise.
14950         * config/arm/fa626te.md: Likewise.
14951         * config/arm/fa726te.md: Likewise.
14952         * config/arm/fmp626.md: Likewise.
14953         * config/arm/iwmmxt.md: Likewise.
14954         * config/arm/ldmstm.md: Likewise.
14955         * config/arm/marvell-pj4.md: Likewise.
14956         * config/arm/xgene1.md: Likewise.
14957         * config/aarch64/thunderx.md: Likewise.
14958         * config/aarch64/thunderx2t99.md: Likewise.
14959         * config/aarch64/falkor.md: Likewise.
14960
14961 2017-09-12  Martin Liska  <mliska@suse.cz>
14962
14963         * attribs.c (private_lookup_attribute): New function.
14964         * attribs.h (private_lookup_attribute): Declared here.
14965         (lookup_attribute): Called from this place.
14966
14967 2017-09-12  Richard Biener  <rguenther@suse.de>
14968
14969         PR tree-optimization/82157
14970         * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
14971         stmts with side-effects.
14972
14973 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14974             Alan Hayward  <alan.hayward@arm.com>
14975             David Sherwood <david.sherwood@arm.com>
14976
14977         * target.def (hard_regno_nregs): New hook.
14978         (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
14979         * targhooks.h (default_hard_regno_nregs): Declare.
14980         * targhooks.c (default_hard_regno_nregs): New function.
14981         * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
14982         (TARGET_HARD_REGNO_NREGS): ...this hook.
14983         (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
14984         (CLASS_MAX_NREGS): Likewise.
14985         * doc/tm.texi: Regenerate.
14986         * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
14987         instead of HARD_REGNO_NREGS.
14988         * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
14989         HARD_REGNO_NREGS in the comment.
14990         * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
14991         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
14992         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
14993         Return an unsigned int.
14994         (TARGET_HARD_REGNO_NREGS): Redefine.
14995         * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
14996         * config/arc/arc.h (HARD_REGNO_NREGS): Delete.
14997         * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
14998         (arc_hard_regno_nregs): New function.
14999         * config/arm/arm.h (HARD_REGNO_NREGS): Delete.
15000         * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
15001         (arm_hard_regno_nregs): New function.
15002         * config/avr/avr.h (HARD_REGNO_NREGS): Delete.
15003         * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
15004         * config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
15005         (TARGET_HARD_REGNO_NREGS): Redefine.
15006         * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
15007         * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
15008         (HARD_REGNO_NREGS): Delete.
15009         * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
15010         (cr16_hard_regno_nregs): New function.
15011         (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
15012         * config/cris/cris.h (HARD_REGNO_NREGS): Delete.
15013         * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
15014         (cris_hard_regno_nregs): New function.
15015         * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
15016         * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
15017         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15018         * config/frv/frv.h (HARD_REGNO_NREGS): Delete.
15019         (CLASS_MAX_NREGS): Remove outdated copy of documentation.
15020         * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
15021         * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
15022         (frv_hard_regno_nregs): Make static.  Take and return an
15023         unsigned int.
15024         (frv_class_max_nregs): Remove outdated copy of documentation.
15025         * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
15026         * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
15027         * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
15028         * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
15029         * config/i386/i386.h (HARD_REGNO_NREGS): Delete.
15030         * config/i386/i386.c (ix86_hard_regno_nregs): New function.
15031         (TARGET_HARD_REGNO_NREGS): Redefine.
15032         * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
15033         (CLASS_MAX_NREGS): Update comment.
15034         * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
15035         (ia64_hard_regno_nregs): New function.
15036         * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
15037         * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
15038         * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
15039         * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
15040         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
15041         an unsigned int.
15042         (m32c_hard_regno_nregs): Likewise.  Make static.
15043         (TARGET_HARD_REGNO_NREGS): Redefine.
15044         * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
15045         * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
15046         * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
15047         (m68k_hard_regno_nregs): New function.
15048         * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
15049         * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
15050         * config/mips/mips.h (HARD_REGNO_NREGS): Delete.
15051         * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
15052         * config/mips/mips.c (mips_hard_regno_nregs): Make static.
15053         Take and return an unsigned int.
15054         (TARGET_HARD_REGNO_NREGS): Redefine.
15055         * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
15056         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15057         * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
15058         * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
15059         * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
15060         * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
15061         * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
15062         (msp430_hard_regno_nregs): Make static.  Take and return an
15063         unsigned int.
15064         * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
15065         * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
15066         * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
15067         (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
15068         * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
15069         * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
15070         * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
15071         (TARGET_HARD_REGNO_NREGS): Redefine.
15072         * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
15073         (PA_HARD_REGNO_NREGS): ...this.
15074         * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
15075         (PA_HARD_REGNO_NREGS): ...this.
15076         * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15077         (pa_hard_regno_nregs): New function.
15078         * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
15079         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
15080         (pdp11_hard_regno_nregs): New function.
15081         * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
15082         * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
15083         (rs6000_hard_regno_nregs_hook): New function.
15084         * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
15085         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
15086         * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
15087         Take and return an unsigned int.  Move earlier in file.
15088         (TARGET_HARD_REGNO_NREGS): Redefine.
15089         * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
15090         * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
15091         * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
15092         (rl78_hard_regno_nregs): Make static.  Take and return an
15093         unsigned int.
15094         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
15095         * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
15096         (rs6000_hard_regno_nregs_hook): New function.
15097         * config/rx/rx.h (HARD_REGNO_NREGS): Delete.
15098         * config/rx/rx.c (rx_hard_regno_nregs): New function.
15099         (TARGET_HARD_REGNO_NREGS): Redefine.
15100         * config/s390/s390.h (HARD_REGNO_NREGS): Delete.
15101         * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
15102         instead of HARD_REGNO_NREGS.
15103         (s390_hard_regno_nregs): New function.
15104         (s390_hard_regno_mode_ok): Add comment from s390.h.
15105         (TARGET_HARD_REGNO_NREGS): Redefine.
15106         * config/sh/sh.h (HARD_REGNO_NREGS): Delete.
15107         * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
15108         (sh_hard_regno_nregs): New function.
15109         (sh_pass_in_reg_p): Use it.
15110         * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
15111         * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15112         (sparc_hard_regno_nregs): New function.
15113         * config/spu/spu.h (HARD_REGNO_NREGS): Delete.
15114         * config/spu/spu.c (spu_hard_regno_nregs): New function.
15115         (spu_function_arg_advance): Use it, supplying a valid register number.
15116         (TARGET_HARD_REGNO_NREGS): Redefine.
15117         * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
15118         * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
15119         * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
15120         * config/v850/v850.h (HARD_REGNO_NREGS): Delete.
15121         * config/vax/vax.h (HARD_REGNO_NREGS): Delete.
15122         * config/visium/visium.h (HARD_REGNO_NREGS): Delete.
15123         (CLASS_MAX_NREGS): Remove copy of old documentation.
15124         * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
15125         (visium_hard_regno_nregs): New function.
15126         (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
15127         * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
15128         * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15129         xtensa_hard_regno_nregs): New function.
15130         * system.h (HARD_REGNO_NREGS): Poison.
15131
15132 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15133
15134         * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
15135         hard_regno_nregs instead of HARD_REGNO_NREGS.
15136         (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
15137         * config/c6x/c6x.c (c6x_expand_prologue): Likewise.
15138         (c6x_expand_epilogue): Likewise.
15139         * config/frv/frv.c (frv_alloc_temp_reg): Likewise.
15140         (frv_read_iacc_argument): Likewise.
15141         * config/sh/sh.c: Include regs.h.
15142         (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15143         (regs_used): Likewise.
15144         (output_stack_adjust): Likewise.
15145         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
15146         * expmed.c: Include regs.h.
15147         (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15148         * ree.c: Include regs.h.
15149         (combine_reaching_defs): Use hard_regno_nregs instead of
15150         HARD_REGNO_NREGS.
15151         (add_removable_extension): Likewise.
15152
15153 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15154
15155         * regs.h (hard_regno_nregs): Turn into a function.
15156         (end_hard_regno): Update accordingly.
15157         * caller-save.c (setup_save_areas): Likewise.
15158         (save_call_clobbered_regs): Likewise.
15159         (replace_reg_with_saved_mem): Likewise.
15160         (insert_restore): Likewise.
15161         (insert_save): Likewise.
15162         * combine.c (can_change_dest_mode): Likewise.
15163         (move_deaths): Likewise.
15164         (distribute_notes): Likewise.
15165         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
15166         * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
15167         (rs6000_split_multireg_move): Likewise.
15168         (rs6000_register_move_cost): Likewise.
15169         (rs6000_memory_move_cost): Likewise.
15170         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
15171         (rs6000_split_multireg_move): Likewise.
15172         (rs6000_register_move_cost): Likewise.
15173         (rs6000_memory_move_cost): Likewise.
15174         * cselib.c (cselib_reset_table): Likewise.
15175         (cselib_lookup_1): Likewise.
15176         * emit-rtl.c (set_mode_and_regno): Likewise.
15177         * function.c (aggregate_value_p): Likewise.
15178         * ira-color.c (setup_profitable_hard_regs): Likewise.
15179         (check_hard_reg_p): Likewise.
15180         (calculate_saved_nregs): Likewise.
15181         (assign_hard_reg): Likewise.
15182         (improve_allocation): Likewise.
15183         (calculate_spill_cost): Likewise.
15184         * ira-emit.c (modify_move_list): Likewise.
15185         * ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
15186         (ira_hard_reg_in_set_p): Likewise.
15187         * ira.c (setup_reg_mode_hard_regset): Likewise.
15188         (clarify_prohibited_class_mode_regs): Likewise.
15189         (check_allocation): Likewise.
15190         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15191         (lra_setup_reg_renumber): Likewise.
15192         (setup_try_hard_regno_pseudos): Likewise.
15193         (spill_for): Likewise.
15194         (assign_hard_regno): Likewise.
15195         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
15196         * lra-constraints.c (in_class_p): Likewise.
15197         (lra_constraint_offset): Likewise.
15198         (simplify_operand_subreg): Likewise.
15199         (lra_constraints): Likewise.
15200         (split_reg): Likewise.
15201         (split_if_necessary): Likewise.
15202         (invariant_p): Likewise.
15203         (inherit_in_ebb): Likewise.
15204         * lra-lives.c (process_bb_lives): Likewise.
15205         * lra-remat.c (reg_overlap_for_remat_p): Likewise.
15206         (get_hard_regs): Likewise.
15207         (do_remat): Likewise.
15208         * lra-spills.c (assign_spill_hard_regs): Likewise.
15209         * mode-switching.c (create_pre_exit): Likewise.
15210         * postreload.c (reload_combine_recognize_pattern): Likewise.
15211         * recog.c (peep2_find_free_register): Likewise.
15212         * regcprop.c (kill_value_regno): Likewise.
15213         (set_value_regno): Likewise.
15214         (copy_value): Likewise.
15215         (maybe_mode_change): Likewise.
15216         (find_oldest_value_reg): Likewise.
15217         (copyprop_hardreg_forward_1): Likewise.
15218         * regrename.c (check_new_reg_p): Likewise.
15219         (regrename_do_replace): Likewise.
15220         * reload.c (push_reload): Likewise.
15221         (combine_reloads): Likewise.
15222         (find_dummy_reload): Likewise.
15223         (operands_match_p): Likewise.
15224         (find_reloads): Likewise.
15225         (find_equiv_reg): Likewise.
15226         (reload_adjust_reg_for_mode): Likewise.
15227         * reload1.c (count_pseudo): Likewise.
15228         (count_spilled_pseudo): Likewise.
15229         (find_reg): Likewise.
15230         (clear_reload_reg_in_use): Likewise.
15231         (free_for_value_p): Likewise.
15232         (allocate_reload_reg): Likewise.
15233         (choose_reload_regs): Likewise.
15234         (reload_adjust_reg_for_temp): Likewise.
15235         (emit_reload_insns): Likewise.
15236         (delete_output_reload): Likewise.
15237         * rtlanal.c (subreg_get_info): Likewise.
15238         * sched-deps.c (sched_analyze_reg): Likewise.
15239         * sel-sched.c (init_regs_for_mode): Likewise.
15240         (mark_unavailable_hard_regs): Likewise.
15241         (choose_best_reg_1): Likewise.
15242         (verify_target_availability): Likewise.
15243         * valtrack.c (dead_debug_insert_temp): Likewise.
15244         * var-tracking.c (track_loc_p): Likewise.
15245         (emit_note_insn_var_location): Likewise.
15246         * varasm.c (make_decl_rtl): Likewise.
15247         * reginfo.c (choose_hard_reg_mode): Likewise.
15248         (init_reg_modes_target): Refer directly to
15249         this_target_regs->x_hard_regno_nregs.
15250
15251 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15252
15253         * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
15254         instead of hard_regno_nregs.
15255
15256 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15257
15258         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
15259         end_hard_regno instead of hard_regno_nregs.
15260         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
15261         * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
15262         * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
15263         * ira-color.c (improve_allocation): Likewise.
15264         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15265         * lra-lives.c (mark_regno_live): Likewise.
15266         (mark_regno_dead): Likewise.
15267         * lra-remat.c (operand_to_remat): Likewise.
15268         * lra.c (collect_non_operand_hard_regs): Likewise.
15269         * postreload.c (reload_combine_note_store): Likewise.
15270         (move2add_valid_value_p): Likewise.
15271         * reload.c (regno_clobbered_p): Likewise.
15272
15273 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15274
15275         * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
15276         hard_regno_nregs.
15277         * config/v850/v850.c (v850_reorg): Likewise.
15278         * reload.c (refers_to_regno_for_reload_p): Likewise.
15279         (find_equiv_reg): Likewise.
15280         * reload1.c (reload_reg_reaches_end_p): Likewise.
15281
15282 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15283
15284         * caller-save.c (add_used_regs): Use REG_NREGS instead of
15285         hard_regno_nregs.
15286         * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
15287         * config/arm/arm.c (output_move_neon): Likewise.
15288         (arm_attr_length_move_neon): Likewise.
15289         (neon_split_vcombine): Likewise.
15290         * config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
15291         (c6x_mark_reg_written): Likewise.
15292         (c6x_dwarf_register_span): Likewise.
15293         * config/i386/i386.c (ix86_save_reg): Likewise.
15294         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
15295         (rws_access_reg): Likewise.
15296         * config/s390/s390.c (s390_call_saved_register_used): Likewise.
15297         * mode-switching.c (create_pre_exit): Likewise.
15298         * ree.c (combine_reaching_defs): Likewise.
15299         (add_removable_extension): Likewise.
15300         * regcprop.c (find_oldest_value_reg): Likewise.
15301         (copyprop_hardreg_forward_1): Likewise.
15302         * reload.c (reload_inner_reg_of_subreg): Likewise.
15303         (push_reload): Likewise.
15304         (combine_reloads): Likewise.
15305         (find_dummy_reload): Likewise.
15306         (reload_adjust_reg_for_mode): Likewise.
15307         * reload1.c (find_reload_regs): Likewise.
15308         (forget_old_reloads_1): Likewise.
15309         (reload_reg_free_for_value_p): Likewise.
15310         (reload_adjust_reg_for_temp): Likewise.
15311         (emit_reload_insns): Likewise.
15312         (delete_output_reload): Likewise.
15313         * sel-sched.c (choose_best_reg_1): Likewise.
15314         (choose_best_pseudo_reg): Likewise.
15315
15316 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15317             Alan Hayward  <alan.hayward@arm.com>
15318             David Sherwood <david.sherwood@arm.com>
15319
15320         * defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
15321         * target.def (slow_unaligned_access): New hook.
15322         * targhooks.h (default_slow_unaligned_access): Declare.
15323         * targhooks.c (default_slow_unaligned_access): New function.
15324         * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
15325         (TARGET_SLOW_UNALIGNED_ACCESS): ...this.
15326         * doc/tm.texi: Regenerate.
15327         * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
15328         * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
15329         * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
15330         definition.
15331         * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
15332         * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
15333         Redefine.
15334         (rs6000_slow_unaligned_access): New function.
15335         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15336         (expand_block_compare): Likewise.
15337         (expand_strn_compare): Likewise.
15338         (rs6000_rtx_costs): Likewise.
15339         * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
15340         (riscv_slow_unaligned_access): Likewise.
15341         * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
15342         (riscv_slow_unaligned_access_p): ...this and make static.
15343         (riscv_option_override): Update accordingly.
15344         (riscv_slow_unaligned_access): New function.
15345         (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15346         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
15347         * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15348         (rs6000_slow_unaligned_access): New function.
15349         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15350         (rs6000_rtx_costs): Likewise.
15351         * config/rs6000/rs6000-string.c (expand_block_compare)
15352         (expand_strn_compare): Use targetm.slow_unaligned_access instead
15353         of SLOW_UNALIGNED_ACCESS.
15354         * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
15355         * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
15356         * calls.c (expand_call): Use targetm.slow_unaligned_access instead
15357         of SLOW_UNALIGNED_ACCESS.
15358         * expmed.c (simple_mem_bitfield_p): Likewise.
15359         * expr.c (alignment_for_piecewise_move): Likewise.
15360         (emit_group_load_1): Likewise.
15361         (emit_group_store): Likewise.
15362         (copy_blkmode_from_reg): Likewise.
15363         (emit_push_insn): Likewise.
15364         (expand_assignment): Likewise.
15365         (store_field): Likewise.
15366         (expand_expr_real_1): Likewise.
15367         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
15368         * lra-constraints.c (simplify_operand_subreg): Likewise.
15369         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
15370         * gimple-ssa-store-merging.c: Likewise in block comment at start
15371         of file.
15372         * tree-ssa-strlen.c: Include target.h.
15373         (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
15374         of SLOW_UNALIGNED_ACCESS.
15375         * system.h (SLOW_UNALIGNED_ACCESS): Poison.
15376
15377 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15378
15379         PR rtl-optimization/82185
15380         * expmed.c (emit_store_flag_int): Only test tem if it has been
15381         initialized.
15382
15383 2017-09-12  Richard Biener  <rguenther@suse.de>
15384
15385         PR middle-end/82149
15386         * match.pd ((FTYPE) N CMP CST): Fix typo.
15387
15388 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
15389
15390         * config/mips/mips.c (mips_attribute_table): Add 'short_call'
15391         attribute.
15392         (mips_near_type_p): Add 'short_call' attribute as a synonym
15393         for 'near'.
15394         * doc/extend.texi (short_call): Document new function attribute.
15395
15396 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15397
15398         PR target/82112
15399         * c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
15400         assertion check that in the condition.
15401         (get_atomic_generic_size): Likewise.  Before testing if parameter
15402         has pointer type, if it has array type, call for C++
15403         default_conversion to perform array-to-pointer conversion.
15404
15405 2017-09-12  Richard Biener  <rguenther@suse.de>
15406
15407         * tree-vect-generic.c (expand_vector_operations_1): Do nothing
15408         for operations we cannot scalarize.
15409
15410 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
15411
15412         * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
15413         vectors heap vectors.  Clean up comments.
15414         Make visited_bbs a reference.
15415         (profitable_jump_thread_path): Make GC
15416         vectors heap vectors.  Clean up comments.
15417         Misc cleanups.
15418         (convert_and_register_jump_thread_path): Make GC vectors heap
15419         vectors.
15420         (check_subpath_and_update_thread_path): Same.  Clean up comments.
15421         Make visited_bbs a reference.
15422         (handle_phi): Abstract common code to to
15423         register_jump_thread_path_if_profitable.
15424         Rename VAR_BB to DEF_BB.
15425         Update comments.
15426         Make GC vectors heap vectors.
15427         Make visited_bbs a reference.
15428         (handle_assignment): Same.
15429         (register_jump_thread_path_if_profitable): New.
15430         (fsm_find_control_statement_thread_paths): Rename VAR_BB to
15431         DEF_BB.
15432         Make GC vectors heap vectors.  Clean up comments.
15433         Make visited_bbs a reference.
15434         (find_jump_threads_backwards): Make visited_bbs live in the stack.
15435         * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
15436         comment.
15437
15438 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
15439
15440         PR target/82181
15441         * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
15442         words of E_DImode object are reachable by xtensa_uimm8x4 access.
15443
15444 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
15445
15446         Revert r251800 and r251799.
15447
15448 2017-09-11  Martin Jambor  <mjambor@suse.cz>
15449
15450         PR hsa/82119
15451         * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
15452         arguments in advance.
15453         * hsa-regalloc.c (naive_process_phi): New parameter predecessors,
15454         use it to find predecessor edges.
15455         (naive_outof_ssa): Collect vector of predecessors.
15456
15457 2017-09-08  Jason Merrill  <jason@redhat.com>
15458
15459         PR c++/70029 - ICE with ref-qualifier and -flto
15460         * langhooks.h (struct lang_hooks_for_types): Add
15461         copy_lang_qualifiers.
15462         * attribs.c (build_type_attribute_qual_variant): Use it.
15463         * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
15464         NULL.
15465         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
15466         * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
15467
15468 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
15469
15470         PR target/81988
15471         * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
15472         (*mulsi3_sp64): New instruction.
15473         (mulsi3): New expander.
15474
15475 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
15476
15477         * config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
15478
15479 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15480
15481         * sancov.c: Include memmodel.h.
15482
15483 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
15484
15485         PR target/80897
15486         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
15487         large offsets.
15488
15489 2017-09-07  Carl Love  <cel@us.ibm.com>
15490
15491         * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
15492         the sldi instruction.
15493
15494 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
15495
15496         * sancov.c: Include tm_p.h.
15497
15498 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
15499
15500         PR target/81979
15501         * output.h (switch_to_other_text_partition): New declaration.
15502         * varasm.c (switch_to_other_text_partition): New function.
15503         * config/rs6000/rs6000.c (uses_TOC): Return 2 if
15504         NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
15505         (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
15506         to the other text partition before emitting LCL label and switch back
15507         after emitting the word after it.
15508
15509 2017-09-07  Richard Biener  <rguenther@suse.de>
15510
15511         * passes.def (pass_split_crit_edges): Remove instance before PRE.
15512         * tree-ssa-pre.c (pass_pre::execute): Instead manually split
15513         critical edges here, after loop init.
15514         (pass_data_pre): Remove PROP_no_crit_edges flags.
15515         * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
15516         for valueization of call args to avoid leaking VN_TOP.
15517         (visit_use): Assert we do not visit default defs.
15518         (init_scc_vn): Use build_decl for VN_TOP to make name nicer.
15519         Use error_mark_node to more easily detect leaking VN_TOP.
15520         All default-defs are varying, not VN_TOP.  Mark them visited.
15521         (run_scc_vn): Make code match comment.
15522
15523 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15524
15525         * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
15526         OPTION_MASK_FLOAT128_KEYWORD.
15527         (POWERPC_MASKS): Likewise.
15528         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
15529         support for the -mfloat128-type option, and make -mfloat128
15530         default on PowerPC Linux systems.  Define or undefine
15531         __FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
15532         Define __float128 to be __ieee128 if IEEE 128-bit support is
15533         enabled, or undefine it.
15534         (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
15535         Delete defining __FLOAT128_TYPE__.
15536         * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
15537         -mfloat128-type option and make -mfloat128 default on PowerPC
15538         Linux systems.
15539         (TARGET_FLOAT128_TYPE): Likewise.
15540         (-mfloat128-type): Likewise.
15541         * config/rs6000/rs6000.c (rs6000_option_override_internal):
15542         Delete the -mfloat128-type option and make -mfloat128 default on
15543         PowerPC Linux systems.  Always use __ieee128 to be the keyword for
15544         the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
15545         128-bit floating point is enabled.  Change tests from using
15546         -mfloat128-type to -mfloat128.
15547         (rs6000_mangle_type): Use the correct mangling for the __float128
15548         type even if normal long double is restricted to 64-bits.
15549         (floatn_mode): Enable the _Float128 type by default on VSX Linux
15550         systems.
15551         * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
15552         (MASK_FLOAT128_KEYWORD): Define new shortcut macro.
15553         (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
15554         -mfloat128-type.
15555         * doc/invoke.texi (RS/6000 and PowerPC Options): Update
15556         documentation for -mfloat128.
15557
15558 2017-09-06  Olivier Hainque  <hainque@adacore.com>
15559
15560         * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
15561
15562 2017-09-06  Wish Wu  <wishwu007@gmail.com>
15563             Jakub Jelinek  <jakub@redhat.com>
15564
15565         * asan.c (initialize_sanitizer_builtins): Add
15566         BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
15567         BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
15568         BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
15569         BT_FN_VOID_UINT64_PTR variables.
15570         * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
15571         (BT_FN_VOID_UINT16_UINT16): Likewise.
15572         (BT_FN_VOID_UINT32_UINT32): Likewise.
15573         (BT_FN_VOID_FLOAT_FLOAT): Likewise.
15574         (BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
15575         (BT_FN_VOID_UINT64_PTR): Likewise.
15576         * common.opt (flag_sanitize_coverage): New variable.
15577         (fsanitize-coverage=trace-pc): Remove.
15578         (fsanitize-coverage=): Add.
15579         * flag-types.h (enum sanitize_coverage_code): New enum.
15580         * fold-const.c (fold_range_test): Disable non-short-circuit
15581         optimization if flag_sanitize_coverage.
15582         (fold_truth_andor): Likewise.
15583         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
15584         * opts.c (COVERAGE_SANITIZER_OPT): Define.
15585         (coverage_sanitizer_opts): New array.
15586         (get_closest_sanitizer_option): Add OPTS argument, handle also
15587         OPT_fsanitize_coverage_.
15588         (parse_sanitizer_options): Adjusted to also handle
15589         OPT_fsanitize_coverage_.
15590         (common_handle_option): Add OPT_fsanitize_coverage_.
15591         * sancov.c (instrument_comparison, instrument_switch): New function.
15592         (sancov_pass): Add trace-cmp support.
15593         * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
15594         BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
15595         BUILT_IN_SANITIZER_COV_TRACE_CMP8,
15596         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
15597         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
15598         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
15599         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
15600         BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
15601         BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
15602         * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
15603
15604 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
15605
15606         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
15607         error.  Only quit immediately if parsing is complete.
15608         (BEGIN): Initialize fatal_err and parse_done.
15609         (begin fpu, end fpu): Check number of arguments.
15610         (begin arch, end arch): Likewise.
15611         (begin cpu, end cpu): Likewise.
15612         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
15613         (optalias): Likewise.
15614
15615 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
15616
15617         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
15618         * config/arm/arm-isa.h: Delete.  Move definitions to ...
15619         * arm-cpus.in: ... here.  Use new feature and fgroup values.
15620         * config/arm/arm.c (arm_option_override): Use lower case for feature
15621         bit names.
15622         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
15623         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
15624         * config/arm/parsecpu.awk (END): Add new command 'isa'.
15625         (isa_pfx): Delete.
15626         (print_isa_bits_for): New function.
15627         (gen_isa): New function.
15628         (gen_comm_data): Use print_isa_bits_for.
15629         (define feature): New keyword.
15630         (define fgroup): New keyword.
15631         * config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
15632         (arm-isa.h): Add rule to generate file.
15633         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
15634         case for feature bit names.
15635
15636 2017-09-06  Richard Biener  <rguenther@suse.de>
15637
15638         * tree-ssa-pre.c (NECESSARY): Remove.
15639         (create_expression_by_pieces): Do not touch pass-local flags.
15640         (insert_into_preds_of_block): Likewise.
15641         (do_pre_regular_insertion): Likewise.
15642         (eliminate_insert): Likewise.
15643         (eliminate_dom_walker::before_dom_children): Likewise.
15644         (fini_eliminate): Do not look at inserted_exprs.
15645         (mark_operand_necessary): Remove.
15646         (remove_dead_inserted_code): Replace with simple work-list
15647         algorithm based on inserted_exprs and SSA uses.
15648         (pass_pre::execute): Re-order fini_eliminate and
15649         remove_dead_inserted_code.
15650
15651 2017-09-06  Olivier Hainque  <hainque@adacore.com>
15652
15653         * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
15654         for VxWorks 7.  Adjust surrounding comments.
15655
15656 2017-09-06  Richard Biener  <rguenther@suse.de>
15657
15658         * gimple-ssa-strength-reduction.c
15659         (find_candidates_dom_walker::before_dom_children): Also allow
15660         pointer types.
15661
15662 2017-09-06  Richard Biener  <rguenther@suse.de>
15663
15664         PR tree-optimization/82108
15665         * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
15666         for gap in the non-permutation SLP case.
15667
15668 2017-09-06  Martin Jambor  <mjambor@suse.cz>
15669
15670         PR tree-optimization/82078
15671         * tree-sra.c (sort_and_splice_var_accesses): Move call to
15672         add_access_to_work_queue...
15673         (build_accesses_from_assign): ...here.
15674         (propagate_all_subaccesses): Make sure racc is the group
15675         representative, if there is one.
15676
15677 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
15678
15679         PR middle-end/82095
15680         * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
15681         NULL DECL_INITIAL.
15682
15683 2017-09-06  Richard Biener  <rguenther@suse.de>
15684
15685         * gimple-ssa-strength-reduction.c
15686         (find_candidates_dom_walker::before_doom_children): Use a
15687         type and not a mode check.
15688
15689 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
15690
15691         PR target/77308
15692         * config/arm/predicates.md (arm_general_adddi_operand): Create new
15693         non-vfp predicate.
15694         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
15695
15696 2017-09-05  Jeff Law  <law@redhat.com>
15697
15698         PR tree-optimization/64910
15699         * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
15700         cases where we have 3 or more operands.
15701
15702 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
15703
15704         PR middle-end/81768
15705         * omp-low.c (lower_omp_for): Recompute tree invariant if
15706         gimple_omp_for_initial/final is ADDR_EXPR.
15707
15708         PR middle-end/81768
15709         * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
15710         into gimple val before gimplification fo the COND_EXPR.
15711
15712 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
15713
15714         * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
15715         REGION_COPY argument.
15716         (thread_through_all_blocks): Remove unused argument to
15717         duplicate_thread_path.
15718
15719 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15720             Alan Hayward  <alan.hayward@arm.com>
15721             David Sherwood  <david.sherwood@arm.com>
15722
15723         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
15724         Take a scalar_mode rather than a machine_mode.
15725         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15726         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
15727         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15728         (aarch64_gen_adjusted_ldpstp): Likewise.
15729         (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
15730
15731 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15732             Alan Hayward  <alan.hayward@arm.com>
15733             David Sherwood  <david.sherwood@arm.com>
15734
15735         * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
15736         Take a scalar_int_mode instead of a machine_mode.
15737         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15738         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15739         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15740         (aarch64_simd_attr_length_rglist): Delete.
15741         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
15742         a scalar_int_mode instead of a machine_mode.
15743         (aarch64_add_offset): Likewise.
15744         (aarch64_internal_mov_immediate): Likewise
15745         (aarch64_add_constant_internal): Likewise.
15746         (aarch64_add_constant): Likewise.
15747         (aarch64_movw_imm): Likewise.
15748         (aarch64_rtx_arith_op_extract_p): Likewise.
15749         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15750         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15751         Remove assert that the mode isn't a vector.
15752         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15753         (aarch64_expand_mov_immediate): Update calls after above changes.
15754         (aarch64_output_casesi): Use as_a <scalar_int_mode>.
15755         (aarch64_and_bitmask_imm): Check for scalar integer modes.
15756         (aarch64_move_imm): Likewise.
15757         (aarch64_can_const_movi_rtx_p): Likewise.
15758         (aarch64_strip_extend): Likewise.
15759         (aarch64_extr_rtx_p): Likewise.
15760         (aarch64_rtx_costs): Likewise, using wode_mode as the mode of
15761         a CONST_INT when the mode parameter is VOIDmode.
15762         (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
15763
15764 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15765
15766         * machmode.h (bitwise_mode_for_mode): Return opt_mode.
15767         * stor-layout.c (bitwise_mode_for_mode): Likewise.
15768         (bitwise_type_for_mode): Update accordingly.
15769
15770 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15771
15772         * stor-layout.h (mode_for_size_tree): Return an opt_mode.
15773         * stor-layout.c (mode_for_size_tree): Likewise.
15774         (mode_for_array): Update accordingly.
15775         (layout_decl): Likewise.
15776         (compute_record_mode): Likewise.  Only set the mode once.
15777
15778 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15779
15780         * target.def (get_mask_mode): Change return type to opt_mode.
15781         Expand commentary.
15782         * doc/tm.texi: Regenerate.
15783         * targhooks.h (default_get_mask_mode): Return an opt_mode.
15784         * targhooks.c (default_get_mask_mode): Likewise.
15785         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
15786         * optabs-query.c (can_vec_mask_load_store_p): Update use of
15787         targetm.get_mask_mode.
15788         * tree.c (build_truth_vector_type): Likewise.
15789
15790 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15791
15792         * machmode.h (mode_for_vector): Return an opt_mode.
15793         * stor-layout.c (mode_for_vector): Likewise.
15794         (mode_for_int_vector): Update accordingly.
15795         (layout_type): Likewise.
15796         * config/i386/i386.c (emit_memmov): Likewise.
15797         (ix86_expand_set_or_movmem): Likewise.
15798         (ix86_expand_vector_init): Likewise.
15799         (ix86_get_mask_mode): Likewise.
15800         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
15801         Likewise.
15802         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
15803         * expmed.c (extract_bit_field_1): Likewise.
15804         * expr.c (expand_expr_real_2): Likewise.
15805         * optabs-query.c (can_vec_perm_p): Likewise.
15806         (can_vec_mask_load_store_p): Likewise.
15807         * optabs.c (expand_vec_perm): Likewise.
15808         * targhooks.c (default_get_mask_mode): Likewise.
15809         * tree-vect-stmts.c (vectorizable_store): Likewise.
15810         (vectorizable_load): Likewise.
15811         (get_vectype_for_scalar_type_and_size): Likewise.
15812
15813 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15814
15815         * machmode.h (mode_for_int_vector): New function.
15816         * stor-layout.c (mode_for_int_vector): Likewise.
15817         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
15818         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
15819         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
15820         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
15821         (s390_expand_vcond): Likewise.
15822
15823 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15824
15825         * machmode.h (opt_machine_mode): New type.
15826         (opt_mode<T>): Allow construction from anything that can be
15827         converted to a T.
15828         (is_a, as_a, dyn_cast): Add overloads for opt_mode.
15829         (mode_for_size): Return an opt_machine_mode.
15830         * stor-layout.c (mode_for_size): Likewise.
15831         (mode_for_size_tree): Update call accordingly.
15832         (bitwise_mode_for_mode): Likewise.
15833         (make_fract_type): Likewise.
15834         (make_accum_type): Likewise.
15835         * caller-save.c (replace_reg_with_saved_mem): Update call
15836         accordingly.
15837         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15838         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15839         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15840         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15841         * expmed.c (extract_bit_field_1): Likewise.
15842         * reload.c (get_secondary_mem): Likewise.
15843         * varasm.c (assemble_integer): Likewise.
15844         * lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
15845         early-out.
15846
15847 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15848
15849         * machmode.h (decimal_float_mode_for_size): New function.
15850         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
15851         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
15852         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.
15853         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
15854         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
15855         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
15856
15857 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15858
15859         * builtins.c (expand_builtin_powi): Use int_mode_for_size.
15860         (get_builtin_sync_mode): Likewise.
15861         (expand_ifn_atomic_compare_exchange): Likewise.
15862         (expand_builtin_atomic_clear): Likewise.
15863         (expand_builtin_atomic_test_and_set): Likewise.
15864         (fold_builtin_atomic_always_lock_free): Likewise.
15865         * calls.c (compute_argument_addresses): Likewise.
15866         (emit_library_call_value_1): Likewise.
15867         (store_one_arg): Likewise.
15868         * combine.c (combine_instructions): Likewise.
15869         * config/aarch64/aarch64.c (aarch64_function_value): Likewise.
15870         * config/arm/arm.c (arm_function_value): Likewise.
15871         (aapcs_allocate_return_reg): Likewise.
15872         * config/c6x/c6x.c (c6x_expand_movmem): Likewise.
15873         * config/i386/i386.c (construct_container): Likewise.
15874         (ix86_gimplify_va_arg): Likewise.
15875         (ix86_expand_sse_cmp): Likewise.
15876         (emit_memmov): Likewise.
15877         (emit_memset): Likewise.
15878         (expand_small_movmem_or_setmem): Likewise.
15879         (ix86_expand_pextr): Likewise.
15880         (ix86_expand_pinsr): Likewise.
15881         * config/lm32/lm32.c (lm32_block_move_inline): Likewise.
15882         * config/microblaze/microblaze.c (microblaze_block_move_straight):
15883         Likewise.
15884         * config/mips/mips.c (mips_function_value_1) Likewise.
15885         (mips_block_move_straight): Likewise.
15886         (mips_expand_ins_as_unaligned_store): Likewise.
15887         * config/powerpcspe/powerpcspe.c
15888         (rs6000_darwin64_record_arg_advance_flush): Likewise.
15889         (rs6000_darwin64_record_arg_flush): Likewise.
15890         * config/rs6000/rs6000.c
15891         (rs6000_darwin64_record_arg_advance_flush): Likewise.
15892         (rs6000_darwin64_record_arg_flush): Likewise.
15893         * config/sparc/sparc.c (sparc_function_arg_1): Likewise.
15894         (sparc_function_value_1): Likewise.
15895         * config/spu/spu.c (adjust_operand): Likewise.
15896         (spu_emit_branch_or_set): Likewise.
15897         (arith_immediate_p): Likewise.
15898         * emit-rtl.c (gen_lowpart_common): Likewise.
15899         * expr.c (expand_expr_real_1): Likewise.
15900         * function.c (assign_parm_setup_block): Likewise.
15901         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
15902         * reload1.c (alter_reg): Likewise.
15903         * stor-layout.c (mode_for_vector): Likewise.
15904         (layout_type): Likewise.
15905
15906 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15907
15908         * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
15909         (spu_convert_move): Likewise.
15910         * lower-subreg.c (resolve_simple_move): Likewise.
15911
15912 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
15913
15914         PR target/81833
15915         * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
15916         define_insn to a define_expand.
15917         (altivec_vsum2sws_direct): New define_insn.
15918         (altivec_vsumsws): Convert from a define_insn to a define_expand.
15919
15920 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
15921
15922         * config/arm/arm.c (arm_option_params_internal): Improve setting of
15923         max_insns_skipped.
15924
15925 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
15926
15927         PR target/59501
15928         PR target/81624
15929         PR target/81769
15930         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
15931         realign stack if stack alignment needed is less than incoming
15932         stack boundary.
15933
15934 2017-09-05  Marek Polacek  <polacek@redhat.com>
15935
15936         PR sanitizer/82072
15937         * convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
15938         check earlier.
15939
15940 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
15941
15942         * explow.c (get_dynamic_stack_size): Improve dynamic alignment.
15943
15944 2017-09-05  Richard Biener  <rguenther@suse.de>
15945
15946         PR tree-optimization/82084
15947         * fold-const.c (can_native_encode_string_p): Handle wide characters.
15948
15949 2017-09-05  Richard Biener  <rguenther@suse.de>
15950
15951         PR tree-optimization/82102
15952         * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
15953
15954 2017-09-05  Martin Liska  <mliska@suse.cz>
15955
15956         PR tree-optimization/82032
15957         * tree-cfg.c (generate_range_test): New function.
15958         * tree-cfg.h (generate_range_test): Declared here.
15959         * tree-cfgcleanup.c (convert_single_case_switch): New function.
15960         (cleanup_control_expr_graph): Use it.
15961         * tree-switch-conversion.c (try_switch_expansion): Remove
15962         assert.
15963         (emit_case_nodes): Use generate_range_test.
15964
15965 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
15966
15967         PR target/82098
15968         * config/i386/i386.md (*<btsc><mode>_mask): Add
15969         TARGET_USE_BT to insn constraint.
15970         (*btr<mode>_mask): Ditto.
15971
15972 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
15973
15974         * config/arm/arm.c (arm_legitimate_index_p): Add comment.
15975         (thumb2_legitimate_index_p): Use correct range for DI/DF mode.
15976
15977 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
15978
15979         PR target/77308
15980         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
15981         TARGET_NEON and TARGET_IWMMXT.
15982         (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
15983         TARGET_NEON and TARGET_IWMMXT.
15984         (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
15985
15986 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
15987
15988         * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
15989         (ix86_rewrite_tls_address): Ditto.
15990         * config/i386/i386.c (ix86_tls_address_pattern_p) New function.
15991         (ix86_rewrite_tls_address_1): Ditto.
15992         (ix86_rewrite_tls_address): Ditto.
15993         * config/i386/predicates.md (tls_address_pattern): New predicate.
15994         * config/i386/i386.md (TLS address splitter): New splitter.
15995
15996 2017-09-04  Richard Biener  <rguenther@suse.de>
15997
15998         PR tree-optimization/82084
15999         * fold-const.h (can_native_encode_string_p): Declare.
16000         * fold-const.c (can_native_encode_string_p): Factor out from ...
16001         (native_encode_string): ... here.
16002         * tree-vect-stmts.c (vectorizable_store): Call it to avoid
16003         vectorizing stores from constants we later cannot handle.
16004
16005 2017-09-04  Marek Polacek  <polacek@redhat.com>
16006
16007         PR c/81783
16008         * doc/invoke.texi: Update -Wtautological-compare documentation.
16009
16010 2017-09-04  Jeff Law  <law@redhat.com>
16011
16012         PR tree-optimization/64910
16013         * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
16014         swap the first and last operand if the last is a constant.
16015
16016 2017-09-04  Marek Polacek  <polacek@redhat.com>
16017
16018         PR sanitizer/82072
16019         * convert.c (do_narrow): When sanitizing signed integer overflows,
16020         bail out for signed types.
16021         (convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
16022
16023 2017-09-04  Richard Biener  <rguenther@suse.de>
16024
16025         PR tree-optimization/82060
16026         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
16027         Move devirtualization after stmt folding and before EH/AB/noreturn
16028         cleanup to get the stmt refs canonicalized.  Use a bool instead
16029         of gimple_modified_p since that doesn't work for NOPs.  Schedule
16030         NOPs generated by folding for removal.
16031
16032 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16033             Alan Hayward  <alan.hayward@arm.com>
16034             David Sherwood  <david.sherwood@arm.com>
16035
16036         * coretypes.h (pad_direction): New enum.
16037         * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
16038         (FUNCTION_ARG_PADDING): Likewise.
16039         * target.def (function_arg_padding): New hook.
16040         * targhooks.h (default_function_arg_padding): Declare.
16041         * targhooks.c (default_function_arg_padding): New function.
16042         * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
16043         (TARGET_FUNCTION_ARG_PADDING): ...this.
16044         * doc/tm.texi: Regenerate.
16045         * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
16046         instead of direction.
16047         (compute_argument_addresses): Likewise.
16048         (load_register_parameters): Likewise.
16049         (emit_library_call_value_1): Likewise.
16050         (store_one_arg): Use targetm.calls.function_arg_padding instead
16051         of FUNCTION_ARG_PADDING.
16052         (must_pass_in_stack_var_size_or_pad): Likewise.
16053         * expr.c (emit_group_load_1): Use pad_direction instead of direction.
16054         (emit_group_store): Likewise.
16055         (emit_single_push_insn_1): Use targetm.calls.function_arg_padding
16056         instead of FUNCTION_ARG_PADDING.
16057         (emit_push_insn): Likewise, and propagate enum change throughout
16058         function.
16059         * function.h (direction): Delete.
16060         (locate_and_pad_arg_data::where_pad): Use pad_direction instead
16061         of direction.
16062         * function.c (assign_parm_find_stack_rtl): Likewise.
16063         (assign_parm_setup_block_p): Likewise.
16064         (assign_parm_setup_block): Likewise.
16065         (gimplify_parameters): Likewise.
16066         (locate_and_pad_parm): Use targetm.calls.function_arg_padding
16067         instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
16068         function.
16069         * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
16070         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16071         * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
16072         * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
16073         (aarch64_function_arg_padding): ...this new function.
16074         (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
16075         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16076         * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
16077         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16078         * config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
16079         * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16080         (arm_pad_arg_upward): Replace with...
16081         (arm_function_arg_padding): ...this new function.
16082         * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
16083         of direction.
16084         * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
16085         * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
16086         * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16087         (ia64_hpux_function_arg_padding): Replace with...
16088         (ia64_function_arg_padding): ...this new function.  Use pad_direction
16089         instead of direction.  Check for TARGET_HPUX.
16090         * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
16091         * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16092         (iq2000_function_arg_padding): New function.
16093         * config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
16094         * config/mips/mips.c (mips_pad_arg_upward): Replace with...
16095         (mips_function_arg_padding): ...this new function.
16096         (mips_pad_reg_upward): Update accordingly.
16097         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16098         * config/mips/mips.h (PAD_VARARGS_DOWN): Use
16099         targetm.calls.function_arg_padding.
16100         (FUNCTION_ARG_PADDING): Delete.
16101         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16102         * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
16103         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16104         * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
16105         (nios2_block_reg_padding): Return pad_direction instead of direction.
16106         * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
16107         instead of direction.
16108         (nios2_function_arg_padding): Likewise.  Make static.
16109         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16110         * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
16111         (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
16112         * config/pa/pa-protos.h (pa_function_arg_padding): Delete.
16113         * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16114         (pa_function_arg_padding): Make static.  Return pad_direction instead
16115         of direction.
16116         * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
16117         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16118         * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
16119         instead of direction.  Use targetm.calls.function_arg_padding.
16120         * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
16121         * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16122         * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
16123         * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
16124         * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
16125         Redefine.
16126         (function_arg_padding): Rename to...
16127         (rs6000_function_arg_padding): ...this.  Make static.  Return
16128         pad_direction instead of direction.
16129         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16130         * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
16131         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16132         * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
16133         instead of direction.  Use targetm.calls.function_arg_padding.
16134         * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
16135         * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16136         * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
16137         * config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
16138         * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16139         (function_arg_padding): Rename to...
16140         (rs6000_function_arg_padding): ...this.  Make static.  Return
16141         pad_direction instead of direction.
16142         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16143         * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
16144         * config/s390/s390.c (s390_function_arg_padding): New function.
16145         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16146         * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
16147         * config/sparc/sparc-protos.h (function_arg_padding): Delete.
16148         * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16149         (function_arg_padding): Rename to...
16150         (sparc_function_arg_padding): ...this.  Make static.  Return
16151         pad_direction instead of direction.
16152         * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
16153         * config/spu/spu.c (spu_function_arg_padding): New function.
16154         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16155         * system.h (FUNCTION_ARG_PADDING): Poison.
16156
16157 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16158             Alan Hayward  <alan.hayward@arm.com>
16159             David Sherwood  <david.sherwood@arm.com>
16160
16161         * target.def (modes_tieable_p): New hook.
16162         * doc/tm.texi (MODES_TIEABLE_P): Replace with...
16163         (TARGET_MODES_TIEABLE_P): ...this.
16164         * doc/tm.texi.in: Regenerate.
16165         * hooks.h (hook_bool_mode_mode_true): Declare.
16166         * hooks.c (hook_bool_mode_mode_true): New function.
16167         * combine.c (subst): Use targetm.modes_tieable_p instead of
16168         MODES_TIEABLE_P.
16169         * dse.c (find_shift_sequence): Likewise.
16170         * expmed.c (extract_low_bits): Likewise.
16171         * lower-subreg.c: Include target.h.
16172         (find_decomposable_subregs): Use targetm.modes_tieable_p instead of
16173         MODES_TIEABLE_P.
16174         * rtlanal.c (rtx_cost): Likewise.
16175         * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
16176         * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
16177         * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
16178         (TARGET_MODES_TIEABLE_P): Redefine.
16179         * config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
16180         * config/alpha/alpha.c (alpha_modes_tieable_p): New function.
16181         (TARGET_MODES_TIEABLE_P): Redefine.
16182         * config/arc/arc.h (MODES_TIEABLE_P): Delete.
16183         * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
16184         (arc_modes_tieable_p): New function.
16185         * config/arm/arm.h (MODES_TIEABLE_P): Delete.
16186         * config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
16187         * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
16188         (arm_modes_tieable_p): Make static.
16189         * config/avr/avr.h (MODES_TIEABLE_P): Delete.
16190         * config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
16191         * config/bfin/bfin.c (bfin_modes_tieable_p): New function.
16192         (TARGET_MODES_TIEABLE_P): Redefine.
16193         * config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
16194         * config/c6x/c6x.c (c6x_modes_tieable_p): New function.
16195         (TARGET_MODES_TIEABLE_P): Redefine.
16196         * config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
16197         * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
16198         (cr16_modes_tieable_p): New function.
16199         * config/cris/cris.h (MODES_TIEABLE_P): Delete.
16200         * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
16201         * config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
16202         (TRULY_NOOP_TRUNCATION): Update comment.
16203         * config/frv/frv.h (MODES_TIEABLE_P): Delete.
16204         (TRULY_NOOP_TRUNCATION): Update comment.
16205         * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
16206         (frv_modes_tieable_p): New function.
16207         * config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
16208         * config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
16209         * config/h8300/h8300.c (h8300_modes_tieable_p): New function.
16210         (TARGET_MODES_TIEABLE_P): Redefine.
16211         * config/i386/i386.h (MODES_TIEABLE_P): Delete.
16212         * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
16213         * config/i386/i386.c (ix86_modes_tieable_p): Make static.
16214         (TARGET_MODES_TIEABLE_P): Redefine.
16215         * config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
16216         * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
16217         (ia64_modes_tieable_p): New function.
16218         * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
16219         * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
16220         (iq2000_modes_tieable_p): New function.
16221         * config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
16222         * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
16223         (lm32_modes_tieable_p): New function.
16224         * config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
16225         * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
16226         * config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
16227         (TARGET_MODES_TIEABLE_P): Redefine.
16228         * config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
16229         * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
16230         (m32r_modes_tieable_p): New function.
16231         * config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
16232         * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
16233         (m68k_modes_tieable_p): New function.
16234         * config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
16235         * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
16236         (mcore_modes_tieable_p): New function.
16237         * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
16238         * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
16239         function.
16240         (TARGET_MODES_TIEABLE_P): Redefine.
16241         * config/mips/mips.h (MODES_TIEABLE_P): Delete.
16242         * config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
16243         * config/mips/mips.c (mips_modes_tieable_p): Make static.
16244         (TARGET_MODES_TIEABLE_P): Redefine.
16245         * config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
16246         * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
16247         * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
16248         * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
16249         (mn10300_modes_tieable_p): ...this and make static.
16250         (TARGET_MODES_TIEABLE_P): Redefine.
16251         * config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
16252         * config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
16253         * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
16254         * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
16255         (msp430_modes_tieable_p): Make static.
16256         * config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
16257         * config/nds32/nds32.c (nds32_modes_tieable_p): New function.
16258         (TARGET_MODES_TIEABLE_P): Redefine.
16259         * config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
16260         * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
16261         * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
16262         (TARGET_MODES_TIEABLE_P): Redefine.
16263         * config/pa/pa.h (MODES_TIEABLE_P): Delete.
16264         * config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
16265         * config/pa/pa.c (pa_modes_tieable_p): Make static.
16266         (TARGET_MODES_TIEABLE_P): Redefine.
16267         * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
16268         * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
16269         (pdp11_modes_tieable_p): New function.
16270         * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
16271         * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
16272         (rs6000_modes_tieable_p): New function.
16273         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16274         * config/powerpcspe/powerpcspe.md: Update comment.
16275         * config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
16276         * config/riscv/riscv.c (riscv_modes_tieable_p): New function.
16277         (TARGET_MODES_TIEABLE_P): Redefine.
16278         * config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
16279         * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
16280         (rl78_modes_tieable_p): New function.
16281         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
16282         * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
16283         (rs6000_modes_tieable_p): New function.
16284         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16285         * config/rs6000/rs6000.md: Update comment.
16286         * config/rx/rx.h (MODES_TIEABLE_P): Delete.
16287         * config/rx/rx.c (rx_modes_tieable_p): New function.
16288         (TARGET_MODES_TIEABLE_P): Redefine.
16289         * config/s390/s390.h (MODES_TIEABLE_P): Delete.
16290         * config/s390/s390.c (s390_modes_tieable_p): New function.
16291         (TARGET_MODES_TIEABLE_P): Redefine.
16292         * config/sh/sh.h (MODES_TIEABLE_P): Delete.
16293         * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
16294         (sh_modes_tieable_p): New function.
16295         * config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
16296         * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
16297         * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
16298         (sparc_modes_tieable_p): Make static.
16299         * config/spu/spu.h (MODES_TIEABLE_P): Delete.
16300         * config/spu/spu.c (spu_modes_tieable_p): New function.
16301         (TARGET_MODES_TIEABLE_P): Redefine.
16302         * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
16303         * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
16304         (TARGET_MODES_TIEABLE_P): Redefine.
16305         * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
16306         * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
16307         * config/v850/v850.h (MODES_TIEABLE_P): Delete.
16308         * config/v850/v850.c (v850_modes_tieable_p): New function.
16309         (TARGET_MODES_TIEABLE_P): Redefine.
16310         * config/vax/vax.h (MODES_TIEABLE_P): Delete.
16311         * config/visium/visium.h (MODES_TIEABLE_P): Delete.
16312         * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
16313         (visium_modes_tieable_p): New function.
16314         * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
16315         * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
16316         (xtensa_modes_tieable_p): New function.
16317         * system.h (MODES_TIEABLE_P): Poison.
16318
16319 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16320             Alan Hayward  <alan.hayward@arm.com>
16321             David Sherwood  <david.sherwood@arm.com>
16322
16323         * target.def (hard_regno_mode_ok): New hook.
16324         * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
16325         (TARGET_HARD_REGNO_MODE_OK): ...this.
16326         * doc/tm.texi.in: Regenerate.
16327         * hooks.h (hook_bool_uint_mode_true): Declare.
16328         * hooks.c (hook_bool_uint_mode_true): New function.
16329         * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
16330         HARD_REGNO_MODE_OK.
16331         * genpreds.c (write_insn_preds_c): Add an include of target.h.
16332         * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
16333         instead of HARD_REGNO_MODE_OK.
16334         * caller-save.c: Include target.h.
16335         (reg_save_code): Use targetm.hard_regno_mode_ok instead of
16336         HARD_REGNO_MODE_OK.
16337         * combine.c (can_combine_p): Likewise.
16338         (combinable_i3pat): Likewise.
16339         (can_change_dest_mode): Likewise.
16340         * expr.c (init_expr_target): Likewise.
16341         (convert_move): Likewise.
16342         (convert_modes): Likewise.
16343         * ira.c (setup_prohibited_class_mode_regs): Likewise.
16344         (setup_prohibited_mode_move_regs): Likewise.
16345         * ira.h (target_ira): Likewise.
16346         * lra-assigns.c (find_hard_regno_for_1): Likewise.
16347         * lra-constraints.c (process_alt_operands): Likewise.
16348         (split_reg): Likewise.
16349         * recog.c (peep2_find_free_register): Likewise.
16350         * ree.c (combine_reaching_defs): Likewise.
16351         * regcprop.c (maybe_mode_change): Likewise.
16352         * reginfo.c (init_reg_sets_1): Likewise.
16353         (choose_hard_reg_mode): Likewise.
16354         (simplifiable_subregs): Likewise.
16355         * regrename.c (check_new_reg_p): Likewise.
16356         * reload.c (find_valid_class): Likewise.
16357         (find_valid_class_1): Likewise.
16358         (reload_inner_reg_of_subreg): Likewise.
16359         (push_reload): Likewise.
16360         (combine_reloads): Likewise.
16361         (find_dummy_reload): Likewise.
16362         (find_reloads): Likewise.
16363         * reload1.c (find_reg): Likewise.
16364         (set_reload_reg): Likewise.
16365         (allocate_reload_reg): Likewise.
16366         (choose_reload_regs): Likewise.
16367         (reload_adjust_reg_for_temp): Likewise.
16368         * rtlanal.c (subreg_size_offset_from_lsb): Likewise.
16369         (simplify_subreg_regno): Likewise.
16370         * sel-sched.c (init_regs_for_mode): Likewise.
16371         * varasm.c (make_decl_rtl): Likewise.
16372         * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
16373         (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
16374         HARD_REGNO_MODE_OK.
16375         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
16376         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
16377         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16378         * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
16379         * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
16380         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16381         * config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
16382         (arc_mode_class): Delete.
16383         (HARD_REGNO_MODE_OK): Delete.
16384         * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16385         (arc_hard_regno_mode_ok): Rename old array to...
16386         (arc_hard_regno_mode_ok_modes): ...this.
16387         (arc_conditional_register_usage): Update accordingly.
16388         (arc_mode_class): Make static.
16389         (arc_hard_regno_mode_ok): New function.
16390         * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
16391         * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
16392         * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16393         (arm_hard_regno_mode_ok): Make static.
16394         * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
16395         HARD_REGNO_MODE_OK.
16396         * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
16397         * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
16398         * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
16399         return a bool.
16400         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16401         * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
16402         * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
16403         * config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
16404         (bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
16405         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16406         * config/bfin/predicates.md (valid_reg_operand): Use
16407         targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
16408         * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
16409         * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
16410         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16411         * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
16412         * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
16413         * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16414         (cr16_hard_regno_mode_ok): Make static and return a bool.
16415         * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
16416         * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16417         (cris_hard_regno_mode_ok): New function.
16418         * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
16419         (epiphany_mode_class): Delete.
16420         (HARD_REGNO_MODE_OK): Delete.
16421         * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
16422         * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16423         (hard_regno_mode_ok): Rename to...
16424         (epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
16425         * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
16426         * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
16427         HARD_REGNO_MODE_OK.
16428         * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
16429         * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
16430         * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16431         (frv_hard_regno_mode_ok): Make static and return a bool.
16432         * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
16433         HARD_REGNO_MODE_OK.
16434         * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
16435         * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
16436         * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
16437         * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
16438         and return a bool.
16439         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16440         * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
16441         * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
16442         * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
16443         return a bool.
16444         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16445         * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
16446         * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16447         (ia64_hard_regno_mode_ok): New function.
16448         * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
16449         * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16450         (iq2000_hard_regno_mode_ok): New function.
16451         * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
16452         * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16453         (lm32_hard_regno_mode_ok): New function.
16454         * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
16455         * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
16456         * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
16457         instead of HARD_REGNO_MODE_OK.
16458         (m32c_hard_regno_ok): Rename to...
16459         (m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
16460         (m32c_cannot_change_mode_class): Update accordingly.
16461         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16462         * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
16463         (m32r_mode_class): Delete.
16464         (HARD_REGNO_MODE_OK): Delete.
16465         * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16466         (m32r_hard_regno_mode_ok): Rename to...
16467         (m32r_hard_regno_modes): ...this.
16468         (m32r_mode_class): Make static.
16469         (m32r_hard_regno_mode_ok): New function.
16470         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
16471         * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
16472         * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16473         (m68k_hard_regno_mode_ok): Make static.
16474         * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
16475         * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16476         (mcore_hard_regno_mode_ok): New function.
16477         * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
16478         (HARD_REGNO_MODE_OK): Delete.
16479         * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
16480         Rename to...
16481         (microblaze_hard_regno_mode_ok_p): ...this and make static.
16482         (microblaze_hard_regno_mode_ok): New function.
16483         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16484         * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
16485         (mips_hard_regno_mode_ok): Delete.
16486         * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
16487         (mips_hard_regno_mode_ok_p): ...this and make static.
16488         (mips_hard_regno_mode_ok_p): Rename to...
16489         (mips_hard_regno_mode_ok_uncached): ...this.
16490         (mips_hard_regno_mode_ok): New function.
16491         (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
16492         of HARD_REGNO_MODE_OK.
16493         (mips_option_override): Update after above name changes.
16494         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16495         * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
16496         * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
16497         * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
16498         * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
16499         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16500         * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
16501         * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
16502         * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
16503         * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16504         (msp430_hard_regno_mode_ok): Make static and return a bool.
16505         * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
16506         * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
16507         * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
16508         and return a bool.
16509         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16510         * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
16511         * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
16512         * config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
16513         * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
16514         (PA_HARD_REGNO_MODE_OK): ...this
16515         * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
16516         (PA_HARD_REGNO_MODE_OK): ...this.
16517         * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16518         (pa_hard_regno_mode_ok): New function.
16519         * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
16520         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16521         (pdp11_hard_regno_mode_ok): New function.
16522         * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
16523         * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
16524         Delete.
16525         * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
16526         Make static.
16527         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16528         (rs6000_hard_regno_mode_ok): Rename to...
16529         (rs6000_hard_regno_mode_ok_uncached): ...this.
16530         (rs6000_init_hard_regno_mode_ok): Update accordingly.
16531         (rs6000_hard_regno_mode_ok): New function.
16532         * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
16533         * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
16534         * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
16535         (riscv_hard_regno_mode_ok): ...this and make static.
16536         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16537         * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
16538         * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
16539         * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16540         (rl78_hard_regno_mode_ok): Make static and return bool.
16541         * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
16542         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
16543         Delete.
16544         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
16545         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16546         (rs6000_hard_regno_mode_ok): Rename to...
16547         (rs6000_hard_regno_mode_ok_uncached): ...this.
16548         (rs6000_init_hard_regno_mode_ok): Update accordingly.
16549         (rs6000_hard_regno_mode_ok): New function.
16550         * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
16551         * config/rx/rx.c (rx_hard_regno_mode_ok): New function.
16552         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16553         * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
16554         * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
16555         * config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
16556         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16557         * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
16558         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
16559         * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16560         (sh_hard_regno_mode_ok): Make static.
16561         * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
16562         instead of HARD_REGNO_MODE_OK.
16563         * config/sparc/sparc.h (hard_regno_mode_classes): Delete.
16564         (sparc_mode_class): Delete.
16565         (HARD_REGNO_MODE_OK): Delete.
16566         * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16567         (hard_regno_mode_classes): Make static.
16568         (sparc_mode_class): Likewise.
16569         (sparc_hard_regno_mode_ok): New function.
16570         * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
16571         * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
16572         * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
16573         function.
16574         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16575         * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
16576         * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
16577         * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
16578         * config/v850/v850.c (v850_hard_regno_mode_ok): New function.
16579         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16580         * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
16581         * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
16582         * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16583         (visium_hard_regno_mode_ok): New function.
16584         * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
16585         instead of HARD_REGNO_MODE_OK.
16586         * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
16587         (HARD_REGNO_MODE_OK): Delete.
16588         * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
16589         (xtensa_hard_regno_mode_ok_p): ...this and make static.
16590         (xtensa_option_override): Update accordingly.
16591         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16592         (xtensa_hard_regno_mode_ok): New function.
16593         * system.h (HARD_REGNO_MODE_OK): Poison.
16594
16595 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16596             Alan Hayward  <alan.hayward@arm.com>
16597             David Sherwood  <david.sherwood@arm.com>
16598
16599         * target.def (hard_regno_call_part_clobbered): New hook.
16600         * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
16601         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
16602         * doc/tm.texi: Regenerate.
16603         * hooks.h (hook_bool_uint_mode_false): Declare.
16604         * hooks.c (hook_bool_uint_mode_false): New function.
16605         * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16606         * cselib.c (cselib_process_insn): Use
16607         targetm.hard_regno_call_part_clobbered instead of
16608         HARD_REGNO_CALL_PART_CLOBBERED.
16609         * ira-conflicts.c (ira_build_conflicts): Likewise.
16610         * ira-costs.c (ira_tune_allocno_costs): Likewise.
16611         * lra-constraints.c (need_for_call_save_p): Likewise.
16612         * lra-lives.c: Include target.h.
16613         (check_pseudos_live_through_calls): Use
16614         targetm.hard_regno_call_part_clobbered instead of
16615         HARD_REGNO_CALL_PART_CLOBBERED.
16616         * regcprop.c: Include target.h.
16617         (copyprop_hardreg_forward_1): Use
16618         targetm.hard_regno_call_part_clobbered instead of
16619         HARD_REGNO_CALL_PART_CLOBBERED.
16620         * reginfo.c (choose_hard_reg_mode): Likewise.
16621         * regrename.c (check_new_reg_p): Likewise.
16622         * reload.c (find_equiv_reg): Likewise.
16623         * reload1.c (emit_reload_insns): Likewise.
16624         * sched-deps.c (deps_analyze_insn): Likewise.
16625         * sel-sched.c (init_regs_for_mode): Likewise.
16626         (mark_unavailable_hard_regs): Likewise.
16627         * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
16628         * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16629         * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
16630         New function.
16631         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16632         * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16633         * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
16634         Delete.
16635         * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
16636         and return a bool.
16637         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16638         * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16639         * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
16640         function.
16641         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16642         * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16643         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
16644         function.
16645         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16646         * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
16647         Delete.
16648         * config/powerpcspe/powerpcspe.c
16649         (rs6000_hard_regno_call_part_clobbered): New function.
16650         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16651         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16652         * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
16653         New function.
16654         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16655         * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16656         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
16657         function.
16658         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16659         * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16660         * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
16661
16662 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16663             Alan Hayward  <alan.hayward@arm.com>
16664             David Sherwood  <david.sherwood@arm.com>
16665
16666         * rtl.h (subreg_memory_offset): Declare.
16667         * emit-rtl.c (subreg_memory_offset): New function.
16668         * expmed.c (store_bit_field_1): Use it.
16669         * expr.c (undefined_operand_subword_p): Likewise.
16670         * simplify-rtx.c (simplify_subreg): Likewise.
16671
16672 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
16673
16674         PR rtl-optimization/57448
16675         PR target/67458
16676         PR target/81316
16677         * optabs.c (expand_atomic_load): Place compiler memory barriers if
16678         using atomic_load pattern.
16679         (expand_atomic_store): Likewise.
16680
16681 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
16682
16683         PR sanitizer/81981
16684         * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
16685         and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
16686         handling.  Use replace_call_with_value with NULL instead of
16687         gsi_replace, unlink_stmt_vdef and release_defs.
16688
16689         * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
16690         instead of tab.
16691
16692         * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
16693
16694 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16695
16696         PR bootstrap/82045
16697         * rtl.h (emit_library_call_value_1): Declare.
16698         (emit_library_call): Replace declaration with a series of overloads.
16699         Remove the parameter count argument.
16700         (emit_library_call_value): Likewise.
16701         * calls.c (emit_library_call_value_1): Make global.  Replace varargs
16702         with an "rtx_mode_t *".
16703         (emit_library_call_value): Delete.
16704         (emit_library_call): Likewise.
16705         * asan.c (asan_emit_stack_protection): Update calls accordingly.
16706         (asan_emit_allocas_unpoison): Likewise.
16707         * builtins.c (expand_builtin_powi): Likewise.
16708         (expand_asan_emit_allocas_unpoison): Likewise.
16709         * cfgexpand.c (expand_main_function): Likewise.
16710         * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
16711         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
16712         * config/alpha/alpha.c (alpha_trampoline_init): Likewise.
16713         * config/arm/arm.c (arm_trampoline_init): Likewise.
16714         (arm_call_tls_get_addr): Likewise.
16715         (arm_expand_divmod_libfunc): Likewise.
16716         * config/bfin/bfin.md (umulsi3_highpart): Likewise.
16717         (smulsi3_highpart): Likewise.
16718         * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
16719         (c6x_expand_compare): Likewise.
16720         (c6x_expand_movmem): Likewise.
16721         * config/frv/frv.c (frv_trampoline_init): Likewise.
16722         * config/i386/i386.c (ix86_trampoline_init): Likewise.
16723         (ix86_expand_divmod_libfunc): Likewise.
16724         * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
16725         (ia64_expand_compare): Likewise.
16726         (ia64_profile_hook): Likewise.
16727         * config/ia64/ia64.md (save_stack_nonlocal): Likewise.
16728         (nonlocal_goto): Likewise.
16729         (restore_stack_nonlocal): Likewise.
16730         * config/m32r/m32r.c (block_move_call): Likewise.
16731         (m32r_trampoline_init): Likewise.
16732         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
16733         * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
16734         (m68k_call_m68k_read_tp): Likewise.
16735         * config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
16736         (microblaze_expand_divide): Likewise.
16737         * config/mips/mips.h (mips_args): Likewise.
16738         * config/mips/sdemtk.h (mips_sync_icache): Likewise.
16739         (MIPS_ICACHE_SYNC): Likewise.
16740         * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
16741         (nios2_trampoline_init): Likewise.
16742         * config/pa/pa.c (hppa_tls_call): Likewise.
16743         (pa_trampoline_init): Likewise.
16744         * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
16745         * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
16746         (expand_strn_compare): Likewise.
16747         (rs6000_generate_compare): Likewise.
16748         (rs6000_expand_float128_convert): Likewise.
16749         (output_profile_hook): Likewise.
16750         (rs6000_trampoline_init): Likewise.
16751         * config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
16752         * config/riscv/riscv.h (PROFILE_HOOK): Likewise.
16753         * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
16754         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
16755         (rs6000_generate_compare): Likewise.
16756         (rs6000_expand_float128_convert): Likewise.
16757         (output_profile_hook): Likewise.
16758         (rs6000_trampoline_init): Likewise.
16759         * config/rs6000/rs6000.md (neg<mode>2): Likewise.
16760         * config/sh/sh.c (sh_trampoline_init): Likewise.
16761         * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
16762         (sparc_emit_float_lib_cmp): Likewise.
16763         (sparc32_initialize_trampoline): Likewise.
16764         (sparc64_initialize_trampoline): Likewise.
16765         (sparc_profile_hook): Likewise.
16766         * config/spu/spu.c (ea_load_store): Likewise.
16767         * config/spu/spu.md (floatunssidf2): Likewise.
16768         * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
16769         * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
16770         * config/visium/visium.c (expand_block_move_4): Likewise.
16771         (expand_block_move_2): Likewise.
16772         (expand_block_move_1): Likewise.
16773         (expand_block_set_4): Likewise.
16774         (expand_block_set_2): Likewise.
16775         (expand_block_set_1): Likewise.
16776         (visium_trampoline_init): Likewise.
16777         (visium_profile_hook): Likewise.
16778         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
16779         (xtensa_setup_frame_addresses): Likewise.
16780         (xtensa_trampoline_init): Likewise.
16781         * except.c (sjlj_emit_function_enter): Likewise.
16782         (sjlj_emit_function_exit): Likewise.
16783         * explow.c (allocate_dynamic_stack_space): Likewise.
16784         (probe_stack_range): Likewise.
16785         * expr.c (convert_mode_scalar): Likewise.
16786         * optabs.c (expand_binop): Likewise.
16787         (expand_twoval_binop_libfunc): Likewise.
16788         (expand_unop): Likewise.
16789         (prepare_cmp_insn): Likewise.
16790         (prepare_float_lib_cmp): Likewise.
16791         (expand_float): Likewise.
16792         (expand_fix): Likewise.
16793         (expand_fixed_convert): Likewise.
16794         (maybe_emit_sync_lock_test_and_set): Likewise.
16795         (expand_atomic_compare_and_swap): Likewise.
16796         (expand_mem_thread_fence): Likewise.
16797         (expand_atomic_fetch_op): Likewise.
16798
16799 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
16800
16801         * doc/generic.texi (OpenACC): Adjust URL.
16802         * doc/invoke.texi (C Dialect Options): Ditto.
16803
16804 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
16805
16806         * config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
16807         predicate for operand 1.  Add (m,<S>) constraint.
16808         (*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
16809         Prevent memory operand 1 with register operand 2.
16810
16811 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
16812
16813         PR rtl-optimization/82024
16814         * combine.c (try_combine): If the combination result is a PARALLEL,
16815         and we only need to retain the SET in there that would be placed
16816         at I2, check that we can place that at I3 instead, before doing so.
16817
16818 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
16819
16820         PR target/81766
16821         * config/i386/i386.c (ix86_init_large_pic_reg): Return label
16822         instead of void.
16823         (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
16824         if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
16825         and label.
16826
16827 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
16828             Jeff Law  <law@redhat.com>
16829
16830         * varasm.c (bss_initializer_p): Do not put constants into .bss
16831         (categorize_decl_for_section): Handle bss_initializer_p returning
16832         false when DECL_INITIAL is NULL.
16833
16834 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
16835
16836         PR target/82012
16837         * config/s390/s390.c (s390_can_inline_p): New function.
16838
16839 2017-09-01  Jeff Law  <law@redhat.com>
16840
16841         PR tree-optimization/82052
16842         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
16843         Always initialize the returned slot after a hash table miss
16844         when INSERT is true.
16845
16846 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
16847
16848         * config/s390/s390.md (mem_signal_fence): Remove.
16849         * doc/md.texi (mem_signal_fence): Remove.
16850         * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
16851         Update comments.
16852         * target-insns.def (mem_signal_fence): Remove.
16853
16854 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
16855
16856         PR sanitizer/81902
16857         * doc/invoke.texi: Document -fsanitize=pointer-overflow.
16858
16859         PR sanitizer/81923
16860         * asan.c (create_odr_indicator): Strip name encoding from assembler
16861         name before appending it after __odr_asan_.
16862
16863 2017-09-01  Martin Liska  <mliska@suse.cz>
16864
16865         PR tree-optimization/82059
16866         * gimple-ssa-isolate-paths.c (isolate_path): Add profile and
16867         frequency only when an edge is redirected.
16868
16869 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16870
16871         * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
16872         * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
16873         (arc_conditional_register_usage): Remove ARC600 lp_count
16874         exception.
16875         (arc_file_start): Emit Tag_ARC_CPU_variation.
16876         (arc_can_use_doloop_p): New conditions to use ZOLs.
16877         (hwloop_fail): New function.
16878         (hwloop_optimize): Likewise.
16879         (hwloop_pattern_reg): Likewise.
16880         (arc_doloop_hooks): New struct, to be used with reorg_loops.
16881         (arc_reorg_loops): New function, calls reorg_loops.
16882         (arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
16883         (arc600_corereg_hazard): Remove ZOL checking, case handled by
16884         hwloop_optimize.
16885         (arc_loop_hazard): Remove function, functionality moved into
16886         hwloop_optimize.
16887         (arc_hazard): Remove arc_loop_hazard call.
16888         (arc_adjust_insn_length): Remove ZOL handling, functionality moved
16889         into hwloop_optimize.
16890         (arc_label_align): Remove ZOL handling.
16891         * config/arc/arc.h (LOOP_ALIGN): Changed to 0.
16892         * config/arc/arc.md (doloop_begin): Remove pattern.
16893         (doloop_begin_i): Likewise.
16894         (doloop_end_i): Likewise.
16895         (doloop_fallback): Likewise.
16896         (doloop_fallback_m): Likewise.
16897         (doloop_end): Reimplement expand.
16898         (arc_lp): New pattern for LP instruction.
16899         (loop_end): New pattern.
16900         (loop_fail): Likewise.
16901         (decrement_and_branch_until_zero): Likewise.
16902         * config/arc/arc.opt (mlpc-width): New option.
16903         * doc/invoke.texi (mlpc-width): Document option.
16904
16905 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16906
16907         * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
16908         (arc_ccfsm_advance): Fix checking for delay slots.
16909         (arc_reorg): Add rtl dump after each call to arc_ifcvt.
16910
16911 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16912
16913         * config/arc/arc.md (movqi_insn): Add stores to save constant long
16914         immediates.
16915         (movhi_insn): Update store instruction constraint which are saving
16916         6-bit short immediates.
16917         (movsi_insn): Consider also short scaled load operations.
16918         (zero_extendhisi2_i): Use Usd constraint instead of T.
16919         (extendhisi2_i): Add q constraint.
16920         (arc_clzsi2): Add type and length attributes.
16921         (arc_ctzsi2): Likewise.
16922         * config/arc/constraints.md (Usc): Update constraint, the
16923         assembler can parse two relocations for a single instruction.
16924
16925 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16926
16927         * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
16928         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
16929
16930 2017-08-31  Olivier Hainque  <hainque@adacore.com>
16931
16932         * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
16933         match as powerpc-wrs-vxworks*.
16934
16935 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
16936
16937         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
16938         register constraint for by-element operand.
16939         (aarch64_mls_elt_merge<mode>): Likewise.
16940
16941 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16942
16943         * config/arc/arc.c (arc_can_follow_jump): Check for short
16944         branches.
16945
16946 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16947
16948         * config.gcc: Use g.opt for arc.
16949         * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
16950         functionality moved to ...
16951         (legitimate_scaled_address_p): New function, ...here.
16952         (LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
16953         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
16954         (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
16955         condition.
16956         (arc_override_options): Handle G option.
16957         (arc_output_pic_addr_const): Correct function definition.
16958         (arc_legitimate_address_p): Use legitimate_scaled_address_p.
16959         (arc_decl_anon_ns_mem_p): Delete.
16960         (arc_in_small_data_p): Overhaul this function to take into
16961         consideration the value given via G option.
16962         (arc_rewrite_small_data_1): Renamed and corrected old
16963         arc_rewrite_small_data function.
16964         (arc_rewrite_small_data): New function.
16965         (small_data_pattern): Don't use pic_offset_table_rtx.
16966         * config/arc/arc.h (CC1_SPEC): Recognize G option.
16967         * config/arc/simdext.md (movmisalignv2hi): Use
16968         prepare_move_operands function.
16969         (mov*): Likewise.
16970         (movmisalign*): Likewise.
16971         * doc/invoke.texi (ARC options): Document -G option.
16972
16973 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16974
16975         * config/arc/arc-protos.h (compact_sda_memory_operand): Update
16976         prototype.
16977         * config/arc/arc.c (arc_print_operand): Output scalled address for
16978         sdata whenever is possible.
16979         (arc_in_small_data_p): Allow sdata for 64bit datum when double
16980         load/stores are available.
16981         (compact_sda_memory_operand): Check for the alignment required by
16982         code density instructions.
16983         * config/arc/arc.md (movsi_insn): Use newly introduced Us0
16984         constraint.
16985         * config/arc/constraints.md (Usd): Update constraint.
16986         (Us0): New constraint.
16987         (Usc): Update constraint.
16988
16989 2017-08-31  Richard Biener  <rguenther@suse.de>
16990
16991         PR middle-end/82054
16992         * dwarf2out.c (dwarf2out_early_global_decl): Process each
16993         function only once.
16994
16995 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
16996
16997         * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
16998         Resize type_signature.
16999
17000 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17001             Alan Hayward  <alan.hayward@arm.com>
17002             David Sherwood  <david.sherwood@arm.com>
17003
17004         * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
17005         subregs whose inner modes can be stored in GPRs.
17006         (aarch64_classify_index): Likewise.
17007
17008 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17009             Alan Hayward  <alan.hayward@arm.com>
17010             David Sherwood  <david.sherwood@arm.com>
17011
17012         * config/aarch64/iterators.md (V_cmp_result): Rename to...
17013         (V_INT_EQUIV): ...this.
17014         (v_cmp_result): Rename to...
17015         (v_int_equiv): ...this.
17016         * config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
17017         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
17018         (copysign<mode>3): Likewise.
17019         (aarch64_simd_bsl<mode>_internal): Likewise.
17020         (aarch64_simd_bsl<mode>): Likewise.
17021         (vec_cmp<mode><mode>): Likewise.
17022         (vcond<mode><mode>): Likewise.
17023         (vcond<v_cmp_mixed><mode>): Likewise.
17024         (vcondu<mode><v_cmp_mixed>): Likewise.
17025         (aarch64_cm<optab><mode>): Likewise.
17026         (aarch64_cmtst<mode>): Likewise.
17027         (aarch64_fac<optab><mode>): Likewise.
17028         (vec_perm_const<mode>): Likewise.
17029         (vcond_mask_<mode><v_cmp_result>): Rename to...
17030         (vcond_mask_<mode><v_int_equiv>): ...this.
17031         (vec_cmp<mode><v_cmp_result>): Rename to...
17032         (vec_cmp<mode><v_int_equiv>): ...this.
17033
17034 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17035             Alan Hayward  <alan.hayward@arm.com>
17036             David Sherwood  <david.sherwood@arm.com>
17037
17038         * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
17039         vector modes.
17040         * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
17041         * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
17042         (UNSPEC_LD4_DREG): New unspecs.
17043         * config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
17044         (aarch64_ld2<mode>_dreg_be): Replace with...
17045         (aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
17046         unspec.
17047         (aarch64_ld3<mode>_dreg_le)
17048         (aarch64_ld3<mode>_dreg_be): Replace with...
17049         (aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
17050         unspec.
17051         (aarch64_ld4<mode>_dreg_le)
17052         (aarch64_ld4<mode>_dreg_be): Replace with...
17053         (aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
17054         unspec.
17055
17056 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17057
17058         PR tree-optimization/81987
17059         * gimple-ssa-strength-reduction.c (insert_initializers): Don't
17060         insert an initializer in a location not dominated by the stride
17061         definition.
17062
17063 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17064
17065         * tree-eh.c (lower_try_finally_switch): Set the location of the finally
17066         on the entire header of the finally block in the fallthru case.
17067
17068 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17069
17070         * varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
17071
17072 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
17073
17074         * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
17075         rs6000_emit_move_from_cr and call renamed function.
17076         (rs6000_emit_prologue): Call renamed functions.
17077         * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
17078         movesi_from_cr, remove volatile CRs.
17079
17080 2017-08-30  Jon Beniston  <jon@beniston.com>
17081             Richard Biener  <rguenther@suse.de>
17082
17083         * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
17084         of VECTOR_MODE_P check.
17085         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
17086         element vector types.
17087
17088 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17089
17090         * df.h (df_read_modify_subreg_p): Remove in favor of...
17091         * rtl.h (read_modify_subreg_p): ...this new function.  Take a
17092         const_rtx instead of an rtx.
17093         * cprop.c (local_cprop_find_used_regs): Update accordingly.
17094         * df-problems.c (df_word_lr_mark_ref): Likewise.
17095         * ira-lives.c (mark_pseudo_reg_live): Likewise.
17096         (mark_pseudo_reg_dead): Likewise.
17097         (mark_ref_dead): Likewise.
17098         * reginfo.c (init_subregs_of_mode): Likewise.
17099         * sched-deps.c (sched_analyze_1): Likewise.
17100         * df-scan.c (df_def_record_1): Likewise.
17101         (df_uses_record): Likewise.
17102         (df_read_modify_subreg_p): Remove in favor of...
17103         * rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
17104         const_rtx instead of an rtx.
17105
17106 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17107             Alan Hayward  <alan.hayward@arm.com>
17108             David Sherwood  <david.sherwood@arm.com>
17109
17110         * rtl.h (partial_subreg_p): New function.
17111         * caller-save.c (save_call_clobbered_regs): Use it.
17112         * calls.c (expand_call): Likewise.
17113         * combine.c (combinable_i3pat): Likewise.
17114         (simplify_set): Likewise.
17115         (make_extraction): Likewise.
17116         (make_compound_operation_int): Likewise.
17117         (gen_lowpart_or_truncate): Likewise.
17118         (force_to_mode): Likewise.
17119         (make_field_assignment): Likewise.
17120         (reg_truncated_to_mode): Likewise.
17121         (record_truncated_value): Likewise.
17122         (move_deaths): Likewise.
17123         * cse.c (record_jump_cond): Likewise.
17124         (cse_insn): Likewise.
17125         * cselib.c (cselib_lookup_1): Likewise.
17126         * expmed.c (extract_bit_field_using_extv): Likewise.
17127         * function.c (assign_parm_setup_reg): Likewise.
17128         * ifcvt.c (noce_convert_multiple_sets): Likewise.
17129         * ira-build.c (create_insn_allocnos): Likewise.
17130         * lra-coalesce.c (merge_pseudos): Likewise.
17131         * lra-constraints.c (match_reload): Likewise.
17132         (simplify_operand_subreg): Likewise.
17133         (curr_insn_transform): Likewise.
17134         * lra-lives.c (process_bb_lives): Likewise.
17135         * lra.c (new_insn_reg): Likewise.
17136         (lra_substitute_pseudo): Likewise.
17137         * regcprop.c (mode_change_ok): Likewise.
17138         (maybe_mode_change): Likewise.
17139         (copyprop_hardreg_forward_1): Likewise.
17140         * reload.c (push_reload): Likewise.
17141         (find_reloads): Likewise.
17142         (find_reloads_subreg_address): Likewise.
17143         * reload1.c (alter_reg): Likewise.
17144         (eliminate_regs_1): Likewise.
17145         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17146
17147 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
17148
17149         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
17150         back to if statements, including unpack.
17151
17152 2017-08-30  Martin Liska  <mliska@suse.cz>
17153
17154         PR inline-asm/82001
17155         * ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
17156         Rename to ...
17157         (func_checker::compare_asm_inputs_outputs): ... this function.
17158         (func_checker::compare_gimple_asm): Use the function to compare
17159         also ASM constrains.
17160         * ipa-icf-gimple.h: Rename the function.
17161
17162 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17163             Alan Hayward  <alan.hayward@arm.com>
17164             David Sherwood  <david.sherwood@arm.com>
17165
17166         * coretypes.h (complex_mode): New type.
17167         * gdbhooks.py (build_pretty_printer): Handle it.
17168         * machmode.h (complex_mode): New class.
17169         (complex_mode::includes_p): New function.
17170         (is_complex_int_mode): Likewise.
17171         (is_complex_float_mode): Likewise.
17172         * genmodes.c (get_mode_class): Handle complex mode classes.
17173         * function.c (expand_function_end): Use is_complex_int_mode.
17174
17175 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17176             Alan Hayward  <alan.hayward@arm.com>
17177             David Sherwood  <david.sherwood@arm.com>
17178
17179         * coretypes.h (scalar_mode_pod): New typedef.
17180         * gdbhooks.py (build_pretty_printer): Handle it.
17181         * machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
17182         * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
17183         * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
17184         * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
17185         as_a <scalar_mode>.
17186
17187 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17188             Alan Hayward  <alan.hayward@arm.com>
17189             David Sherwood  <david.sherwood@arm.com>
17190
17191         * machmode.h (mode_for_vector): Take a scalar_mode instead
17192         of a machine_mode.
17193         * stor-layout.c (mode_for_vector): Likewise.
17194         * explow.c (promote_mode): Use as_a <scalar_mode>.
17195         * sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
17196
17197 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17198             Alan Hayward  <alan.hayward@arm.com>
17199             David Sherwood  <david.sherwood@arm.com>
17200
17201         * target.def (preferred_simd_mode): Take a scalar_mode
17202         instead of a machine_mode.
17203         * targhooks.h (default_preferred_simd_mode): Likewise.
17204         * targhooks.c (default_preferred_simd_mode): Likewise.
17205         * config/arc/arc.c (arc_preferred_simd_mode): Likewise.
17206         * config/arm/arm.c (arm_preferred_simd_mode): Likewise.
17207         * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
17208         * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
17209         * config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
17210         * config/mips/mips.c (mips_preferred_simd_mode): Likewise.
17211         * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
17212         * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
17213         Likewise.
17214         * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
17215         * config/s390/s390.c (s390_preferred_simd_mode): Likewise.
17216         * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
17217         * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
17218         (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
17219         * doc/tm.texi: Regenerate.
17220         * optabs-query.c (can_vec_mask_load_store_p): Return false for
17221         non-scalar modes.
17222
17223 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17224             Alan Hayward  <alan.hayward@arm.com>
17225             David Sherwood  <david.sherwood@arm.com>
17226
17227         * target.def (scalar_mode_supported_p): Take a scalar_mode
17228         instead of a machine_mode.
17229         * targhooks.h (default_scalar_mode_supported_p): Likewise.
17230         * targhooks.c (default_scalar_mode_supported_p): Likewise.
17231         * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
17232         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
17233         * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
17234         * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
17235         * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
17236         * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
17237         * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
17238         * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
17239         * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
17240         * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
17241         * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
17242         * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
17243         Likewise.
17244         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
17245         * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
17246         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
17247         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
17248         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
17249         Likewise.
17250         * doc/tm.texi: Regenerate.
17251
17252 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17253             Alan Hayward  <alan.hayward@arm.com>
17254             David Sherwood  <david.sherwood@arm.com>
17255
17256         * coretypes.h (opt_scalar_mode): New typedef.
17257         * gdbhooks.py (build_pretty_printers): Handle it.
17258         * machmode.h (mode_iterator::get_2xwider): Add overload for
17259         opt_mode<T>.
17260         * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
17261         over scalar modes.
17262         * expr.c (convert_mode_scalar): Likewise.
17263         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17264         * optabs.c (expand_float): Likewise.
17265         (expand_fix): Likewise.
17266         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17267
17268 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17269             Alan Hayward  <alan.hayward@arm.com>
17270             David Sherwood  <david.sherwood@arm.com>
17271
17272         * optabs.c (expand_float): Explicitly check for scalars before
17273         using a branching expansion.
17274         (expand_fix): Likewise.
17275
17276 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17277             Alan Hayward  <alan.hayward@arm.com>
17278             David Sherwood  <david.sherwood@arm.com>
17279
17280         * expr.c (convert_mode): Split scalar handling out into...
17281         (convert_mode_scalar): ...this new function.  Treat the modes
17282         as scalar_modes.
17283
17284 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17285             Alan Hayward  <alan.hayward@arm.com>
17286             David Sherwood  <david.sherwood@arm.com>
17287
17288         * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
17289         and scalar_mode.
17290         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
17291
17292 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17293             Alan Hayward  <alan.hayward@arm.com>
17294             David Sherwood  <david.sherwood@arm.com>
17295
17296         * fixed-value.h (fixed_from_double_int): Take a scalar_mode
17297         rather than a machine_mode.
17298         (fixed_from_string): Likewise.
17299         (fixed_convert): Likewise.
17300         (fixed_convert_from_int): Likewise.
17301         (fixed_convert_from_real): Likewise.
17302         (real_convert_from_fixed): Likewise.
17303         * fixed-value.c (fixed_from_double_int): Likewise.
17304         (fixed_from_string): Likewise.
17305         (fixed_convert): Likewise.
17306         (fixed_convert_from_int): Likewise.
17307         (fixed_convert_from_real): Likewise.
17308         (real_convert_from_fixed): Likewise.
17309         * config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
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         * emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
17316         of separate mode class checks.  Do not allow vector modes here.
17317         (immed_wide_int_const): Use as_a <scalar_mode>.
17318         * explow.c (trunc_int_for_mode): Likewise.
17319         * rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
17320         (wi::shwi): Likewise.
17321         (wi::min_value): Likewise.
17322         (wi::max_value): Likewise.
17323         * dwarf2out.c (loc_descriptor): Likewise.
17324         * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
17325         for CONST_WIDE_INT.
17326
17327 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17328             Alan Hayward  <alan.hayward@arm.com>
17329             David Sherwood  <david.sherwood@arm.com>
17330
17331         * tree.h (SCALAR_TYPE_MODE): New macro.
17332         * expr.c (expand_expr_addr_expr_1): Use it.
17333         (expand_expr_real_2): Likewise.
17334         * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
17335         (fold_convert_const_fixed_from_int): Likewise.
17336         (fold_convert_const_fixed_from_real): Likewise.
17337         (native_encode_fixed): Likewise
17338         (native_encode_complex): Likewise
17339         (native_encode_vector): Likewise.
17340         (native_interpret_fixed): Likewise.
17341         (native_interpret_real): Likewise.
17342         (native_interpret_complex): Likewise.
17343         (native_interpret_vector): Likewise.
17344         * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
17345         (simd_clone_adjust_argument_types): Likewise.
17346         (simd_clone_init_simd_arrays): Likewise.
17347         (simd_clone_adjust): Likewise.
17348         * stor-layout.c (layout_type): Likewise.
17349         * tree.c (build_minus_one_cst): Likewise.
17350         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17351         * tree-inline.c (estimate_move_cost): Likewise.
17352         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
17353         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
17354         (vectorizable_reduction): Likewise.
17355         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
17356         (vect_recog_mixed_size_cond_pattern): Likewise.
17357         (check_bool_pattern): Likewise.
17358         (adjust_bool_pattern): Likewise.
17359         (search_type_for_mask_1): Likewise.
17360         * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
17361         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17362         (vectorizable_load): Likewise.
17363         (vectorizable_store): Likewise.
17364         * ubsan.c (ubsan_encode_value): Likewise.
17365         * varasm.c (output_constant): Likewise.
17366
17367 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17368             Alan Hayward  <alan.hayward@arm.com>
17369             David Sherwood  <david.sherwood@arm.com>
17370
17371         * coretypes.h (scalar_mode): New class.
17372         * machmode.h (scalar_mode): Likewise.
17373         (scalar_mode::includes_p): New function.
17374         (mode_to_inner): Return a scalar_mode rather than a machine_mode.
17375         * gdbhooks.py (build_pretty_printers): Handle scalar_mode.
17376         * genmodes.c (get_mode_class): Handle remaining scalar modes.
17377         * cfgexpand.c (expand_debug_expr): Use scalar_mode.
17378         * expmed.c (store_bit_field_1): Likewise.
17379         (extract_bit_field_1): Likewise.
17380         * expr.c (write_complex_part): Likewise.
17381         (read_complex_part): Likewise.
17382         (emit_move_complex_push): Likewise.
17383         (expand_expr_real_2): Likewise.
17384         * function.c (assign_parm_setup_reg): Likewise.
17385         (assign_parms_unsplit_complex): Likewise.
17386         * optabs.c (expand_binop): Likewise.
17387         * rtlanal.c (subreg_get_info): Likewise.
17388         * simplify-rtx.c (simplify_immed_subreg): Likewise.
17389         * varasm.c (output_constant_pool_2): Likewise.
17390
17391 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17392             Alan Hayward  <alan.hayward@arm.com>
17393             David Sherwood  <david.sherwood@arm.com>
17394
17395         * expmed.c (extract_high_half): Use scalar_int_mode and remove
17396         assertion.
17397         (expmed_mult_highpart_optab): Likewise.
17398         (expmed_mult_highpart): Likewise.
17399
17400 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17401             Alan Hayward  <alan.hayward@arm.com>
17402             David Sherwood  <david.sherwood@arm.com>
17403
17404         * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
17405         instead of a machine_mode.
17406         (builtin_memset_read_str): Likewise.
17407         * builtins.c (c_readstr): Likewise.
17408         (builtin_memcpy_read_str): Likewise.
17409         (builtin_strncpy_read_str): Likewise.
17410         (builtin_memset_read_str): Likewise.
17411         (builtin_memset_gen_str): Likewise.
17412         (expand_builtin_signbit): Use scalar_int_mode for local variables.
17413         * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
17414         instead of a machine_mode.
17415         * combine.c (simplify_if_then_else): Use scalar_int_mode for local
17416         variables.
17417         (make_extraction): Likewise.
17418         (try_widen_shift_mode): Take and return scalar_int_modes instead
17419         of machine_modes.
17420         * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
17421         a scalar_int_mode instead of a machine_mode.
17422         * config/avr/avr.c (avr_addr_space_address_mode): Likewise.
17423         (avr_addr_space_pointer_mode): Likewise.
17424         * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
17425         * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
17426         (msp430_unwind_word_mode): Likewise.
17427         * config/spu/spu.c (spu_unwind_word_mode): Likewise.
17428         (spu_addr_space_pointer_mode): Likewise.
17429         (spu_addr_space_address_mode): Likewise.
17430         (spu_libgcc_cmp_return_mode): Likewise.
17431         (spu_libgcc_shift_count_mode): Likewise.
17432         * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
17433         (rl78_addr_space_pointer_mode): Likewise.
17434         (fl78_unwind_word_mode): Likewise.
17435         (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
17436         machine_mode.
17437         * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
17438         * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
17439         * config/mips/mips.c (mips_mode_rep_extended): Likewise.
17440         (mips_valid_pointer_mode): Likewise.
17441         * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
17442         * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
17443         (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
17444         of a machine_mode.
17445         (ft32_addr_space_address_mode): Likewise.
17446         * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
17447         scalar_int_mode instead of a machine_mode.
17448         (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
17449         of a machine_mode.
17450         (m32c_addr_space_address_mode): Likewise.
17451         * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
17452         (rs6000_eh_return_filter_mode): Likewise.
17453         * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
17454         (rs6000_eh_return_filter_mode): Likewise.
17455         * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
17456         (s390_libgcc_shift_count_mode): Likewise.
17457         (s390_unwind_word_mode): Likewise.
17458         (s390_valid_pointer_mode): Take a scalar_int_mode rather than a
17459         machine_mode.
17460         * target.def (mode_rep_extended): Likewise.
17461         (valid_pointer_mode): Likewise.
17462         (addr_space.valid_pointer_mode): Likewise.
17463         (eh_return_filter_mode): Return a scalar_int_mode rather than
17464         a machine_mode.
17465         (libgcc_cmp_return_mode): Likewise.
17466         (libgcc_shift_count_mode): Likewise.
17467         (unwind_word_mode): Likewise.
17468         (addr_space.pointer_mode): Likewise.
17469         (addr_space.address_mode): Likewise.
17470         * doc/tm.texi: Regenerate.
17471         * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
17472         a machine_mode.
17473         (do_jump): Use scalar_int_mode for local variables.
17474         * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
17475         rather than a machine_mode.
17476         * dwarf2out.c (convert_descriptor_to_mode): Likewise.
17477         (scompare_loc_descriptor_wide): Likewise.
17478         (scompare_loc_descriptor_narrow): Likewise.
17479         * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
17480         variables.
17481         * except.c (sjlj_emit_dispatch_table): Likewise.
17482         (expand_builtin_eh_copy_values): Likewise.
17483         * explow.c (convert_memory_address_addr_space_1): Likewise.
17484         Take a scalar_int_mode rather than a machine_mode.
17485         (convert_memory_address_addr_space): Take a scalar_int_mode rather
17486         than a machine_mode.
17487         (memory_address_addr_space): Use scalar_int_mode for local variables.
17488         * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
17489         rather than a machine_mode.
17490         * expmed.c (mask_rtx): Likewise.
17491         (init_expmed_one_conv): Likewise.
17492         (expand_mult_highpart_adjust): Likewise.
17493         (extract_high_half): Likewise.
17494         (expmed_mult_highpart_optab): Likewise.
17495         (expmed_mult_highpart): Likewise.
17496         (expand_smod_pow2): Likewise.
17497         (expand_sdiv_pow2): Likewise.
17498         (emit_store_flag_int): Likewise.
17499         (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
17500         variables.
17501         (extract_low_bits): Likewise.
17502         * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
17503         a machine_mode.
17504         * expr.c (pieces_addr::adjust):  Likewise.
17505         (can_store_by_pieces): Likewise.
17506         (store_by_pieces): Likewise.
17507         (clear_by_pieces_1): Likewise.
17508         (expand_expr_addr_expr_1): Likewise.
17509         (expand_expr_addr_expr): Use scalar_int_mode for local variables.
17510         (expand_expr_real_1): Likewise.
17511         (try_casesi): Likewise.
17512         * final.c (shorten_branches): Likewise.
17513         * fold-const.c (fold_convert_const_int_from_fixed): Change the
17514         type of "mode" to machine_mode.
17515         * internal-fn.c (expand_arith_overflow_result_store): Take a
17516         scalar_int_mode rather than a machine_mode.
17517         (expand_mul_overflow): Use scalar_int_mode for local variables.
17518         * loop-doloop.c (doloop_modify): Likewise.
17519         (doloop_optimize): Likewise.
17520         * optabs.c (expand_subword_shift): Take a scalar_int_mode rather
17521         than a machine_mode.
17522         (expand_doubleword_shift_condmove): Likewise.
17523         (expand_doubleword_shift): Likewise.
17524         (expand_doubleword_clz): Likewise.
17525         (expand_doubleword_popcount): Likewise.
17526         (expand_doubleword_parity): Likewise.
17527         (expand_absneg_bit): Use scalar_int_mode for local variables.
17528         (prepare_float_lib_cmp): Likewise.
17529         * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
17530         rather than a machine_mode.
17531         (convert_memory_address_addr_space): Likewise.
17532         (get_mode_bounds): Likewise.
17533         (get_address_mode): Return a scalar_int_mode rather than a
17534         machine_mode.
17535         * rtlanal.c (get_address_mode): Likewise.
17536         * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
17537         than a machine_mode.
17538         * targhooks.c (default_mode_rep_extended): Likewise.
17539         (default_valid_pointer_mode): Likewise.
17540         (default_addr_space_valid_pointer_mode): Likewise.
17541         (default_eh_return_filter_mode): Return a scalar_int_mode rather
17542         than a machine_mode.
17543         (default_libgcc_cmp_return_mode): Likewise.
17544         (default_libgcc_shift_count_mode): Likewise.
17545         (default_unwind_word_mode): Likewise.
17546         (default_addr_space_pointer_mode): Likewise.
17547         (default_addr_space_address_mode): Likewise.
17548         * targhooks.h (default_eh_return_filter_mode): Likewise.
17549         (default_libgcc_cmp_return_mode): Likewise.
17550         (default_libgcc_shift_count_mode): Likewise.
17551         (default_unwind_word_mode): Likewise.
17552         (default_addr_space_pointer_mode): Likewise.
17553         (default_addr_space_address_mode): Likewise.
17554         (default_mode_rep_extended): Take a scalar_int_mode rather than
17555         a machine_mode.
17556         (default_valid_pointer_mode): Likewise.
17557         (default_addr_space_valid_pointer_mode): Likewise.
17558         * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
17559         local variables.
17560         * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
17561         rather than a machine_mode.
17562         * tree-switch-conversion.c (array_value_type): Use scalar_int_mode
17563         for local variables.
17564         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
17565         * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
17566         than a machine_mode.
17567
17568 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17569             Alan Hayward  <alan.hayward@arm.com>
17570             David Sherwood  <david.sherwood@arm.com>
17571
17572         * dojump.c (do_jump_by_parts_greater_rtx): Change the type of
17573         the mode argument to scalar_int_mode.
17574         (do_jump_by_parts_zero_rtx): Likewise.
17575         (do_jump_by_parts_equality_rtx): Likewise.
17576         (do_jump_by_parts_greater): Take a mode argument.
17577         (do_jump_by_parts_equality): Likewise.
17578         (do_jump_1): Update calls accordingly.
17579
17580 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17581             Alan Hayward  <alan.hayward@arm.com>
17582             David Sherwood  <david.sherwood@arm.com>
17583
17584         * is-a.h (safe_dyn_cast): New function.
17585         * rtl.h (rtx_jump_table_data::get_data_mode): New function.
17586         (jump_table_for_label): Likewise.
17587         * final.c (final_addr_vec_align): Take an rtx_jump_table_data *
17588         instead of an rtx_insn *.
17589         (shorten_branches): Use dyn_cast instead of LABEL_P and
17590         JUMP_TABLE_DATA_P.  Use jump_table_for_label and
17591         rtx_jump_table_data::get_data_mode.
17592         (final_scan_insn): Likewise.
17593
17594 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17595             Alan Hayward  <alan.hayward@arm.com>
17596             David Sherwood  <david.sherwood@arm.com>
17597
17598         * combine.c (try_combine): Use is_a <scalar_int_mode> when
17599         trying to combine a full-register integer set with a subreg
17600         integer set.
17601
17602 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17603             Alan Hayward  <alan.hayward@arm.com>
17604             David Sherwood  <david.sherwood@arm.com>
17605
17606         * expr.c (expand_expr_addr_expr): Add a new_tmode local variable
17607         that is always either address_mode or pointer_mode.
17608
17609 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17610             Alan Hayward  <alan.hayward@arm.com>
17611             David Sherwood  <david.sherwood@arm.com>
17612
17613         * expr.c (expand_expr_real_2): Use word_mode instead of innermode
17614         when the two are known to be equal.
17615
17616 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17617             Alan Hayward  <alan.hayward@arm.com>
17618             David Sherwood  <david.sherwood@arm.com>
17619
17620         * simplify-rtx.c (simplify_const_unary_operation): Use
17621         is_a <scalar_int_mode> instead of checking for a nonzero
17622         precision.  Forcibly convert op_mode to a scalar_int_mode
17623         in that case.  More clearly differentiate the operand and
17624         result modes and use the former when deciding what the value
17625         of a count-bits operation should be.  Use is_int_mode instead
17626         of checking for a MODE_INT.  Remove redundant check for whether
17627         this mode has a zero precision.
17628
17629 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17630             Alan Hayward  <alan.hayward@arm.com>
17631             David Sherwood  <david.sherwood@arm.com>
17632
17633         * optabs.c (widen_leading): Change the type of the mode argument
17634         to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
17635         (widen_bswap): Likewise.
17636         (expand_parity): Likewise.
17637         (expand_ctz): Change the type of the mode argument to scalar_int_mode.
17638         (expand_ffs): Likewise.
17639         (epand_unop): Check for scalar integer modes before calling the
17640         above routines.
17641
17642 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17643             Alan Hayward  <alan.hayward@arm.com>
17644             David Sherwood  <david.sherwood@arm.com>
17645
17646         * expr.c (const_scalar_mask_from_tree): Add a mode argument.
17647         Expand commentary.
17648         (expand_expr_real_1): Update call accordingly.
17649
17650 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17651             Alan Hayward  <alan.hayward@arm.com>
17652             David Sherwood  <david.sherwood@arm.com>
17653
17654         * expmed.c (store_bit_field_using_insv): Add op0_mode and
17655         value_mode arguments.  Use scalar_int_mode internally.
17656         (store_bit_field_1): Rename the new integer mode from imode
17657         to op0_mode and use it instead of GET_MODE (op0).  Update calls
17658         to store_split_bit_field, store_bit_field_using_insv and
17659         store_fixed_bit_field.
17660         (store_fixed_bit_field): Add op0_mode and value_mode arguments.
17661         Use scalar_int_mode internally.  Use a bit count rather than a mode
17662         when calculating the largest bit size for get_best_mode.
17663         Update calls to store_split_bit_field and store_fixed_bit_field_1.
17664         (store_fixed_bit_field_1): Add mode and value_mode arguments.
17665         Remove assertion that OP0 has a scalar integer mode.
17666         (store_split_bit_field): Add op0_mode and value_mode arguments.
17667         Update calls to extract_fixed_bit_field.
17668         (extract_bit_field_using_extv): Add an op0_mode argument.
17669         Use scalar_int_mode internally.
17670         (extract_bit_field_1): Rename the new integer mode from imode to
17671         op0_mode and use it instead of GET_MODE (op0).  Update calls to
17672         extract_split_bit_field, extract_bit_field_using_extv and
17673         extract_fixed_bit_field.
17674         (extract_fixed_bit_field): Add an op0_mode argument.  Update calls
17675         to extract_split_bit_field and extract_fixed_bit_field_1.
17676         (extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
17677         that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
17678         on the target mode.
17679         (extract_split_bit_field): Add an op0_mode argument.  Update call
17680         to extract_fixed_bit_field.
17681
17682 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17683             Alan Hayward  <alan.hayward@arm.com>
17684             David Sherwood  <david.sherwood@arm.com>
17685
17686         * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
17687         * explow.c (hard_function_value): Likewise.
17688         * expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
17689         convert_to_mode call outside the loop.
17690         * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
17691         for the mode iterator.  Require the mode specified by max_pieces
17692         to exist.
17693         (emit_block_move_via_movmem): Use opt_scalar_int_mode for the
17694         mode iterator.
17695         (copy_blkmode_to_reg): Likewise.
17696         (set_storage_via_setmem): Likewise.
17697         * optabs.c (prepare_cmp_insn): Likewise.
17698         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
17699         * stor-layout.c (finish_bitfield_representative): Likewise.
17700
17701 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17702             Alan Hayward  <alan.hayward@arm.com>
17703             David Sherwood  <david.sherwood@arm.com>
17704
17705         * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
17706         * expr.c (convert_move): Use them.
17707         (convert_modes): Likewise.
17708         (store_expr_with_bounds): Likewise.
17709
17710 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17711             Alan Hayward  <alan.hayward@arm.com>
17712             David Sherwood  <david.sherwood@arm.com>
17713
17714         * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
17715         parameter for the mode of "x".  Remove the "known_x", "known_mode"
17716         and "known_ret" arguments.  Change the type of the mode argument
17717         to scalar_int_mode.
17718         (rtl_hooks:reg_num_sign_bit_copies): Likewise.
17719         * combine.c (reg_nonzero_bits_for_combine): Update accordingly.
17720         (reg_num_sign_bit_copies_for_combine): Likewise.
17721         * rtlanal.c (nonzero_bits1): Likewise.
17722         (num_sign_bit_copies1): Likewise.
17723         * rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
17724         (reg_num_sign_bit_copies_general): Likewise.
17725         * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
17726         (reg_nonzero_bits_general): Likewise.
17727
17728 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17729             Alan Hayward  <alan.hayward@arm.com>
17730             David Sherwood  <david.sherwood@arm.com>
17731
17732         * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
17733         than in subroutines.  Return 1 for non-integer modes.
17734         (cached_num_sign_bit_copies): Change the type of the mode parameter
17735         to scalar_int_mode.
17736         (num_sign_bit_copies1): Likewise.  Remove early exit for other mode
17737         classes.  Handle CONST_INT_P first and then check whether X also
17738         has a scalar integer mode.  Check the same thing for inner registers
17739         of a SUBREG and for values that are being extended or truncated.
17740
17741 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17742             Alan Hayward  <alan.hayward@arm.com>
17743             David Sherwood  <david.sherwood@arm.com>
17744
17745         * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
17746         in subroutines.  Return the mode mask for non-integer modes.
17747         (cached_nonzero_bits): Change the type of the mode parameter
17748         to scalar_int_mode.
17749         (nonzero_bits1): Likewise.  Remove early exit for other mode
17750         classes.  Handle CONST_INT_P first and then check whether X
17751         also has a scalar integer mode.
17752
17753 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17754             Alan Hayward  <alan.hayward@arm.com>
17755             David Sherwood  <david.sherwood@arm.com>
17756
17757         * expr.c (widest_int_mode_for_size): Make the comment match the code.
17758         Return a scalar_int_mode and assert that the size is greater than
17759         one byte.
17760         (by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
17761         (op_by_pieces_d::op_by_pieces_d): Likewise.
17762         (op_by_pieces_d::run): Likewise.
17763         (can_store_by_pieces): Likewise.
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         * combine.c (extract_left_shift): Add a mode argument and update
17770         recursive calls.
17771         (make_compound_operation_int): Change the type of the mode parameter
17772         to scalar_int_mode and update the call to extract_left_shift.
17773
17774 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17775             Alan Hayward  <alan.hayward@arm.com>
17776             David Sherwood  <david.sherwood@arm.com>
17777
17778         * combine.c (simplify_and_const_int): Change the type of the mode
17779         parameter to scalar_int_mode.
17780         (simplify_and_const_int_1): Likewise.  Update recursive call.
17781
17782 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17783             Alan Hayward  <alan.hayward@arm.com>
17784             David Sherwood  <david.sherwood@arm.com>
17785
17786         * combine.c (simplify_compare_const): Check that the mode is a
17787         scalar_int_mode (rather than VOIDmode) before testing its
17788         precision.
17789         (simplify_comparison): Move COMPARISON_P handling out of the
17790         loop and restrict the latter part of the loop to scalar_int_modes.
17791         Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
17792         and when considering SUBREG_REGs.  Use is_int_mode instead of
17793         checking GET_MODE_CLASS against MODE_INT.
17794
17795 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17796             Alan Hayward  <alan.hayward@arm.com>
17797             David Sherwood  <david.sherwood@arm.com>
17798
17799         * combine.c (try_widen_shift_mode): Move check for equal modes to...
17800         (simplify_shift_const_1): ...here.  Use scalar_int_mode for
17801         shift_unit_mode and for modes involved in scalar shifts.
17802
17803 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17804             Alan Hayward  <alan.hayward@arm.com>
17805             David Sherwood  <david.sherwood@arm.com>
17806
17807         * combine.c (force_int_to_mode): New function, split out from...
17808         (force_to_mode): ...here.  Keep xmode up-to-date and use it
17809         instead of GET_MODE (x).
17810
17811 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17812             Alan Hayward  <alan.hayward@arm.com>
17813             David Sherwood  <david.sherwood@arm.com>
17814
17815         * optabs-query.h (extraction_insn::struct_mode): Change type to
17816         opt_scalar_int_mode and update comment.
17817         (extraction_insn::field_mode): Change type to scalar_int_mode.
17818         (extraction_insn::pos_mode): Likewise.
17819         * combine.c (make_extraction): Update accordingly.
17820         * optabs-query.c (get_traditional_extraction_insn): Likewise.
17821         (get_optab_extraction_insn): Likewise.
17822         * recog.c (simplify_while_replacing): Likewise.
17823         * expmed.c (narrow_bit_field_mem): Change the type of the mode
17824         parameter to opt_scalar_int_mode.
17825
17826 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17827             Alan Hayward  <alan.hayward@arm.com>
17828             David Sherwood  <david.sherwood@arm.com>
17829
17830         * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer
17831         to a scalar_int_mode instead of a machine_mode.
17832         (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
17833         (get_best_mode): Return a boolean and use a pointer argument to store
17834         the selected mode.  Replace the limit mode parameter with a bit limit.
17835         * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
17836         for the values returned by bit_field_mode_iterator::next_mode.
17837         (store_bit_field): Update call to get_best_mode.
17838         (store_fixed_bit_field): Likewise.
17839         (extract_fixed_bit_field): Likewise.
17840         * expr.c (optimize_bitfield_assignment_op): Likewise.
17841         * fold-const.c (optimize_bit_field_compare): Likewise.
17842         (fold_truth_andor_1): Likewise.
17843         * stor-layout.c (bit_field_mode_iterator::next_mode): As above.
17844         Update for new type of m_mode.
17845         (get_best_mode): As above.
17846
17847 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17848             Alan Hayward  <alan.hayward@arm.com>
17849             David Sherwood  <david.sherwood@arm.com>
17850
17851         * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
17852         to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
17853         (store_bit_field): Check is_a <scalar_int_mode> before calling
17854         strict_volatile_bitfield_p.
17855         (extract_bit_field): Likewise.
17856
17857 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17858             Alan Hayward  <alan.hayward@arm.com>
17859             David Sherwood  <david.sherwood@arm.com>
17860
17861         * target.def (cstore_mode): Return a scalar_int_mode.
17862         * doc/tm.texi: Regenerate.
17863         * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
17864         * targhooks.h (default_cstore_mode): Likewise.
17865         * targhooks.c (default_cstore_mode): Likewise, using a forced
17866         conversion.
17867         * expmed.c (emit_cstore): Expect the target of the cstore to be
17868         a scalar_int_mode.
17869
17870 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17871             Alan Hayward  <alan.hayward@arm.com>
17872             David Sherwood  <david.sherwood@arm.com>
17873
17874         * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
17875         scalar_int_mode.
17876         (niter_desc): Likewise mode.
17877         (iv_analyze): Add a mode parameter.
17878         (biv_p): Likewise.
17879         (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
17880         and change its type to scalar_int_mode.
17881         * loop-iv.c: Update commentary at head of file.
17882         (iv_constant): Pass the mode paraeter before the rtx it describes
17883         and change its type to scalar_int_mode.  Remove VOIDmode handling.
17884         (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
17885         (iv_extend): Likewise.
17886         (shorten_into_mode): Likewise.
17887         (iv_add): Use scalar_int_mode.
17888         (iv_mult): Likewise.
17889         (iv_shift): Likewise.
17890         (canonicalize_iv_subregs): Likewise.
17891         (get_biv_step_1): Pass the outer_mode parameter before the rtx
17892         it describes and change its mode to scalar_int_mode.   Also change
17893         the type of the returned inner_mode to scalar_int_mode.
17894         (get_biv_step): Likewise, turning outer_mode from a pointer
17895         into a direct parameter.  Update call to get_biv_step_1.
17896         (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
17897         iv_constant and get_biv_step.
17898         (iv_analyze_expr): Pass the mode parameter before the rtx it describes
17899         and change its type to scalar_int_mode.  Don't initialise iv->mode
17900         to VOIDmode and remove later checks for its still being VOIDmode.
17901         Update calls to iv_analyze_op and iv_analyze_expr.  Check
17902         is_a <scalar_int_mode> when changing the mode under consideration.
17903         (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
17904         Update call to iv_analyze_expr.
17905         (iv_analyze_op): Add a mode parameter.  Reject subregs whose
17906         inner register is not also a scalar_int_mode.  Update call to
17907         iv_analyze_biv.
17908         (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
17909         (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
17910         (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
17911         separate mode class checks.  Update calls to iv_analyze.  Remove
17912         fix-up of VOIDmodes after iv_analyze_biv.
17913         * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
17914         don't have a scalar_int_mode.  Update call to biv_p.
17915
17916 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17917             Alan Hayward  <alan.hayward@arm.com>
17918             David Sherwood  <david.sherwood@arm.com>
17919
17920         * cfgexpand.c (convert_debug_memory_address): Use
17921         as_a <scalar_int_mode>.
17922         * combine.c (expand_compound_operation): Likewise.
17923         (make_extraction): Likewise.
17924         (change_zero_ext): Likewise.
17925         (simplify_comparison): Likewise.
17926         * cse.c (cse_insn): Likewise.
17927         * dwarf2out.c (minmax_loc_descriptor): Likewise.
17928         (mem_loc_descriptor): Likewise.
17929         (loc_descriptor): Likewise.
17930         * expmed.c (init_expmed_one_mode): Likewise.
17931         (synth_mult): Likewise.
17932         (emit_store_flag_1): Likewise.
17933         (expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
17934         of a comparison with size.
17935         * expr.c (expand_assignment): Use as_a <scalar_int_mode>.
17936         (reduce_to_bit_field_precision): Likewise.
17937         * function.c (expand_function_end): Likewise.
17938         * internal-fn.c (expand_arith_overflow_result_store): Likewise.
17939         * loop-doloop.c (doloop_modify): Likewise.
17940         * optabs.c (expand_binop): Likewise.
17941         (expand_unop): Likewise.
17942         (expand_copysign_absneg): Likewise.
17943         (prepare_cmp_insn): Likewise.
17944         (maybe_legitimize_operand): Likewise.
17945         * recog.c (const_scalar_int_operand): Likewise.
17946         * rtlanal.c (get_address_mode): Likewise.
17947         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17948         (simplify_cond_clz_ctz): Likewise.
17949         * tree-nested.c (get_nl_goto_field): Likewise.
17950         * tree.c (build_vector_type_for_mode): Likewise.
17951         * var-tracking.c (use_narrower_mode): Likewise.
17952
17953 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17954             Alan Hayward  <alan.hayward@arm.com>
17955             David Sherwood  <david.sherwood@arm.com>
17956
17957         * tree.h (SCALAR_INT_TYPE_MODE): New macro.
17958         * builtins.c (expand_builtin_signbit): Use it.
17959         * cfgexpand.c (expand_debug_expr): Likewise.
17960         * dojump.c (do_jump): Likewise.
17961         (do_compare_and_jump): Likewise.
17962         * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
17963         * expmed.c (make_tree): Likewise.
17964         * expr.c (expand_expr_real_2): Likewise.
17965         (expand_expr_real_1): Likewise.
17966         (try_casesi): Likewise.
17967         * fold-const-call.c (fold_const_call_ss): Likewise.
17968         * fold-const.c (unextend): Likewise.
17969         (extract_muldiv_1): Likewise.
17970         (fold_single_bit_test): Likewise.
17971         (native_encode_int): Likewise.
17972         (native_encode_string): Likewise.
17973         (native_interpret_int): Likewise.
17974         * gimple-fold.c (gimple_fold_builtin_memset): Likewise.
17975         * internal-fn.c (expand_addsub_overflow): Likewise.
17976         (expand_neg_overflow): Likewise.
17977         (expand_mul_overflow): Likewise.
17978         (expand_arith_overflow): Likewise.
17979         * match.pd: Likewise.
17980         * stor-layout.c (layout_type): Likewise.
17981         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17982         * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
17983         * tree-ssanames.c (get_range_info): Likewise.
17984         * tree-switch-conversion.c (array_value_type) Likewise.
17985         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
17986         (vect_recog_divmod_pattern): Likewise.
17987         (vect_recog_mixed_size_cond_pattern): Likewise.
17988         * tree-vrp.c (extract_range_basic): Likewise.
17989         (simplify_float_conversion_using_ranges): Likewise.
17990         * tree.c (int_fits_type_p): Likewise.
17991         * ubsan.c (instrument_bool_enum_load): Likewise.
17992         * varasm.c (mergeable_string_section): Likewise.
17993         (narrowing_initializer_constant_valid_p): Likewise.
17994         (output_constant): Likewise.
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         * machmode.h (NARROWEST_INT_MODE): New macro.
18001         * expr.c (alignment_for_piecewise_move): Use it instead of
18002         GET_CLASS_NARROWEST_MODE (MODE_INT).
18003         (push_block): Likewise.
18004         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
18005         Likewise.
18006         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18007
18008 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18009             Alan Hayward  <alan.hayward@arm.com>
18010             David Sherwood  <david.sherwood@arm.com>
18011
18012         * postreload.c (move2add_valid_value_p): Change the type of the
18013         mode parameter to scalar_int_mode.
18014         (move2add_use_add2_insn): Add a mode parameter and use it instead
18015         of GET_MODE (reg).
18016         (move2add_use_add3_insn): Likewise.
18017         (reload_cse_move2add): Update accordingly.
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         * expr.c (expand_expr_real_2): Use scalar_int_mode for the
18024         double-word mode.
18025         * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
18026         * optabs.c (expand_unop): Likewise.
18027
18028 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18029             Alan Hayward  <alan.hayward@arm.com>
18030             David Sherwood  <david.sherwood@arm.com>
18031
18032         * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
18033         (clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
18034         (popcount_loc_descriptor): Likewise.
18035         (bswap_loc_descriptor): Likewise.
18036         (rotate_loc_descriptor): Likewise.
18037         (mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
18038         calling the functions above.
18039
18040 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18041             Alan Hayward  <alan.hayward@arm.com>
18042             David Sherwood  <david.sherwood@arm.com>
18043
18044         * combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
18045         checks.
18046         (try_combine): Likewise.
18047         (simplify_if_then_else): Likewise.
18048         * cse.c (cse_insn): Likewise.
18049         * dwarf2out.c (mem_loc_descriptor): Likewise.
18050         * emit-rtl.c (gen_lowpart_common): Likewise.
18051         * simplify-rtx.c (simplify_truncation): Likewise.
18052         (simplify_binary_operation_1): Likewise.
18053         (simplify_const_relational_operation): Likewise.
18054         (simplify_ternary_operation): Likewise.
18055         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
18056
18057 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18058             Alan Hayward  <alan.hayward@arm.com>
18059             David Sherwood  <david.sherwood@arm.com>
18060
18061         * cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
18062         * reload.c (push_reload): Likewise.
18063         (find_reloads): Likewise.
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         * combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
18070         (make_compound_operation_int): Likewise.
18071         (change_zero_ext): Likewise.
18072         * expr.c (convert_move): Likewise.
18073         (convert_modes): Likewise.
18074         * fwprop.c (forward_propagate_subreg): Likewise.
18075         * loop-iv.c (get_biv_step_1): Likewise.
18076         * optabs.c (widen_operand): Likewise.
18077         * postreload.c (move2add_valid_value_p): Likewise.
18078         * recog.c (simplify_while_replacing): Likewise.
18079         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18080         (simplify_binary_operation_1): Likewise.  Remove redundant
18081         mode equality check.
18082
18083 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18084             Alan Hayward  <alan.hayward@arm.com>
18085             David Sherwood  <david.sherwood@arm.com>
18086
18087         * combine.c (combine_simplify_rtx): Add checks for
18088         is_a <scalar_int_mode>.
18089         (simplify_if_then_else): Likewise.
18090         (make_field_assignment): Likewise.
18091         (simplify_comparison): Likewise.
18092         * ifcvt.c (noce_try_bitop): Likewise.
18093         * loop-invariant.c (canonicalize_address_mult): Likewise.
18094         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18095
18096 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18097             Alan Hayward  <alan.hayward@arm.com>
18098             David Sherwood  <david.sherwood@arm.com>
18099
18100         * gimple-fold.c (gimple_fold_builtin_memory_op): Use
18101         is_a <scalar_int_mode> instead of != BLKmode.
18102
18103 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18104             Alan Hayward  <alan.hayward@arm.com>
18105             David Sherwood  <david.sherwood@arm.com>
18106
18107         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
18108         instead of != VOIDmode.
18109         * combine.c (if_then_else_cond): Likewise.
18110         (change_zero_ext): Likewise.
18111         * dwarf2out.c (mem_loc_descriptor): Likewise.
18112         (loc_descriptor): Likewise.
18113         * rtlanal.c (canonicalize_condition): Likewise.
18114         * simplify-rtx.c (simplify_relational_operation_1): Likewise.
18115
18116 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18117             Alan Hayward  <alan.hayward@arm.com>
18118             David Sherwood  <david.sherwood@arm.com>
18119
18120         * simplify-rtx.c (simplify_binary_operation_1): Use
18121         is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
18122
18123 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18124             Alan Hayward  <alan.hayward@arm.com>
18125             David Sherwood  <david.sherwood@arm.com>
18126
18127         * wide-int.h (int_traits<unsigned char>) New class.
18128         (int_traits<unsigned short>) Likewise.
18129         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
18130         Use GET_MODE_UNIT_PRECISION and remove redundant test for
18131         SCALAR_INT_MODE_P.
18132         * combine.c (set_nonzero_bits_and_sign_copies): Use
18133         is_a <scalar_int_mode>.
18134         (find_split_point): Likewise.
18135         (combine_simplify_rtx): Likewise.
18136         (simplify_logical): Likewise.
18137         (expand_compound_operation): Likewise.
18138         (expand_field_assignment): Likewise.
18139         (make_compound_operation): Likewise.
18140         (extended_count): Likewise.
18141         (change_zero_ext): Likewise.
18142         (simplify_comparison): Likewise.
18143         * dwarf2out.c (scompare_loc_descriptor): Likewise.
18144         (ucompare_loc_descriptor): Likewise.
18145         (minmax_loc_descriptor): Likewise.
18146         (mem_loc_descriptor): Likewise.
18147         (loc_descriptor): Likewise.
18148         * expmed.c (init_expmed_one_mode): Likewise.
18149         * lra-constraints.c (lra_constraint_offset): Likewise.
18150         * optabs.c (prepare_libcall_arg): Likewise.
18151         * postreload.c (move2add_note_store): Likewise.
18152         * reload.c (operands_match_p): Likewise.
18153         * rtl.h (load_extend_op): Likewise.
18154         * rtlhooks.c (gen_lowpart_general): Likewise.
18155         * simplify-rtx.c (simplify_truncation): Likewise.
18156         (simplify_unary_operation_1): Likewise.
18157         (simplify_binary_operation_1): Likewise.
18158         (simplify_const_binary_operation): Likewise.
18159         (simplify_const_relational_operation): Likewise.
18160         (simplify_subreg): Likewise.
18161         * stor-layout.c (bitwise_mode_for_mode): Likewise.
18162         * var-tracking.c (adjust_mems): Likewise.
18163         (prepare_call_arguments): Likewise.
18164
18165 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18166             Alan Hayward  <alan.hayward@arm.com>
18167             David Sherwood  <david.sherwood@arm.com>
18168
18169         * machmode.h (is_int_mode): New fuction.
18170         * combine.c (find_split_point): Use it.
18171         (combine_simplify_rtx): Likewise.
18172         (simplify_if_then_else): Likewise.
18173         (simplify_set): Likewise.
18174         (simplify_shift_const_1): Likewise.
18175         (simplify_comparison): Likewise.
18176         * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
18177         * cse.c (notreg_cost): Likewise.
18178         (cse_insn): Likewise.
18179         * cselib.c (cselib_lookup_1): Likewise.
18180         * dojump.c (do_jump_1): Likewise.
18181         (do_compare_rtx_and_jump): Likewise.
18182         * dse.c (get_call_args): Likewise.
18183         * dwarf2out.c (rtl_for_decl_init): Likewise.
18184         (native_encode_initializer): Likewise.
18185         * expmed.c (emit_store_flag_1): Likewise.
18186         (emit_store_flag): Likewise.
18187         * expr.c (convert_modes): Likewise.
18188         (store_field): Likewise.
18189         (expand_expr_real_1): Likewise.
18190         * fold-const.c (fold_read_from_constant_string): Likewise.
18191         * gimple-ssa-sprintf.c (get_format_string): Likewise.
18192         * optabs-libfuncs.c (gen_int_libfunc): Likewise.
18193         * optabs.c (expand_binop): Likewise.
18194         (expand_unop): Likewise.
18195         (expand_abs_nojump): Likewise.
18196         (expand_one_cmpl_abs_nojump): Likewise.
18197         * simplify-rtx.c (mode_signbit_p): Likewise.
18198         (val_signbit_p): Likewise.
18199         (val_signbit_known_set_p): Likewise.
18200         (val_signbit_known_clear_p): Likewise.
18201         (simplify_relational_operation_1): Likewise.
18202         * tree.c (vector_type_mode): Likewise.
18203
18204 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18205             Alan Hayward  <alan.hayward@arm.com>
18206             David Sherwood  <david.sherwood@arm.com>
18207
18208         * machmode.h (smallest_mode_for_size): Fix formatting.
18209         (smallest_int_mode_for_size): New function.
18210         * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
18211         instead of smallest_mode_for_size.
18212         * combine.c (make_extraction): Likewise.
18213         * config/arc/arc.c (arc_expand_movmem): Likewise.
18214         * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
18215         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18216         * config/s390/s390.c (s390_expand_insv): Likewise.
18217         * config/sparc/sparc.c (assign_int_registers): Likewise.
18218         * config/spu/spu.c (spu_function_value): Likewise.
18219         (spu_function_arg): Likewise.
18220         * coverage.c (get_gcov_type): Likewise.
18221         (get_gcov_unsigned_t): Likewise.
18222         * dse.c (find_shift_sequence): Likewise.
18223         * expmed.c (store_bit_field_1): Likewise.
18224         * expr.c (convert_move): Likewise.
18225         (store_field): Likewise.
18226         * internal-fn.c (expand_arith_overflow): Likewise.
18227         * optabs-query.c (get_best_extraction_insn): Likewise.
18228         * optabs.c (expand_twoval_binop_libfunc): Likewise.
18229         * stor-layout.c (layout_type): Likewise.
18230         (initialize_sizetypes): Likewise.
18231         * targhooks.c (default_get_mask_mode): Likewise.
18232         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
18233
18234 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18235             Alan Hayward  <alan.hayward@arm.com>
18236             David Sherwood  <david.sherwood@arm.com>
18237
18238         * machmode.h (opt_mode::else_blk): New function.
18239         (int_mode_for_mode): Declare.
18240         * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
18241         * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
18242         return type.
18243         * cfgexpand.c (expand_debug_expr): Likewise.
18244         * combine.c (gen_lowpart_or_truncate): Likewise.
18245         (gen_lowpart_for_combine): Likewise.
18246         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
18247         * config/avr/avr.c (avr_to_int_mode): Likewise.
18248         (avr_out_plus_1): Likewise.
18249         (avr_out_plus): Likewise.
18250         (avr_out_round): Likewise.
18251         * config/i386/i386.c (ix86_split_to_parts): Likewise.
18252         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
18253         (s390_expand_vcond): Likewise.
18254         * config/spu/spu.c (spu_split_immediate): Likewise.
18255         (spu_expand_mov): Likewise.
18256         * dse.c (get_stored_val): Likewise.
18257         * expmed.c (store_bit_field_1): Likewise.
18258         (convert_extracted_bit_field): Use int_mode_for_mode instead of
18259         int_mode_for_size.
18260         (extract_bit_field_1): Adjust for new int_mode_for_mode return type.
18261         (extract_low_bits): Likewise.
18262         * expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
18263         handling rather than repeating the check.
18264         (emit_group_store): Likewise.
18265         (emit_move_via_integer): Adjust for new int_mode_for_mode return type.
18266         * optabs.c (expand_absneg_bit): Likewise.
18267         (expand_copysign_absneg): Likewise.
18268         (expand_copysign_bit): Likewise.
18269         * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
18270         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18271         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18272         * var-tracking.c (prepare_call_arguments):  Likewise.
18273         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
18274         int_mode_for_mode instead of mode_for_size.
18275         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
18276
18277 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18278             Alan Hayward  <alan.hayward@arm.com>
18279             David Sherwood  <david.sherwood@arm.com>
18280
18281         * machmode.h (int_mode_for_size): New function.
18282         * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
18283         instead of mode_for_size.
18284         * calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
18285         explicit.
18286         * combine.c (expand_field_assignment): Use int_mode_for_size
18287         instead of mode_for_size.
18288         (make_extraction): Likewise.
18289         (simplify_shift_const_1): Likewise.
18290         (simplify_comparison): Likewise.
18291         * dojump.c (do_jump): Likewise.
18292         * dwarf2out.c (mem_loc_descriptor): Likewise.
18293         * emit-rtl.c (init_derived_machine_modes): Likewise.
18294         * expmed.c (flip_storage_order): Likewise.
18295         (convert_extracted_bit_field): Likewise.
18296         * expr.c (copy_blkmode_from_reg): Likewise.
18297         * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
18298         * internal-fn.c (expand_mul_overflow): Likewise.
18299         * lower-subreg.c (simple_move): Likewise.
18300         * optabs-libfuncs.c (init_optabs): Likewise.
18301         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18302         * tree.c (vector_type_mode): Likewise.
18303         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18304         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
18305         * tree-vect-generic.c (expand_vector_parallel): Likewise.
18306         * tree-vect-stmts.c (vectorizable_load): Likewise.
18307         (vectorizable_store): Likewise.
18308
18309 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18310             Alan Hayward  <alan.hayward@arm.com>
18311             David Sherwood  <david.sherwood@arm.com>
18312
18313         * coretypes.h (pod_mode): New type.
18314         (scalar_int_mode_pod): New typedef.
18315         * machmode.h (pod_mode): New class.
18316         (int_n_data_t::m): Change type to scalar_int_mode_pod.
18317         * genmodes.c (emit_mode_int_n): Update accordingly.
18318         * lower-subreg.h (target_lower_subreg): Change type to
18319         scalar_int_mode_pod.
18320         * gdbhooks.py (build_pretty_printer): Handle pod_mode and
18321         scalar_int_mode_pod.
18322
18323 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18324             Alan Hayward  <alan.hayward@arm.com>
18325             David Sherwood  <david.sherwood@arm.com>
18326
18327         * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
18328         machine_mode to scalar_int_mode.
18329         * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
18330         (rs6000_option_override_internal): Remove cast to int.
18331         * config/rs6000/rs6000.h (rs6000_pmode): Change type from
18332         machine_mode to scalar_int_mode.
18333         * config/rs6000/rs6000.c (rs6000_pmode): Likewise.
18334         (rs6000_option_override_internal): Remove cast to int.
18335         * config/s390/s390.h (Pmode): Remove cast to machine_mode.
18336         * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
18337         to machine_mode.
18338         * config/s390/s390.c (s390_expand_builtin): Likewise.
18339         * coretypes.h (scalar_int_mode): New type.
18340         (opt_scalar_int_mode): New typedef.
18341         * machmode.h (scalar_int_mode): New class.
18342         (scalar_int_mode::includes_p): New function.
18343         (byte_mode): Change type to scalar_int_mode.
18344         (word_mode): Likewise.
18345         (ptr_mode): Likewise.
18346         * emit-rtl.c (byte_mode): Likewise.
18347         (word_mode): Likewise.
18348         (ptr_mode): Likewise.
18349         (init_derived_machine_modes): Update accordingly.
18350         * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
18351         and MODE_PARTIAL_INT.
18352         * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
18353         opt_scalar_int_mode.
18354
18355 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18356             Alan Hayward  <alan.hayward@arm.com>
18357             David Sherwood  <david.sherwood@arm.com>
18358
18359         * target.def (libgcc_floating_mode_supported_p): Take a
18360         scalar_float_mode.
18361         * doc/tm.texi: Regenerate.
18362         * targhooks.h (default_libgcc_floating_mode_supported_p): Take a
18363         scalar_float_mode.
18364         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18365         * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
18366         Likewise.
18367
18368 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18369             Alan Hayward  <alan.hayward@arm.com>
18370             David Sherwood  <david.sherwood@arm.com>
18371
18372         * target.def (default_floatn_mode): Return an opt_scalar_float_mode.
18373         * doc/tm.texi: Regenerate.
18374         * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
18375         * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
18376         * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
18377         * targhooks.h (default_floatn_mode): Likewise.
18378         * targhooks.c (default_floatn_mode): Likewise.
18379         * tree.c (build_common_tree_nodes): Update accordingly.
18380
18381 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18382             Alan Hayward  <alan.hayward@arm.com>
18383             David Sherwood  <david.sherwood@arm.com>
18384
18385         * machmode.h (mode_iterator::start): Provide overload for opt_modes.
18386         (mode_iterator::iterate_p): Likewise.
18387         (mode_iterator::get_wider): Likewise.
18388         * expr.c (init_expr_target): Use opt_scalar_float_mode.
18389
18390 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18391             Alan Hayward  <alan.hayward@arm.com>
18392             David Sherwood  <david.sherwood@arm.com>
18393
18394         * coretypes.h (opt_scalar_float_mode): New typedef.
18395         * machmode.h (float_mode_for_size): New function.
18396         * emit-rtl.c (double_mode): Delete.
18397         (init_emit_once): Use float_mode_for_size.
18398         * stor-layout.c (layout_type): Likewise.
18399         * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
18400
18401 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18402             Alan Hayward  <alan.hayward@arm.com>
18403             David Sherwood  <david.sherwood@arm.com>
18404
18405         * output.h (assemble_real): Take a scalar_float_mode.
18406         * config/arm/arm.c (arm_assemble_integer): Update accordingly.
18407         * config/arm/arm.md (consttable_4): Likewise.
18408         (consttable_8): Likewise.
18409         (consttable_16): Likewise.
18410         * config/mips/mips.md (consttable_float): Likewise.
18411         * config/s390/s390.c (s390_output_pool_entry): Likewise.
18412         * varasm.c (assemble_real): Take a scalar_float_mode.
18413         (output_constant_pool_2): Update accordingly.
18414         (output_constant): Likewise.
18415
18416 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18417             Alan Hayward  <alan.hayward@arm.com>
18418             David Sherwood  <david.sherwood@arm.com>
18419
18420         * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
18421         * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
18422         * fold-const.c (fold_convert_const_real_from_fixed): Likewise.
18423         (native_encode_real): Likewise.
18424         (native_interpret_real): Likewise.
18425         * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
18426         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18427
18428 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18429             Alan Hayward  <alan.hayward@arm.com>
18430             David Sherwood  <david.sherwood@arm.com>
18431
18432         * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
18433         <scalar_float_mode>.  Simplify.
18434         (gen_extend_conv_libfunc): Likewise.
18435
18436 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18437             Alan Hayward  <alan.hayward@arm.com>
18438             David Sherwood  <david.sherwood@arm.com>
18439
18440         * coretypes.h (scalar_float_mode): New type.
18441         * machmode.h (mode_traits::from_int): Use machine_mode if
18442         USE_ENUM_MODES is defined.
18443         (is_a): New function.
18444         (as_a): Likewise.
18445         (dyn_cast): Likewise.
18446         (scalar_float_mode): New class.
18447         (scalar_float_mode::includes_p): New function.
18448         (is_float_mode): Likewise.
18449         * gdbhooks.py (MachineModePrinter): New class.
18450         (build_pretty_printer): Use it for scalar_float_mode.
18451         * real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
18452         (format_helper::format_helper): Turn into a template.
18453         * genmodes.c (get_mode_class): New function.
18454         (emit_insn_modes_h): Give modes the class returned by get_mode_class,
18455         or machine_mode if none.
18456         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
18457         as_a <scalar_float_mode>.
18458         * dwarf2out.c (mem_loc_descriptor): Likewise.
18459         (insert_float): Likewise.
18460         (add_const_value_attribute): Likewise.
18461         * simplify-rtx.c (simplify_immed_subreg): Likewise.
18462         * optabs.c (expand_absneg_bit): Take a scalar_float_mode.
18463         (expand_unop): Update accordingly.
18464         (expand_abs_nojump): Likewise.
18465         (expand_copysign_absneg): Take a scalar_float_mode.
18466         (expand_copysign_bit): Likewise.
18467         (expand_copysign): Update accordingly.
18468
18469 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18470             Alan Hayward  <alan.hayward@arm.com>
18471             David Sherwood  <david.sherwood@arm.com>
18472
18473         * coretypes.h (opt_mode): New class.
18474         * machmode.h (opt_mode): Likewise.
18475         (opt_mode::else_void): New function.
18476         (opt_mode::require): Likewise.
18477         (opt_mode::exists): Likewise.
18478         (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
18479         (GET_MODE_2XWIDER_MODE): Likewise.
18480         (mode_iterator::get_wider): Update accordingly.
18481         (mode_iterator::get_2xwider): Likewise.
18482         (mode_iterator::get_known_wider): Likewise, turning into a template.
18483         * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
18484         forcing a wider mode to exist.
18485         * config/cr16/cr16.h (LONG_REG_P): Likewise.
18486         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18487         * config/c6x/c6x.c (c6x_rtx_costs): Update use of
18488         GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
18489         * lower-subreg.c (init_lower_subreg): Likewise.
18490         * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
18491         on the final iteration.
18492         * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
18493         a wider mode exists before asking for a move pattern.
18494         (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
18495         forcing a wider mode to exist.
18496         (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
18497         returning false if no such mode exists.
18498         * config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
18499         * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
18500         * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
18501         Avoid checking for a MODE_INT if we already know the mode is not a
18502         SCALAR_INT_MODE_P.
18503         (extract_high_half): Update use of GET_MODE_WIDER_MODE,
18504         forcing a wider mode to exist.
18505         (expmed_mult_highpart_optab): Likewise.
18506         (expmed_mult_highpart): Likewise.
18507         * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
18508         using else_void.
18509         * lto-streamer-in.c (lto_input_mode_table): Likewise.
18510         * optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
18511         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
18512         * internal-fn.c (expand_mul_overflow): Update use of
18513         GET_MODE_2XWIDER_MODE.
18514         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18515         * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
18516         GET_MODE_WIDER_MODE.
18517         (convert_plusminus_to_widen): Likewise.
18518         * tree-switch-conversion.c (array_value_type): Likewise.
18519         * var-tracking.c (emit_note_insn_var_location): Likewise.
18520         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18521         Return false inside rather than outside the loop if no wider mode
18522         exists
18523         * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
18524         and GET_MODE_2XWIDER_MODE
18525         (can_compare_p): Use else_void.
18526         * gdbhooks.py (OptMachineModePrinter): New class.
18527         (build_pretty_printer): Use it for opt_mode.
18528
18529 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18530             Alan Hayward  <alan.hayward@arm.com>
18531             David Sherwood  <david.sherwood@arm.com>
18532
18533         * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
18534         once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
18535
18536 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18537             Alan Hayward  <alan.hayward@arm.com>
18538             David Sherwood  <david.sherwood@arm.com>
18539
18540         * machmode.h (mode_traits): New structure.
18541         (get_narrowest_mode): New function.
18542         (mode_iterator::start): Likewise.
18543         (mode_iterator::iterate_p): Likewise.
18544         (mode_iterator::get_wider): Likewise.
18545         (mode_iterator::get_known_wider): Likewise.
18546         (mode_iterator::get_2xwider): Likewise.
18547         (FOR_EACH_MODE_IN_CLASS): New mode iterator.
18548         (FOR_EACH_MODE): Likewise.
18549         (FOR_EACH_MODE_FROM): Likewise.
18550         (FOR_EACH_MODE_UNTIL): Likewise.
18551         (FOR_EACH_WIDER_MODE): Likewise.
18552         (FOR_EACH_2XWIDER_MODE): Likewise.
18553         * builtins.c (expand_builtin_strlen): Use new mode iterators.
18554         * combine.c (simplify_comparison): Likewise
18555         * config/i386/i386.c (type_natural_mode): Likewise.
18556         * cse.c (cse_insn): Likewise.
18557         * dse.c (find_shift_sequence): Likewise.
18558         * emit-rtl.c (init_derived_machine_modes): Likewise.
18559         (init_emit_once): Likewise.
18560         * explow.c (hard_function_value): Likewise.
18561         * expmed.c (extract_fixed_bit_field_1): Likewise.
18562         (extract_bit_field_1): Likewise.
18563         (expand_divmod): Likewise.
18564         (emit_store_flag_1): Likewise.
18565         * expr.c (init_expr_target): Likewise.
18566         (convert_move): Likewise.
18567         (alignment_for_piecewise_move): Likewise.
18568         (widest_int_mode_for_size): Likewise.
18569         (emit_block_move_via_movmem): Likewise.
18570         (copy_blkmode_to_reg): Likewise.
18571         (set_storage_via_setmem): Likewise.
18572         (compress_float_constant): Likewise.
18573         * omp-low.c (omp_clause_aligned_alignment): Likewise.
18574         * optabs-query.c (get_best_extraction_insn): Likewise.
18575         * optabs.c (expand_binop): Likewise.
18576         (expand_twoval_unop): Likewise.
18577         (expand_twoval_binop): Likewise.
18578         (widen_leading): Likewise.
18579         (widen_bswap): Likewise.
18580         (expand_parity): Likewise.
18581         (expand_unop): Likewise.
18582         (prepare_cmp_insn): Likewise.
18583         (prepare_float_lib_cmp): Likewise.
18584         (expand_float): Likewise.
18585         (expand_fix): Likewise.
18586         (expand_sfix_optab): Likewise.
18587         * postreload.c (move2add_use_add2_insn): Likewise.
18588         * reg-stack.c (reg_to_stack): Likewise.
18589         * reginfo.c (choose_hard_reg_mode): Likewise.
18590         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18591         * stor-layout.c (mode_for_size): Likewise.
18592         (smallest_mode_for_size): Likewise.
18593         (mode_for_vector): Likewise.
18594         (finish_bitfield_representative): Likewise.
18595         * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
18596         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
18597         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
18598         * var-tracking.c (prepare_call_arguments): Likewise.
18599
18600 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18601             Alan Hayward  <alan.hayward@arm.com>
18602             David Sherwood  <david.sherwood@arm.com>
18603
18604         * genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
18605         * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
18606         USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
18607         * machmode.h (mode_size): Move earlier in file.
18608         (mode_precision): Likewise.
18609         (mode_inner): Likewise.
18610         (mode_nunits): Likewise.
18611         (mode_unit_size): Likewise.
18612         (unit_unit_precision): Likewise.
18613         (mode_wider): Likewise.
18614         (mode_2xwider): Likewise.
18615         (machine_mode): New class.
18616         (mode_to_bytes): New function.
18617         (mode_to_bits): Likewise.
18618         (mode_to_precision): Likewise.
18619         (mode_to_inner): Likewise.
18620         (mode_to_unit_size): Likewise.
18621         (mode_to_unit_precision): Likewise.
18622         (mode_to_nunits): Likewise.
18623         (GET_MODE_SIZE): Use mode_to_bytes.
18624         (GET_MODE_BITSIZE): Use mode_to_bits.
18625         (GET_MODE_PRECISION): Use mode_to_precision.
18626         (GET_MODE_INNER): Use mode_to_inner.
18627         (GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
18628         (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
18629         (GET_MODE_NUNITS): Use mode_to_nunits.
18630         * system.h (ALWAYS_INLINE): New macro.
18631         * config/powerpcspe/powerpcspe-c.c
18632         (altivec_resolve_overloaded_builtin): Use machine_mode instead of
18633         int for arg1_mode and arg2_mode.
18634
18635 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18636             Alan Hayward  <alan.hayward@arm.com>
18637             David Sherwood  <david.sherwood@arm.com>
18638
18639         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
18640         Prefix mode names with E_ in case statements.
18641         * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18642         * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
18643         (aarch64_split_simd_move): Likewise.
18644         (aarch64_gen_storewb_pair): Likewise.
18645         (aarch64_gen_loadwb_pair): Likewise.
18646         (aarch64_gen_store_pair): Likewise.
18647         (aarch64_gen_load_pair): Likewise.
18648         (aarch64_get_condition_code_1): Likewise.
18649         (aarch64_constant_pool_reload_icode): Likewise.
18650         (get_rsqrte_type): Likewise.
18651         (get_rsqrts_type): Likewise.
18652         (get_recpe_type): Likewise.
18653         (get_recps_type): Likewise.
18654         (aarch64_gimplify_va_arg_expr): Likewise.
18655         (aarch64_simd_container_mode): Likewise.
18656         (aarch64_emit_load_exclusive): Likewise.
18657         (aarch64_emit_store_exclusive): Likewise.
18658         (aarch64_expand_compare_and_swap): Likewise.
18659         (aarch64_gen_atomic_cas): Likewise.
18660         (aarch64_emit_bic): Likewise.
18661         (aarch64_emit_atomic_swap): Likewise.
18662         (aarch64_emit_atomic_load_op): Likewise.
18663         (aarch64_evpc_trn): Likewise.
18664         (aarch64_evpc_uzp): Likewise.
18665         (aarch64_evpc_zip): Likewise.
18666         (aarch64_evpc_ext): Likewise.
18667         (aarch64_evpc_rev): Likewise.
18668         (aarch64_evpc_dup): Likewise.
18669         (aarch64_gen_ccmp_first): Likewise.
18670         (aarch64_gen_ccmp_next): Likewise.
18671         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
18672         (alpha_emit_xfloating_libcall): Likewise.
18673         (emit_insxl): Likewise.
18674         (alpha_arg_type): Likewise.
18675         * config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
18676         (arc_preferred_simd_mode): Likewise.
18677         (arc_secondary_reload): Likewise.
18678         (get_arc_condition_code): Likewise.
18679         (arc_print_operand): Likewise.
18680         (arc_legitimate_constant_p): Likewise.
18681         * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18682         * config/arc/arc.md (casesi_load): Likewise.
18683         (casesi_compact_jump): Likewise.
18684         * config/arc/predicates.md (proper_comparison_operator): Likewise.
18685         (cc_use_register): Likewise.
18686         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18687         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
18688         (arm_init_iwmmxt_builtins): Likewise.
18689         * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
18690         (neon_expand_vector_init): Likewise.
18691         (arm_attr_length_move_neon): Likewise.
18692         (maybe_get_arm_condition_code): Likewise.
18693         (arm_emit_vector_const): Likewise.
18694         (arm_preferred_simd_mode): Likewise.
18695         (arm_output_iwmmxt_tinsr): Likewise.
18696         (thumb1_output_casesi): Likewise.
18697         (thumb2_output_casesi): Likewise.
18698         (arm_emit_load_exclusive): Likewise.
18699         (arm_emit_store_exclusive): Likewise.
18700         (arm_expand_compare_and_swap): Likewise.
18701         (arm_evpc_neon_vuzp): Likewise.
18702         (arm_evpc_neon_vzip): Likewise.
18703         (arm_evpc_neon_vrev): Likewise.
18704         (arm_evpc_neon_vtrn): Likewise.
18705         (arm_evpc_neon_vext): Likewise.
18706         (arm_validize_comparison): Likewise.
18707         * config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
18708         * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
18709         * config/avr/avr.c (avr_rtx_costs_1): Likewise.
18710         * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
18711         (c6x_preferred_simd_mode): Likewise.
18712         * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
18713         (epiphany_rtx_costs): Likewise.
18714         * config/epiphany/predicates.md (proper_comparison_operator):
18715         Likewise.
18716         * config/frv/frv.c (condexec_memory_operand): Likewise.
18717         (frv_emit_move): Likewise.
18718         (output_move_single): Likewise.
18719         (output_condmove_single): Likewise.
18720         (frv_hard_regno_mode_ok): Likewise.
18721         (frv_matching_accg_mode): Likewise.
18722         * config/h8300/h8300.c (split_adds_subs): Likewise.
18723         (h8300_rtx_costs): Likewise.
18724         (h8300_print_operand): Likewise.
18725         (compute_mov_length): Likewise.
18726         (output_logical_op): Likewise.
18727         (compute_logical_op_length): Likewise.
18728         (compute_logical_op_cc): Likewise.
18729         (h8300_shift_needs_scratch_p): Likewise.
18730         (output_a_shift): Likewise.
18731         (compute_a_shift_length): Likewise.
18732         (compute_a_shift_cc): Likewise.
18733         (expand_a_rotate): Likewise.
18734         (output_a_rotate): Likewise.
18735         * config/i386/i386.c (classify_argument): Likewise.
18736         (function_arg_advance_32): Likewise.
18737         (function_arg_32): Likewise.
18738         (function_arg_64): Likewise.
18739         (function_value_64): Likewise.
18740         (ix86_gimplify_va_arg): Likewise.
18741         (ix86_legitimate_constant_p): Likewise.
18742         (put_condition_code): Likewise.
18743         (split_double_mode): Likewise.
18744         (ix86_avx256_split_vector_move_misalign): Likewise.
18745         (ix86_expand_vector_logical_operator): Likewise.
18746         (ix86_split_idivmod): Likewise.
18747         (ix86_expand_adjust_ufix_to_sfix_si): Likewise.
18748         (ix86_build_const_vector): Likewise.
18749         (ix86_build_signbit_mask): Likewise.
18750         (ix86_match_ccmode): Likewise.
18751         (ix86_cc_modes_compatible): Likewise.
18752         (ix86_expand_branch): Likewise.
18753         (ix86_expand_sse_cmp): Likewise.
18754         (ix86_expand_sse_movcc): Likewise.
18755         (ix86_expand_int_sse_cmp): Likewise.
18756         (ix86_expand_vec_perm_vpermi2): Likewise.
18757         (ix86_expand_vec_perm): Likewise.
18758         (ix86_expand_sse_unpack): Likewise.
18759         (ix86_expand_int_addcc): Likewise.
18760         (ix86_split_to_parts): Likewise.
18761         (ix86_vectorize_builtin_gather): Likewise.
18762         (ix86_vectorize_builtin_scatter): Likewise.
18763         (avx_vpermilp_parallel): Likewise.
18764         (inline_memory_move_cost): Likewise.
18765         (ix86_tieable_integer_mode_p): Likewise.
18766         (x86_maybe_negate_const_int): Likewise.
18767         (ix86_expand_vector_init_duplicate): Likewise.
18768         (ix86_expand_vector_init_one_nonzero): Likewise.
18769         (ix86_expand_vector_init_one_var): Likewise.
18770         (ix86_expand_vector_init_concat): Likewise.
18771         (ix86_expand_vector_init_interleave): Likewise.
18772         (ix86_expand_vector_init_general): Likewise.
18773         (ix86_expand_vector_set): Likewise.
18774         (ix86_expand_vector_extract): Likewise.
18775         (emit_reduc_half): Likewise.
18776         (ix86_emit_i387_round): Likewise.
18777         (ix86_mangle_type): Likewise.
18778         (ix86_expand_round_sse4): Likewise.
18779         (expand_vec_perm_blend): Likewise.
18780         (canonicalize_vector_int_perm): Likewise.
18781         (ix86_expand_vec_one_operand_perm_avx512): Likewise.
18782         (expand_vec_perm_1): Likewise.
18783         (expand_vec_perm_interleave3): Likewise.
18784         (expand_vec_perm_even_odd_pack): Likewise.
18785         (expand_vec_perm_even_odd_1): Likewise.
18786         (expand_vec_perm_broadcast_1): Likewise.
18787         (ix86_vectorize_vec_perm_const_ok): Likewise.
18788         (ix86_expand_vecop_qihi): Likewise.
18789         (ix86_expand_mul_widen_hilo): Likewise.
18790         (ix86_expand_sse2_abs): Likewise.
18791         (ix86_expand_pextr): Likewise.
18792         (ix86_expand_pinsr): Likewise.
18793         (ix86_preferred_simd_mode): Likewise.
18794         (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
18795         * config/i386/sse.md (*andnot<mode>3): Likewise.
18796         (<mask_codefor><code><mode>3<mask_name>): Likewise.
18797         (*<code><mode>3): Likewise.
18798         * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
18799         (ia64_expand_atomic_op): Likewise.
18800         (ia64_arg_type): Likewise.
18801         (ia64_mode_to_int): Likewise.
18802         (ia64_scalar_mode_supported_p): Likewise.
18803         (ia64_vector_mode_supported_p): Likewise.
18804         (expand_vec_perm_broadcast): Likewise.
18805         * config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
18806         (iq2000_function_arg_advance): Likewise.
18807         (iq2000_function_arg): Likewise.
18808         * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
18809         * config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
18810         (m68k_libcall_value): Likewise.
18811         (m68k_function_value): Likewise.
18812         (sched_attr_op_type): Likewise.
18813         * config/mcore/mcore.c (mcore_output_move): Likewise.
18814         * config/microblaze/microblaze.c (microblaze_function_arg_advance):
18815         Likewise.
18816         (microblaze_function_arg): Likewise.
18817         * config/mips/mips.c (mips16_build_call_stub): Likewise.
18818         (mips_print_operand): Likewise.
18819         (mips_mode_ok_for_mov_fmt_p): Likewise.
18820         (mips_vector_mode_supported_p): Likewise.
18821         (mips_preferred_simd_mode): Likewise.
18822         (mips_expand_vpc_loongson_even_odd): Likewise.
18823         (mips_expand_vec_unpack): Likewise.
18824         (mips_expand_vi_broadcast): Likewise.
18825         (mips_expand_vector_init): Likewise.
18826         (mips_expand_vec_reduc): Likewise.
18827         (mips_expand_msa_cmp): Likewise.
18828         * config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
18829         * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
18830         (cc_flags_for_mode): Likewise.
18831         * config/msp430/msp430.c (msp430_print_operand): Likewise.
18832         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
18833         (nds32_output_casesi_pc_relative): Likewise.
18834         * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18835         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
18836         (nvptx_gen_unpack): Likewise.
18837         (nvptx_gen_pack): Likewise.
18838         (nvptx_gen_shuffle): Likewise.
18839         (nvptx_gen_wcast): Likewise.
18840         (nvptx_preferred_simd_mode): Likewise.
18841         * config/pa/pa.c (pa_secondary_reload): Likewise.
18842         * config/pa/predicates.md (base14_operand): Likewise.
18843         * config/powerpcspe/powerpcspe-c.c
18844         (altivec_resolve_overloaded_builtin): Likewise.
18845         * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
18846         Likewise.
18847         (rs6000_preferred_simd_mode): Likewise.
18848         (output_vec_const_move): Likewise.
18849         (rs6000_expand_vector_extract): Likewise.
18850         (rs6000_split_vec_extract_var): Likewise.
18851         (reg_offset_addressing_ok_p): Likewise.
18852         (rs6000_legitimate_offset_address_p): Likewise.
18853         (rs6000_legitimize_address): Likewise.
18854         (rs6000_emit_set_const): Likewise.
18855         (rs6000_const_vec): Likewise.
18856         (rs6000_emit_move): Likewise.
18857         (spe_build_register_parallel): Likewise.
18858         (rs6000_darwin64_record_arg_recurse): Likewise.
18859         (swap_selector_for_mode): Likewise.
18860         (spe_init_builtins): Likewise.
18861         (paired_init_builtins): Likewise.
18862         (altivec_init_builtins): Likewise.
18863         (do_load_for_compare): Likewise.
18864         (rs6000_generate_compare): Likewise.
18865         (rs6000_expand_float128_convert): Likewise.
18866         (emit_load_locked): Likewise.
18867         (emit_store_conditional): Likewise.
18868         (rs6000_output_function_epilogue): Likewise.
18869         (rs6000_handle_altivec_attribute): Likewise.
18870         (rs6000_function_value): Likewise.
18871         (emit_fusion_gpr_load): Likewise.
18872         (emit_fusion_p9_load): Likewise.
18873         (emit_fusion_p9_store): Likewise.
18874         * config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
18875         (fusion_gpr_mem_load): Likewise.
18876         (fusion_addis_mem_combo_load): Likewise.
18877         (fusion_addis_mem_combo_store): Likewise.
18878         * config/rs6000/predicates.md (easy_fp_constant): Likewise.
18879         (fusion_gpr_mem_load): Likewise.
18880         (fusion_addis_mem_combo_load): Likewise.
18881         (fusion_addis_mem_combo_store): Likewise.
18882         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18883         Likewise.
18884         * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
18885         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
18886         (rs6000_preferred_simd_mode): Likewise.
18887         (output_vec_const_move): Likewise.
18888         (rs6000_expand_vector_extract): Likewise.
18889         (rs6000_split_vec_extract_var): Likewise.
18890         (reg_offset_addressing_ok_p): Likewise.
18891         (rs6000_legitimate_offset_address_p): Likewise.
18892         (rs6000_legitimize_address): Likewise.
18893         (rs6000_emit_set_const): Likewise.
18894         (rs6000_const_vec): Likewise.
18895         (rs6000_emit_move): Likewise.
18896         (rs6000_darwin64_record_arg_recurse): Likewise.
18897         (swap_selector_for_mode): Likewise.
18898         (paired_init_builtins): Likewise.
18899         (altivec_init_builtins): Likewise.
18900         (rs6000_expand_float128_convert): Likewise.
18901         (emit_load_locked): Likewise.
18902         (emit_store_conditional): Likewise.
18903         (rs6000_output_function_epilogue): Likewise.
18904         (rs6000_handle_altivec_attribute): Likewise.
18905         (rs6000_function_value): Likewise.
18906         (emit_fusion_gpr_load): Likewise.
18907         (emit_fusion_p9_load): Likewise.
18908         (emit_fusion_p9_store): Likewise.
18909         * config/rx/rx.c (rx_gen_move_template): Likewise.
18910         (flags_from_mode): Likewise.
18911         * config/s390/predicates.md (s390_alc_comparison): Likewise.
18912         (s390_slb_comparison): Likewise.
18913         * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
18914         (s390_vector_mode_supported_p): Likewise.
18915         (s390_cc_modes_compatible): Likewise.
18916         (s390_match_ccmode_set): Likewise.
18917         (s390_canonicalize_comparison): Likewise.
18918         (s390_emit_compare_and_swap): Likewise.
18919         (s390_branch_condition_mask): Likewise.
18920         (s390_rtx_costs): Likewise.
18921         (s390_secondary_reload): Likewise.
18922         (__SECONDARY_RELOAD_CASE): Likewise.
18923         (s390_expand_cs): Likewise.
18924         (s390_preferred_simd_mode): Likewise.
18925         * config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
18926         * config/sh/sh.c (sh_print_operand): Likewise.
18927         (dump_table): Likewise.
18928         (sh_secondary_reload): Likewise.
18929         * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18930         * config/sh/sh.md (casesi_worker_1): Likewise.
18931         (casesi_worker_2): Likewise.
18932         * config/sparc/predicates.md (icc_comparison_operator): Likewise.
18933         (fcc_comparison_operator): Likewise.
18934         * config/sparc/sparc.c (sparc_expand_move): Likewise.
18935         (emit_soft_tfmode_cvt): Likewise.
18936         (sparc_preferred_simd_mode): Likewise.
18937         (output_cbranch): Likewise.
18938         (sparc_print_operand): Likewise.
18939         (sparc_expand_vec_perm_bmask): Likewise.
18940         (vector_init_bshuffle): Likewise.
18941         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
18942         (spu_vector_mode_supported_p): Likewise.
18943         (spu_expand_insv): Likewise.
18944         (spu_emit_branch_or_set): Likewise.
18945         (spu_handle_vector_attribute): Likewise.
18946         (spu_builtin_splats): Likewise.
18947         (spu_builtin_extract): Likewise.
18948         (spu_builtin_promote): Likewise.
18949         (spu_expand_sign_extend): Likewise.
18950         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
18951         (tilegx_simd_int): Likewise.
18952         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
18953         (tilepro_simd_int): Likewise.
18954         * config/v850/v850.c (const_double_split): Likewise.
18955         (v850_print_operand): Likewise.
18956         (ep_memory_offset): Likewise.
18957         * config/vax/vax.c (vax_rtx_costs): Likewise.
18958         (vax_output_int_move): Likewise.
18959         (vax_output_int_add): Likewise.
18960         (vax_output_int_subtract): Likewise.
18961         * config/visium/predicates.md (visium_branch_operator): Likewise.
18962         * config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
18963         (visium_print_operand_address): Likewise.
18964         * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18965         * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
18966         (xtensa_expand_conditional_branch): Likewise.
18967         (xtensa_copy_incoming_a7): Likewise.
18968         (xtensa_output_literal): Likewise.
18969         * dfp.c (decimal_real_maxval): Likewise.
18970         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18971
18972 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18973             Alan Hayward  <alan.hayward@arm.com>
18974             David Sherwood  <david.sherwood@arm.com>
18975
18976         * genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
18977         (mode_nunits_inline): Likewise.
18978         (mode_inner_inline): Likewise.
18979         (mode_unit_size_inline): Likewise.
18980         (mode_unit_precision_inline): Likewise.
18981         (emit_insn_modes_h): Likewise.  Also emit a #define of the
18982         unprefixed name.
18983         (emit_mode_wider): Add an E_ prefix to mode names.
18984         (emit_mode_complex): Likewise.
18985         (emit_mode_inner): Likewise.
18986         (emit_mode_adjustments): Likewise.
18987         (emit_mode_int_n): Likewise.
18988         * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
18989         (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
18990         (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
18991         (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
18992         (CRC32_BUILTIN, ENTRY): Likewise.
18993         * config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
18994         (aarch64_pop_regs): Likewise.
18995         (aarch64_process_components): Likewise.
18996         * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
18997         * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
18998         (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
18999         (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
19000         * config/arm/arm.c (arm_init_libfuncs): Likewise.
19001         * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
19002         Likewise.
19003         * config/i386/i386-builtin.def (pcmpestr): Likewise.
19004         (pcmpistr): Likewise.
19005         * config/microblaze/microblaze.c (double_memory_operand): Likewise.
19006         * config/mmix/mmix.c (mmix_output_condition): Likewise.
19007         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
19008         Likewise.
19009         * config/rl78/rl78.c (mduc_regs): Likewise.
19010         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19011         (htm_expand_builtin): Likewise.
19012         * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
19013         * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
19014         * config/xtensa/xtensa.c (print_operand): Likewise.
19015         * expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
19016         (NUM_MODE_VECTOR_INT): Likewise.
19017         * genoutput.c (null_operand): Likewise.
19018         (output_operand_data): Likewise.
19019         * genrecog.c (print_parameter_value): Likewise.
19020         * lra.c (debug_operand_data): Likewise.
19021
19022 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19023
19024         * dwarf2out.c (scompare_loc_descriptor_wide)
19025         (scompare_loc_descriptor_narrow): New functions, split out from...
19026         (scompare_loc_descriptor): ...here.
19027         * expmed.c (emit_store_flag_int): New function, split out from...
19028         (emit_store_flag): ...here.
19029
19030 2017-08-30  Richard Biener  <rguenther@suse.de>
19031
19032         * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
19033         (dwarf2out_early_finish): Move setting of AT_pubnames from
19034         early debug output to early finish.
19035
19036 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19037
19038         * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
19039         and -mdata-region to the assembler.
19040
19041 2017-08-30  Richard Biener  <rguenther@suse.de>
19042
19043         * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
19044         attributes.
19045         (gen_subprogram_die): Add DW_AT_object_pointer only early.
19046         (dwarf2out_early_global_decl): Only generate a DIE for the
19047         abstract origin if it doesn't already exist or is a declaration DIE.
19048         (resolve_addr): Do not add the linkage name twice when
19049         generating a stub DIE for the DW_TAG_GNU_call_site target.
19050
19051 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19052
19053         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19054         Use machine_mode rather than int for arg1_mode.
19055
19056 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
19057
19058         PR target/82015
19059         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
19060         that the second argument of the built-in functions to unpack
19061         128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
19062         switch statement instead a lot of if statements.
19063         * config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
19064         Allow 64-bit values to be in Altivec registers as well as
19065         traditional floating point registers.
19066         (pack<mode>, FMOVE128_VSX iterator): Likewise.
19067
19068 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
19069
19070         * ira-costs.c (record_address_regs): Handle both operands of PLUS for
19071         MAX_REGS_PER_ADDRESS == 1.
19072
19073 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
19074
19075         * config/i386/i386.opt (flag_fentry): Do not init to -1.
19076         * config/i386/i386.c (ix86_option_override_internal): Simplify
19077         setting of opts->x_flag_entry.
19078
19079 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19080             Jakub Jelinek  <jakub@redhat.com>
19081             Richard Biener  <rguenther@suse.de>
19082
19083         PR tree-optimization/81503
19084         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
19085         folded constant fits in the target type; reorder tests for clarity.
19086
19087 2017-08-29  Martin Liska  <mliska@suse.cz>
19088
19089         * passes.def: Include pass_lower_switch.
19090         * stmt.c (dump_case_nodes): Remove and move to
19091         tree-switch-conversion.
19092         (case_values_threshold): Likewise.
19093         (expand_switch_as_decision_tree_p): Likewise.
19094         (emit_case_decision_tree): Likewise.
19095         (expand_case): Likewise.
19096         (balance_case_nodes): Likewise.
19097         (node_has_low_bound): Likewise.
19098         (node_has_high_bound): Likewise.
19099         (node_is_bounded): Likewise.
19100         (emit_case_nodes): Likewise.
19101         (struct simple_case_node): New struct.
19102         (add_case_node): Remove.
19103         (emit_case_dispatch_table): Use vector instead of case_list.
19104         (reset_out_edges_aux): Remove.
19105         (compute_cases_per_edge): Likewise.
19106         (expand_case): Build list of simple_case_node.
19107         (expand_sjlj_dispatch_table): Use it.
19108         * tree-switch-conversion.c (struct case_node): Moved from
19109         stmt.c and adjusted.
19110         (emit_case_nodes): Likewise.
19111         (node_has_low_bound): Likewise.
19112         (node_has_high_bound): Likewise.
19113         (node_is_bounded): Likewise.
19114         (case_values_threshold): Likewise.
19115         (reset_out_edges_aux): Likewise.
19116         (compute_cases_per_edge): Likewise.
19117         (add_case_node): Likewise.
19118         (dump_case_nodes): Likewise.
19119         (balance_case_nodes): Likewise.
19120         (expand_switch_as_decision_tree_p): Likewise.
19121         (emit_jump): Likewise.
19122         (emit_case_decision_tree): Likewise.
19123         (try_switch_expansion): Likewise.
19124         (do_jump_if_equal): Likewise.
19125         (emit_cmp_and_jump_insns): Likewise.
19126         (fix_phi_operands_for_edge): New function.
19127         (record_phi_operand_mapping): Likewise.
19128         (class pass_lower_switch): New pass.
19129         (pass_lower_switch::execute): New function.
19130         (make_pass_lower_switch): Likewise.
19131         (conditional_probability):
19132         * timevar.def: Add TV_TREE_SWITCH_LOWERING.
19133         * tree-pass.h: Add make_pass_lower_switch.
19134
19135 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19136
19137         PR target/80993
19138         * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
19139         handlers as used.
19140
19141 2017-08-29  Richard Biener  <rguenther@suse.de>
19142
19143         * dwarf2out.c (add_dwarf_attr): When checking is enabled verify
19144         we do not add a DW_AT_inline attribute twice.
19145         (gen_subprogram_die): Remove code setting DW_AT_inline on
19146         DECL_ABSTRACT_P nodes.
19147
19148 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
19149
19150         * gimplify.c (gimplify_call_expr): Copy the nothrow flag to
19151         calls to internal functions.
19152         (gimplify_modify_expr): Likewise.
19153         * tree-call-cdce.c (use_internal_fn): Likewise.
19154         * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
19155         (convert_to_divmod): Set the nothrow flag.
19156         * tree-if-conv.c (predicate_mem_writes):  Likewise.
19157         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
19158         (vectorizable_call): Likewise.
19159         (vectorizable_store): Likewise.
19160         (vectorizable_load): Likewise.
19161         * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
19162         (vect_recog_mask_conversion_pattern): Likewise.
19163
19164 2017-08-29  Martin Liska  <mliska@suse.cz>
19165
19166         PR other/39851
19167         * gcc.c (driver_handle_option): Add new argument.
19168         * opts-common.c (handle_option): Pass
19169         target_option_override_hook.
19170         * opts-global.c (lang_handle_option): Add new option.
19171         (set_default_handlers):  Add new argument.
19172         (decode_options): Likewise.
19173         * opts.c (target_handle_option): Likewise.
19174         (common_handle_option): Call target_option_override_hook.
19175         * opts.h (struct cl_option_handler_func): Add hook for
19176         target option override.
19177         (struct cl_option_handlers): Likewise.
19178         (set_default_handlers): Add new argument.
19179         (decode_options): Likewise.
19180         (common_handle_option): Likewise.
19181         (target_handle_option): Likewise.
19182         * toplev.c (toplev::main): Pass targetm.target_option.override
19183         hook.
19184
19185 2017-08-29  Richard Biener  <rguenther@suse.de>
19186         Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
19187
19188         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
19189         life to the active subtree.
19190
19191 2017-08-28  Jeff Law  <law@redhat.com>
19192
19193         * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
19194         derive_equivalences.
19195         (derive_equivalences_from_bit_ior, record_temporary_equivalences):
19196         Code moved into....
19197         (edge_info::derive_equivalences): New private member function
19198
19199         * tree-ssa-dom.c (class edge_info): Changed from a struct
19200         to a class.  Add ctor/dtor, methods and data members.
19201         (edge_info::edge_info): Renamed from allocate_edge_info.
19202         Initialize additional members.
19203         (edge_info::~edge_info): New.
19204         (free_dom_edge_info): Delete the edge info.
19205         (record_edge_info): Use new class & associated member functions.
19206         Tighten forms for testing for edge equivalences.
19207         (record_temporary_equivalences): Iterate over the simple
19208         equivalences rather than assuming there's only one per edge.
19209         (cprop_into_successor_phis): Iterate over the simple
19210         equivalences rather than assuming there's only one per edge.
19211         (optimize_stmt): Use operand_equal_p rather than pointer
19212         equality for mini-DSE code.
19213
19214 2017-08-28  Nathan Sidwell  <nathan@acm.org>
19215
19216         * gcc.c (execute): Fold SIGPIPE handling into switch
19217         statement.  Adjust internal error message.
19218
19219 2017-08-28  Richard Biener  <rguenther@suse.de>
19220
19221         PR debug/81993
19222         * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
19223         Do nothing for removed DIEs.
19224
19225 2017-08-28  Richard Biener  <rguenther@suse.de>
19226
19227         PR tree-optimization/81977
19228         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
19229         memcpy.
19230
19231 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
19232
19233         PR target/80640
19234         * doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
19235         * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
19236         using targetm.gen_mem_thread_fence.
19237
19238 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
19239
19240         PR target/81995
19241         * config/i386/i386.md (*<btsc><mode>): Change operand 2
19242         predicate to register_operand.  Reorder operands.
19243         (*btr<mode>): Ditto.
19244         (*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
19245         (*btr<mode>_mask): Ditto.
19246
19247 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
19248
19249         * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
19250         * config/rs6000/xmmintrin.h: New file.
19251         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
19252
19253 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19254
19255         PR target/81504
19256         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
19257         parameter and_insn and return it.
19258         (recombine_lvx_pattern): Insert a copy to ensure availability of
19259         the base register of the copied masking operation at the point of
19260         the instruction replacement.
19261         (recombine_stvx_pattern): Likewise.
19262
19263 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
19264
19265         * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
19266         undocumented switches.
19267         (-mpower9-dform-vector): Likewise.
19268         (-mpower9-dform): Likewise.
19269         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
19270         comments to delete references to -mpower9-dform* switches.
19271         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
19272         Delete reference to -mpower9-dform* switches, test for
19273         -mpower9-vector instead.
19274         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
19275         (OTHER_P9_VECTOR_MASKS): Likewise.
19276         (POWERPC_MASKS): Likewise.
19277         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
19278         tests against -mpower9-dform* to -mpower9-vector.  Delete code
19279         that checked for -mpower9-dform* consistancy with other options.
19280         Add test for -mpower9-misc to enable other power9 switches.
19281         (rs6000_init_hard_regno_mode_ok): Likewise.
19282         (rs6000_option_override_internal): Likewise.
19283         (rs6000_emit_prologue): Likewise.
19284         (rs6000_emit_epilogue): Likewise.
19285         (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
19286         (rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
19287         (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
19288         -mpower9-vector.
19289         (emit_fusion_p9_store): Likewise.
19290         * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
19291         resetting these macros if the assembler does not support ISA 3.0
19292         instructions.
19293         (TARGET_P9_DFORM_VECTOR): Likewise.
19294         * config/rs6000/rs6000.md (peepholes to optimize altivec memory):
19295         Change to use -mpower9-vector instead of -mpower9-dform-scalar.
19296
19297 2017-08-25  Alan Modra  <amodra@gmail.com>
19298
19299         PR rtl-optimization/81747
19300         * cse.c (cse_extended_basic_block): Don't attempt to record
19301         equivalences for degenerate conditional branches that branch
19302         to their fall-through.
19303
19304 2017-08-24  Martin Sebor  <msebor@redhat.com>
19305
19306         PR middle-end/81908
19307         * gimple-fold.c (size_must_be_zero_p): New function.
19308         (gimple_fold_builtin_memory_op): Call it.
19309
19310 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
19311
19312         * config/rs6000/mm_malloc.h: New file.
19313
19314 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
19315
19316         PR tree-optimization/81913
19317         * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
19318         analysis when either IVs in condition can wrap.
19319
19320 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
19321
19322         * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
19323         * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
19324
19325 2017-08-24  Richard Biener  <rguenther@suse.de>
19326
19327         PR target/81921
19328         * targhooks.c (default_target_can_inline_p): Properly
19329         use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
19330         is present and always compare.
19331         * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
19332         infer -mfpmath=sse from TARGET_SSE_P.
19333         (ix86_can_inline_p): Properly use target_option_default_node when
19334         no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
19335
19336 2017-08-24  Richard Biener  <rguenther@suse.de>
19337
19338         PR debug/81936
19339         * dwarf2out.c (output_die): Handle flag_generate_offload like
19340         flag_generate_lto.
19341         (output_comp_unit): Likewise.
19342         (gen_array_type_die): Likewise.
19343         (dwarf2out_early_finish): Likewise.
19344         (note_variable_value_in_expr): Likewise.
19345         (dwarf2out_finish): Likewise.  Adjust assert.
19346         * cgraphunit.c (symbol_table::compile): Move setting of
19347         flag_generate_offload earlier ...
19348         (symbol_table::finalize_compilation_unit): ... here, before
19349         early debug finalization.
19350
19351 2017-08-24  Richard Biener  <rguenther@suse.de>
19352
19353         * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
19354         and ipa-fnsummary.h.
19355         (ix86_can_inline_p): When ix86_fpmath flags do not match
19356         check whether the callee uses FP math at all.
19357
19358 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
19359
19360         PR middle-end/81931
19361         * tree-ssanames.c (get_nonzero_bits): Use element_precision
19362         instead of TYPE_PRECISION.
19363
19364 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
19365             Alan Hayward  <alan.hayward@arm.com>
19366             David Sherwood  <david.sherwood@arm.com>
19367
19368         * combine.c (make_extraction): Use subreg_offset_from_lsb.
19369
19370 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
19371
19372         * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
19373         Remove field.
19374         (ix86_frame::stack_realign_allocate): New field.
19375         (struct machine_frame_state): Modify comments.
19376         (machine_frame_state::sp_realigned_fp_end): New field.
19377         * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
19378         layout calculation.
19379         (sp_valid_at): Add assertion to assure no attempt to access invalid
19380         offset of a realigned stack.
19381         (fp_valid_at): Likewise.
19382         (choose_baseaddr): Modify comments.
19383         (ix86_emit_outlined_ms2sysv_save): Adjust to changes in
19384         ix86_expand_prologue.
19385         (ix86_expand_prologue): Modify stack realignment and allocation.
19386         (ix86_expand_epilogue): Modify comments.
19387         * doc/sourcebuild.texi: Add documentation for target selectors avx2,
19388         avx2_runtime, avx512f, and avx512f_runtime.
19389
19390 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
19391
19392         * config/i386/i386.opt: Remove unneeded Init(0) initializations.
19393         (mstackrealign): Do not init to -1.
19394         * config/i386/i386.c (ix86_option_override_internal):
19395         Check opts_set, not opts when setting default value of
19396         opts->x_ix86_force_align_arg_pointer.
19397
19398 2017-08-23  Richard Biener  <rguenther@suse.de>
19399
19400         * function.c (fndecl_name): Use verbosity 1 (no arguments) for
19401         lang_hooks.decl_printable_name.
19402         * print-rtl-function.c (print_rtx_function): Likewise.
19403         * tree-pretty-print.c (dump_function_header): Likewise.
19404
19405 2017-08-23  Richard Biener  <rguenther@suse.de>
19406
19407         PR lto/81940
19408         * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
19409         -g0 at compile-time.
19410
19411 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19412
19413         PR middle-end/19706
19414         * doc/sourcebuild.texi (Other hardware attributes):
19415         Document xorsign.
19416
19417 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19418
19419         PR middle-end/19706
19420         * tree-ssa-math-opts.c (convert_expand_mult_copysign):
19421         Fix single-use check.
19422
19423 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
19424
19425         * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
19426
19427 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19428
19429         * doc/install.texi: Modify to add more details on running selected
19430         tests.
19431
19432 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19433
19434         * config/i386/i386.c (ix86_option_override_internal): Error when -mx32
19435         is combined with -mabi=ms.
19436         (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
19437         ms_abi.
19438
19439 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19440
19441         PR tree-optimization/81488
19442         * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
19443         and cached_basis fields.
19444         (MAX_SPREAD): New constant.
19445         (alloc_cand_and_find_basis): Initialize new fields.
19446         (clear_visited): New function.
19447         (create_phi_basis_1): Rename from create_phi_basis, set visited
19448         and cached_basis fields.
19449         (create_phi_basis): New wrapper function.
19450         (phi_add_costs_1): Rename from phi_add_costs, add spread
19451         parameter, set visited field, short-circuit when limits reached.
19452         (phi_add_costs): New wrapper function.
19453         (record_phi_increments_1): Rename from record_phi_increments, set
19454         visited field.
19455         (record_phi_increments): New wrapper function.
19456         (phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
19457         (phi_incr_cost): New wrapper function.
19458         (all_phi_incrs_profitable_1): Rename from
19459         all_phi_incrs_profitable, set visited field.
19460         (all_phi_incrs_profitable): New wrapper function.
19461
19462 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
19463             Alan Hayward  <alan.hayward@arm.com>
19464             David Sherwood  <david.sherwood@arm.com>
19465
19466         * rtl.h (paradoxical_subreg_p): Define inline, and add a version
19467         that takes the outer and inner modes.
19468         * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
19469         comparison as the canonical test for a paradoxical subreg.
19470         * combine.c (simplify_set): Use paradoxical_subreg_p.
19471         (make_extraction): Likewise.
19472         (force_to_mode): Likewise.
19473         (rtx_equal_for_field_assignment_p): Likewise.
19474         (gen_lowpart_for_combine): Likewise.
19475         (simplify_comparison): Likewise.
19476         * cse.c (equiv_constant): Likewise.
19477         * expmed.c (store_bit_field_1): Likewise.
19478         * final.c (alter_subreg): Likewise.
19479         * fwprop.c (propagate_rtx): Likewise.
19480         (forward_propagate_subreg): Likewise.
19481         * ira-conflicts.c (ira_build_conflicts): Likewise.
19482         * lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
19483         * lra-constraints.c (curr_insn_transform): Likewise.
19484         (split_reg): Likewise.
19485         * lra-eliminations.c (move_plus_up): Likewise.
19486         (lra_eliminate_regs_1): Likewise.
19487         * recog.c (general_operand): Likewise.
19488         * ree.c (combine_reaching_defs): Likewise.
19489         * reload.c (push_reload): Likewise.
19490         (find_reloads): Likewise.
19491         * reload1.c (elimination_effects): Likewise.
19492         (compute_reload_subreg_offset): Likewise.
19493         (choose_reload_regs): Likewise.
19494         * rtlanal.c (subreg_lsb_1): Likewise.
19495         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
19496         (simplify_subreg): Likewise.
19497         * var-tracking.c (track_loc_p): Likewise.
19498         * emit-rtl.c (byte_lowpart_offset): Likewise.
19499         (paradoxical_subreg_p): Delete out-of-line definition.
19500
19501 2017-08-22  Jeff Law  <law@redhat.com>
19502
19503         PR tree-optimization/81741
19504         PR tree-optimization/71947
19505         * tree-ssa-dom.c: Include tree-inline.h.
19506         (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
19507         equivalences if one is more expensive to compute than the other.
19508         * tree-ssa-scopedtables.h (class const_or_copies): Make
19509         record_const_or_copy_raw method private.
19510         (class avail_exprs_stack): New method simplify_binary_operation.
19511         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
19512         avail_exprs_stack::simplify_binary_operation as needed.
19513         (avail_exprs_stack::simplify_binary_operation): New function.
19514
19515 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
19516
19517         * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
19518         * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
19519         (DOT_SYMBOLS): Likewise.
19520         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
19521         (RELOCATABLE_NEEDS_FIXUP): Likewise.
19522         (RS6000_ABI_NAME): Likewise.
19523         (TARGET_CMODEL): Likewise.
19524         (TOC_SECTION_ASM_OP): Likewise.
19525         (SET_CMODEL): New macro.
19526         (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
19527
19528 2017-08-22  Richard Biener  <rguenther@suse.de>
19529
19530         * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
19531         to allow for free-lang-data replacements similar to verify_type_variant.
19532
19533 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
19534             Alan Hayward  <alan.hayward@arm.com>
19535             David Sherwood  <david.sherwood@arm.com>
19536
19537         * config/aarch64/aarch64.md (casesi): Use DImode rather than
19538         VOIDmode for the LABEL_REF.
19539
19540 2017-08-22  Richard Biener  <rguenther@suse.de>
19541
19542         * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
19543
19544 2017-08-22  Richard Biener  <rguenther@suse.de>
19545
19546         * common.opt (feliminate-dwarf2-dups): Ignore.
19547         * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
19548         * dwarf2out.c (push_new_compile_unit, pop_compile_unit,
19549         same_die_p_wrap, compute_section_prefix,
19550         is_symbol_die, assign_symbol_names, break_out_includes): Remove.
19551         (comdat_symbol_id, comdat_symbol_number): Likewise.
19552         (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
19553         Likewise.
19554         (check_duplicate_cu, record_comdat_symbol_number): Likewise.
19555         (output_die): Mark unreachable path unreachable.
19556         (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
19557         (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
19558         (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
19559         (dwarf2out_early_finish): Likewise.
19560
19561 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
19562
19563         * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
19564
19565 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
19566
19567         PR target/81910
19568         * config/avr/avr.c (avr_handle_addr_attribute): Early return if
19569         not VAR_P. Filter attribute warnings with OPT_Wattributes.
19570         (avr_attribute_table) <io, io_low, address>: Initialize
19571         .decl_required with true.
19572
19573 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19574
19575         * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
19576         undocumented debugging options.
19577         (-mvsx-scalar-double): Likewise.
19578         (-mallow-df-permute): Likewise.
19579         (-mvectorize-builtins): Likewise.
19580         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19581         (rs6000_builtin_vectorized_function): Likewise.
19582         (rs6000_builtin_md_vectorized_function): Likewise.
19583         (rs6000_opt_vars): Likewise.
19584
19585 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
19586
19587         PR target/46091
19588         * config/i386/i386.md (*btsq_imm): Rename from *btsq.
19589         (*btrq_imm): Rename from *btrq.
19590         (*btcq_imm): Rename from *btcq.
19591         (btsc): New code attribute.
19592         (*<btsc><mode>): New insn pattern.
19593         (*btr<mode>): Ditto.
19594         (*<btsc><mode>_mask): New insn_and_split pattern.
19595         (*btr<mode>_mask): Ditto.
19596
19597 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19598             Alan Hayward  <alan.hayward@arm.com>
19599             David Sherwood  <david.sherwood@arm.com>
19600
19601         * function.c (pad_below): Simplify padding calculation.
19602
19603 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19604             Alan Hayward  <alan.hayward@arm.com>
19605             David Sherwood  <david.sherwood@arm.com>
19606
19607         * target.def (function_prologue): Remove frame size argument.
19608         (function_epilogue): Likewise.
19609         * doc/tm.texi: Regenerate.
19610         * final.c (final_start_function): Update call to function_prologue.
19611         (final_end_function): Update call to function_epilogue.
19612         (default_function_pro_epilogue): Remove frame size argument.
19613         * output.h (default_function_pro_epilogue): Likewise.
19614         * config/arm/arm.c (arm_output_function_epilogue): Likewise.
19615         (arm_output_function_prologue): Likewise.
19616         * config/frv/frv.c (frv_function_prologue): Likewise.
19617         (frv_function_epilogue): Likewise.
19618         * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
19619         * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
19620         (ia64_output_function_epilogue): Likewise.
19621         * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
19622         (m32r_output_function_epilogue): Likewise.
19623         * config/microblaze/microblaze.c (microblaze_function_prologue)
19624         (microblaze_function_epilogue): Likewise.
19625         * config/mips/mips.c (mips_output_function_prologue): Likewise.
19626         (mips_output_function_epilogue): Likewise.
19627         * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
19628         (mmix_target_asm_function_epilogue): Likewise.
19629         * config/msp430/msp430.c (msp430_start_function): Likewise.
19630         * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
19631         (nds32_asm_function_epilogue): Likewise.
19632         * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
19633         * config/pa/pa.c (pa_output_function_prologue): Likewise.
19634         (pa_output_function_epilogue): Likewise.
19635         * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
19636         (rs6000_output_function_epilogue): Likewise.
19637         * config/rl78/rl78.c (rl78_start_function): Likewise.
19638         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
19639         (rs6000_output_function_epilogue): Likewise.
19640         * config/rx/rx.c (rx_output_function_prologue): Likewise.
19641         * config/sh/sh.c (sh_output_function_epilogue): Likewise.
19642         * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
19643         (sparc_asm_function_epilogue): Likewise.
19644
19645 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19646
19647         * tree.h (type_has_mode_precision_p): New function.
19648         * convert.c (convert_to_integer_1): Use it.
19649         * expr.c (expand_expr_real_2): Likewise.
19650         (expand_expr_real_1): Likewise.
19651         * fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
19652         * match.pd: Likewise.
19653         * tree-ssa-forwprop.c (simplify_rotate): Likewise.
19654         * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
19655         * tree-tailcall.c (process_assignment): Likewise.
19656         * tree-vect-loop.c (vectorizable_reduction): Likewise.
19657         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
19658         (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
19659         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
19660         (vectorizable_assignment): Likewise.
19661         (vectorizable_shift): Likewise.
19662         (vectorizable_operation): Likewise.
19663         * tree-vrp.c (register_edge_assert_for_2): Likewise.
19664
19665 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
19666
19667         * match.pd: Add pow (C, x) simplification.
19668
19669 2017-08-21  Richard Biener  <rguenther@suse.de>
19670
19671         PR tree-optimization/81900
19672         * tree-ssa-pre.c (compute_antic_aux): Properly compute changed
19673         for blocks with abnormal predecessors.
19674         (compute_antic): Do not set visited flag prematurely.
19675
19676 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
19677
19678         PR target/79883
19679         * config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
19680
19681 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19682
19683         * stor-layout.h (vector_type_mode): Move to...
19684         * tree.h (vector_type_mode): ...here.
19685         * stor-layout.c (vector_type_mode): Move to...
19686         * tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
19687
19688 2017-08-21  Richard Biener  <rguenther@suse.de>
19689
19690         * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
19691         register_external_die hooks.
19692         (debug_false_tree_charstarstar_uhwistar): Declare.
19693         (debug_nothing_tree_charstar_uhwi): Likewise.
19694         * debug.c (do_nothing_debug_hooks): Adjust.
19695         (debug_false_tree_charstarstar_uhwistar): New do nothing.
19696         (debug_nothing_tree_charstar_uhwi): Likewise.
19697         * dbxout.c (dbx_debug_hooks): Adjust.
19698         (xcoff_debug_hooks): Likewise.
19699         * sdbout.c (sdb_debug_hooks): Likewise.
19700         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
19701         * dwarf2out.c (macinfo_label_base): New global.
19702         (dwarf2out_register_external_die): New function for the
19703         register_external_die hook.
19704         (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
19705         (dwarf2_debug_hooks): Use them.
19706         (dwarf2_lineno_debug_hooks): Adjust.
19707         (struct die_struct): Add with_offset flag.
19708         (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
19709         DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
19710         DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
19711         DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
19712         DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
19713         DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
19714         defining section names for the early LTO debug variants.
19715         (reset_indirect_string): New helper.
19716         (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
19717         (print_dw_val): Add support for offsetted symbol references.
19718         (get_ultimate_context): Split out from is_cxx.
19719         (is_cxx): Use get_ultimate_context.
19720         (is_fortran): Add decl overload.
19721         (compute_comp_unit_symbol): Split out worker from
19722         compute_section_prefix.
19723         (compute_section_prefix): Call compute_comp_unit_symbol and
19724         set comdat_type_p here.
19725         (output_die): Skip DIE symbol output for the LTO added one.
19726         Handle DIE symbol references with offset.
19727         (output_comp_unit): Guard section name mangling properly.
19728         For LTO debug sections emit a symbol at the section beginning
19729         which we use to refer to its DIEs.
19730         (add_abstract_origin_attribute): For DIEs registered via
19731         dwarf2out_register_external_die directly refer to the early
19732         DIE rather than indirectly through the shadow one we created.
19733         Remove obsolete call to dwarf2out_abstract_function for
19734         non-function/block origins.
19735         (gen_array_type_die): When generating early LTO debug do
19736         not emit DW_AT_string_length.
19737         (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
19738         late when in LTO.  As suggested place a gcc_unreachable for
19739         the DECL_ABSTRACT_P case.
19740         (gen_subprogram_die): Avoid another specification DIE
19741         for early built declarations/definitions for the late LTO case.
19742         (gen_variable_die): Add type references for late duplicated VLA dies
19743         when in late LTO.
19744         (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
19745         we have the abstract instance already.
19746         (process_scope_var): Adjust decl DIE contexts in LTO which
19747         first puts them in limbo.
19748         (gen_decl_die): Do not generate type DIEs late apart from
19749         types for VLAs or for decls we do not yet have a DIE.  Do not
19750         call dwarf2out_abstract_function late.
19751         (dwarf2out_early_global_decl): Make sure to create DIEs
19752         for abstract instances of a decl first.
19753         (dwarf2out_late_global_decl): Adjust comment.
19754         (output_macinfo_op): With multiple macro sections use
19755         macinfo_label_base to distinguish labels.
19756         (output_macinfo): Likewise.  Update macinfo_label_base.
19757         Pass in the line info label.
19758         (note_variable_value_in_expr): When generating LTO resolve
19759         all variable values here by generating DIEs as needed.
19760         (init_sections_and_labels): Add early LTO debug flag parameter
19761         and generate different sections and names if set.  Add generation
19762         counter for the labels so we can have multiple of them.
19763         (reset_dies): Helper to allow DIEs to be output multiple times.
19764         (dwarf2out_finish): When outputting DIEs to the fat part of an
19765         LTO object first reset DIEs.
19766         (dwarf2out_early_finish): Output early DIEs when generating LTO.
19767         (modified_type_die): Check for decl_ultimate_origin being self
19768         before recursing.
19769         (gen_type_die_with_usage): Likewise.
19770         (gen_typedef_die): Allow decl_ultimate_origin being self.
19771         (set_decl_abstract_flags): Remove.
19772         (set_block_abstract_flags): Likewise.
19773         (dwarf2out_abstract_function): Treat the early generated DIEs
19774         as the abstract copy and only add DW_AT_inline and
19775         DW_AT_artificial here and call set_decl_origin_self.
19776         If the DIE has an abstract origin don't do anything.
19777         * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
19778         if we have none yet (Go fails to build one, PR78628).
19779         (variably_modified_type_p): Prevent endless recursion for Ada
19780         cyclic pointer types.
19781         * lto-streamer-in.c: Include debug.h.
19782         (dref_queue): New global.
19783         (lto_read_tree_1): Stream in DIE references.
19784         (lto_input_tree): Register DIE references.
19785         (input_function): Stream DECL_DEBUG_ARGS.
19786         * lto-streamer-out.c: Include debug.h.
19787         (lto_write_tree_1): Output DIE references.
19788         (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
19789         Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
19790         (output_function): Stream DECL_DEBUG_ARGS.
19791         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
19792         Stream DECL_ABSTRACT_ORIGIN.
19793         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
19794         (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
19795         DECL_CONTEXT for file-scope decls.
19796         * lto-streamer.h (struct dref_entry): Declare.
19797         (dref_queue): Likewise.
19798         * cfgexpand.c (pass_expand::execute): Do not call the
19799         outlining_inline_function hook here.
19800         * lto-wrapper.c (debug_obj): New global.
19801         (tool_cleanup): Unlink it if required.
19802         (debug_objcopy): New function.
19803         (run_gcc): Handle early debug sections in the IL files by
19804         extracting them to separate files, partially linkin them and
19805         feeding the result back as result to the linker.
19806         * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
19807         DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
19808         DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
19809         sections into a separate segment.
19810         * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
19811         segments.
19812         (darwin_asm_dwarf_section): Likewise.
19813         (darwin_asm_output_dwarf_offset): Likewise.
19814         * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
19815
19816 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19817             Alan Hayward  <alan.hayward@arm.com>
19818             David Sherwood  <david.sherwood@arm.com>
19819
19820         * read-md.h (md_reader::record_potential_iterator_use): Replace
19821         pointer argument with an rtx and an index.
19822         * read-rtl.c (iterator_group::apply_iterator): Likewise.
19823         (apply_mode_iterator): Likewise.
19824         (apply_code_iterator): Likewise.
19825         (apply_int_iterator): Likewise.
19826         (apply_subst_iterator): Likewise.
19827         (record_iterator_use): Likewise.
19828         (record_attribute_use): Likewise.
19829         (md_reader::record_potential_iterator_use): Likewise.  Update calls
19830         to record_iterator_use and apply_iterator.
19831         (iterator_use): Replace ptr with x and index.
19832         (attribute_use): Likewise.
19833         (apply_attribute_uses): Update calls to apply_iterator.
19834         (apply_iterators): Likewise.  Update initialization of iterator_use.
19835         (rtx_reader::read_rtx_code): Update calls to record_iterator_use
19836         and record_potential_iterator_use.
19837         (rtx_reader::read_rtx_operand): Likewise.
19838
19839 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19840             Alan Hayward  <alan.hayward@arm.com>
19841             David Sherwood  <david.sherwood@arm.com>
19842
19843         * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
19844         CONST_WIDE_INT.
19845
19846 2017-08-21  Richard Biener  <rguenther@suse.de>
19847
19848         PR middle-end/81884
19849         * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
19850         at struct end conservatively when comparing common bases.
19851
19852 2017-08-21  Richard Biener  <rguenther@suse.de>
19853
19854         * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
19855         (mem_ref_in_stmt): Remove.
19856         (determine_max_movement): Use ref index to get at the reference.
19857         (invariantness_dom_walker::before_dom_children): Deal with
19858         lim data already initialized.
19859         (gather_mem_refs_stmt): Initialize lim data and record ref index.
19860
19861 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
19862
19863         * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
19864         (TARGET_ISA_ROUND): Ditto.
19865         (TARGET_ROUND): Ditto.
19866         * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
19867         * config/i386/i386.md: Ditto.
19868         * config/i386/sse.md: Ditto.
19869         * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
19870         with OPTION_MASK_ISA_SSE4_1.
19871
19872 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
19873
19874         PR target/81894
19875         * doc/extend.texi (x86 Built-in Functions): Correct the name of
19876         __builtin_ia32_lzcnt_u16.
19877
19878 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
19879
19880         PR target/80210
19881         * config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
19882         (rs6000_set_current_function): Rewrite function to use it.
19883
19884 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
19885
19886         PR c/53037
19887         * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
19888         and TYPE_WARN_IF_NOT_ALIGN.
19889         * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
19890         (handle_warn_if_not_align): New.
19891         (place_union_field): Call handle_warn_if_not_align.
19892         (place_field): Call handle_warn_if_not_align.
19893         Copy TYPE_WARN_IF_NOT_ALIGN.
19894         (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
19895         (layout_type): Likewise.
19896         * tree-core.h (tree_type_common): Add warn_if_not_align.  Set
19897         spare to 18.
19898         (tree_decl_common): Add warn_if_not_align.
19899         * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
19900         * tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
19901         (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
19902         (DECL_WARN_IF_NOT_ALIGN): Likewise.
19903         (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
19904         * doc/extend.texi: Document warn_if_not_aligned attribute.
19905         * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
19906
19907 2017-08-17  Martin Liska  <mliska@suse.cz>
19908
19909         PR bootstrap/81864
19910         * tree-loop-distribution.c (ddrs_table): Change type to pointer type.
19911         (get_data_dependence): Use it as pointer type.
19912         (distribute_loop): Likewise.
19913
19914 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19915
19916         * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
19917         (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
19918         (p8_vmrgow_<mode>_direct): New define_insn.
19919         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
19920         handle endianness for vmrgew and vmrgow permute patterns.
19921
19922 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
19923
19924         * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
19925         * config/rs6000/rs6000-cpus.def: Remove comment.
19926         (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
19927         (POWERPC_MASKS): Likewise.
19928         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
19929         use of TARGET_VSX_TIMODE.
19930         (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
19931         (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
19932         TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
19933         (rs6000_option_override_internal): Remove dead code.
19934         (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
19935         (rs6000_legitimize_reload_address): Likewise.
19936         (rs6000_legitimate_address_p): Likewise.
19937         (rs6000_opt_masks): Delete "vsx-timode".
19938         (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
19939         from function comment.
19940         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
19941         * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
19942         (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
19943         condition.
19944         * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
19945         * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
19946         * config/rs6000/vsx.md (VSX_LE_128): Likewise.
19947         (VSX_TI): Likewise.
19948         (VSX_M): Likewise.
19949         (define_peephole2): Likewise.
19950
19951 2017-08-17  Martin Sebor  <msebor@redhat.com>
19952
19953         PR c/81859
19954         * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
19955         past the end of an array.
19956         (test_pp_format): Add test cases.
19957
19958 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
19959
19960         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
19961         missing ECF_NOTHROW flags.
19962
19963 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
19964
19965         PR target/72804
19966         * config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
19967         operands residing in integer registers.
19968         (*vsx_le_perm_load_<mode>): Likewise.
19969         (*vsx_le_perm_store_<mode>): Likewise.
19970         (define_peephole2): Add peepholes to optimize the above.
19971
19972 2017-08-17  Marek Polacek  <polacek@redhat.com>
19973
19974         PR middle-end/81814
19975         * fold-const.c (operand_equal_for_comparison_p): Remove code that used
19976         to mimic what shorten_compare did.  Change the return type to bool.
19977         (fold_cond_expr_with_comparison): Update call to
19978         operand_equal_for_comparison_p.
19979         (fold_ternary_loc): Likewise.
19980
19981 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
19982
19983         * aarch64-simd.md (mov<mode>): No longer force zero immediate into
19984         register.
19985         (*aarch64_simd_mov<mode>): Add new case for stp using zero immediate.
19986
19987 2017-08-17  Richard Biener  <rguenther@suse.de>
19988
19989         * tree-ssa-structalias.c (solve_graph): When propagating
19990         to successors update the graphs succ edges and avoid duplicate work.
19991
19992 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
19993
19994         PR target/81861
19995         * config/i386/i386.c (ix86_option_override_internal): Save target
19996         specific options after ix86_stack_protector_guard_reg was changed.
19997
19998 2017-08-17  Richard Biener  <rguenther@suse.de>
19999
20000         PR tree-optimization/81827
20001         * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
20002         (new_var_info): Initialize it conservatively.
20003         (get_call_vi): Mark register vars.
20004         (new_scalar_tmp_constraint_exp): Likewise.
20005         (handle_rhs_call): Likewise.
20006         (handle_const_call): Likewise.
20007         (create_function_info_for): Likewise.
20008         (solve_constraints): Sort varinfos to separate register from
20009         non-register vars to pack points-to solution bitmaps during
20010         iteration.
20011
20012 2017-08-17  Marek Polacek  <polacek@redhat.com>
20013
20014         * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
20015
20016 2017-08-17  Richard Biener  <rguenther@suse.de>
20017
20018         * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
20019         to true when overflow is undefined and we saturated the result.
20020
20021 2017-08-17  Alan Modra  <amodra@gmail.com>
20022
20023         PR target/80938
20024         * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
20025         Don't use store multiple if only one reg needs saving.
20026         (interesting_frame_related_regno): New function.
20027         (rs6000_frame_related): Don't emit frame info for regs that
20028         don't need saving.
20029         (rs6000_emit_epilogue): Likewise.
20030
20031 2017-08-16  Nathan Sidwell  <nathan@acm.org>
20032
20033         * tree-core.h (tree_type_non_common): Rename binfo to lang_1.
20034         * tree.h (TYPE_BINFO): Use type_non_common.maxval.
20035         (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
20036         * tree.c (free_lang_data_in_type): Use else-if chain.  Always
20037         clear TYPE_LANG_1.  Remove obsolete member-function stripping.
20038         (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
20039         (verify_type): Adjust for TYPE_BINFO move.
20040         * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
20041         process TYPE_BINFO directly.
20042         (hash_tree): Likewise.
20043         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
20044         Likewise.
20045         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
20046         Likewise.
20047
20048 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
20049
20050         * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
20051
20052 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
20053
20054         PR target/46091
20055         * config/i386/i386.md (*anddi_1_btr): Change predicates of
20056         operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
20057         Add ix86_binary_operator_ok to insn constraint.
20058         (*iordi_1_bts): Ditto.
20059         (*xordi_1_btc): Ditto.
20060         (*btsq): Change predicate of operand 0 to nonimmediate_operand.
20061         Update corresponding peephole2 pattern.
20062         (*btrq): Ditto.
20063         (*btcq): Ditto.
20064
20065 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
20066
20067         PR tree-optimization/81832
20068         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
20069         copy loop header which has IFN_LOOP_DIST_ALIAS call.
20070
20071 2017-08-16  Marek Polacek  <polacek@redhat.com>
20072
20073         PR middle/81695
20074         * fold-const.c (fold_indirect_ref_1): Restore original behavior
20075         regarding size_zero_node.
20076
20077 2017-08-16  Martin Liska  <mliska@suse.cz>
20078
20079         PR target/81753
20080         * config.gcc: Respect previously set extra_objs in case
20081         of darwin target.
20082
20083 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
20084
20085         PR tree-optimization/81835
20086         * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
20087         the phi SSA_NAME.  Check that the condition in a COND_EXPR does
20088         not depend on the phi.
20089
20090 2017-08-16  Alan Modra  <amodra@gmail.com>
20091
20092         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
20093         dead code.
20094
20095 2017-08-16  Alan Modra  <amodra@gmail.com>
20096
20097         * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
20098         (save_reg_p): ..into this.  Update all callers.
20099         (first_reg_to_save): Simplify.
20100
20101 2017-08-16  Alan Modra  <amodra@gmail.com>
20102
20103         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
20104         fixed regs.
20105
20106 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
20107
20108         PR target/78460
20109         PR target/67712
20110         * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
20111         constant count if that count is less than 32.
20112
20113 2017-08-15  Nathan Sidwell  <nathan@acm.org>
20114
20115         * gcc.c (execute): Emit friendlier message if inferior is killed
20116         by an external cause.
20117
20118 2017-08-15  Richard Biener  <rguenther@suse.de>
20119
20120         PR tree-optimization/81790
20121         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
20122         CONSTRUCTORs from simplifying and VN.
20123
20124 2017-08-14  Martin Sebor  <msebor@redhat.com>
20125
20126         * builtin-attrs.def: Add comments.
20127
20128 2017-08-14  Martin Sebor  <msebor@redhat.com>
20129
20130         PR c/81117
20131         * doc/extend.texi (attribute nonstring): Document new attribute.
20132
20133 2017-08-14  Martin Sebor  <msebor@redhat.com>
20134
20135         PR c/81117
20136         * tree-diagnostic.c (default_tree_printer): Handle %G.
20137         * gimple-pretty-print.h (percent_G_format): Declare new function.
20138         * gimple-pretty-print.c (percent_G_format): Define.
20139         * tree-pretty-print.c (percent_K_format): Add argument.
20140
20141 2017-08-14  Martin Sebor  <msebor@redhat.com>
20142
20143         PR translation/79998
20144         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
20145         Remove a stray space.
20146
20147 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
20148
20149         PR target/46091
20150         * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
20151         (*iordi_1_bts): Ditto.
20152         (*xordi_1_btc): Ditto.
20153
20154 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20155
20156         PR target/79845
20157         * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
20158         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20159         Likewise.
20160         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
20161         quoted strings, and make more translator-friendly.
20162         (darwin_rs6000_override_options): Likewise.
20163         (rs6000_option_override_internal): Likewise.
20164         (rs6000_return_in_memory): Fix overlong line.
20165         (init_cmulative_args): Use quoted strings, and make more
20166         translator-friendly.
20167         (rs6000_pass_by_reference): Fix overlong line.
20168         (def_builtin): Use quoted strings.
20169         (altivec_expand_predicate_builtin): Use quoted strings, and make
20170         more translator-friendly.
20171         (htm_expand_builtin): Use quoted strings.
20172         (cpu_expand_builtin): Use quoted strings, and make more
20173         translator-friendly.
20174         (altivec_expand_builtin): Likewise.
20175         (paired_expand_predicate_builtin): Likewise.
20176         (rs6000_invalid_builtin): Likewise.
20177         (builtin_function_type): Use quoted strings.
20178         (rs6000_expand_split_stack_prologue): Use quoted strings, and make
20179         more translator-friendly.
20180         (rs6000_trampoline_init): Likewise.
20181         (rs6000_handle_altivec_attribute): Likewise.
20182         (rs6000_inner_target_options): Use quoted strings.
20183         (rs6000_disable_incompatible_switches): Likewise.
20184         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
20185         strings, and make more translator-friendly.
20186         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
20187
20188 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
20189
20190         PR tree-optimization/81799
20191         * tree-loop-distribution.c (version_loop_by_alias_check): Force
20192         cond_expr to simple gimple operand.
20193
20194 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
20195
20196         PR middle-end/46932
20197         * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
20198
20199 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
20200
20201         PR target/81754
20202         PR target/81268
20203         * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
20204         * config/avr/avr.md (gasisr, *gasisr): Use it instead of
20205         TARGET_GASISR_PROLOGUES.
20206         * config/avr/avr.c (avr_option_override): Same.
20207         (avr_pass_pre_proep::execute): Same.
20208
20209 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
20210
20211         PR target/81820
20212         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
20213         frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
20214
20215 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
20216
20217         * config/i386/i386.md (*load_tp_<mode>): Redefine as
20218         define_insn_and_split.  Split to a memory load from 0 in
20219         DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
20220         using PTR mode iterator.
20221         (*load_tp_x32_zext"): Redefine as define_insn_and_split.
20222         Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
20223         (*add_tp_<mode>): Redefine as define_insn_and_split.
20224         Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
20225         address space.  Merge with *add_tp_x32 using PTR mode iterator.
20226         (*add_tp_x32_zext"): Redefine as define_insn_and_split.
20227         Split to an add with a  memory load from 0 in
20228         DEFAULT_TLS_SEG_REG address space.
20229
20230 2017-08-12  Andrew Pinski  <apinski@cavium.com>
20231
20232         * config/aarch64/aarch64-option-extensions.def (rdma):
20233         Fix feature string to what Linux prints out in /proc/cpuinfo.
20234
20235 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
20236
20237         PR ada/79542
20238         * dwarf2out.c (modified_type_die): For C typedef types that have
20239         an ultimate origin, process the ultimate origin instead of the
20240         input type.
20241         (gen_typedef_die): Assert that input DECLs have no ultimate
20242         origin.
20243         (gen_type_die_with_usage): For typedef variants that have an
20244         ultimate origin, just call gen_decl_die on the original DECL.
20245         (process_scope_var): Avoid creating DIEs for local typedefs and
20246         concrete static variables.
20247
20248 2017-08-12  Alan Modra  <amodra@gmail.com>
20249
20250         PR target/81170
20251         PR target/81295
20252         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
20253         match gnu-user.h startfile.
20254         (ENDFILE_LINUX_SPEC): Similarly.
20255
20256 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
20257
20258         PR lto/81430
20259         * config/nvptx/nvptx.c (nvptx_override_options_after_change):
20260         Remove function.
20261         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
20262
20263 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
20264         * config/aarch64/aarch64.md (mov<mode>): Change.
20265         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
20266         aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
20267         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
20268
20269 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
20270
20271         * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
20272         for storage order barriers.
20273
20274 2017-08-11  Martin Liska  <mliska@suse.cz>
20275
20276         PR tree-opt/79987
20277         * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
20278         variables of void type.
20279
20280 2017-08-11  Martin Liska  <mliska@suse.cz>
20281
20282         * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
20283         TARGET_SUPPORTS_ALIASES.
20284         * cgraph.c (cgraph_node::create_same_body_alias): Likewise.
20285         * ipa-visibility.c (can_replace_by_local_alias): Likewise.
20286         (optimize_weakref): Likewise.
20287         * symtab.c (symtab_node::noninterposable_alias): Likewise.
20288         * varpool.c (varpool_node::create_extra_name_alias): Likewise.
20289         * defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
20290
20291 2017-08-11  Martin Liska  <mliska@suse.cz>
20292
20293         PR ipa/81213
20294         * config/i386/i386.c (make_resolver_func): Do complete
20295         refactoring of the function.
20296
20297 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20298
20299         PR target/81708
20300         * config/i386/i386.opt (mstack-protector-guard-symbol=): New option
20301         * config/i386/i386.c (ix86_stack_protect_guard): Use
20302         ix86_stack_protect_guard_symbol_str to generate varible declaration.
20303         * doc/invoke.texi (x86 Options): Document
20304         -mstack-protector-guard-symbol= option.
20305
20306 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20307
20308         * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
20309         * config/i386/i386.c (ix86_split_stack_guard): New function.
20310         (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
20311         (ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
20312         (i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
20313         (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
20314         * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
20315         (split_stack_space_check): Call ix86_split_stack_guard.
20316
20317 2017-08-10  Martin Sebor  <msebor@redhat.com>
20318
20319         * print-tree.c (print_node): Print location using the established
20320         format %s:%i%i.
20321         Replace spaces with colons.
20322         (debug_raw, debug): Ditto.
20323
20324 2017-08-10  Martin Sebor  <msebor@redhat.com>
20325
20326         PR c++/81586
20327         * pretty-print.c (pp_format): Correct the handling of %s precision.
20328
20329 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
20330
20331         PR target/81736
20332         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20333         to ...
20334         (ix86_finalize_stack_frame_flags): This.  Also clear
20335         frame_pointer_needed if -fno-omit-frame-pointer is used without
20336         stack access.
20337         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20338         with ix86_finalize_stack_frame_flags.
20339         (ix86_expand_epilogue): Likewise.
20340         (ix86_expand_split_stack_prologue): Likewise.
20341         * doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
20342
20343 2017-08-10  Martin Liska  <mliska@suse.cz>
20344
20345         PR c++/81355
20346         * c-attribs.c (handle_target_attribute):
20347         Report warning for an empty string argument of target attribute.
20348
20349 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
20350
20351         PR c/81687
20352         * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
20353         LABEL_DECLs.
20354         * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
20355         or DECL_NONLOCAL labels.
20356         (move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
20357         or DECL_NONLOCAL labels here.
20358
20359 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
20360
20361         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
20362         to indicate when early gimple folding has been disabled.
20363         (rs6000_gimple_fold_builtin): Add debug content.
20364         (rs6000_invalid_builtin): Fix whitespace.
20365         (rs6000_expand_builtin): Fix whitespace.
20366         * config/rs6000/rs6000.opt: Add option for -mfold-gimple.
20367
20368 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
20369
20370         PR target/80938
20371         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
20372         SAVE_MULTIPLE if not all the registers that saves, should be saved.
20373
20374 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
20375
20376         * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
20377         (qdf24xx): Likewise.
20378         * config/aarch64/aarch64.md: Include falkor.md.
20379         * config/aarch64/falkor.md: New.
20380
20381 2017-08-09  Marek Polacek  <polacek@redhat.com>
20382
20383         PR c/81233
20384         * diagnostic-core.h (emit_diagnostic_valist): Add declaration.
20385         * diagnostic.c (emit_diagnostic): Add a comment.
20386         (emit_diagnostic_valist): New function.
20387
20388 2017-08-09  Marek Polacek  <polacek@redhat.com>
20389
20390         PR c/81417
20391         * input.c (make_location): New overload.
20392         * input.h (make_location): Declare.
20393
20394 2017-08-08  Alan Modra  <amodra@gmail.com>
20395             H.J. Lu  <hongjiu.lu@intel.com>
20396
20397         PR driver/81523
20398         * gcc.c (NO_PIE_SPEC): Delete.
20399         (PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
20400         exclusion..
20401         (LINK_PIE_SPEC): ..to here.
20402         (LINK_COMMAND_SPEC): Support -no-pie.
20403         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
20404         chain of crtbegin*.o selection, update for PIE_SPEC changes and
20405         format.
20406         (GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
20407         * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
20408         (ENDFILE_CRTEND_SPEC): Similarly.
20409
20410 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
20411
20412         PR target/81708
20413         * config/i386/i386.opt (mstack-protector-guard-reg=): New option
20414         (mstack-protector-guard-offset=): Ditto.
20415         * config/i386/i386.c (ix86_option_override): Handle
20416         -mstack-protector-guard-reg= and -mstack-protector-guard-offset=
20417         options.
20418         (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
20419         ix86_stack_protect_guard_offset variables.
20420         (TARGET_STACK_PROTECT_GUARD): Always define.
20421         * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
20422         and -mstack-protector-guard-offset= options.
20423
20424 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20425
20426         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
20427         boundary case for the last candidate.
20428
20429 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20430
20431         * doc/invoke.texi: Document -ftree-loop-distribution for O3.
20432         * opts.c (default_options_table): Add OPT_ftree_loop_distribution.
20433
20434 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20435
20436         PR middle-end/19706
20437         * config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
20438         * config/aarch64/aarch64-builtins.c
20439         (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
20440         * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
20441         * config/aarch64/aarch64-simd.md: Added xorsign<mode>3
20442
20443 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20444             Andrew Pinski <pinskia@gmail.com>
20445
20446         PR middle-end/19706
20447         * internal-fn.def (XORSIGN): New.
20448         * optabs.def (xorsign_optab): New.
20449         * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
20450         (convert_expand_mult_copysign): New.
20451         (pass_optimize_widening_mul::execute): Call
20452         convert_expand_mult_copysign.
20453
20454 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20455
20456         PR tree-optimization/81354
20457         * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
20458         Insert on edges rather than explicitly creating landing pads.
20459         (analyze_candidates_and_replace): Commit edge inserts.
20460
20461 2017-08-08  Richard Biener  <rguenther@suse.de>
20462
20463         PR middle-end/81719
20464         * tree-ssa-loop-niter.c: Include tree-dfa.h.
20465         (expand_simple_operations): Also look through ADDR_EXPRs with
20466         MEM_REF bases treating them as POINTER_PLUS_EXPR.
20467
20468 2017-08-08  Richard Biener  <rguenther@suse.de>
20469
20470         PR tree-optimization/81723
20471         * tree-vect-slp.c (struct bst_traits): New hash traits.
20472         (bst_fail): New global.
20473         (vect_build_slp_tree_2): New worker, split out from ...
20474         (vect_build_slp_tree): ... this now wrapping it with using
20475         bst_fail set to cache SLP tree build fails.  Properly handle
20476         max_tree_size.
20477         (vect_analyze_slp_instance): Allocate and free bst_fail.
20478
20479 2017-08-08  Martin Liska  <mliska@suse.cz>
20480
20481         PR tree-opt/81696
20482         * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
20483         LABEL_DECLs that can be from a different function.
20484
20485 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20486
20487         PR tree-optimization/81744
20488         * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
20489         loop's number of iterations.
20490
20491 2017-08-08  Martin Liska  <mliska@suse.cz>
20492
20493         * asan.c: Include header files.
20494         * attribs.c (build_decl_attribute_variant): New function moved
20495         from tree.[ch].
20496         (build_type_attribute_qual_variant): Likewise.
20497         (cmp_attrib_identifiers): Likewise.
20498         (simple_cst_list_equal): Likewise.
20499         (omp_declare_simd_clauses_equal): Likewise.
20500         (attribute_value_equal): Likewise.
20501         (comp_type_attributes): Likewise.
20502         (build_type_attribute_variant): Likewise.
20503         (lookup_ident_attribute): Likewise.
20504         (remove_attribute): Likewise.
20505         (merge_attributes): Likewise.
20506         (merge_type_attributes): Likewise.
20507         (merge_decl_attributes): Likewise.
20508         (merge_dllimport_decl_attributes): Likewise.
20509         (handle_dll_attribute): Likewise.
20510         (attribute_list_equal): Likewise.
20511         (attribute_list_contained): Likewise.
20512         * attribs.h (lookup_attribute): New function moved from tree.[ch].
20513         (lookup_attribute_by_prefix): Likewise.
20514         * bb-reorder.c: Include header files.
20515         * builtins.c: Likewise.
20516         * calls.c: Likewise.
20517         * cfgexpand.c: Likewise.
20518         * cgraph.c: Likewise.
20519         * cgraphunit.c: Likewise.
20520         * convert.c: Likewise.
20521         * dwarf2out.c: Likewise.
20522         * final.c: Likewise.
20523         * fold-const.c: Likewise.
20524         * function.c: Likewise.
20525         * gimple-expr.c: Likewise.
20526         * gimple-fold.c: Likewise.
20527         * gimple-pretty-print.c: Likewise.
20528         * gimple.c: Likewise.
20529         * gimplify.c: Likewise.
20530         * hsa-common.c: Likewise.
20531         * hsa-gen.c: Likewise.
20532         * internal-fn.c: Likewise.
20533         * ipa-chkp.c: Likewise.
20534         * ipa-cp.c: Likewise.
20535         * ipa-devirt.c: Likewise.
20536         * ipa-fnsummary.c: Likewise.
20537         * ipa-inline.c: Likewise.
20538         * ipa-visibility.c: Likewise.
20539         * ipa.c: Likewise.
20540         * lto-cgraph.c: Likewise.
20541         * omp-expand.c: Likewise.
20542         * omp-general.c: Likewise.
20543         * omp-low.c: Likewise.
20544         * omp-offload.c: Likewise.
20545         * omp-simd-clone.c: Likewise.
20546         * opts-global.c: Likewise.
20547         * passes.c: Likewise.
20548         * predict.c: Likewise.
20549         * sancov.c: Likewise.
20550         * sanopt.c: Likewise.
20551         * symtab.c: Likewise.
20552         * toplev.c: Likewise.
20553         * trans-mem.c: Likewise.
20554         * tree-chkp.c: Likewise.
20555         * tree-eh.c: Likewise.
20556         * tree-into-ssa.c: Likewise.
20557         * tree-object-size.c: Likewise.
20558         * tree-parloops.c: Likewise.
20559         * tree-profile.c: Likewise.
20560         * tree-ssa-ccp.c: Likewise.
20561         * tree-ssa-live.c: Likewise.
20562         * tree-ssa-loop.c: Likewise.
20563         * tree-ssa-sccvn.c: Likewise.
20564         * tree-ssa-structalias.c: Likewise.
20565         * tree-ssa.c: Likewise.
20566         * tree-streamer-in.c: Likewise.
20567         * tree-vectorizer.c: Likewise.
20568         * tree-vrp.c: Likewise.
20569         * tsan.c: Likewise.
20570         * ubsan.c: Likewise.
20571         * varasm.c: Likewise.
20572         * varpool.c: Likewise.
20573         * tree.c: Remove functions moved to attribs.[ch].
20574         * tree.h: Likewise.
20575         * config/aarch64/aarch64.c: Add attrs.h header file.
20576         * config/alpha/alpha.c: Likewise.
20577         * config/arc/arc.c: Likewise.
20578         * config/arm/arm.c: Likewise.
20579         * config/avr/avr.c: Likewise.
20580         * config/bfin/bfin.c: Likewise.
20581         * config/c6x/c6x.c: Likewise.
20582         * config/cr16/cr16.c: Likewise.
20583         * config/cris/cris.c: Likewise.
20584         * config/darwin.c: Likewise.
20585         * config/epiphany/epiphany.c: Likewise.
20586         * config/fr30/fr30.c: Likewise.
20587         * config/frv/frv.c: Likewise.
20588         * config/ft32/ft32.c: Likewise.
20589         * config/h8300/h8300.c: Likewise.
20590         * config/i386/winnt.c: Likewise.
20591         * config/ia64/ia64.c: Likewise.
20592         * config/iq2000/iq2000.c: Likewise.
20593         * config/lm32/lm32.c: Likewise.
20594         * config/m32c/m32c.c: Likewise.
20595         * config/m32r/m32r.c: Likewise.
20596         * config/m68k/m68k.c: Likewise.
20597         * config/mcore/mcore.c: Likewise.
20598         * config/microblaze/microblaze.c: Likewise.
20599         * config/mips/mips.c: Likewise.
20600         * config/mmix/mmix.c: Likewise.
20601         * config/mn10300/mn10300.c: Likewise.
20602         * config/moxie/moxie.c: Likewise.
20603         * config/msp430/msp430.c: Likewise.
20604         * config/nds32/nds32-isr.c: Likewise.
20605         * config/nds32/nds32.c: Likewise.
20606         * config/nios2/nios2.c: Likewise.
20607         * config/nvptx/nvptx.c: Likewise.
20608         * config/pa/pa.c: Likewise.
20609         * config/pdp11/pdp11.c: Likewise.
20610         * config/powerpcspe/powerpcspe.c: Likewise.
20611         * config/riscv/riscv.c: Likewise.
20612         * config/rl78/rl78.c: Likewise.
20613         * config/rx/rx.c: Likewise.
20614         * config/s390/s390.c: Likewise.
20615         * config/sh/sh.c: Likewise.
20616         * config/sol2.c: Likewise.
20617         * config/sparc/sparc.c: Likewise.
20618         * config/spu/spu.c: Likewise.
20619         * config/stormy16/stormy16.c: Likewise.
20620         * config/tilegx/tilegx.c: Likewise.
20621         * config/tilepro/tilepro.c: Likewise.
20622         * config/v850/v850.c: Likewise.
20623         * config/vax/vax.c: Likewise.
20624         * config/visium/visium.c: Likewise.
20625         * config/xtensa/xtensa.c: Likewise.
20626
20627 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
20628
20629         PR target/81593
20630         * config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
20631         constraints since the -mupper-regs-* switches have been
20632         eliminated.
20633         (vsx_concat_<mode>_1): New combiner insns to recognize inserting
20634         into a vector from a double word element that was extracted from
20635         another vector, and eliminate extra XXPERMDI instructions.
20636         (vsx_concat_<mode>_2): Likewise.
20637         (vsx_concat_<mode>_3): Likewise.
20638         (vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
20639         concat to allow optimizing inserts from previous extracts.
20640
20641 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
20642
20643         * config/i386/i386.c (ix86_stack_protect_guard): Generate
20644         memory reference to a SSP offset in TLS address space.
20645         (ix86_print_operand) <case '@'>: Remove.
20646         (ix86_print_operand_punct_valid_p): Remove '@' code.
20647         * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
20648         UNSPEC_SP_TLS_TEST.
20649         (stack_tls_protect_set_<mode>): Remove.
20650         (stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
20651         (stack_tls_protect_test_<mode>): Remove.
20652         (stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
20653
20654 2017-08-07  Olivier Hainque  <hainque@adacore.com>
20655
20656         PR target/81755
20657         * config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
20658
20659 2017-08-07  Douglas Rupp  <rupp@adacore.com>
20660
20661         * Makefile.in (install-mkheaders): Fix typo, where the multi_dir
20662         variable was referenced as multidir in command.
20663
20664 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20665
20666         PR c/69389
20667         * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
20668         BIT_FIELD_REF.
20669
20670 2017-08-07  Martin Liska  <mliska@suse.cz>
20671
20672         * config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
20673         * config/rl78/rl78.c: Add include of attribs.h.
20674         * config/sh/sh.c: Likewise.
20675         * config/v850/v850.c: Likewise.
20676
20677 2017-08-07  Tom de Vries  <tom@codesourcery.com>
20678
20679         PR middle-end/78266
20680         * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
20681
20682 2017-08-07  Martin Liska  <mliska@suse.cz>
20683
20684         * config/mips/mips.c: Include attribs.h.
20685
20686 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
20687
20688         PR fortran/68829
20689         * doc/invoke.texi: Document change in behvaior for -Ofast for
20690         Fortran.
20691
20692 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
20693
20694         * config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
20695         Use gen_frame_mem.
20696         (aarch64_pop_regs): Likewise.
20697         (aarch64_gen_load_pair): Likewise.
20698         (aarch64_save_callee_saves): Likewise.
20699         (aarch64_restore_callee_saves): Likewise.
20700
20701 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20702
20703         * config/i386/i386.c: Revert the last change.
20704
20705 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20706
20707         PR target/81736
20708         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20709         to ...
20710         (ix86_finalize_stack_frame_flags): This.  Also clear
20711         frame_pointer_needed if -fno-omit-frame-pointer is used without
20712         stack access.
20713         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20714         with ix86_finalize_stack_frame_flags.
20715         (ix86_expand_epilogue): Likewise.
20716         (ix86_expand_split_stack_prologue): Likewise.
20717
20718 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20719
20720         PR target/81743
20721         * config/i386/i386.c (get_builtin_code_for_version): Set priority
20722         to P_AES for Westmere.
20723
20724 2017-08-07  Jonathan Yong  <10walls@gmail.com>
20725
20726         * config/i386/mingw.opt (fset-stack-executable): Removed.
20727         * config/i386/cygming.opt (fset-stack-executable): Moved
20728         from mingw.opt.
20729         * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
20730
20731 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
20732
20733         * print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
20734
20735 2017-08-07  Marek Polacek  <polacek@redhat.com>
20736
20737         PR middle-end/81737
20738         * fold-const.c (fold_indirect_ref_1): Check type_domain.
20739
20740 2017-08-07  Martin Liska  <mliska@suse.cz>
20741
20742         * attribs.h (canonicalize_attr_name): New function.
20743         (cmp_attribs): Move from c-format.c and adjusted.
20744         (is_attribute_p): Moved from tree.h.
20745         * tree-inline.c: Add new includes.
20746         * tree.c (cmp_attrib_identifiers): Use cmp_attribs.
20747         (private_is_attribute_p): Remove.
20748         (private_lookup_attribute): Likewise.
20749         (private_lookup_attribute_by_prefix): Simplify.
20750         (remove_attribute): Use is_attribute_p.
20751         * tree.h: Remove removed declarations.
20752
20753 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20754
20755         PR middle-end/81698
20756         * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
20757         instead of computing it in the function.  Formatting fix.
20758         (expand_case): Don't rely on default_edge being the first edge,
20759         clear it if removing it, pass default_edge to
20760         emit_case_dispatch_table.
20761         (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
20762         fix.
20763
20764 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
20765
20766         * config/alpha/alpha.c (alpha_reorg): If trap is the last active
20767         insn in the function, emit NOP after the insn.
20768
20769 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20770
20771         * omp-expand.c (expand_oacc_for): Add missing edge probability for tile
20772         and element loops.
20773
20774 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20775
20776         * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
20777         loop.
20778
20779 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
20780
20781         PR tree-optimization/57371
20782         * match.pd: New pattern.
20783
20784 2017-08-04  Marek Polacek  <polacek@redhat.com>
20785
20786         PR middle-end/81695
20787         * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
20788         perform the computation in offset_int.
20789
20790 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20791
20792         PR tree-optimization/81136
20793         * tree-vectorizer.h: Include tree-hash-traits.h.
20794         (vec_base_alignments): New typedef.
20795         (vec_info): Add a base_alignments field.
20796         (vect_record_base_alignments): Declare.
20797         * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
20798         field.
20799         (DR_IS_CONDITIONAL_IN_STMT): New macro.
20800         (create_data_ref): Add an is_conditional_in_stmt argument.
20801         * tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
20802         the is_conditional_in_stmt field.
20803         (data_ref_loc): Add an is_conditional_in_stmt field.
20804         (get_references_in_stmt): Set the is_conditional_in_stmt field.
20805         (find_data_references_in_stmt): Update call to create_data_ref.
20806         (graphite_find_data_references_in_stmt): Likewise.
20807         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
20808         * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
20809         (vect_record_base_alignment): New function.
20810         (vect_record_base_alignments): Likewise.
20811         (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
20812         for nested statements even if we fail to compute a misalignment.
20813         Use pooled base alignments for unconditional references.
20814         (vect_find_same_alignment_drs): Compare base addresses instead
20815         of base objects.
20816         (vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
20817         * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
20818
20819 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20820
20821         * tree-vectorizer.h (vec_info): Add a constructor and destructor.
20822         Add an explicit name for the enum.  Use auto_vec for slp_instances
20823         and grouped_stores.
20824         (_loop_vec_info): Add a constructor and destructor.  Use auto_vec
20825         for all vectors.
20826         (_bb_vec_info): Add a constructor and destructor.
20827         (vinfo_for_stmt): Return NULL for uids of -1 as well.
20828         (destroy_loop_vec_info): Delete.
20829         (vect_destroy_datarefs): Likewise.
20830         * tree-vectorizer.c (vect_destroy_datarefs): Delete.
20831         (vec_info::vec_info): New function.
20832         (vec_info::~vec_info): Likewise.
20833         (vectorize_loops): Use delete instead of destroy_loop_vec_info.
20834         * tree-parloops.c (gather_scalar_reductions): Use delete instead of
20835         destroy_loop_vec_info.
20836         * tree-vect-loop.c (new_loop_vec_info): Replace with...
20837         (_loop_vec_info::_loop_vec_info): ...this.
20838         (destroy_loop_vec_info): Replace with...
20839         (_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
20840         the stmt_vec_infos.  Leave handling of vec_info information to its
20841         destructor.  Remove explicit vector releases.
20842         (vect_analyze_loop_form): Use new instead of new_loop_vec_info.
20843         (vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
20844         * tree-vect-slp.c (new_bb_vec_info): Replace with...
20845         (_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
20846         BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
20847         (destroy_bb_vec_info): Replace with...
20848         (_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
20849         information to its destructor.
20850         (vect_slp_analyze_bb_1): Use new and delete instead of
20851         new_bb_vec_info and destroy_bb_vec_info.
20852         (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
20853         single delete.
20854
20855 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20856
20857         * tree-data-ref.h (subscript): Add access_fn field.
20858         (data_dependence_relation): Add could_be_independent_p.
20859         (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
20860         (same_access_functions): Move to tree-data-ref.c.
20861         * tree-data-ref.c (ref_contains_union_access_p): New function.
20862         (access_fn_component_p): Likewise.
20863         (access_fn_components_comparable_p): Likewise.
20864         (dr_analyze_indices): Add a reference to access_fn_component_p.
20865         (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
20866         DR_ACCESS_FN.
20867         (constant_access_functions): Likewise.
20868         (add_other_self_distances): Likewise.
20869         (same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
20870         (initialize_data_dependence_relation): Use XCNEW and remove
20871         explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
20872         of access functions that have the same type.  Allow the
20873         subsequence to end with different bases in some circumstances.
20874         Record the chosen access functions in SUB_ACCESS_FN.
20875         (build_classic_dist_vector_1): Replace ddr_a and ddr_b with
20876         a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
20877         (subscript_dependence_tester_1): Likewise dra and drb.
20878         (build_classic_dist_vector): Update calls accordingly.
20879         (subscript_dependence_tester): Likewise.
20880         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
20881         DDR_COULD_BE_INDEPENDENT_P.
20882         * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
20883         comp_alias_ddrs instead of may_alias_ddrs.
20884         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
20885         New function.
20886         (vect_analyze_data_ref_dependence): Use it if
20887         DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
20888         distance vectors if that fails.
20889         (dependence_distance_ge_vf): New function.
20890         (vect_prune_runtime_alias_test_list): Use it.  Don't clear
20891         LOOP_VINFO_MAY_ALIAS_DDRS.
20892
20893 2017-08-04  Richard Biener  <rguenther@suse.de>
20894
20895         PR middle-end/81705
20896         * fold-const.c (fold_binary_loc): Properly restrict
20897         minus_var0 && minus_var1 case when associating undefined overflow
20898         entities.
20899
20900 2017-08-04  Tom de Vries  <tom@codesourcery.com>
20901
20902         * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
20903
20904 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20905
20906         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20907         Don't start diagnostic messages with a capital letter.
20908         * config/rs6000/rs6000.c (rs6000_option_override_internal):
20909         Likewise.
20910         (rs6000_invalid_builtin): Likewise.
20911         (rs6000_trampoline_init): Likewise.
20912
20913 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
20914
20915         PR target/81621
20916         * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
20917         after setting changeable df flags.
20918
20919 2017-08-03  Richard Biener  <rguenther@suse.de>
20920
20921         * tree-ssa-reassoc.c (should_break_up_subtract): Also break
20922         up if the use is in USE - X.
20923
20924 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
20925
20926         * toplev.c (dumpfile.h): New include.
20927         (internal_error_reentered): New static function.  Use it...
20928         (internal_error_function): ...here to handle reentered internal_error.
20929
20930 2017-08-03  Richard Biener  <rguenther@suse.de>
20931
20932         PR middle-end/81148
20933         * fold-const.c (split_tree): Add minus_var and minus_con
20934         arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
20935         here but always use minus_*.
20936         (associate_trees): Assert we never associate with MINUS_EXPR
20937         and NULL first operand.  Do not recurse for PLUS_EXPR operands
20938         when associating as MINUS_EXPR either.
20939         (fold_binary_loc): Track minus_var and minus_con.
20940
20941 2017-08-03  Tom de Vries  <tom@codesourcery.com>
20942
20943         PR lto/81430
20944         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
20945         ACCEL_COMPILER, apply finish_options on
20946         DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
20947
20948 2017-08-03  Tom de Vries  <tom@codesourcery.com>
20949
20950         PR target/81662
20951         * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
20952         function_entry_patch_area_size > 0.
20953
20954 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
20955
20956         PR driver/81650
20957         * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
20958         instead of 10??LU, perform unit multiplication in wide_int,
20959         don't change alloc_object_size_limit if the limit is larger
20960         than SSIZE_MAX.
20961
20962         PR tree-optimization/81655
20963         PR tree-optimization/81588
20964         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
20965         the case when ranges[i].low and high are 1 for unsigned type with
20966         precision 1.
20967
20968         PR middle-end/81052
20969         * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
20970         (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
20971
20972 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
20973
20974         * tree-vrp.h: Add include guard.
20975
20976 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
20977
20978         PR target/81644
20979         * config/i386/i386.md (unspecv): Add UNSPECV_UD2.
20980         (ud2): New insn pattern.
20981         * config/i386/i386.c (ix86_expand_epilogue):
20982         For naked functions, generate ud2 instead of trap insn.
20983
20984 2017-08-02  Marek Polacek  <polacek@redhat.com>
20985
20986         PR other/81667
20987         * alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
20988
20989 2017-08-02  Tom de Vries  <tom@codesourcery.com>
20990             Cesar Philippidis  <cesar@codesourcery.com>
20991
20992         * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
20993         Add missing edge probabilities.
20994
20995 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
20996
20997         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
20998         Correct endianness.
20999
21000 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
21001
21002         PR middle-end/79499
21003         * function.c (thread_prologue_and_epilogue_insns): Determine blocks
21004         for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
21005         of first NONDEBUG_INSN_P in each of the split_prologue_seq and
21006         prologue_seq sequences - if any.
21007
21008 2017-08-02  Richard Biener  <rguenther@suse.de>
21009
21010         * tree-vect-stmts.c (vectorizable_store): Perform vector extracts
21011         via vectors if supported, integer extracts via punning if supported
21012         or otherwise vector extracts.
21013
21014 2017-08-02  Richard Biener  <rguenther@suse.de>
21015
21016         * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
21017         into ...
21018         (bitmap_insert_into_set): ... this.
21019
21020 2017-08-02  Richard Biener  <rguenther@suse.de>
21021
21022         PR tree-optimization/81633
21023         Revert
21024         2015-08-17  Alan Hayward  <alan.hayward@arm.com>
21025
21026         PR tree-optimization/71752
21027         * tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
21028
21029 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
21030
21031         * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
21032         (machine_function::call_ms2sysv_pad_out): Remove field.
21033         * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
21034         (ix86_compute_frame_layout): Likewise.
21035
21036 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
21037
21038         PR target/81654
21039         * config/i386/i386.c (ix86_set_func_type): Disallow naked
21040         attribute with interrupt attribute.
21041
21042 2017-08-01  Andrew Pinski  <apinski@cavium.com>
21043
21044         * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
21045         BIT_INSERT_EXPR's operand 1
21046         to see if the types precision matches.
21047
21048 2017-08-01  Martin Liska  <mliska@suse.cz>
21049
21050         PR middle-end/70140
21051         * builtins.c (expand_builtin_memcpy_args): Remove.
21052         (expand_builtin_memcpy): Call newly added function
21053         expand_builtin_memory_copy_args.
21054         (expand_builtin_memcpy_with_bounds): Likewise.
21055         (expand_builtin_mempcpy): Remove last argument.
21056         (expand_builtin_mempcpy_with_bounds): Likewise.
21057         (expand_builtin_memory_copy_args): New function created from
21058         expand_builtin_mempcpy_args with small modifications.
21059         (expand_builtin_mempcpy_args): Remove.
21060         (expand_builtin_stpcpy): Remove unused argument.
21061         (expand_builtin): Likewise.
21062         (expand_builtin_with_bounds): Likewise.
21063
21064 2017-08-01  Martin Liska  <mliska@suse.cz>
21065
21066         Revert r250771
21067         Make mempcpy more optimal (PR middle-end/70140).
21068
21069 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21070
21071         PR target/81622
21072         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
21073         __builtin_vec_cmpne verify both arguments are compatible vectors
21074         before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
21075         verify arg1_type is a pointer or array type.  For __builtin_vec_st,
21076         move computation of aligned to after checking the argument types.
21077         Formatting fixes.
21078
21079         PR target/80846
21080         * config/rs6000/vsx.md (vextract_fp_from_shorth,
21081         vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
21082         calls.
21083
21084 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
21085             Doug Rupp  <rupp@adacore.com>
21086             Olivier Hainque  <hainque@adacore.com>
21087
21088         * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
21089         well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
21090         arm8 (arch v4).
21091         * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
21092         for TARGET_OS_CPP_BUILTIN.
21093         (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
21094         refine CPU definitions for arm_arch5 and add those for arm_arch6 and
21095         arm_arch7.
21096         (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
21097         passing required abi options to the assembler for EABI configurations.
21098         (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
21099         of .text.hot and .text.unlikely sections for kernel modules when
21100         using ARM style exceptions.
21101         (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
21102         options. Add EXTRA_CC1_SPEC.
21103         (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
21104         toolchain options.
21105         (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
21106         transition.
21107         (ARM_TARGET2_DWARF_FORMAT): Define.
21108         * config/arm/t-vxworks: Adjust multilib control to removal of the
21109         Diab command line options.
21110
21111 2017-08-01  Martin Liska  <mliska@suse.cz>
21112
21113         PR gcov-profile/81561
21114         * gcov.c (unblock): Make unblocking safe as we need to preserve
21115         index correspondence of blocks and block_lists.
21116
21117 2017-08-01  Richard Biener  <rguenther@suse.de>
21118
21119         PR tree-optimization/81181
21120         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
21121         (compute_antic): ... end of iteration here.
21122
21123 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
21124
21125         * common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
21126         (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
21127         (ftree-slp-vectorize): Likewise.
21128         * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
21129         can no longer be set independent of flag_tree_loop_vectorize.
21130         * omp-general.c (emp_max_vf): Likewise.
21131         * opts.c (enable_fdo_optimizations): Remove references to
21132         flag_tree_vectorize, these are now implicit.
21133         (common_handle_option): Remove handling for OPT_ftree_vectorize,
21134         and leave it for the options machinery.
21135
21136 2017-08-01  Martin Liska  <mliska@suse.cz>
21137
21138         PR middle-end/70140
21139         * builtins.c (expand_builtin_memcpy_args): Remove.
21140         (expand_builtin_memcpy): Call newly added function
21141         expand_builtin_memory_copy_args.
21142         (expand_builtin_memcpy_with_bounds): Likewise.
21143         (expand_builtin_mempcpy): Remove last argument.
21144         (expand_builtin_mempcpy_with_bounds): Likewise.
21145         (expand_builtin_memory_copy_args): New function created from
21146         expand_builtin_mempcpy_args with small modifications.
21147         (expand_builtin_mempcpy_args): Remove.
21148         (expand_builtin_stpcpy): Remove unused argument.
21149         (expand_builtin): Likewise.
21150         (expand_builtin_with_bounds): Likewise.
21151
21152 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21153
21154         PR target/81641
21155         * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
21156         print "ds:" only for immediates in generic address space.
21157
21158 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21159
21160         PR target/81639
21161         * config/i386/i386.c (ix86_funciton_naked): New prototype.
21162         (ix86_function_ok_for_sibcall): Return false for naked functions.
21163
21164 2017-08-01  Richard Biener  <rguenther@suse.de>
21165
21166         * tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
21167         (compute_antic): Seed worklist with exit block predecessors.
21168         * cfganal.c (dfs_find_deadend): For a cycle return the source
21169         of the edge closing it.
21170
21171 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
21172
21173         * config/aarch64/aarch64.c
21174         (aarch64_can_const_movi_rtx_p): Move 0 check.
21175
21176 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21177
21178         * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
21179         * fold-const.c (fold_comparison, fold_binary_loc): Delete use of
21180         above macro.
21181         * match.pd: Ditto in address comparison pattern.
21182
21183 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21184
21185         PR tree-optimization/81627
21186         * tree-predcom.c (prepare_finalizers): Always rewrite into loop
21187         closed ssa form for store-store chain.
21188
21189 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21190
21191         PR tree-optimization/81620
21192         * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
21193         for store-store chain.
21194
21195 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21196
21197         PR tree-optimization/81588
21198         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
21199         ranges[i].in_p, invert comparison code ccode.  For >/>=,
21200         swap rhs1 and rhs2 and comparison code unconditionally,
21201         for </<= don't do that.  Don't swap rhs1/rhs2 again if
21202         ranges[i].in_p, instead invert comparison code ccode if
21203         opcode or oe->rank is BIT_IOR_EXPR.
21204
21205         PR target/80846
21206         * optabs.def (vec_extract_optab, vec_init_optab): Change from
21207         a direct optab to conversion optab.
21208         * optabs.c (expand_vector_broadcast): Use convert_optab_handler
21209         with GET_MODE_INNER as last argument instead of optab_handler.
21210         * expmed.c (extract_bit_field_1): Likewise.  Use vector from
21211         vector extraction if possible and optab is available.
21212         * expr.c (store_constructor): Use convert_optab_handler instead
21213         of optab_handler.  Use vector initialization from smaller
21214         vectors if possible and optab is available.
21215         * tree-vect-stmts.c (vectorizable_load): Likewise.
21216         * doc/md.texi (vec_extract, vec_init): Document that the optabs
21217         now have two modes.
21218         * config/i386/i386.c (ix86_expand_vector_init): Handle expansion
21219         of vec_init from half-sized vectors with the same element mode.
21220         * config/i386/sse.md (ssehalfvecmode): Add V4TI case.
21221         (ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
21222         (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
21223         reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
21224         reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
21225         after mode in gen_vec_extract* calls.
21226         (vec_extract<mode>): Renamed to ...
21227         (vec_extract<mode><ssescalarmodelower>): ... this.
21228         (vec_extract<mode><ssehalfvecmodelower>): New expander.
21229         (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
21230         element mode after mode in gen_vec_init* calls.
21231         (VEC_INIT_HALF_MODE): New mode iterator.
21232         (vec_init<mode>): Renamed to ...
21233         (vec_init<mode><ssescalarmodelower>): ... this.
21234         (vec_init<mode><ssehalfvecmodelower>): New expander.
21235         * config/i386/mmx.md (vec_extractv2sf): Renamed to ...
21236         (vec_extractv2sfsf): ... this.
21237         (vec_initv2sf): Renamed to ...
21238         (vec_initv2sfsf): ... this.
21239         (vec_extractv2si): Renamed to ...
21240         (vec_extractv2sisi): ... this.
21241         (vec_initv2si): Renamed to ...
21242         (vec_initv2sisi): ... this.
21243         (vec_extractv4hi): Renamed to ...
21244         (vec_extractv4hihi): ... this.
21245         (vec_initv4hi): Renamed to ...
21246         (vec_initv4hihi): ... this.
21247         (vec_extractv8qi): Renamed to ...
21248         (vec_extractv8qiqi): ... this.
21249         (vec_initv8qi): Renamed to ...
21250         (vec_initv8qiqi): ... this.
21251         * config/rs6000/vector.md (VEC_base_l): New mode attribute.
21252         (vec_init<mode>): Renamed to ...
21253         (vec_init<mode><VEC_base_l>): ... this.
21254         (vec_extract<mode>): Renamed to ...
21255         (vec_extract<mode><VEC_base_l>): ... this.
21256         * config/rs6000/paired.md (vec_initv2sf): Renamed to ...
21257         (vec_initv2sfsf): ... this.
21258         * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
21259         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21260         vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
21261         element mode after mode in gen_vec_init* calls.
21262         * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
21263         (vec_init<mode><Vel>): ... this.
21264         (vec_extract<mode>): Renamed to ...
21265         (vec_extract<mode><Vel>): ... this.
21266         * config/aarch64/iterators.md (Vel): New mode attribute.
21267         * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
21268         Add element mode after mode in gen_vec_extract* calls.
21269         * config/s390/vector.md (non_vec_l): New mode attribute.
21270         (vec_extract<mode>): Renamed to ...
21271         (vec_extract<mode><non_vec_l>): ... this.
21272         (vec_init<mode>): Renamed to ...
21273         (vec_init<mode><non_vec_l>): ... this.
21274         * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
21275         s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
21276         vec_extract mode.
21277         * config/arm/iterators.md (V_elem_l): New mode attribute.
21278         * config/arm/neon.md (vec_extract<mode>): Renamed to ...
21279         (vec_extract<mode><V_elem_l>): ... this.
21280         (vec_extractv2di): Renamed to ...
21281         (vec_extractv2didi): ... this.
21282         (vec_init<mode>): Renamed to ...
21283         (vec_init<mode><V_elem_l>): ... this.
21284         (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
21285         reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
21286         reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
21287         Add element mode after gen_vec_extract* calls.
21288         * config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
21289         (vec_init<mode><unitmode>): ... this.
21290         (vec_extract<mode>): Renamed to ...
21291         (vec_extract<mode><unitmode>): ... this.
21292         * config/mips/loongson.md (vec_init<mode>): Renamed to ...
21293         (vec_init<mode><unitmode>): ... this.
21294         * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
21295         (vec_initv2sfsf): ... this.
21296         (vec_extractv2sf): Renamed to ...
21297         (vec_extractv2sfsf): ... this.
21298         (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
21299         Add element mode after gen_vec_extract* calls.
21300         * config/mips/mips.md (unitmode): New mode iterator.
21301         * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
21302         spu_builtin_extract): Add element mode after gen_vec_extract* calls.
21303         * config/spu/spu.md (inner_l): New mode attribute.
21304         (vec_init<mode>): Renamed to ...
21305         (vec_init<mode><inner_l>): ... this.
21306         (vec_extract<mode>): Renamed to ...
21307         (vec_extract<mode><inner_l>): ... this.
21308         * config/sparc/sparc.md (veltmode): New mode iterator.
21309         (vec_init<VMALL:mode>): Renamed to ...
21310         (vec_init<VMALL:mode><VMALL:veltmode>): ... this.
21311         * config/ia64/vect.md (vec_initv2si): Renamed to ...
21312         (vec_initv2sisi): ... this.
21313         (vec_initv2sf): Renamed to ...
21314         (vec_initv2sfsf): ... this.
21315         (vec_extractv2sf): Renamed to ...
21316         (vec_extractv2sfsf): ... this.
21317         * config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
21318         (vec_init<mode>): Renamed to ...
21319         (vec_init<mode><VEC_base_l>): ... this.
21320         (vec_extract<mode>): Renamed to ...
21321         (vec_extract<mode><VEC_base_l>): ... this.
21322         * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
21323         (vec_initv2sfsf): ... this.
21324         * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
21325         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21326         vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
21327         gen_vec_init* calls.
21328
21329 2017-08-01  Richard Biener  <rguenther@suse.de>
21330
21331         PR tree-optimization/81297
21332         * tree-vrp.c (get_single_symbol): Remove assert, instead drop
21333         TREE_OVERFLOW from INTEGER_CSTs.
21334
21335 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
21336
21337         * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
21338
21339 2017-07-31  Carl Love  <cel@us.ibm.com>
21340
21341         * config/rs6000/rs6000-c: Add support for built-in functions
21342         vector signed char vec_xl_be (signed long long, signed char *);
21343         vector unsigned char vec_xl_be (signed long long, unsigned char *);
21344         vector signed int vec_xl_be (signed long long, signed int *);
21345         vector unsigned int vec_xl_be (signed long long, unsigned int *);
21346         vector signed long long vec_xl_be (signed long long, signed long long *);
21347         vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
21348         vector signed short vec_xl_be (signed long long, signed short *);
21349         vector unsigned short vec_xl_be (signed long long, unsigned short *);
21350         vector double vec_xl_be (signed long long, double *);
21351         vector float vec_xl_be (signed long long, float *);
21352         * config/rs6000/altivec.h (vec_xl_be): Add #define.
21353         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
21354         XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
21355         for the builtins.
21356         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
21357         (altivec_expand_builtin): Add switch statement to call
21358         altivec_expand_xl_be for each builtin.
21359         (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
21360         __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
21361         __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
21362         __builtin_vsx_le_be_v16qi.
21363         * doc/extend.texi: Update the built-in documentation file for the
21364         new built-in functions.
21365
21366 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21367
21368         PR target/25967
21369         * config/i386/i386.c (ix86_allocate_stack_slots_for_args):
21370         New function.
21371         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
21372
21373 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21374
21375         * config.gcc: Add z14.
21376         * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
21377         CPU model numbers for z13s and z14.
21378         * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
21379         arch12 with z14.
21380         * config/s390/s390-opts.h (enum processor_type): Rename
21381         PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21382         * config/s390/s390.c (processor_table): Add field for CPU name to
21383         be passed to Binutils.
21384         (s390_asm_output_machine_for_arch): Use the new field in
21385         processor_table for Binutils.
21386         (s390_expand_builtin): Replace arch12 with z14.
21387         (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21388         (s390_get_sched_attrmask): Likewise.
21389         (s390_get_unit_mask): Likewise.
21390         * config/s390/s390.opt: Add z14 to processor_type enum.
21391
21392 2017-07-31  Martin Jambor  <mjambor@suse.cz>
21393
21394         PR hsa/81477
21395         * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
21396         regardless of optimization level.
21397
21398 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
21399             Martin Liska  <mliska@suse.cz>
21400
21401         * predict.def: Remove old comment and adjust probability.
21402         * gimplify.c (should_warn_for_implicit_fallthrough): Ignore
21403         PREDICT statements.
21404
21405 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21406
21407         PR target/25967
21408         * config/i386/i386.c (ix86_function_naked): New function.
21409         (ix86_can_use_return_insn_p): Return false for naked functions.
21410         (ix86_expand_prologue): Skip prologue for naked functions.
21411         (ix86_expand_epilogue): Skip epilogue for naked functions
21412         and emit trap instruction.
21413         (ix86_warn_func_return): New function.
21414         (ix86_attribute_table): Add "naked" attribute specification.
21415         (TARGET_WARN_FUNC_RETURN): Define.
21416         * doc/extend.texi (x86 Function Attributes) <naked>: Document it.
21417
21418 2017-07-31  Martin Liska  <mliska@suse.cz>
21419
21420         * gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
21421         (dump_gimple_bb_header): Always dump BB info.
21422         (pp_cfg_jump): Do not append info about BB when dumping a jump.
21423
21424 2017-07-31  Martin Liska  <mliska@suse.cz>
21425
21426         PR sanitize/81530
21427         * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
21428         also with current_function_decl non-null equality.
21429
21430 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
21431
21432         PR sanitizer/81604
21433         * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
21434         change type to the element type, instead add eltype variable and
21435         use it where we are interested in the element type.
21436
21437         PR tree-optimization/81603
21438         * ipa-polymorphic-call.c
21439         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
21440         offset arithmetic in offset_int, bail out if the resulting bit offset
21441         doesn't fit into shwi.
21442
21443 2017-07-31  Martin Liska  <mliska@suse.cz>
21444
21445         * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
21446         (gimplify_save_expr): Fix comment.
21447
21448 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
21449
21450         PR target/79793
21451         * config/i386/i386.c (ix86_function_arg): Update arguments for
21452         exception handler.
21453         (ix86_compute_frame_layout): Set the initial stack offset to
21454         INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
21455         INCOMING_FRAME_SP_OFFSET.
21456         (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
21457         stack before exception handler returns.
21458         * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
21459         the 'ERROR_CODE' for exception handler.
21460
21461 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
21462
21463         * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
21464         (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
21465         (ASM_OUTPUT_REG_POP): Ditto.
21466         * config/i386/i386.c (ix86_asm_output_function_label): Use fputs
21467         instead of asm_fprintf to output pure string.
21468
21469 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
21470
21471         * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
21472         to imported_module_or_decl hook.
21473         (debug_nothing_tree_tree_tree_bool): Remove.
21474         (debug_nothing_tree_tree_tree_bool_bool): New declaration.
21475         * debug.c (do_nothing_debug_hooks): Use
21476         debug_nothing_tree_tree_tree_bool_bool instead of
21477         debug_nothing_tree_tree_tree_bool.
21478         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
21479         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
21480         * sdbout.c (sdb_debug_hooks): Likewise.
21481         * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
21482         (gen_namespace_die): Add DW_AT_export_symbols attribute if
21483         langhook wants it.
21484         (dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
21485         if true, -gdwarf-5 and decl will have DW_AT_export_symbols
21486         attribute, don't add anything.
21487
21488 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21489
21490         * fold-const.c (fold_build1_stat_loc): Remove _stat from name.
21491         (fold_build2_stat_loc): Likewise.
21492         (fold_build3_stat_loc): Likewise.
21493         * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
21494         (fold_build1_loc): Remove macro.
21495         (fold_build2_loc): Likewise.
21496         (fold_build3_loc): Likewise.
21497
21498 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21499
21500         * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
21501         (gimple_build_debug_bind_source_stat): Likewise.
21502         * gimple.h (gimple_build_debug_bind): Remove macro.
21503         (gimple_build_debug_bind_source): Likewise.
21504
21505 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21506
21507         * bitmap.c (bitmap_alloc): Adjust.
21508         (bitmap_gc_alloc): Likewise.
21509         * bitmap.h (bitmap_initialize_stat): Remove _stat from name.
21510
21511 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21512
21513         * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
21514         (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
21515         * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
21516         (bitmap_gc_alloc_stat): Likewise.
21517         (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
21518
21519 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21520
21521         * rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
21522         * rtl.h (shallow_copy_rtx): Remove macro.
21523
21524 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21525
21526         * emit-rtl.c (gen_raw_REG): Adjust.
21527         * gengenrtl.c (gendef): Likewise.
21528         * rtl.c (rtx_alloc_stat): Remove _stat from name.
21529         * rtl.h (rtx_alloc): Remove macro.
21530
21531 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21532
21533         * tree.c (build_tree_list_vec_stat): Remove _stat from name.
21534         (build_tree_list_stat): Likewise.
21535         * tree.h (build_tree_list): Remove macro.
21536         (build_tree_list_vec): Likewise.
21537
21538 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21539
21540         * tree.c (make_vector_stat): Remove _stat from name.
21541         (build_vector_stat): Likewise.
21542         * tree.h (make_vector_stat): Remove macro.
21543         (build_vector_stat): Likewise.
21544
21545 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21546
21547         * tree.h (build_var_debug_value): Remove prototype.
21548
21549 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21550
21551         * tree.c (tree_cons_stat): Remove _stat from name.
21552         * tree.h (tree_cons): Remove macro.
21553
21554 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21555
21556         * tree.c (build_vl_exp_stat): Remove _stat from name.
21557         * tree.h (build_vl_exp): Remove macro.
21558
21559 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21560
21561         * tree.c (build_decl_stat): Remove _stat from name.
21562         * tree.h (build_decl): Remove macro.
21563
21564 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21565
21566         * gimple.c (gimple_build_with_ops_stat): Adjust.
21567         (gimple_alloc_stat): Remove _stat from name.
21568         * gimple.h (gimple_alloc): Remove macro.
21569
21570 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21571
21572         * tree.c (make_tree_vec_stat): Remove _stat from name.
21573         (grow_tree_vec_stat): Likewise.
21574         * tree.h (make_tree_vec_stat): Adjust prototype.
21575         (grow_tree_vec_stat): Likewise.
21576         (make_tree_vec): Remove macro.
21577         (grow_tree_vec): Likewise.
21578
21579 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21580
21581         * fold-const.c (fold_build1_stat_loc): Adjust.
21582         (fold_build2_stat_loc): Likewise.
21583         (fold_build3_stat_loc): Likewise.
21584         * tree.c (build0_stat): Remove _stat from name.
21585         (build1_stat): Likewise.
21586         (build2_stat): Likewise.
21587         (build3_stat): Likewise.
21588         (build4_stat): Likewise.
21589         (build5_stat): Likewise.
21590         * tree.h (build1_loc): Remove macro, and rename _stat function
21591         to this.
21592         (build2_loc): Likewise.
21593         (build3_loc): Likewise.
21594         (build4_loc): Likewise.
21595         (build5_loc): Likewise.
21596
21597 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21598
21599         * tree.c (make_int_cst_stat): Remove _stat from name.
21600         * tree.h (make_int_cst_stat): Adjust prototype.
21601         (make_int_cst): Remove macro.
21602
21603 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21604
21605         * tree.c (make_tre_binfo_stat): Remove _stat from name.
21606         * tree.h (make_tree_binfo_stat): Adjust prototype.
21607         (make_tree_binfo): Remove.
21608
21609 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21610
21611         * tree.c (copy_node_stat): Rename to copy_node.
21612         (build_distinct_type_copy): Adjust.
21613         * tree.h (copy_node_stat): Adjust prototype.
21614         (copy_node): Remove macro.
21615
21616 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21617
21618         * tree.c (make_node_stat): rename to make_node.
21619         (build_tree_list_stat): Adjust.
21620         (build0_stat): Likewise.
21621         (build2_stat): Likewise.
21622         (build3_stat): Likewise.
21623         (build4_stat): Likewise.
21624         (build5_stat): Likewise.
21625         (build_decl_stat): Likewise.
21626         * tree.h (make_node_stat): Adjust prototype.
21627         (make_node): remove macro.
21628
21629 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
21630
21631         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
21632         (PPC_FEATURE2_SCV): Likewise.
21633         * config/rs6000/rs6000.c (cpu_supports_info): Use them.
21634
21635 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21636
21637         * config/aarch64/aarch64.c
21638         (aarch64_internal_mov_immediate): Add new special pattern.
21639         * config/aarch64/aarch64.md (*movdi_aarch64):
21640         Add reg/32bit const mov case.
21641
21642 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21643             Richard Sandiford <richard.sandiford@linaro.org>
21644
21645         * config/aarch64/aarch64.md (mov<mode>): Generalize.
21646         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
21647         Add integer and movi cases.
21648         (movi-split-hf-df-sf split, fp16): New.
21649         (enabled): Added TARGET_FP_F16INST.
21650         * config/aarch64/iterators.md (GPF_HF): New.
21651         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
21652
21653 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21654
21655         * config/aarch64/aarch64.c
21656         (aarch64_simd_container_mode): Add prototype.
21657         (aarch64_expand_mov_immediate): Add HI support.
21658         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
21659         (aarch64_can_const_movi_rtx_p): New.
21660         (aarch64_preferred_reload_class):
21661         Remove restrictions of using FP registers for certain SIMD operations.
21662         (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
21663         (aarch64_valid_floating_const): Add integer move validation.
21664         (aarch64_simd_imm_scalar_p): Remove.
21665         (aarch64_output_scalar_simd_mov_immediate): Generalize function.
21666         (aarch64_legitimate_constant_p): Expand list of supported cases.
21667         * config/aarch64/aarch64-protos.h
21668         (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
21669         (aarch64_reinterpret_float_as_int): New.
21670         (aarch64_simd_imm_scalar_p): Remove.
21671         * config/aarch64/constraints.md (Uvi): New.
21672         (Dd): Split into Ds and new Dd.
21673         * config/aarch64/aarch64.md (*movsi_aarch64):
21674         Add SIMD mov case.
21675         (*movdi_aarch64): Add SIMD mov case.
21676
21677 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21678
21679         * tree-predcom.c: (struct chain): Handle store-store chain in which
21680         stores for elimination only store loop invariant values.
21681         (execute_pred_commoning_chain): Ditto.
21682         (prepare_initializers_chain_store_elim): Ditto.
21683         (prepare_finalizers): Ditto.
21684         (is_inv_store_elimination_chain): New function.
21685         (initialize_root_vars_store_elim_1): New function.
21686
21687 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21688
21689         * tree-predcom.c: Revise general description of the pass.
21690         (enum chain_type): New enum type for store elimination.
21691         (struct chain): New field supporting store elimination.
21692         (struct component): Ditto.
21693         (dump_chain): Dump store-stores chain.
21694         (release_chain): Release resources.
21695         (split_data_refs_to_components): Compute and create component
21696         contains only stores for elimination.
21697         (get_chain_last_ref_at): New function.
21698         (make_invariant_chain): Initialization.
21699         (make_rooted_chain): Specify chain type in parameter and record it.
21700         (add_looparound_copies): Skip for store-stores chain.
21701         (determine_roots_comp): Compute type of chain and pass it to
21702         make_rooted_chain.
21703         (initialize_root_vars_store_elim_2): New function.
21704         (finalize_eliminated_stores): New function.
21705         (remove_stmt): Handle store for elimination.
21706         (execute_pred_commoning_chain): Execute predictive commoning on
21707         store-store chains.
21708         (determine_unroll_factor): Skip unroll for store-stores chain.
21709         (prepare_initializers_chain_store_elim): New function.
21710         (prepare_initializers_chain): Hanlde store-store chain.
21711         (prepare_finalizers_chain, prepare_finalizers): New function.
21712         (tree_predictive_commoning_loop): Return integer value indicating
21713         if loop is unrolled or lcssa form is corrupted.
21714         (tree_predictive_commoning): Rewrite for lcssa form if necessary.
21715
21716 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21717
21718         * tree-predcom.c (initialize_root): Delete.
21719         (execute_pred_commoning_chain): Initialize root vars and replace
21720         reference of non-combined chain directly, rather than call above
21721         function.
21722
21723 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21724
21725         * tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
21726         memory reference to DR at (NITERS + ITERS)-th iteration of loop.
21727
21728 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21729
21730         * tree-predcom.c (struct chain): New field init_seq.
21731         (release_chain): Release init_seq.
21732         (prepare_initializers_chain): Record intialization stmts in above
21733         field.
21734         (insert_init_seqs): New function.
21735         (tree_predictive_commoning_loop): Call insert_init_seqs.
21736
21737 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21738
21739         * tree-predcom.c (determine_roots_comp): Skip trivial components.
21740
21741 2017-07-28  Richard Biener  <rguenther@suse.de>
21742
21743         * match.pd: Remove superfluous :c.
21744         * genmatch.c (simplify::id): Add member.
21745         (lower_commutative, lower_opt_convert, lower_cond, lower_for):
21746         Copy id.
21747         (current_id): New global.
21748         (dt_node::parent): Move from ...
21749         (dt_operand::parent): ... here.  Add for_id member.
21750         (is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
21751         (decision_tree::find_node): Relax order requirement when
21752         merging DT_TRUE nodes to ones inbetween the current simplify
21753         and the one we try to merge with.  Add diagnostic whenever
21754         we need to enforce pattern order by not merging.
21755         (decision_tree::insert): Set current_id.
21756         (decision_tree::print_node): Dump parent node and for_id.
21757         (parser::last_id): Add member.
21758         (parser::push_simplify): Assign unique id.
21759         (parser::parser): Initialize last_id.
21760
21761 2017-07-28  Martin Liska  <mliska@suse.cz>
21762
21763         PR sanitizer/81340
21764         * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
21765         gimple_build_debug_bind.
21766
21767 2017-07-28  Richard Biener  <rguenther@suse.de>
21768
21769         PR tree-optimization/81502
21770         * match.pd: Add pattern combining BIT_INSERT_EXPR with
21771         BIT_FIELD_REF.
21772         * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
21773         size/pos operands.
21774         (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
21775         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
21776         for BIT_FIELD_REF args.
21777         * fold-const.c (make_bit_field_ref): Likewise.
21778         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
21779
21780 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21781
21782         PR sanitizer/80998
21783         * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
21784         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
21785         * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
21786         Or it into SANITIZER_UNDEFINED.
21787         * ubsan.c: Include gimple-fold.h and varasm.h.
21788         (ubsan_expand_ptr_ifn): New function.
21789         (instrument_pointer_overflow): New function.
21790         (maybe_instrument_pointer_overflow): New function.
21791         (instrument_object_size): Formatting fix.
21792         (pass_ubsan::execute): Call instrument_pointer_overflow
21793         and maybe_instrument_pointer_overflow.
21794         * internal-fn.c (expand_UBSAN_PTR): New function.
21795         * ubsan.h (ubsan_expand_ptr_ifn): Declare.
21796         * sanitizer.def (__ubsan_handle_pointer_overflow,
21797         __ubsan_handle_pointer_overflow_abort): New builtins.
21798         * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
21799         * internal-fn.def (UBSAN_PTR): New internal function.
21800         * opts.c (sanitizer_opts): Add pointer-overflow.
21801         * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
21802         * fold-const.c (build_range_check): Compute pointer range check in
21803         integral type if pointer arithmetics would be needed.  Formatting
21804         fixes.
21805
21806 2017-07-28  Martin Liska  <mliska@suse.cz>
21807
21808         PR sanitizer/81460
21809         * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
21810         parameters that are of a variable-length.
21811
21812 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21813
21814         * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
21815         rs6000/biarch64.h.
21816         * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
21817         (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
21818         (CRT_CALL_STATIC_FUNCTION): Likewise.
21819         (ASM_DEFAULT_SPEC): New define.
21820         (ASM_SPEC32): Likewise.
21821         (ASM_SPEC64): Likewise.
21822         (ASM_SPEC_COMMON): Likewise.
21823         (ASM_SPEC): Likewise.
21824         (INVALID_64BIT): Likewise.
21825         (LINK_OS_DEFAULT_SPEC): Likewise.
21826         (LINK_OS_SPEC32): Likewise.
21827         (LINK_OS_SPEC64): Likewise.
21828         (POWERPC_LINUX): Likewise.
21829         (PTRDIFF_TYPE): Likewise.
21830         (RESTORE_FP_PREFIX): Likewise.
21831         (RESTORE_FP_SUFFIX): Likewise.
21832         (SAVE_FP_PREFIX): Likewise.
21833         (SAVE_FP_SUFFIX): Likewise.
21834         (SIZE_TYPE): Likewise.
21835         (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
21836         (TARGET_64BIT): Likewise.
21837         (TARGET_64BIT): Likewise.
21838         (TARGET_AIX): Likewise.
21839         (WCHAR_TYPE_SIZE): Likewise.
21840         (WCHAR_TYPE): Undefine.
21841         (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
21842         (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
21843         (CPP_OS_RTEMS_SPEC): Delete.
21844         (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
21845         asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
21846         link_os_spec64.
21847         * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
21848
21849 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21850
21851         PR tree-optimization/81578
21852         * tree-parloops.c (build_new_reduction): Bail out if
21853         reduction_code isn't one of the standard OpenMP reductions.
21854         Move the details printing after that decision.
21855
21856 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21857
21858         * config/rs6000/predicates.md (volatile_mem_operand): Remove code
21859         related to reload_in_progress.
21860         (splat_input_operand): Likewise.
21861         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
21862         Delete prototype.
21863         * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
21864         field.
21865         (TARGET_EXPAND_TO_RTL_HOOK): Delete.
21866         (TARGET_INSTANTIATE_DECLS): Likewise.
21867         (legitimate_indexed_address_p): Delete reload_in_progress code.
21868         (rs6000_debug_legitimate_address_p): Likewise.
21869         (rs6000_eliminate_indexed_memrefs): Likewise.
21870         (rs6000_emit_le_vsx_store): Likewise.
21871         (rs6000_emit_move_si_sf_subreg): Likewise.
21872         (rs6000_emit_move): Likewise.
21873         (register_to_reg_type): Likewise.
21874         (rs6000_pre_atomic_barrier): Likewise.
21875         (rs6000_machopic_legitimize_pic_address): Likewise.
21876         (rs6000_allocate_stack_temp): Likewise.
21877         (rs6000_address_for_fpconvert): Likewise.
21878         (rs6000_address_for_altivec): Likewise.
21879         (rs6000_secondary_memory_needed_rtx): Delete function.
21880         (rs6000_check_sdmode): Likewise.
21881         (rs6000_alloc_sdmode_stack_slot): Likewise.
21882         (rs6000_instantiate_decls): Likewise.
21883         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
21884         * config/rs6000/rs6000.md (splitter for *movsi_got_internal):
21885         Delete reload_in_progress.
21886         (*vec_reload_and_plus_<mptrsize>): Likewise.
21887         * config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
21888         (vsx_div_v2di): Likewise.
21889         (vsx_udiv_v2di): Likewise.
21890
21891 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21892
21893         * config/rs6000/rs6000.opt (mlra): Replace with stub.
21894         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
21895         * config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
21896         (rs6000_debug_reg_global): Delete print of LRA status.
21897         (rs6000_option_override_internal): Delete dead LRA related code.
21898         (rs6000_lra_p): Delete function.
21899         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
21900
21901 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21902
21903         * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
21904         * config/riscv/rtems.h: New file.
21905
21906 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21907             Sudakshina Das  <sudi.das@arm.com>
21908
21909         * config/aarch64/aarch64.md
21910         (define_split for and<mode>3nr_compare): Move
21911         non aarch64_logical_operand to a register.
21912         (define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
21913         register immediate operand to a register.
21914         * config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
21915
21916 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21917
21918         PR middle-end/81564
21919         * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
21920
21921 2017-07-27  Richard Biener  <rguenther@suse.de>
21922
21923         PR tree-optimization/81573
21924         PR tree-optimization/81494
21925         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
21926         multi defuse cycle case.
21927
21928 2017-07-27  Richard Biener  <rguenther@suse.de>
21929
21930         PR tree-optimization/81571
21931         * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
21932         PHIs.
21933
21934 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
21935
21936         * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
21937         earlier and only if MASK_FPU is set.  Adjust formatting.
21938
21939 2017-07-27  Martin Liska  <mliska@suse.cz>
21940
21941         * opt-functions.awk: Add validation of value of Init.
21942         * optc-gen.awk: Pass new argument.
21943
21944 2017-07-27  Martin Liska  <mliska@suse.cz>
21945
21946         * auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
21947         Fix wrong condition.
21948
21949 2017-07-27  Martin Liska  <mliska@suse.cz>
21950
21951         * auto-profile.c (afdo_annotate_cfg): Assign zero counts to
21952         BBs and edges seen by autoFDO.
21953
21954 2017-07-27  Richard Biener  <rguenther@suse.de>
21955
21956         PR tree-optimization/81502
21957         * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
21958         with incompatible but same sized type.
21959         (execute_update_addresses_taken): Likewise.
21960
21961 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
21962
21963         * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
21964         flag_tree_loop_vectorize rather than flag_tree_vectorize.
21965
21966 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21967
21968         PR target/81534
21969         * config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
21970         ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
21971         Change s_operand to memory_operand.
21972
21973 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
21974
21975         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
21976         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
21977         (rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
21978         Emit instructions rather than returning an expression.  Handle TFmode
21979         and KFmode by casting to TImode.
21980         (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
21981         (rs6000_emit_le_vsx_store): Likewise.
21982         * config/rs6000/vsx.md (VSX_TI): New iterator.
21983         (*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
21984         (*vsx_le_undo_permute_<mode>): Likewise.
21985         (*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
21986         emit the split sequence.
21987         (*vsx_le_perm_store_<mode>): Likewise.
21988
21989 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
21990
21991         PR tree-optimization/81555
21992         PR tree-optimization/81556
21993         * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
21994         if true, force CHANGED for the recursive invocation.
21995         (reassociate_bb): Remember original length of ops array, pass
21996         len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
21997
21998         * attribs.c (decl_attributes): Imply noinline, noclone and no_icf
21999         attributes for noipa attribute.  For naked attribute use
22000         lookup_attribute first before lookup_attribute_spec.
22001         * final.c (rest_of_handle_final): Disable IPA RA for functions with
22002         noipa attribute.
22003         * ipa-visibility.c (non_local_p): Fix comment typos.  Return true
22004         for functions with noipa attribute.
22005         (cgraph_externally_visible_p): Return true for functions with noipa
22006         attribute.
22007         * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
22008         for functions with noipa attribute.
22009         * doc/extend.texi: Document noipa function attribute.
22010         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
22011         also for functions with noipa attribute.
22012         (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
22013
22014 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22015
22016         * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
22017         vec_unalign_load_cost and vec_unalign_store_cost.
22018
22019 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
22020
22021         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
22022         -mvsx-small-integer option.
22023         (ISA_3_0_MASKS_IEEE): Likewise.
22024         (OTHER_VSX_VECTOR_MASKS): Likewise.
22025         (POWERPC_MASKS): Likewise.
22026         * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
22027         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
22028         code, only testing for DImode being allowed in non-VSX floating
22029         point registers.
22030         (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
22031         to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
22032         another VSX test.
22033         (rs6000_option_override_internal): Delete -mvsx-small-integer.
22034         (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
22035         TARGET_P8_VECTOR test.
22036         (rs6000_secondary_reload_simple_move): Likewise.
22037         (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
22038         since TARGET_P9_VECTOR was already tested.
22039         (rs6000_opt_masks): Remove -mvsx-small-integer.
22040         * config/rs6000/vsx.md (vsx_extract_<mode>): Delete
22041         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22042         used.
22043         (vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
22044         test for TARGET_VEXTRACTUB was used, and that uses
22045         TARGET_P9_VECTOR.
22046         (p9 extract splitter): Likewise.
22047         (vsx_extract_<mode>_di_p9): Likewise.
22048         (vsx_extract_<mode>_store_p9): Likewise.
22049         (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
22050         for TARGET_P9_VECTOR was used.  Delete code that is now dead with
22051         the elimination of TARGET_VSX_SMALL_INTEGER.
22052         (vsx_extract_<mode>_p8): Likewise.
22053         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
22054         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
22055         (vsx_set_<mode>_p9): Likewise.
22056         (vsx_set_v4sf_p9): Likewise.
22057         (vsx_set_v4sf_p9_zero): Likewise.
22058         (vsx_insert_extract_v4sf_p9): Likewise.
22059         (vsx_insert_extract_v4sf_p9_2): Likewise.
22060         * config/rs6000/rs6000.md (sign extend splitter): Change
22061         TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
22062         (floatsi<mode>2_lfiwax_mem): Likewise.
22063         (floatunssi<mode>2_lfiwzx_mem): Likewise.
22064         (float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
22065         since a test for TARGET_P9_VECTOR was used.
22066         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22067         (floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
22068         (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22069         (fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22070         TARGET_P8_VECTOR test.
22071         (fix_trunc<mode>si2_stfiwx): Likewise.
22072         (fix_trunc<mode>si2_internal): Likewise.
22073         (fix_trunc<SFDF:mode><QHI:mode>2): Delete
22074         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22075         used.
22076         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22077         (fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22078         TARGET_P8_VECTOR test.
22079         (fixuns_trunc<mode>si2_stfiwx): Likewise.
22080         (fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
22081         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22082         used.
22083         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22084         (fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
22085         since a test for TARGET_P9_VECTOR was used.
22086         (splitter for loading small constants): Likewise.
22087
22088 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22089
22090         * config/aarch64/aarch64.c (thunderx_vector_cost): Fix
22091         vec_fp_stmt_cost.
22092
22093 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
22094
22095         PR target/81563
22096         * config/i386/i386.c (sp_valid_at): Properly check CFA offset.
22097         (fp_valid_at): Likewise.
22098
22099 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22100
22101         * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
22102         (qdf24xx_addrcost_table): Likewise.
22103         (cortexa57_tunings): Update to use generic_branch_cost.
22104         (cortexa72_tunings): Likewise.
22105         (cortexa73_tunings): Likewise.
22106         (qdf24xx_tunings): Likewise.
22107
22108 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22109
22110         * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
22111         (thunderx2t99_branch_cost): Likewise.
22112         (cortexa35_tunings): Update to use generic_branch_cost.
22113         (cortexa53_tunings): Likewise.
22114         (cortexa57_tunings): Likewise.
22115         (cortexa72_tunings): Likewise.
22116         (cortexa73_tunings): Likewise.
22117         (thunderx2t99_tunings): Likewise.
22118
22119 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22120
22121         * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
22122         (sparc_option_override): Honour MASK_FSMULD.
22123         * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
22124         * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
22125         * config/sparc/sparc.opt (mfsmuld): New option.
22126         * doc/invoke.texi (mfsmuld): Document option.
22127
22128 2017-07-26  Marek Polacek  <polacek@redhat.com>
22129
22130         PR middle-end/70992
22131         * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
22132
22133 2017-07-26  Richard Biener  <rguenther@suse.de>
22134
22135         * gimple-match-head.c (do_valueize): Return OP if valueize
22136         returns NULL_TREE.
22137         (get_def): New helper to get at the def stmt of a SSA name
22138         if valueize allows.
22139         * genmatch.c (dt_node::gen_kids_1): Use get_def instead of
22140         do_valueize to get at the def stmt.
22141         (dt_operand::gen_gimple_expr): Simplify do_valueize calls.
22142
22143 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
22144
22145         PR middle-end/46932
22146         * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
22147
22148 2017-07-26  Martin Liska  <mliska@suse.cz>
22149
22150         PR sanitize/81186
22151         * function.c (expand_function_start): Make expansion of
22152         nonlocal_goto_save_area after parm_birth_insn.
22153
22154 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22155
22156         * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
22157         from all CPU target flags enable members.
22158
22159 2017-07-26  Richard Biener  <rguenther@suse.de>
22160
22161         * genmatch.c (dt_simplify::gen): Make iterator vars const.
22162         (decision_tree::gen): Make 'type' const.
22163         (write_predicate): Likewise.
22164
22165 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22166
22167         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
22168         Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
22169         (rs6000_option_override_internal): Likewise.
22170         (rs6000_expand_vector_set): Likewise.
22171         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
22172         (TARGET_UPPER_REGS_SF): Likewise.
22173         (TARGET_UPPER_REGS_DI): Likewise.
22174         (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
22175         (TARGET_DIRECT_MOVE_64BIT): Likewise.
22176         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
22177         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22178         (Splitters for DI constants in Altivec registers): Likewise.
22179         * config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
22180         (vsx_set_v4sf_p9): Likewise.
22181         (vsx_set_v4sf_p9_zero): Likewise.
22182         (vsx_insert_extract_v4sf_p9): Likewise.
22183         (vsx_insert_extract_v4sf_p9_2): Likewise.
22184
22185 2017-07-25  Carl Love  <cel@us.ibm.com>
22186
22187         * doc/extend.texi: Update the built-in documentation file for the
22188         existing built-in functions
22189         vector signed char vec_cnttz (vector signed char);
22190         vector unsigned char vec_cnttz (vector unsigned char);
22191         vector signed short vec_cnttz (vector signed short);
22192         vector unsigned short vec_cnttz (vector unsigned short);
22193         vector signed int vec_cnttz (vector signed int);
22194         vector unsigned int vec_cnttz (vector unsigned int);
22195         vector signed long long vec_cnttz (vector signed long long);
22196         vector unsigned long long vec_cnttz (vector unsigned long long);
22197
22198 2017-07-25  Andrew Pinski  <apinski@cavium.com>
22199
22200         * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
22201         accesses where the use is for the first operand of a BIT_INSERT.
22202
22203 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22204
22205         PR bootstrap/81521
22206         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22207         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22208
22209 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22210
22211         * config/i386/gstabs.h: Delete.
22212         * config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
22213
22214 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
22215
22216         * config/i386/i386.c (ix86_decompose_address): Do not check for
22217         register RTX when looking at index_reg or base_reg.
22218         * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
22219
22220 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
22221
22222         * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
22223         to update EH info here.
22224
22225 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22226
22227         * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
22228
22229 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22230
22231         * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
22232
22233 2017-07-25  Torsten Duwe  <duwe@suse.de>
22234
22235         * common.opt: Introduce -fpatchable-function-entry
22236         command line option, and its variables function_entry_patch_area_size
22237         and function_entry_patch_area_start.
22238         * opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
22239         including a two-value parser.
22240         * target.def (print_patchable_function_entry): New target hook.
22241         * targhooks.h (default_print_patchable_function_entry): New function.
22242         * targhooks.c (default_print_patchable_function_entry): Likewise.
22243         * toplev.c (process_options): Switch off IPA-RA if
22244         patchable function entries are being generated.
22245         * varasm.c (assemble_start_function): Look at the
22246         patchable-function-entry command line switch and current
22247         function attributes and maybe generate NOP instructions by
22248         calling the print_patchable_function_entry hook.
22249         * doc/extend.texi: Document patchable_function_entry attribute.
22250         * doc/invoke.texi: Document -fpatchable_function_entry
22251         command line option.
22252         * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
22253         New target hook.
22254         * doc/tm.texi: Re-generate.
22255
22256 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
22257
22258         PR target/81532
22259         * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
22260         TARGET_AVX512DQ rather than TARGET_AVX512BW.
22261
22262 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
22263
22264         * config/arm/parsecpu.awk (all_cores): Remove duplicates.
22265
22266 2017-07-25  Richard Biener  <rguenther@suse.de>
22267
22268         PR tree-optimization/81455
22269         * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
22270         not walk in cycles when looking for guards.
22271
22272 2017-07-25  Richard Biener  <rguenther@suse.de>
22273
22274         PR tree-optimization/81529
22275         * tree-vect-stmts.c (process_use): Disregard live induction PHIs
22276         when optimizing backedge uses.
22277
22278 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
22279
22280         * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
22281         character for AIX.
22282         * dwarf2out.c (output_macinfo): Copy debug_line_section_label
22283         to dl_section_ref.  On AIX, append an expression to subtract
22284         the size of the section length to dl_section_ref.
22285
22286 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
22287
22288         * configure.ac: If any of the config.* scripts fail, exit 1.
22289         * configure: Regenerate.
22290
22291 2017-07-25  Richard Biener  <rguenther@suse.de>
22292
22293         PR middle-end/81546
22294         * tree-ssa-operands.c (verify_imm_links): Remove cap on number
22295         of immediate uses, be more verbose on errors.
22296
22297 2017-07-25  Richard Biener  <rguenther@suse.de>
22298
22299         PR tree-optimization/81510
22300         * tree-vect-loop.c (vect_is_simple_reduction): When the
22301         reduction stmt is not inside the loop bail out.
22302
22303 2017-07-25  Richard Biener  <rguenther@suse.de>
22304
22305         PR tree-optimization/81303
22306         * tree-vect-loop-manip.c (vect_loop_versioning): Build
22307         profitability check against LOOP_VINFO_NITERSM1.
22308
22309 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22310
22311         * domwalk.c (cmp_bb_postorder): Simplify.
22312         (sort_bbs_postorder): New function.  Use it...
22313         (dom_walker::walk): ...here to optimize common cases.
22314
22315 2017-07-25  Martin Liska  <mliska@suse.cz>
22316
22317         PR ipa/81520
22318         * ipa-visibility.c (function_and_variable_visibility): Make the
22319         redirection just on target that supports aliasing.
22320         Fix GNU coding style.
22321
22322 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22323
22324         PR libgcc/61152
22325         * config/aarch64/rtems.h: Add GCC Runtime Library Exception.
22326         Format changes.
22327         * config/arm/rtems.h: Likewise.
22328         * config/bfin/rtems.h: Likewise.
22329         * config/i386/rtemself.h: Likewise.
22330         * config/lm32/rtems.h: Likewise.
22331         * config/m32c/rtems.h: Likewise.
22332         * config/m68k/rtemself.h: Likewise.
22333         * config/microblaze/rtems.h: Likewise.
22334         * config/mips/rtems.h: Likewise.
22335         * config/moxie/rtems.h: Likewise.
22336         * config/nios2/rtems.h: Likewise.
22337         * config/powerpcspe/rtems.h: Likewise.
22338         * config/rs6000/rtems.h: Likewise.
22339         * config/rtems.h: Likewise.
22340         * config/sh/rtems.h: Likewise.
22341         * config/sh/rtemself.h: Likewise.
22342         * config/sparc/rtemself.h: Likewise.
22343
22344 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22345
22346         PR 81487
22347         * hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
22348         * gimple-pretty-print.c (dump_profile, dump_probability): Same.
22349         * tree-ssa-structalias.c (alias_get_name): Same.
22350
22351 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
22352
22353         PR target/81414
22354         * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
22355         instructions if no du chain is found.
22356
22357 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22358
22359         * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
22360
22361 2017-07-25  Richard Biener  <rguenther@suse.de>
22362
22363         PR middle-end/81505
22364         * fold-const.c (fold_negate_const): TREE_OVERFLOW should be
22365         sticky.
22366
22367 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22368
22369         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
22370         upper-regs options.
22371         (ISA_2_7_MASKS_SERVER): Likewise.
22372         (ISA_3_0_MASKS_IEEE): Likewise.
22373         (OTHER_P8_VECTOR_MASKS): Likewise.
22374         (OTHER_VSX_VECTOR_MASKS): Likewise.
22375         (POWERPC_MASKS): Likewise.
22376         (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
22377         duplicate list of options.
22378         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
22379         explicit -mupper-regs options.
22380         * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
22381         -mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
22382         alias for -mupper-regs-df.
22383         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
22384         (rs6000_init_hard_regno_mode_ok): Likewise.
22385         (rs6000_option_override_internal): Likewise.
22386         (rs6000_opt_masks): Likewise.
22387         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
22388         options in terms of whether -mvsx or -mpower8-vector was used.
22389         (TARGET_UPPER_REGS_DI): Likewise.
22390         (TARGET_UPPER_REGS_SF): Likewise.
22391         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
22392         -mupper-regs-* options.
22393
22394 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22395
22396         * passes.c (emergency_dump_function): Print some empty lines and a
22397         header before the RTL dump.
22398
22399 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22400
22401         * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
22402
22403 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
22404
22405         PR target/79041
22406         * config/aarch64/aarch64.c (aarch64_classify_symbol):
22407         Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
22408
22409 2017-07-24  Carl Love  <cel@us.ibm.com>
22410
22411         * config/rs6000/rs6000-c.c: Add support for built-in functions
22412         vector float vec_extract_fp32_from_shorth (vector unsigned short);
22413         vector float vec_extract_fp32_from_shortl (vector unsigned short);
22414         * config/rs6000/altivec.h (vec_extract_fp_from_shorth,
22415         vec_extract_fp_from_shortl): Add defines for the two builtins.
22416         * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
22417         VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
22418         new builtins.
22419         * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
22420         (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
22421         * doc/extend.texi: Update the built-in documentation file for the
22422         new built-in function.
22423
22424 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
22425
22426         PR bootstrap/81521
22427         * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
22428         documentation.
22429         * doc/generic.texi: Likewise.
22430         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22431         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22432
22433 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
22434
22435         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
22436         (aarch64_mls_elt_merge<mode>): Likewise.
22437
22438 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
22439
22440         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
22441         having __cxa_atexit.
22442
22443 2017-07-23  Michael Collison  <michael.collison@arm.com>
22444
22445         * config/arm/arm.c (arm_option_override): Deprecate
22446         use of -mstructure-size-boundary.
22447         * config/arm/arm.opt: Deprecate -mstructure-size-boundary.
22448         * doc/invoke.texi: Deprecate -mstructure-size-boundary.
22449
22450 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
22451
22452         PR target/80695
22453         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
22454         Reduce cost estimate for direct moves.
22455
22456 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
22457
22458         PR target/80569
22459         * config/i386/i386.c (ix86_option_override_internal): Disable
22460         BMI, BMI2 and TBM instructions for -m16.
22461
22462 2017-07-21  Carl Love  <cel@us.ibm.com>
22463
22464         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22465         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
22466         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
22467         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
22468         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
22469         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
22470         VMULOSW): New enum "unspec" values.
22471         (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
22472         altivec_vmulosw): New patterns.
22473         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
22474         VMULOSW): Add definitions.
22475
22476 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
22477
22478         * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
22479         (qdf24xx): Likewise.
22480         * config/aarch64/aarch64-options-extensions.def (rdma); New.
22481         * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
22482         (AARCH64_FL_V8_1): Renumber.
22483         (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
22484         (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
22485         * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
22486         * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
22487         rdma to feature modifiers list.
22488
22489 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
22490
22491         PR middle-end/56727
22492         * ipa-visibility (function_and_variable_visibility): Convert
22493         recursive PLT call to direct call if appropriate.
22494
22495 2017-07-21  Andrew Pinski  <apinski@cavium.com>
22496
22497         * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
22498         operand 1 to see if the types precision matches.
22499         * fold-const.c (operand_equal_p): Likewise.
22500
22501 2017-07-21  Richard Biener  <rguenther@suse.de>
22502
22503         PR tree-optimization/81303
22504         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
22505         in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
22506         (vect_peeling_hash_get_lowest_cost): Adjust.
22507         (vect_enhance_data_refs_alignment): Likewise.  Use
22508         vect_get_peeling_costs_all_drs to compute the penalty for no
22509         peeling to match up costs.
22510
22511 2017-07-21  Richard Biener  <rguenther@suse.de>
22512
22513         PR tree-optimization/81500
22514         * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
22515         we didn't identify a reduction path.
22516
22517 2017-07-21  Tom de Vries  <tom@codesourcery.com>
22518             Cesar Philippidis  <cesar@codesourcery.com>
22519
22520         PR gcov-profile/81442
22521         * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
22522         probabilities.
22523
22524 2017-07-21  Tom de Vries  <tom@codesourcery.com>
22525
22526         PR lto/81430
22527         * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
22528         function.
22529         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
22530         nvptx_override_options_after_change.
22531
22532 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
22533
22534         * dwarf2out.c (output_file_names): Avoid double testing for
22535         dwarf_version >= 5.
22536
22537 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
22538
22539         * doc/invoke.texi (AVR Built-in Functions): Re-layout section.
22540
22541 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
22542
22543         * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
22544         hot/cold regions.
22545         (try_crossjump_to_edge): Do not punt on partitioned functions.
22546
22547 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
22548
22549         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
22550         Put all BBs reachable only via paths crossing cold region to cold
22551         region.
22552         * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
22553
22554 2016-07-21  Richard Biener  <rguenther@suse.de>
22555
22556         PR tree-optimization/81303
22557         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
22558         into account prologue and epilogue iterations when raising
22559         min_profitable_iters to sth at least covering one vector iteration.
22560
22561 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
22562
22563         * config/arm/arm.c (arm_test_cpu_arch_dat):
22564         Check for overlap.
22565
22566 2017-07-20  Nathan Sidwell  <nathan@acm.org>
22567
22568         Remove TYPE_METHODS.
22569         * tree.h (TYPE_METHODS): Delete.
22570         * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
22571         * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
22572         (dbxout_type_methods): Scan TYPE_FIELDS.
22573         (dbxout_type): Don't check TYPE_METHODS here.
22574         * function.c (use_register_for_decl): Always ignore register for
22575         class types when not optimizing.
22576         * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
22577         * tree.c (free_lang_data_in_type): Stitch out member functions and
22578         templates from TYPE_FIELDS.
22579         (build_distinct_type_copy, verify_type_variant,
22580         verify_type): Member fns are on TYPE_FIELDS.
22581         * tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
22582         * tree-pretty-print.c (dump_generic_node): Likewise.
22583
22584 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
22585
22586         PR target/80846
22587         * config/i386/i386.c (ix86_expand_vector_init_general): Handle
22588         V2TImode and V4TImode.
22589         (ix86_expand_vector_extract): Likewise.
22590         * config/i386/sse.md (VMOVE): Enable V4TImode even for just
22591         TARGET_AVX512F, instead of only for TARGET_AVX512BW.
22592         (ssescalarmode): Handle V4TImode and V2TImode.
22593         (VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
22594         (*vec_extractv2ti, *vec_extractv4ti): New insns.
22595         (VEXTRACTI128_MODE): New mode iterator.
22596         (splitter for *vec_extractv?ti first element): New.
22597         (VEC_INIT_MODE): New mode iterator.
22598         (vec_init<mode>): Consolidate 3 expanders into one using
22599         VEC_INIT_MODE mode iterator.
22600
22601 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
22602
22603         * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
22604         non_spilled_static_chain_regno_p.
22605
22606 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
22607
22608         * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
22609
22610 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
22611
22612         * bb-reorder.c (connect_traces): Allow copying of blocks within
22613         single partition.
22614
22615 2017-07-20  Richard Biener  <rguenther@suse.de>
22616
22617         * gimple.h (gimple_phi_result): Add gphi * overload.
22618         (gimple_phi_result_ptr): Likewise.
22619         (gimple_phi_arg): Likewise.  Adjust index assert to only
22620         allow actual argument accesses rather than all slots available
22621         by capacity.
22622         (gimple_phi_arg_def): Add gphi * overload.
22623         * tree-phinodes.c (make_phi_node): Initialize only actual
22624         arguments.
22625         (resize_phi_node): Clear memory not covered by old node,
22626         do not initialize excess argument slots.
22627         (reserve_phi_args_for_new_edge): Initialize new argument slot
22628         completely.
22629
22630 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
22631
22632         PR tree-optimization/81388
22633         Revert r238585:
22634         2016-07-21  Bin Cheng  <bin.cheng@arm.com>
22635
22636         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
22637         by removing computation of may_be_zero.
22638
22639 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22640             Tom de Vries  <tom@codesourcery.com>
22641
22642         PR middle-end/81030
22643         * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
22644         when gimple level profile disagrees with what RTL expander did.
22645
22646 2017-07-20  Richard Biener  <rguenther@suse.de>
22647
22648         PR tree-optimization/61171
22649         * tree-vectorizer.h (slp_instance): Add reduc_phis member.
22650         (vect_analyze_stmt): Add slp instance parameter.
22651         (vectorizable_reduction): Likewise.
22652         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
22653         (vect_is_simple_reduction): Deal with chains not detected
22654         as SLP reduction chain, specifically not properly associated
22655         chains containing a mix of plus/minus.
22656         (get_reduction_op): Remove.
22657         (get_initial_defs_for_reduction): Simplify, pass in whether
22658         this is a reduction chain, pass in the SLP node for the PHIs.
22659         (vect_create_epilog_for_reduction): Get the SLP instance as
22660         arg and adjust.
22661         (vectorizable_reduction): Get the SLP instance as arg.
22662         During analysis remember the SLP node with the PHIs in the
22663         instance.  Simplify getting at the vectorized reduction PHIs.
22664         * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
22665         through SLP instance.
22666         (vect_slp_analyze_operations): Likewise.
22667         * tree-vect-stms.c (vect_analyze_stmt): Likewise.
22668         (vect_transform_stmt): Likewise.
22669
22670 2017-07-20  Tom de Vries  <tom@codesourcery.com>
22671
22672         PR tree-optimization/81489
22673         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
22674         read of phi arg location to before loop that modifies phi.
22675
22676 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
22677
22678         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
22679         New pattern.
22680
22681 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22682
22683         PR middle-end/81331
22684         * except.c (execute): Fix ordering issue.
22685
22686 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22687
22688         PR rtl-optimization/81423
22689         * combine.c (make_compound_operation_int): Don't try to optimize
22690         the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
22691
22692 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22693
22694         PR rtl-optimization/81423
22695         * simplify-rtx.c (simplify_truncation): Handle truncating an IOR
22696         with a constant that is -1 in the truncated to mode.
22697
22698 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22699
22700         * predict.c (propagate_unlikely_bbs_forward): Break out from ...
22701         (determine_unlikely_bbs): ... here.
22702         * predict.h (propagate_unlikely_bbs_forward): Declare.
22703         * cfgexpand.c (pass_expand::execute): Use it.
22704         * bb-reorder.c (sanitize_hot_paths): Do not consider known to be
22705         unlikely edges.
22706         (find_rarely_executed_basic_blocks_and_crossing_edges): Use
22707         propagate_unlikely_bbs_forward.
22708
22709 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22710
22711         PR middle-end/81331
22712         * except.c (maybe_add_nop_after_section_switch): New function.
22713         (execute): Use it.
22714
22715 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22716
22717         * gimple.h (gimple_phi_set_arg): Make assert more strict.
22718
22719 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22720
22721         * gimple.h (gimple_phi_arg): Make assert more strict.
22722
22723 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
22724
22725         * config.gcc (powerpc*-*-*): Add mmintrin.h.
22726         * config/rs6000/mmintrin.h: New file.
22727         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
22728
22729 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22730
22731         PR tree-optimization/81346
22732         * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
22733
22734 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22735
22736         * config/nvptx/nvptx.md (VECIM): Add V2DI.
22737
22738 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22739
22740         * config/nvptx/nvptx-modes.def: Add V2DImode.
22741         * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
22742         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
22743         (nvptx_output_mov_insn): Handle lack of mov.b128.
22744         (nvptx_print_operand): Handle 'H' and 'L' codes.
22745         (nvptx_vector_mode_supported): Allow V2DImode.
22746         (nvptx_preferred_simd_mode): New function.
22747         (nvptx_data_alignment): New function.
22748         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
22749         nvptx_preferred_simd_mode.
22750         * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
22751         64 to 128 bits.
22752         (DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
22753
22754 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22755
22756         * config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
22757         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
22758         (nvptx_vector_mode_supported): New function.  Allow V2SImode.
22759         (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
22760         * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
22761         (mov<VECIM>_insn): New define_insn.
22762         (define_expand "mov<VECIM>): New define_expand.
22763
22764 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22765
22766         * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
22767
22768 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22769
22770         PR tree-optimization/81346
22771         * fold-const.h (fold_div_compare, range_check_type): Declare.
22772         * fold-const.c (range_check_type): New function.
22773         (build_range_check): Use range_check_type.
22774         (fold_div_compare): No longer static, rewritten into
22775         a match.pd helper function.
22776         (fold_comparison): Don't call fold_div_compare here.
22777         * match.pd (X / C1 op C2): New optimization using fold_div_compare
22778         as helper function.
22779
22780 2017-07-19  Nathan Sidwell  <nathan@acm.org>
22781
22782         * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
22783         (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
22784         * tree.c (find_decls_types_r, verify_type): Use
22785         TYPE_{MIN,MAX}_VALUE_RAW.
22786         * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
22787         (hash_tree): Likewise.
22788         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
22789         Likewise.
22790         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
22791         Likewise.
22792
22793 2017-07-18  Tom de Vries  <tom@codesourcery.com>
22794
22795         PR middle-end/81464
22796         * omp-expand.c (expand_omp_for_static_chunk): Handle
22797         equal-argument loop exit phi.
22798
22799 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
22800
22801         PR target/81471
22802         * config/i386/i386.md (rorx_immediate_operand): New mode attribute.
22803         (*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
22804         operand 2 predicate.
22805         (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
22806         operand 2 predicate.
22807         (ror,rol -> rorx splitters): Use const_int_operand as
22808         operand 2 predicate.
22809
22810 2017-06-18  Richard Biener  <rguenther@suse.de>
22811
22812         PR tree-optimization/81410
22813         * tree-vect-stmts.c (vectorizable_load): Properly adjust for
22814         the gap in the ! slp_perm SLP case after each group.
22815
22816 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22817
22818         PR middle-end/81463
22819         * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
22820         again.
22821
22822 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22823
22824         PR middle-end/81462
22825         * predict.c (set_even_probabilities): Cleanup; do not affect
22826         probabilities that are already known.
22827         (combine_predictions_for_bb): Call even when count is set.
22828
22829 2017-07-18  Nathan Sidwell  <nathan@acm.org>
22830
22831         * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
22832         TYPE_MAX_VALUE.
22833
22834 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
22835
22836         PR target/81408
22837         * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
22838         optimization for loop niter analysis.
22839
22840 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
22841
22842         PR target/81473
22843         * config/avr/avr.c (avr_optimize_casesi): Don't use
22844         INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
22845
22846 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
22847
22848         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
22849         body_cost_vec from _vect_peel_extended_info.
22850         (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
22851         (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
22852         npeel.
22853
22854 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
22855
22856         * config/arm/arm.c (emit_unlikely_jump): Remove unused var.
22857
22858 2017-07-18  Richard Biener  <rguenther@suse.de>
22859
22860         PR tree-optimization/80620
22861         PR tree-optimization/81403
22862         * tree-ssa-pre.c (phi_translate_1): Clear range and points-to
22863         info when re-using a VN table entry.
22864
22865 2017-07-18  Richard Biener  <rguenther@suse.de>
22866
22867         PR tree-optimization/81418
22868         * tree-vect-loop.c (vectorizable_reduction): Properly compute
22869         vectype_in.  Verify that with lane-reducing reduction operations
22870         we have a single def-use cycle.
22871
22872 2017-07-17  Carl Love  <cel@us.ibm.com>
22873
22874         Revert commit r249424   2017-06-20  Carl Love  <cel@us.ibm.com>
22875
22876         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22877         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
22878         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
22879         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
22880         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
22881         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
22882         VMULOSW): New enum "unspec" values.
22883         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
22884         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
22885         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
22886         altivec_vmulosw): New patterns.
22887         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
22888         VMULOSW): Add definitions.
22889
22890 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
22891
22892         * config/alpha/alpha.c: Include predict.h.
22893
22894 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
22895
22896         * tree-vrp.c (compare_assert_loc): Fix comparison function
22897         to return predictable results.
22898
22899 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22900
22901         * config/arc/arc.md (adddi3): Remove support for mexpand-adddi
22902         option.
22903         (subdi3): Likewise.
22904         * config/arc/arc.opt (mexpand-adddi): Deprecate it.
22905         * doc/invoke.texi (mexpand-adddi): Update text.
22906
22907 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22908
22909         * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
22910         that also clobbers the CC register. The old expand code is moved
22911         to ...
22912         (*arc_clzsi2): ... here.
22913         (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
22914         the CC register. The old expand code is moved to ...
22915         (arc_ctzsi2): ... here.
22916
22917 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22918
22919         * config/arc/arc.opt (mindexed-loads): Use initial value
22920         TARGET_INDEXED_LOADS_DEFAULT.
22921         (mauto-modify-reg): Use initial value
22922         TARGET_AUTO_MODIFY_REG_DEFAULT.
22923         * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
22924         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
22925         * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
22926         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
22927
22928 2017-07-17  Martin Liska  <mliska@suse.cz>
22929
22930         PR sanitizer/81302
22931         * opts.c (finish_options): Do not allow -fgnu-tm
22932         w/ -fsanitize={kernel-,}address.  Say sorry.
22933
22934 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22935
22936         PR target/81369
22937         * tree-loop-distribution.c (classify_partition): Only assert on
22938         numer of iterations.
22939         (merge_dep_scc_partitions): Delete prameter.  Update function call.
22940         (distribute_loop): Remove code handling loop with unknown niters.
22941         (pass_loop_distribution::execute): Skip loop with unknown niters.
22942
22943 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22944
22945         PR target/81369
22946         * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
22947         function sort_partitions_by_post_order.
22948
22949 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22950
22951         PR tree-optimization/81374
22952         * tree-loop-distribution.c (pass_loop_distribution::execute): Record
22953         the max index of basic blocks, rather than number of basic blocks.
22954
22955 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22956
22957         * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
22958         proto.
22959         (arc_legitimate_pic_operand_p): Likewise.
22960         * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
22961         function.
22962         (arc_needs_pcl_p): Likewise.
22963         (arc_legitimate_pc_offset_p): Likewise.
22964         (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
22965         function is also used in constrains.md.
22966         (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
22967         validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
22968         PLUS.  Only return true/false in known cases, otherwise assert.
22969         (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
22970         is already called in arc_legitimate_constant_p.
22971         * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
22972         pic addresses.
22973         (LEGITIMATE_PIC_OPERAND_P): Use
22974         arc_raw_symbolic_reference_mentioned_p function.
22975         * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
22976         function.
22977         (Cal): Likewise.
22978         (C32): Likewise.
22979
22980 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22981         Andrew Burgess  <andrew.burgess@embecosm.com>
22982
22983         * config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
22984         (arc_return_address_register): New function.
22985         * config/arc/arc.c (arc_handle_fndecl_attribute): New function.
22986         (arc_handle_fndecl_attribute): Add naked attribute.
22987         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
22988         (TARGET_WARN_FUNC_RETURN): Likewise.
22989         (arc_allocate_stack_slots_for_args): New function.
22990         (arc_warn_func_return): Likewise.
22991         (machine_function): Change type fn_type.
22992         (arc_compute_function_type): Consider new naked function type,
22993         change function return type.
22994         (arc_must_save_register): Adapt to handle new
22995         arc_compute_function_type's return type.
22996         (arc_expand_prologue): Likewise.
22997         (arc_expand_epilogue): Likewise.
22998         (arc_return_address_regs): Delete.
22999         (arc_return_address_register): New function.
23000         (arc_epilogue_uses): Use above function.
23001         * config/arc/arc.h (arc_return_address_regs): Delete prototype.
23002         (arc_function_type): Change encoding, add naked type.
23003         (ARC_INTERRUPT_P): Change to handle the new encoding.
23004         (ARC_FAST_INTERRUPT_P): Likewise.
23005         (ARC_NORMAL_P): Define.
23006         (ARC_NAKED_P): Likewise.
23007         (arc_compute_function_type): Delete prototype.
23008         * config/arc/arc.md (in_ret_delay_slot): Use
23009         arc_return_address_register function.
23010         (simple_return): Likewise.
23011         (p_return_i): Likewise.
23012
23013 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23014
23015         PR tree-optimization/81428
23016         * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
23017         can't be built for those types.
23018
23019 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23020
23021         Remove stuff dead since r239246.
23022
23023         * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
23024         * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
23025         (avr_inform_devices): Remove dead stuff.
23026
23027 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
23028
23029         * config/arm/arm_neon.h: Fix softp typo.
23030
23031 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23032
23033         PR tree-optimization/81365
23034         * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
23035         aggregate moves onto bb predecessor edges, make sure there are no
23036         loads that could alias the lhs in between the start of bb and the
23037         loads from *phi.
23038
23039 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23040
23041         PR 80929
23042         * config/avr/avr.c (avr_mul_highpart_cost): New static function.
23043         (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
23044         [LSHIFTRT, outer_code = TRUNCATE]: Same.
23045
23046 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23047
23048         PR tree-optimization/81396
23049         * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
23050         (init_symbolic_number): Initialize it to 1.
23051         (perform_symbolic_merge): Add n_ops from both operands into the new
23052         n_ops.
23053         (find_bswap_or_nop): Don't consider n->n == cmpnop computations
23054         without base_addr as useless if they need more than one operation.
23055         (bswap_replace): Handle !bswap case for NULL base_addr.
23056
23057 2017-07-17  Tom de Vries  <tom@codesourcery.com>
23058
23059         PR target/81069
23060         * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
23061         as possible.
23062
23063 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
23064
23065         * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
23066         conditional builtin define __FIX_LEON3FT_B2BST.
23067
23068 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
23069
23070         * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
23071         MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
23072         with -mfix-ut700.
23073
23074 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23075
23076         PR rtl-optimization/81424
23077         * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
23078         to remove potential trapping from operands if -fnon-call-exceptions.
23079
23080 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23081
23082         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
23083         profile_proability for scalling.
23084         * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
23085
23086 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23087
23088         * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
23089
23090 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23091
23092         * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
23093         fixpoint arithmetics.
23094
23095 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23096
23097         * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
23098         fixpoint arithmetics.
23099
23100 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23101
23102         * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
23103         fixpoint arithmetics.
23104
23105 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23106
23107         * profile-count.h (profile_probability::from_reg_br_prob_note,
23108         profile_probability::to_reg_br_prob_note): New functions.
23109         * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
23110         * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
23111         * predict.c (probability_reliable_p): Update.
23112         (edge_probability_reliable_p): Update.
23113         (br_prob_note_reliable_p): Update.
23114         (invert_br_probabilities): Update.
23115         (add_reg_br_prob_note): New function.
23116         (combine_predictions_for_insn): Update.
23117         * asan.c (asan_clear_shadow): Update.
23118         * cfgbuild.c (compute_outgoing_frequencies): Update.
23119         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
23120         (update_br_prob_note): Update.
23121         (rtl_verify_edges): Update.
23122         (purge_dead_edges): Update.
23123         (fixup_reorder_chain): Update.
23124         * emit-rtl.c (try_split): Update.
23125         * ifcvt.c (cond_exec_process_insns): Update.
23126         (cond_exec_process_if_block): Update.
23127         (dead_or_predicable): Update.
23128         * internal-fn.c (expand_addsub_overflow): Update.
23129         (expand_neg_overflow): Update.
23130         (expand_mul_overflow): Update.
23131         * loop-doloop.c (doloop_modify): Update.
23132         * loop-unroll.c (compare_and_jump_seq): Update.
23133         * optabs.c (emit_cmp_and_jump_insn_1): Update.
23134         * predict.h: Update.
23135         * reorg.c (mostly_true_jump): Update.
23136         * rtl.h: Update.
23137         * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
23138         * config/alpha/alpha.c (emit_unlikely_jump): Update.
23139         * config/arc/arc.c: (emit_unlikely_jump): Update.
23140         * config/arm/arm.c: (emit_unlikely_jump): Update.
23141         * config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
23142         * config/frv/frv.c (frv_print_operand_jump_hint): Update.
23143         * config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
23144         (ix86_print_operand): Update.
23145         (ix86_split_fp_branch): Update.
23146         (predict_jump): Update.
23147         * config/ia64/ia64.c (ia64_print_operand): Update.
23148         * config/mmix/mmix.c (mmix_print_operand): Update.
23149         * config/powerpcspe/powerpcspe.c (output_cbranch): Update.
23150         (rs6000_expand_split_stack_prologue): Update.
23151         * config/rs6000/rs6000.c: Update.
23152         * config/s390/s390.c (s390_expand_vec_strlen): Update.
23153         (s390_expand_vec_movstr): Update.
23154         (s390_expand_cs_tdsi): Update.
23155         (s390_expand_split_stack_prologue): Update.
23156         * config/sh/sh.c (sh_print_operand): Update.
23157         (expand_cbranchsi4): Update.
23158         (expand_cbranchdi4): Update.
23159         * config/sparc/sparc.c (output_v9branch): Update.
23160         * config/spu/spu.c (get_branch_target): Update.
23161         (ea_load_store_inline): Update.
23162         * config/tilegx/tilegx.c (cbranch_predicted_p): Update.
23163         * config/tilepro/tilepro.c: Update.
23164
23165 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23166
23167         * gimplify.c (mostly_copy_tree_r): Revert latest change.
23168         (gimplify_save_expr): Likewise.
23169
23170 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23171
23172         * ipa-visibility.c (function_and_variable_visibility): Fix pasto.
23173
23174 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23175
23176         * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
23177         TV_IPA_FNSUMMARY.
23178         * timevar.def (TV_IPA_FNSUMMARY): Define.
23179
23180 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
23181
23182         * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
23183         to back store errata sensitive sequence from being generated.
23184         (sqrtdf2_fix): Likewise.
23185
23186 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23187
23188         * tree-ssa-threadupdate.c (compute_path_counts,
23189         update_joiner_offpath_counts): Use profile_probability.
23190
23191 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23192
23193         Revert:
23194         2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23195
23196         * config/arm/arm-c.c (arm_cpu_builtins): Define
23197         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23198
23199 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
23200
23201         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23202         array entries to represent __ieee128 versions of the
23203         scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
23204         scalar_extract_sig, and scalar_insert_exp built-in functions.
23205         (altivec_resolve_overloaded_builtin): Add special case handling
23206         for the __builtin_scalar_insert_exp function, as represented by
23207         the P9V_BUILTIN_VEC_VSIEDP constant.
23208         * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
23209         exponent support for __ieee128 argument.
23210         (VSESQP): Add scalar extract signature support for __ieee128
23211         argument.
23212         (VSTDCNQP): Add scalar test negative support for __ieee128
23213         argument.
23214         (VSIEQP): Add scalar insert exponent support for __int128 argument
23215         with __ieee128 result.
23216         (VSIEQPF): Add scalar insert exponent support for __ieee128
23217         argument with __ieee128 result.
23218         (VSTDCQP): Add scalar test data class support for __ieee128
23219         argument.
23220         (VSTDCNQP): Add overload support for scalar test negative with
23221         __ieee128 argument.
23222         (VSTDCQP): Add overload support for scalar test data class
23223         __ieee128 argument.
23224         * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
23225         UNSPEC_VSX_SXSIGDP.
23226         (UNSPEC_VSX_SIEXPQP): New constant.
23227         (xsxexpqp): New insn for VSX scalar extract exponent quad
23228         precision.
23229         (xsxsigqp): New insn for VSX scalar extract significand quad
23230         precision.
23231         (xsiexpqpf): New insn for VSX scalar insert exponent quad
23232         precision with floating point argument.
23233         (xststdcqp): New expand for VSX scalar test data class quad
23234         precision.
23235         (xststdcnegqp): New expand for VSX scalar test negative quad
23236         precision.
23237         (xststdcqp): New insn to match expansions for VSX scalar test data
23238         class quad precision and VSX scalar test negative quad precision.
23239         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
23240         special case operand checking to enforce that second operand of
23241         VSX scalar test data class with quad precision argument is a 7-bit
23242         unsigned literal.
23243         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
23244         prototypes and descriptions of __ieee128 versions of
23245         scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
23246         scalar_test_data_class, and scalar_test_neg built-in functions.
23247
23248 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
23249
23250         PR tree-optimization/81162
23251         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
23252         replace a negate with an add.
23253
23254 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
23255
23256         * doc/invoke.texi (arm/-mcpu): Document +crypto.
23257
23258 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23259
23260         * config/arm/arm-c.c (arm_cpu_builtins): Define
23261         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23262
23263 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23264
23265         * config/arm/arm-cpus.in (cortex-r52): Add new entry.
23266         (armv8-r): Set ARM Cortex-R52 as default CPU.
23267         * config/arm/arm-tables.opt: Regenerate.
23268         * config/arm/arm-tune.md: Regenerate.
23269         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
23270         Cortex-R52.
23271         * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
23272         extension for -mcpu=cortex-r52.
23273
23274 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23275
23276         * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
23277         (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
23278         * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
23279         (fp-armv8): Define it as FP_ARMv8 only.
23280         config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
23281         (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
23282         TARGET_FPU_ARMV8.
23283         config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
23284         TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
23285         * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
23286         first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
23287         than TARGET_FPU_ARMV8.
23288         * config/arm/arm-c.c (arm_cpu_builtins): Likewise for
23289         __ARM_FEATURE_NUMERIC_MAXMIN macro definition.
23290         * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
23291         TARGET_FPU_ARMV8.
23292         * config/arm/neon.md (neon_vrint): Likewise.
23293         (neon_vcvt): Likewise.
23294         (neon_<fmaxmin_op><mode>): Likewise.
23295         (<fmaxmin><mode>3): Likewise.
23296         * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
23297         * config/arm/predicates.md (arm_cond_move_operator): Check against
23298         TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
23299
23300 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
23301
23302         * config/aarch64/aarch64.c (aarch64_print_operand): Move comments
23303         to top of function.
23304
23305 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23306
23307         * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
23308         loop in comment with memset.
23309
23310 2017-07-14  Martin Liska  <mliska@suse.cz>
23311
23312         * cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
23313         * dwarf2out.c (is_java): Remove the function.
23314         (output_pubname): Remove usage of the function.
23315         (lower_bound_default): Remove usage of DW_LANG_Java.
23316         (gen_compile_unit_die): Likewise.
23317         * gcc.c: Remove compiler defaults for .java and .zip files.
23318         * gimple-expr.c (remove_suffix): Change as there's no longer
23319         extension than 4-letter one.
23320         * gimplify.c (mostly_copy_tree_r): Remove Java-special part.
23321         (gimplify_save_expr): Likewise.
23322         * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
23323         as it's possible even for other languages than Java.
23324         * langhooks.h (struct lang_hooks): Remove Java from a comment.
23325         * lto-opts.c (lto_write_options): Remove reference to Java.
23326         * opts.c (strip_off_ending): Update file extension handling.
23327         * tree-cfg.c (verify_gimple_call): Remove comment with Java.
23328         * tree-eh.c (lower_resx): Likewise.
23329         * tree.c (free_lang_data_in_type): Remove dead code.
23330         (find_decls_types_r): Likewise.
23331         (build_common_builtin_nodes): Remove Java from a comment.
23332         (verify_type): Remove dead code.
23333         * varasm.c (assemble_external): Remove Java from a comment.
23334
23335 2017-07-14  Martin Liska  <mliska@suse.cz>
23336
23337         * opts.c (finish_options): Add quotes.
23338         (common_handle_option): Likewise.
23339
23340 2017-07-14  Martin Liska  <mliska@suse.cz>
23341
23342         * dbxout.c (get_lang_number): Do not handle GNU Pascal.
23343         * dbxout.h (extern void dbxout_stab_value_internal_label_diff):
23344         Remove N_SO_PASCAL.
23345         * dwarf2out.c (lower_bound_default): Do not handle
23346         DW_LANG_Pascal83.
23347         (gen_compile_unit_die): Likewise.
23348         * gcc.c: Remove default extension binding for GNU Pascal.
23349         * stmt.c: Remove Pascal language from a comment.
23350         * xcoffout.c: Likewise.
23351
23352 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
23353
23354         PR c/81405
23355         * diagnostic-show-locus.c (fixit_cmp): New function.
23356         (layout::layout): Sort m_fixit_hints.
23357         (column_range::column_range): Assert that the values are valid.
23358         (struct char_span): New struct.
23359         (correction::overwrite): New method.
23360         (struct source_line): New struct.
23361         (line_corrections::add_hint): Add assertions.  Reimplement memcpy
23362         calls in terms of classes source_line and char_span, and
23363         correction::overwrite.
23364         (selftest::test_overlapped_fixit_printing_2): New function.
23365         (selftest::diagnostic_show_locus_c_tests): Call it.
23366
23367 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
23368
23369         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
23370         early if there is no lhs.
23371
23372 2017-07-13  Martin Liska  <mliska@suse.cz>
23373
23374         * dwarf2out.c (gen_pointer_type_die): Remove dead code.
23375         (gen_reference_type_die): Likewise.
23376         * stor-layout.c: Remove Pascal-related comment.
23377
23378 2017-07-13  Martin Liska  <mliska@suse.cz>
23379
23380         * opts.c (finish_options): Add quotes to error messages.
23381         (parse_sanitizer_options): Likewise.
23382
23383 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23384
23385         * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
23386
23387 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
23388
23389         * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
23390
23391 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
23392
23393         * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
23394         during expansion.
23395         * builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
23396
23397 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
23398
23399         PR target/81193
23400         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
23401         provides the hardware capability bits, define the macro
23402         __BUILTIN_CPU_SUPPORTS__.
23403         * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
23404         if GLIBC does not provide the hardware capability bits.  Add a
23405         gcc_unreachable call if the built-in cpu function is neither
23406         __builtin_cpu_is nor __builtin_cpu_supports.
23407         (rs6000_get_function_versions_dispatcher): Change the warning
23408         that an old GLIBC is used which does not export the capability
23409         bits to be an error.
23410         * doc/extend.texi (target_clones attribute): Document the
23411         restriction that GLIBC 2.23 or newer is needed on the PowerPC.
23412         (PowerPC built-in functions): Document that GLIBC 2.23 or newer is
23413         needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
23414         the macros defined by GCC if the newer GLIBC is available.
23415
23416 2017-07-12  Jeff Law  <law@redhat.com>
23417
23418         * config/riscv/riscv.c: Remove unnecessary includes.  Reorder
23419         remaining includes slightly.
23420         * config/riscv/riscv-builtins.c: Include profile-count.h.
23421
23422 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23423
23424         PR target/79883
23425         * config/avr/avr.c (avr_set_current_function): In diagnostic
23426         messages: Quote keywords and (parts of) identifiers.
23427         [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
23428         "INTERUPT".
23429
23430 2017-07-12  Carl Love  <cel@us.ibm.com>
23431
23432         * config/rs6000/rs6000-c.c: Add support for built-in functions
23433         vector bool char vec_revb (vector bool char);
23434         vector bool short vec_revb (vector short char);
23435         vector bool int vec_revb (vector bool int);
23436         vector bool long long vec_revb (vector bool long long);
23437         * doc/extend.texi: Update the built-in documentation file for the
23438         new built-in functions.
23439
23440 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23441
23442         * config/s390/s390.md: Remove movcc splitter.
23443
23444 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23445
23446         * config/s390/s390.c (s390_rtx_costs): Return proper costs for
23447         load/store on condition.
23448
23449 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23450
23451         PR target/81407
23452         * config/avr/avr.c (avr_encode_section_info)
23453         [progmem && !TREE_READONLY]: Error if progmem object needs
23454         constructing.
23455
23456 2017-07-11  Michael Collison  <michael.collison@arm.com>
23457
23458         * config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
23459         New pattern.
23460
23461 2017-07-11  Carl Love  <cel@us.ibm.com>
23462
23463         * config/rs6000/rs6000-c.c: Add support for builtins
23464         vector unsigned int vec_parity_lsbb (vector signed int);
23465         vector unsigned int vec_parity_lsbb (vector unsigned int);
23466         vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
23467         vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
23468         vector unsigned long long vec_parity_lsbb (vector signed long long);
23469         vector unsigned long long vec_parity_lsbb (vector unsigned long long);
23470         * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
23471         * config/rs6000/altivec.h (vec_parity_lsbb): Add define.
23472         * doc/extend.texi: Update the built-in documentation file for the
23473         new built-in functions.
23474
23475 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
23476
23477         * diagnostic-show-locus.c: Include "gcc-rich-location.h".
23478         (layout::m_primary_loc): New field.
23479         (layout::layout): Initialize new field.  Move location filtering
23480         logic from here to...
23481         (layout::maybe_add_location_range): ...this new method.  Add
23482         support for filtering to just the lines already specified by other
23483         locations.
23484         (layout::will_show_line_p): New method.
23485         (gcc_rich_location::add_location_if_nearby): New method.
23486         (selftest::test_add_location_if_nearby): New test function.
23487         (selftest::diagnostic_show_locus_c_tests): Call it.
23488         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
23489         New method.
23490
23491 2017-07-11  Tom de Vries  <tom@codesourcery.com>
23492
23493         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
23494         (bb_first_real_insn): New function.
23495         (nvptx_single): Add extra initialization of broadcasted condition
23496         variables.
23497
23498 2017-07-11  Nathan Sidwell  <nathan@acm.org>
23499
23500         * dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
23501
23502 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
23503
23504         * doc/extend.texi (AVR Function Attributes): Remove weblink to
23505         Binutils doc as TEXI will mess them up.
23506         * doc/invoke.texi (AVR Options): Same here.
23507
23508 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
23509
23510         * config/sparc/sparc.opt (mfix-ut700): New option.
23511         (mfix-gr712rc): Likewise.
23512         (sparc_fix_b2bst): New variable.
23513         * doc/invoke.texi (SPARC options): Document them.
23514         (ARM options): Fix warnings.
23515         * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
23516         instructions to prevent sequences that can trigger the store-store
23517         errata for certain LEON3FT processors.
23518         (pass_work_around_errata::gate): Also test sparc_fix_b2bst.
23519         (sparc_option_override): Set sparc_fix_b2bst appropriately.
23520         * config/sparc/sparc.md (fix_b2bst): New attribute.
23521         (in_branch_delay): Prevent stores in delay slot if fix_b2bst.
23522
23523 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
23524
23525         PR target/81375
23526         * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
23527         (rcpps): Ditto.
23528         (*rsqrtsf2_sse): Ditto.
23529         (rsqrtsf2): Ditto.
23530         (div<mode>3): Macroize insn from divdf3 and divsf3
23531         using MODEF mode iterator.
23532
23533 2017-07-10  Martin Sebor  <msebor@redhat.com>
23534
23535         PR tree-optimization/80397
23536         * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
23537         instead of testing for equality to INTEGER_TYPE.
23538
23539 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
23540
23541         * config.gcc: Remove uclibc from arc target spec.
23542
23543 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
23544
23545         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
23546
23547 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23548
23549         PR lto/80838
23550         * lto-wrapper.c (remove_option): New function.
23551         (merge_and_complain): Merge PIC/PIE options more realistically.
23552
23553 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
23554
23555         Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
23556
23557         PR target/20296
23558         PR target/81268
23559         * configure.ac [target=avr]: Add GAS check for -mgcc-isr.
23560         (HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
23561         * config.in: Regenerate.
23562         * configure: Regenerate.
23563         * doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
23564         * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
23565         * config/avr/avr.opt (-mgas-isr-prologues): New option and...
23566         (TARGET_GASISR_PROLOGUES): ...target mask.
23567         * common/config/avr/avr-common.c
23568         (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
23569         Set -mgas-isr-prologues.
23570         * config/avr/avr-passes.def (avr_pass_pre_proep): Add
23571         INSERT_PASS_BEFORE for it.
23572         * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
23573         * config/avr/avr.c (avr_option_override)
23574         [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
23575         (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
23576         (avr_attribute_table) <no_gccisr>: Add new function attribute.
23577         (avr_set_current_function) <is_no_gccisr>: Init machine field.
23578         (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
23579         and rtl_opt_pass.
23580         (make_avr_pass_pre_proep): New function.
23581         (emit_push_sfr) <treg>: Add argument to function and use it
23582         instead of TMP_REG.
23583         (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
23584         and set machine->gasisr.yes.
23585         (avr_expand_epilogue) [machine->gasisr.yes]: Similar.
23586         (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
23587         __gcc_isr.n_pushed to .L__stack_usage.
23588         (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
23589         (avr_asm_final_postscan_insn): ...this new static function.
23590         * config/avr/avr.h (machine_function)
23591         <is_no_gccisr, use_L__stack_usage>: New fields.
23592         <gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
23593         * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
23594         (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
23595         (gasisr, *gasisr): New expander and insn.
23596         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
23597         [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
23598         * config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
23599
23600 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
23601
23602         * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
23603         in quoted strings.
23604
23605 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
23606
23607         Move jump-tables out of .text again.
23608
23609         PR target/81075
23610         * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
23611         (ASM_OUTPUT_ADDR_VEC): New function.
23612         (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
23613         (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
23614         INSN_ADDRESSes as asm comment.
23615         * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
23616         (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
23617         (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
23618         * config/avr/avr.md (*tablejump): Adjust comment.
23619         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
23620         * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
23621         New detail.
23622         * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
23623         (avr_output_addr_vec): New proto.
23624         (avr_log_t) <insn_addresses>: New field.
23625
23626 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
23627
23628         PR target/81313
23629         * config/i386/i386.c (ix86_function_arg_advance): Set
23630         outgoing_args_on_stack to true if there are outgoing arguments
23631         on stack.
23632         (ix86_function_arg): Likewise.
23633         (ix86_get_drap_rtx): Use DRAP only if there are outgoing
23634         arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
23635         * config/i386/i386.h (machine_function): Add
23636         outgoing_args_on_stack.
23637
23638 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
23639
23640         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
23641         supporting pthreds.
23642         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
23643
23644 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
23645
23646         * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
23647         (REAL_H): Remove $(MACHMODE_H).
23648         (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
23649         double-int.h.
23650         (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
23651         $(MACHMODE_H) and double-int.h.
23652         (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
23653         $(MACHMODE_H).
23654         (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
23655         double-int.h.
23656
23657 2017-07-07  Andrew Pinski  <apinski@cavium.com>
23658
23659         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
23660         prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
23661
23662 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23663
23664         * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
23665         Add warning if GCC was not configured to link against a GLIBC that
23666         exports the hardware capability bits.
23667         (make_resolver_func): Make resolver function private and not a
23668         COMDAT function.  Create the name with clone_function_name instead
23669         of make_unique_name.
23670
23671         PR target/81348
23672         * config/rs6000/rs6000.md (HI sign_extend splitter): Use the
23673         correct operand in doing the split.
23674
23675 2017-07-07 Carl Love  <cel@us.ibm.com>
23676
23677         * config/rs6000/rs6000-c: Add support for built-in function
23678         vector unsigned short vec_pack_to_short_fp32 (vector float,
23679                                                       vector float).
23680         * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
23681         BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
23682         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
23683         * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
23684         (convert_4f32_8i16): Add define_expand.
23685         * doc/extend.texi: Update the built-in documentation file for the
23686         new built-in function.
23687
23688 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23689
23690         * config/sparc/m8.md: New file.
23691         * config/sparc/sparc.md: Include m8.md.
23692
23693 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23694
23695         * config/sparc/sparc.opt: New option -mvis4b.
23696         * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
23697         (sparc_option_override): Handle VIS4B.
23698         (enum sparc_builtins): Define
23699         SPARC_BUILTIN_DICTUNPACK{8,16,32},
23700         SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
23701         SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
23702         SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
23703         SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
23704         (check_constant_argument): New function.
23705         (sparc_vis_init_builtins): Define builtins
23706         __builtin_vis_dictunpack{8,16,32},
23707         __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
23708         __builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
23709         __builtin_vis_fpcmpde{8,16,32}shl and
23710         __builtin_vis_fpcmpur{8,16,32}shl.
23711         (sparc_expand_builtin): Check that the constant operands to
23712         __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
23713         constant and in range.
23714         * config/sparc/sparc-c.c (sparc_target_macros): Handle
23715         TARGET_VIS4B.
23716         * config/sparc/sparc.h (SPARC_IMM2_P): Define.
23717         (SPARC_IMM5_P): Likewise.
23718         * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
23719         (enabled): Handle vis4b.
23720         (UNSPEC_DICTUNPACK): New unspec.
23721         (UNSPEC_FPCMPSHL): Likewise.
23722         (UNSPEC_FPUCMPSHL): Likewise.
23723         (UNSPEC_FPCMPDESHL): Likewise.
23724         (UNSPEC_FPCMPURSHL): Likewise.
23725         (cpu_feature): New CPU feature `vis4b'.
23726         (dictunpack{8,16,32}): New insns.
23727         (FPCSMODE): New mode iterator.
23728         (fpcscond): New code iterator.
23729         (fpcsucond): Likewise.
23730         (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
23731         (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
23732         (fpcmpde{8,16,32}{si,di}shl): Likewise.
23733         (fpcmpur{8,16,32}{si,di}shl): Likewise.
23734         * config/sparc/constraints.md: Define constraints `q' for unsigned
23735         2-bit integer constants and `t' for unsigned 5-bit integer
23736         constants.
23737         * config/sparc/predicates.md (imm5_operand_dictunpack8): New
23738         predicate.
23739         (imm5_operand_dictunpack16): Likewise.
23740         (imm5_operand_dictunpack32): Likewise.
23741         (imm2_operand): Likewise.
23742         * doc/invoke.texi (SPARC Options): Document -mvis4b.
23743         * doc/extend.texi (SPARC VIS Built-in Functions): Document the
23744         ditunpack* and fpcmp*shl builtins.
23745
23746 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23747
23748         * config.gcc: Handle m8 in --with-{cpu,tune} options.
23749         * config.in: Add HAVE_AS_SPARC6 define.
23750         * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
23751         M8.
23752         * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
23753         TARGET_CPU_m8.
23754         (ASM_CPU32_DEFAUILT_SPEC): Likewise.
23755         (CPP_CPU_SPEC): Handle m8.
23756         (ASM_CPU_SPEC): Likewise.
23757         * config/sparc/sparc-opts.h (enum processor_type): Add
23758         PROCESSOR_M8.
23759         * config/sparc/sparc.c (m8_costs): New struct.
23760         (sparc_option_override): Handle TARGET_CPU_m8.
23761         (sparc32_initialize_trampoline): Likewise.
23762         (sparc64_initialize_trampoline): Likewise.
23763         (sparc_issue_rate): Likewise.
23764         (sparc_register_move_cost): Likewise.
23765         * config/sparc/sparc.h (TARGET_CPU_m8): Define.
23766         (CPP_CPU64_DEFAULT_SPEC): Define for M8.
23767         (ASM_CPU64_DEFAULT_SPEC): Likewise.
23768         (CPP_CPU_SPEC): Handle M8.
23769         (ASM_CPU_SPEC): Likewise.
23770         (AS_M8_FLAG): Define.
23771         * config/sparc/sparc.md: Add m8 to the cpu attribute.
23772         * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
23773         * configure.ac (HAVE_AS_SPARC6): Check for assembler support for
23774         M8 instructions.
23775         * configure: Regenerate.
23776         * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
23777         -mtune=m8.
23778
23779 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23780
23781         * config/sparc/niagara7.md: Rework the DFA scheduler to use insn
23782         subtypes.
23783         * config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
23784         ("*movdi_insn_sp32"): Do not set v3pipe.
23785         ("*movsi_insn"): Likewise.
23786         ("*movdi_insn_sp64"): Likewise.
23787         ("*movsf_insn"): Likewise.
23788         ("*movdf_insn_sp32"): Likewise.
23789         ("*movdf_insn_sp64"): Likewise.
23790         ("*zero_extendsidi2_insn_sp64"): Likewise.
23791         ("*sign_extendsidi2_insn"): Likewise.
23792         ("*mov<VM32:mode>_insn"): Likewise.
23793         ("*mov<VM64:mode>_insn_sp64"): Likewise.
23794         ("*mov<VM64:mode>_insn_sp32"): Likewise.
23795         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23796         ("<vlop:code><VL:mode>3"): Likewise.
23797         ("*not_<vlop:code><VL:mode>3"): Likewise.
23798         ("*nand<VL:mode>_vis"): Likewise.
23799         ("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
23800         ("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
23801         ("one_cmpl<VL:mode>2"): Likewise.
23802         ("faligndata<VM64:mode>_vis"): Likewise.
23803         ("alignaddrsi_vis"): Likewise.
23804         ("alignaddrdi_vis"): Likweise.
23805         ("alignaddrlsi_vis"): Likewise.
23806         ("alignaddrldi_vis"): Likewise.
23807         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
23808         ("bmaskdi_vis"): Likewise.
23809         ("bmasksi_vis"): Likewise.
23810         ("bshuffle<VM64:mode>_vis"): Likewise.
23811         ("cmask8<P:mode>_vis"): Likewise.
23812         ("cmask16<P:mode>_vis"): Likewise.
23813         ("cmask32<P:mode>_vis"): Likewise.
23814         ("pdistn<P:mode>_vis"): Likewise.
23815         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23816
23817 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23818
23819         * config/sparc/sparc.md ("subtype"): New insn attribute.
23820         ("*wrgsr_sp64"): Set insn subtype.
23821         ("*rdgsr_sp64"): Likewise.
23822         ("alignaddrsi_vis"): Likewise.
23823         ("alignaddrdi_vis"): Likewise.
23824         ("alignaddrlsi_vis"): Likewise.
23825         ("alignaddrldi_vis"): Likewise.
23826         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23827         ("fexpand_vis"): Likewise.
23828         ("fpmerge_vis"): Likewise.
23829         ("faligndata<VM64:mode>_vis"): Likewise.
23830         ("bshuffle<VM64:mode>_vis"): Likewise.
23831         ("cmask8<P:mode>_vis"): Likewise.
23832         ("cmask16<P:mode>_vis"): Likewise.
23833         ("cmask32<P:mode>_vis"): Likewise.
23834         ("fchksm16_vis"): Likewise.
23835         ("v<vis3_shift_patname><GCM:mode>3"): Likewise.
23836         ("fmean16_vis"): Likewise.
23837         ("fp<plusminus_insn>64_vis"): Likewise.
23838         ("<plusminus_insn>v8qi3"): Likewise.
23839         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23840         ("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
23841         ("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
23842         ("<vis3_addsub_ss_patname>v8qi3"): Likewise.
23843         ("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
23844         ("*movqi_insn"): Likewise.
23845         ("*movhi_insn"): Likewise.
23846         ("*movsi_insn"): Likewise.
23847         ("movsi_pic_gotdata_op"): Likewise.
23848         ("*movdi_insn_sp32"): Likewise.
23849         ("*movdi_insn_sp64"): Likewise.
23850         ("movdi_pic_gotdata_op"): Likewise.
23851         ("*movsf_insn"): Likewise.
23852         ("*movdf_insn_sp32"): Likewise.
23853         ("*movdf_insn_sp64"): Likewise.
23854         ("*zero_extendhisi2_insn"): Likewise.
23855         ("*zero_extendqihi2_insn"): Likewise.
23856         ("*zero_extendqisi2_insn"): Likewise.
23857         ("*zero_extendqidi2_insn"): Likewise.
23858         ("*zero_extendhidi2_insn"): Likewise.
23859         ("*zero_extendsidi2_insn_sp64"): Likewise.
23860         ("ldfsr"): Likewise.
23861         ("prefetch_64"): Likewise.
23862         ("prefetch_32"): Likewise.
23863         ("tie_ld32"): Likewise.
23864         ("tie_ld64"): Likewise.
23865         ("*tldo_ldub_sp32"): Likewise.
23866         ("*tldo_ldub1_sp32"): Likewise.
23867         ("*tldo_ldub2_sp32"): Likewise.
23868         ("*tldo_ldub_sp64"): Likewise.
23869         ("*tldo_ldub1_sp64"): Likewise.
23870         ("*tldo_ldub2_sp64"): Likewise.
23871         ("*tldo_ldub3_sp64"): Likewise.
23872         ("*tldo_lduh_sp32"): Likewise.
23873         ("*tldo_lduh1_sp32"): Likewise.
23874         ("*tldo_lduh_sp64"): Likewise.
23875         ("*tldo_lduh1_sp64"): Likewise.
23876         ("*tldo_lduh2_sp64"): Likewise.
23877         ("*tldo_lduw_sp32"): Likewise.
23878         ("*tldo_lduw_sp64"): Likewise.
23879         ("*tldo_lduw1_sp64"): Likewise.
23880         ("*tldo_ldx_sp64"): Likewise.
23881         ("*mov<VM32:mode>_insn"): Likewise.
23882         ("*mov<VM64:mode>_insn_sp64"): Likewise.
23883         ("*mov<VM64:mode>_insn_sp32"): Likewise.
23884
23885 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23886
23887         * config/sparc/sparc.md ("type"): New insn type viscmp.
23888         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
23889         viscmp.
23890         ("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
23891         ("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
23892         ("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
23893         * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
23894         viscmp.
23895         ("n7_vis_logical_11cycle"): Likewise.
23896         * config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
23897         * config/sparc/niagara2.md ("niag3_vis": Likewise.
23898         * config/sparc/niagara.md ("niag_vis"): Likewise.
23899         * config/sparc/ultra3.md ("us3_fga"): Likewise.
23900         * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
23901
23902 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23903
23904         * config/sparc/sparc.md: New instruction type `bmask'.
23905         (bmaskdi_vis): Use the `bmask' type.
23906         (bmasksi_vis): Likewise.
23907         * config/sparc/ultra3.md (us3_array): Likewise.
23908         * config/sparc/niagara7.md (n7_array): Likewise.
23909         * config/sparc/niagara4.md (n4_array): Likewise.
23910         * config/sparc/niagara2.md (niag2_vis): Likewise.
23911         (niag3_vis): Likewise.
23912         * config/sparc/niagara.md (niag_vis): Likewise.
23913
23914 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23915
23916         * ipa-comdats.c: Remove optimize check from gate.
23917         * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
23918         for functions not optimized.
23919         (ipa_fn_summary_read): Skip optimize check.
23920         (ipa_fn_summary_write): Likewise.
23921         * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
23922         is optimized.
23923         * ipa-inline.c (can_inline_edge_p): Not optimized functions are
23924         uninlinable.
23925         (can_inline_edge_p): Check flag_pcc_struct_return for match.
23926         (check_callers): Give up on caller which is not optimized.
23927         (inline_small_functions): Likewise.
23928         (ipa_inline): Do not give up when not optimizing.
23929         * ipa-visbility.c (function_and_variable_visibility): Do not optimize
23930         away unoptimizes cdtors.
23931         (whole_program_function_and_variable_visibility): Do
23932         ipa_discover_readonly_nonaddressable_vars in LTO mode.
23933         * ipa.c (process_references): Do not check optimize.
23934         (symbol_table::remove_unreachable_nodes): Update optimize check.
23935         (set_writeonly_bit): Update optimize check.
23936         (pass_ipa_cdtor_merge::gate): Do not check optimize.
23937         (pass_ipa_single_use::gate): Remove.
23938
23939 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
23940
23941         * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
23942         insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
23943         rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
23944         mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
23945         permute_load, permute_store, adjust_extract, adjust_splat,
23946         adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
23947         replace_swap_with_copy, dump_swap_insn_table,
23948         alignment_with_canonical_addr, alignment_mask, find_alignment_op,
23949         recombine_lvx_pattern, recombine_stvx_pattern,
23950         recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
23951         make_pass_analyze_swaps): Move all code related to p8 swap optimizations
23952         to file rs6000-p8swap.c.
23953         * config/rs6000/rs6000-p8swap.c: New file.
23954         * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
23955         * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
23956         and rs6000*-*-* targets.
23957
23958 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
23959
23960         * Makefile.in (selftest): Remove dependency on s-selftest-c++.
23961
23962 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23963
23964         * lto-wrapper.c (merge_and_complain): Do not merge
23965         fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
23966         fsigned_zeros, ftrapping_math, fwrapv.
23967         (append_compiler_options): Do not track these options.
23968         (append_linker_options): Likewie
23969
23970 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23971
23972         * cgraphunit.c (cgraph_node::finalize_function): When
23973         !flag_toplevel_reorde set no_reorder flag.
23974         (varpool_node::finalize_decl): Likewise.
23975         (symbol_table::compile): Drop no toplevel reorder path.
23976
23977 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23978
23979         * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
23980         edges; zero probability is not better than uninitialized.
23981
23982 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
23983
23984         * asan.h (asan_sanitize_allocas_p): Declare.
23985         * asan.c (asan_sanitize_allocas_p): New function.
23986         (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
23987         (handle_builtin_alloca): Likewise.
23988         * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
23989         if !asan_sanitize_allocas_p.
23990         * params.def (asan-instrument-allocas): Add new option.
23991         * params.h (ASAN_PROTECT_ALLOCAS): Define.
23992         * opts.c (common_handle_option): Disable allocas sanitization for
23993         KASan by default.
23994
23995 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
23996
23997         * asan.c: Include gimple-fold.h.
23998         (get_last_alloca_addr): New function.
23999         (handle_builtin_stackrestore): Likewise.
24000         (handle_builtin_alloca): Likewise.
24001         (asan_emit_allocas_unpoison): Likewise.
24002         (get_mem_refs_of_builtin_call): Add new parameter, remove const
24003         quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
24004         BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
24005         (instrument_builtin_call): Pass gimple iterator to
24006         get_mem_refs_of_builtin_call.
24007         (last_alloca_addr): New global.
24008         * asan.h (asan_emit_allocas_unpoison): Declare.
24009         * builtins.c (expand_asan_emit_allocas_unpoison): New function.
24010         (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
24011         * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
24012         if function calls alloca.
24013         * gimple-fold.c (replace_call_with_value): Remove static keyword.
24014         * gimple-fold.h (replace_call_with_value): Declare.
24015         * internal-fn.c: Include asan.h.
24016         * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
24017         BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
24018
24019 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24020
24021         * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
24022         (C_SELFTEST_FLAGS): New.
24023         (CPP_SELFTEST_FLAGS): New.
24024         (SELFTEST_DEPS): New, from deps of s-selftest.
24025         (C_SELFTEST_DEPS): New, from deps of s-selftest.
24026         (CPP_SELFTEST_DEPS): New.
24027         (selftest): Add dependency on s-selftest-c++.
24028         (s-selftest): Rename to...
24029         (s-selftest-c): ...this, moving deps to SELFTEST_DEPS
24030         and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
24031         than SELFTEST_FLAGS.
24032         (selftest-gdb): Rename to...
24033         (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
24034         C_SELFTEST_FLAGS.
24035         (selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
24036         (selftest-valgrind): Rename to...
24037         (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
24038         C_SELFTEST_FLAGS.
24039         (selftest-valgrind): Reintroduce as an alias for
24040         selftest-c-valgrind.
24041         (s-selftest-c++): New.
24042         (selftest-c++-gdb): New.
24043         (selftest-c++-valgrind): New.
24044
24045 2017-07-06  Olivier Hainque  <hainque@adacore.com>
24046
24047         * gcc.c (process_command): When deciding if undefined variables
24048         should be ignored when processing specs, accept "gcc -v" as well.
24049
24050 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24051
24052         * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
24053         afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
24054
24055 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24056
24057         * config/arm/arm-cpus.in (armv8-r): Add new entry.
24058         * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
24059         * config/arm/arm-tables.opt: Regenerate.
24060         * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
24061         enumerator.
24062         * doc/invoke.texi: Mention -march=armv8-r and its extensions.
24063
24064 2017-07-06  Carl Love  <cel@us.ibm.com>
24065
24066         * ChangeLog: Clean up from mid air collision
24067
24068 2017-07-06  Carl Love  <cel@us.ibm.com>
24069
24070         * config/rs6000/rs6000-c.c: Add support for built-in functions
24071         vector signed int vec_subc (vector signed int, vector signed int);
24072         vector signed __int128 vec_subc (vector signed __int128,
24073                                          vector signed __int128);
24074         vector unsigned __int128 vec_subc (vector unsigned __int128,
24075                                            vector unsigned __int128);
24076         vector signed int vec_sube (vector signed int, vector signed int,
24077                                     vector signed int);
24078         vector unsigned int vec_sube (vector unsigned int,
24079                                       vector unsigned int,
24080                                       vector unsigned int);
24081         vector signed __int128 vec_sube (vector signed __int128,
24082                                          vector signed __int128,
24083                                          vector signed__int128);
24084         vector unsigned __int128 vec_sube (vector unsigned __int128,
24085                                            vector unsigned __int128,
24086                                            vector unsigned __int128);
24087         vector signed int vec_subec (vector signed int, vector signed int,
24088                                      vector signed int);
24089         vector unsigned int vec_subec (vector unsigned int,
24090                                        vector unsigned int,
24091                                        vector unsigned int);
24092         vector signed __int128 vec_subec (vector signed __int128,
24093                                           vector signed __int128,
24094                                           vector signed__int128);
24095         vector unsigned __int128 vec_subec (vector unsigned __int128,
24096                                             vector unsigned __int128,
24097                                             vector unsigned __int128);
24098         * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
24099         ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
24100         * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
24101         BU_ALTIVEC_OVERLOAD_X definitions.
24102         * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
24103         * doc/extend.texi: Update the built-in documentation file for the new
24104         built-in functions.
24105
24106 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24107
24108         PR c++/79300
24109         * diagnostic-show-locus.c (layout::layout): Use start and finish
24110         spelling location for the start and finish of each range.
24111         * genmatch.c (linemap_client_expand_location_to_spelling_point):
24112         Add unused aspect param.
24113         * input.c (expand_location_1): Add "aspect" param, and use it
24114         to access the correct part of the location.
24115         (expand_location): Pass LOCATION_ASPECT_CARET to new param of
24116         expand_location_1.
24117         (expand_location_to_spelling_point): Likewise.
24118         (linemap_client_expand_location_to_spelling_point): Add "aspect"
24119         param, and pass it to expand_location_1.
24120
24121 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
24122
24123         * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
24124         _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
24125         _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
24126         _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
24127         _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
24128         _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
24129         _mm_maskz_getmant_sd, _mm_mask_getmant_ss,
24130         _mm_maskz_getmant_ss): New intrinsics.
24131         (__builtin_ia32_getexpss128_mask): Changed to ...
24132         __builtin_ia32_getexpss128_round ... this.
24133         (__builtin_ia32_getexpsd128_mask): Changed to ...
24134         __builtin_ia32_getexpsd128_round ... this.
24135         * config/i386/i386-builtin-types.def
24136         ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
24137         (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
24138         * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
24139         __builtin_ia32_getexpss_mask_round,     __builtin_ia32_getmantsd_mask_round,
24140         __builtin_ia32_getmantss_mask_round): New builtins.
24141         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
24142         V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
24143         (CODE_FOR_avx512f_vgetmantv2df_mask_round,
24144         CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
24145         * config/i386/sse.md
24146         (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
24147         avx512f_sgetexp<mode><mask_scalar_name>
24148         <round_saeonly_scalar_name> ... this.
24149         (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
24150         %0, %1, %2<round_saeonly_op3>}): Changed to ...
24151         vgetexp<ssescalarmodesuffix>
24152         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24153         %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
24154         (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
24155         avx512f_vgetmant<mode><mask_scalar_name>
24156         <round_saeonly_scalar_name> ... this.
24157         (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
24158         %0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
24159         vgetmant<ssescalarmodesuffix>
24160         \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
24161         %0<mask_scalar_operand4>, %1, %2
24162         <round_saeonly_scalar_mask_op4>, %3} ... this.
24163         * config/i386/subst.md (mask_scalar_operand4,
24164         round_saeonly_scalar_mask_operand4,     round_saeonly_scalar_mask_op4,
24165         round_saeonly_scalar_nimm_predicate): New subst attributes.
24166
24167 2017-07-06  Julia Koval  <julia.koval@intel.com>
24168
24169         * config/i386/i386.c (ix86_erase_embedded_rounding):
24170         Remove code for old rounding pattern.
24171
24172 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
24173
24174         * config/arm/t-arm (GTM_H): Add arm-cpu.h.
24175
24176 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
24177
24178         * doc/sourcebuild.texi (Test Directives, Variants of
24179         dg-require-support): Add documentation for dg-require-stack-check.
24180
24181 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
24182
24183         * config/i386/subst.md (mask_scalar, round_scalar,
24184         round_saeonly_scalar): New meta-templates.
24185         (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
24186         round_scalar_mask_operand3, round_scalar_mask_op3,
24187         round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
24188         round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
24189         round_saeonly_scalar_constraint,
24190         round_saeonly_scalar_prefix): New subst attribute.
24191         * config/i386/sse.md
24192         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
24193         <sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
24194         <round_scalar_name> ... this.
24195         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
24196         <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
24197         <round_scalar_name> ... this.
24198         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
24199         <sse>_vm<code><mode>3<mask_scalar_name>
24200         <round_saeonly_scalar_name> ... this.
24201         (v<plusminus_mnemonic><ssescalarmodesuffix>
24202         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24203         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24204         v<plusminus_mnemonic><ssescalarmodesuffix>
24205         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24206         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24207         (v<multdiv_mnemonic><ssescalarmodesuffix>
24208         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24209         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24210         v<multdiv_mnemonic><ssescalarmodesuffix>
24211         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24212         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24213         (v<maxmin_float><ssescalarmodesuffix>
24214         \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
24215         %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
24216         v<maxmin_float><ssescalarmodesuffix>
24217         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24218         %0<mask_scalar_operand3>, %1, %<iptr>2
24219         <round_saeonly_scalar_mask_op3>} ... this.
24220
24221 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
24222
24223         * config/arm/arm.c (arm_fixed_condition_code_regs): New function.
24224         (TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
24225
24226 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
24227             Alan Hayward  <alan.hayward@arm.com>
24228             David Sherwood  <david.sherwood@arm.com>
24229
24230         * combine.c (simplify_if_then_else): Remove "enum" before
24231         "machine_mode".
24232         * compare-elim.c (can_eliminate_compare): Likewise.
24233         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
24234         Likewise.
24235         (aarch64_lookup_simd_builtin_type): Likewise.
24236         (aarch64_simd_builtin_type): Likewise.
24237         (aarch64_init_simd_builtin_types): Likewise.
24238         (aarch64_simd_expand_args): Likewise.
24239         * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
24240         Likewise.
24241         (aarch64_reverse_mask): Likewise.
24242         (aarch64_simd_emit_reg_reg_move): Likewise.
24243         (aarch64_gen_adjusted_ldpstp): Likewise.
24244         (aarch64_ccmp_mode_to_code): Likewise.
24245         (aarch64_operands_ok_for_ldpstp): Likewise.
24246         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24247         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
24248         Likewise.
24249         (aarch64_min_divisions_for_recip_mul): Likewise.
24250         (aarch64_reassociation_width): Likewise.
24251         (aarch64_get_condition_code_1): Likewise.
24252         (aarch64_simd_emit_reg_reg_move): Likewise.
24253         (aarch64_simd_attr_length_rglist): Likewise.
24254         (aarch64_reverse_mask): Likewise.
24255         (aarch64_operands_ok_for_ldpstp): Likewise.
24256         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24257         (aarch64_gen_adjusted_ldpstp): Likewise.
24258         * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
24259         Likewise.
24260         * config/arc/arc.c (legitimate_offset_address_p): Likewise.
24261         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
24262         (arm_lookup_simd_builtin_type): Likewise.
24263         (arm_simd_builtin_type): Likewise.
24264         (arm_init_simd_builtin_types): Likewise.
24265         (arm_expand_builtin_args): Likewise.
24266         * config/arm/arm-protos.h (arm_expand_builtin): Likewise.
24267         * config/ft32/ft32.c (ft32_libcall_value): Likewise.
24268         (ft32_setup_incoming_varargs): Likewise.
24269         (ft32_function_arg): Likewise.
24270         (ft32_function_arg_advance): Likewise.
24271         (ft32_pass_by_reference): Likewise.
24272         (ft32_arg_partial_bytes): Likewise.
24273         (ft32_valid_pointer_mode): Likewise.
24274         (ft32_addr_space_pointer_mode): Likewise.
24275         (ft32_addr_space_legitimate_address_p): Likewise.
24276         * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
24277         Likewise.
24278         * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
24279         (ix86_emit_outlined_ms2sysv_restore): Likewise.
24280         (iamcu_alignment): Likewise.
24281         (canonicalize_vector_int_perm): Likewise.
24282         (ix86_noce_conversion_profitable_p): Likewise.
24283         (ix86_mpx_bound_mode): Likewise.
24284         (ix86_operands_ok_for_move_multiple): Likewise.
24285         * config/microblaze/microblaze-protos.h
24286         (microblaze_expand_conditional_branch_reg): Likewise.
24287         * config/microblaze/microblaze.c
24288         (microblaze_expand_conditional_branch_reg): Likewise.
24289         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
24290         Likewise.
24291         (rs6000_reassociation_width): Likewise.
24292         (rs6000_invalid_binary_op): Likewise.
24293         (fusion_p9_p): Likewise.
24294         (emit_fusion_p9_load): Likewise.
24295         (emit_fusion_p9_store): Likewise.
24296         * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
24297         Likewise.
24298         (riscv_hard_regno_mode_ok_p): Likewise.
24299         (riscv_address_insns): Likewise.
24300         (riscv_split_symbol): Likewise.
24301         (riscv_legitimize_move): Likewise.
24302         (riscv_function_value): Likewise.
24303         (riscv_hard_regno_nregs): Likewise.
24304         (riscv_expand_builtin): Likewise.
24305         * config/riscv/riscv.c (riscv_build_integer_1): Likewise.
24306         (riscv_build_integer): Likewise.
24307         (riscv_split_integer): Likewise.
24308         (riscv_legitimate_constant_p): Likewise.
24309         (riscv_cannot_force_const_mem): Likewise.
24310         (riscv_regno_mode_ok_for_base_p): Likewise.
24311         (riscv_valid_base_register_p): Likewise.
24312         (riscv_valid_offset_p): Likewise.
24313         (riscv_valid_lo_sum_p): Likewise.
24314         (riscv_classify_address): Likewise.
24315         (riscv_legitimate_address_p): Likewise.
24316         (riscv_address_insns): Likewise.
24317         (riscv_load_store_insns): Likewise.
24318         (riscv_force_binary): Likewise.
24319         (riscv_split_symbol): Likewise.
24320         (riscv_force_address): Likewise.
24321         (riscv_legitimize_address): Likewise.
24322         (riscv_move_integer): Likewise.
24323         (riscv_legitimize_const_move): Likewise.
24324         (riscv_legitimize_move): Likewise.
24325         (riscv_address_cost): Likewise.
24326         (riscv_subword): Likewise.
24327         (riscv_output_move): Likewise.
24328         (riscv_canonicalize_int_order_test): Likewise.
24329         (riscv_emit_int_order_test): Likewise.
24330         (riscv_function_arg_boundary): Likewise.
24331         (riscv_pass_mode_in_fpr_p): Likewise.
24332         (riscv_pass_fpr_single): Likewise.
24333         (riscv_pass_fpr_pair): Likewise.
24334         (riscv_get_arg_info): Likewise.
24335         (riscv_function_arg): Likewise.
24336         (riscv_function_arg_advance): Likewise.
24337         (riscv_arg_partial_bytes): Likewise.
24338         (riscv_function_value): Likewise.
24339         (riscv_pass_by_reference): Likewise.
24340         (riscv_setup_incoming_varargs): Likewise.
24341         (riscv_print_operand): Likewise.
24342         (riscv_elf_select_rtx_section): Likewise.
24343         (riscv_save_restore_reg): Likewise.
24344         (riscv_for_each_saved_reg): Likewise.
24345         (riscv_register_move_cost): Likewise.
24346         (riscv_hard_regno_mode_ok_p): Likewise.
24347         (riscv_hard_regno_nregs): Likewise.
24348         (riscv_class_max_nregs): Likewise.
24349         (riscv_memory_move_cost): Likewise.
24350         * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
24351         * config/rl78/rl78.c (rl78_split_movsi): Likewise.
24352         (rl78_addr_space_address_mode): Likewise.
24353         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24354         Likewise.
24355         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
24356         (rs6000_reassociation_width): Likewise.
24357         (rs6000_invalid_binary_op): Likewise.
24358         (fusion_p9_p): Likewise.
24359         (emit_fusion_p9_load): Likewise.
24360         (emit_fusion_p9_store): Likewise.
24361         * config/visium/visium-protos.h (prepare_move_operands): Likewise.
24362         (ok_for_simple_move_operands): Likewise.
24363         (ok_for_simple_move_strict_operands): Likewise.
24364         (ok_for_simple_arith_logic_operands): Likewise.
24365         (visium_legitimize_reload_address): Likewise.
24366         (visium_select_cc_mode): Likewise.
24367         (output_cbranch): Likewise.
24368         (visium_split_double_move): Likewise.
24369         (visium_expand_copysign): Likewise.
24370         (visium_expand_int_cstore): Likewise.
24371         (visium_expand_fp_cstore): Likewise.
24372         * config/visium/visium.c (visium_pass_by_reference): Likewise.
24373         (visium_function_arg): Likewise.
24374         (visium_function_arg_advance): Likewise.
24375         (visium_libcall_value): Likewise.
24376         (visium_setup_incoming_varargs): Likewise.
24377         (visium_legitimate_constant_p): Likewise.
24378         (visium_legitimate_address_p): Likewise.
24379         (visium_legitimize_address): Likewise.
24380         (visium_secondary_reload): Likewise.
24381         (visium_register_move_cost): Likewise.
24382         (visium_memory_move_cost): Likewise.
24383         (prepare_move_operands): Likewise.
24384         (ok_for_simple_move_operands): Likewise.
24385         (ok_for_simple_move_strict_operands): Likewise.
24386         (ok_for_simple_arith_logic_operands): Likewise.
24387         (visium_function_value_1): Likewise.
24388         (rtx_ok_for_offset_p): Likewise.
24389         (visium_legitimize_reload_address): Likewise.
24390         (visium_split_double_move): Likewise.
24391         (visium_expand_copysign): Likewise.
24392         (visium_expand_int_cstore): Likewise.
24393         (visium_expand_fp_cstore): Likewise.
24394         (visium_split_cstore): Likewise.
24395         (visium_select_cc_mode): Likewise.
24396         (visium_split_cbranch): Likewise.
24397         (output_cbranch): Likewise.
24398         (visium_print_operand_address): Likewise.
24399         * expmed.c (flip_storage_order): Likewise.
24400         * expmed.h (emit_cstore): Likewise.
24401         (flip_storage_order): Likewise.
24402         * genrecog.c (validate_pattern): Likewise.
24403         * hsa-gen.c (gen_hsa_addr): Likewise.
24404         * internal-fn.c (expand_arith_overflow): Likewise.
24405         * ira-color.c (allocno_copy_cost_saving): Likewise.
24406         * lra-assigns.c (find_hard_regno_for_1): Likewise.
24407         * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
24408         (process_invariant_for_inheritance): Likewise.
24409         * lra-eliminations.c (move_plus_up): Likewise.
24410         * omp-low.c (lower_oacc_reductions): Likewise.
24411         * simplify-rtx.c (simplify_subreg): Likewise.
24412         * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
24413         (TARGET_CHKP_BOUND_MODE): Likewise..
24414         * targhooks.c (default_chkp_bound_mode): Likewise.
24415         (default_setup_incoming_vararg_bounds): Likewise.
24416         * targhooks.h (default_chkp_bound_mode): Likewise.
24417         (default_setup_incoming_vararg_bounds): Likewise.
24418         * tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
24419         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
24420         (have_whole_vector_shift): Likewise.
24421         * tree-vect-stmts.c (vectorizable_load): Likewise.
24422         * doc/tm.texi: Regenerate.
24423
24424 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24425
24426         Graceful degrade if Binutils PR21472 is not available.
24427
24428         PR target/81072
24429         * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
24430         .rodata in flash test fails.
24431         (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
24432         * confgure: Regenerate.
24433         * config.in: Regenerate.
24434         * config/avr/avr.c (avr_asm_named_section)
24435         [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
24436         __do_copy_data for stuff in .rodata if flash_pm_offset = 0.
24437         (avr_asm_init_sections): Same.
24438
24439 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24440
24441         * config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
24442         (fma<VH:mode>4_intrinsic): Likewise.
24443         (*fmsub<VCVTF:mode>4): Likewise.
24444         (*fmsub<VH:mode>4_intrinsic): Likewise.
24445
24446 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24447
24448         PR target/81305
24449         * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
24450         Don't depend on "optimize > 0".
24451         (out_movhi_r_mr, out_movqi_mr_r): Same.
24452         (out_movhi_mr_r, out_movqi_r_mr): Same.
24453         (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
24454         io_address_operand on "optimize > 0".
24455
24456 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24457
24458         * tree-loop-distribution.c: Add general explanantion on the pass.
24459         (generate_loops_for_partition): Mark distributed loop.
24460         (pg_add_dependence_edges): New parameter.  Handle alias data
24461         dependence specially and record it in the parameter if asked.
24462         (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
24463         (init_partition_graph_vertices, add_partition_graph_edge): New.
24464         (pg_skip_alias_edge, free_partition_graph_edata_cb): New.
24465         (free_partition_graph_vdata, build_partition_graph): New.
24466         (sort_partitions_by_post_order, merge_dep_scc_partitions): New.
24467         (pg_collect_alias_ddrs, break_alias_scc_partitions): New.
24468         (data_ref_segment_size, latch_dominated_by_data_ref): New.
24469         (compute_alias_check_pairs, version_loop_by_alias_check): New.
24470         (version_for_distribution_p, finalize_partitions): New.
24471         (distribute_loop): Handle alias data dependence specially.  Factor
24472         out loop fusion code as functions and call these functions.
24473
24474 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24475
24476         * tree-loop-distribution.c (classify_partition): New parameter and
24477         better handle reduction statement.
24478         (rdg_build_partitions): Revise comment.
24479         (distribute_loop): Compute statements in all partitions and pass it
24480         to classify_partition.
24481
24482 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24483
24484         * tree-loop-distribution.c (enum partition_type): New.
24485         (struct partition): New field type.
24486         (partition_merge_into): Add parameter.  Update partition type.
24487         (data_dep_in_cycle_p, update_type_for_merge): New functions.
24488         (build_rdg_partition_for_vertex): Compute partition type.
24489         (rdg_build_partitions): Dump partition type.
24490         (distribute_loop): Update calls to partition_merge_into.
24491
24492 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24493
24494         * tree-loop-distribution.c (struct ddr_hasher): New.
24495         (ddr_hasher::hash, ::equal, get_data_dependence): New function.
24496         (ddrs_table): New.
24497         (classify_partition): Call get_data_dependence.
24498         (pg_add_dependence_edges): Ditto.
24499         (distribute_loop): Release data dependence hash table.
24500
24501 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24502
24503         * tree-loop-distribution.c (ref_base_address): Delete.
24504         (similar_memory_accesses): Rename ...
24505         (share_memory_accesses): ... to this.  Check if partitions access
24506         the same memory reference.
24507         (distribute_loop): Call share_memory_accesses.
24508
24509 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24510
24511         * tree-loop-distribution.c (struct partition): New field recording
24512         its data reference.
24513         (partition_alloc, partition_free): Init and release data refs.
24514         (partition_merge_into): Merge data refs.
24515         (build_rdg_partition_for_vertex): Collect data refs for partition.
24516         (pg_add_dependence_edges): Change parameters from vector to bitmap.
24517         Update uses.
24518         (distribute_loop): Remve data refs from vertice data of partition
24519         graph.
24520
24521 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24522
24523         * tree-loop-distribution.c (params.h): Include header file.
24524         (MAX_DATAREFS_NUM, DR_INDEX): New macro.
24525         (datarefs_vec): New global var.
24526         (create_rdg_vertices): Use datarefs_vec directly.
24527         (free_rdg): Don't free data references.
24528         (build_rdg): Update use.  Don't free data references.
24529         (distribute_loop): Compute global variable for data references.
24530         Bail out if there are too many data references.
24531
24532 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24533
24534         * tree-loop-distribution.c (loop_nest): New global var.
24535         (build_rdg): Use loop directly, rather than loop nest.
24536         (pg_add_dependence_edges): Remove loop nest parameter.  Use global
24537         variable directly.
24538         (distribute_loop): Compute global variable loop nest.  Update use.
24539
24540 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24541
24542         * tree-loop-distribution.c (enum fuse_type, fuse_message): New.
24543         (partition_merge_into): New parameter.  Dump reason for fusion.
24544         (distribute_loop): Update use of partition_merge_into.
24545
24546 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24547
24548         * tree-loop-distribution.c (bb_top_order_index): New.
24549         (bb_top_order_index_size, bb_top_order_cmp): New.
24550         (stmts_from_loop): Use topological order.
24551         (pass_loop_distribution::execute): Compute and release topological
24552         order for basic blocks.
24553
24554 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24555
24556         * tree-loop-distribution.c (pass_loop_distribution::execute): Skip
24557         if no loops.
24558
24559 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24560
24561         * cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
24562         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
24563         * internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
24564         * internal-fn.def (LOOP_DIST_ALIAS): New.
24565         * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
24566         (fold_loop_internal_call): ... this.
24567         (vect_loop_dist_alias_call): New function.
24568         (set_uid_loop_bbs): Call fold_loop_internal_call.
24569         (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
24570         internal calls.
24571
24572 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
24573
24574         PR target/81300
24575         * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
24576         Require dead FLAGS_REG at the beginning of a peephole.
24577
24578 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
24579
24580         PR target/81294
24581         * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
24582         arguments in the call to __builtin_ia32_sbb_u32.
24583         (_subborrow_u64): Swap _X and _Y arguments in the call to
24584         __builtin_ia32_sbb_u64.
24585
24586 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
24587
24588         PR debug/81278
24589         * tree-vrp.c (compare_assert_loc): Turn into a function template
24590         with stable template parameter.  Only test if a->e is NULL,
24591         !a->e == !b->e has been verified already.  Use e == NULL or
24592         e != NULL instead of e or ! e tests.  If stable is true, don't use
24593         iterative_hash_expr, on the other side allow a or b or both NULL
24594         and sort the NULLs last.
24595         (process_assert_insertions): Sort using compare_assert_loc<false>
24596         instead of compare_assert_loc, later sort using
24597         compare_assert_loc<true> before calling process_assert_insertions_for
24598         in a loop.  Use break instead of continue once seen NULL pointer.
24599
24600 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24601
24602         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
24603         Cortex-R7 and Cortex-R8 processors.
24604
24605 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24606
24607         * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
24608         uninitialized while src is not.
24609
24610 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
24611
24612         * common/config/arm/arm-common.c: Adjust include path for
24613         arm-cpu-cdata.h
24614         * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
24615         (arm-cpu.h): Create in build directory.  Adjust dependency rules.
24616         (arm-cpu-data.h): Likewise.
24617         (arm-cpu-cdata.h): Likewise.
24618         * config/arm/arm-cpu.h: Delete.
24619         * config/arm/arm-cpu-cdata.h: Delete.
24620         * config/arm/arm-cpu-data.h: Delete.
24621
24622 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
24623
24624         * config/arm/arm-cpus.in (cortex-a55): New.
24625         (cortex-a75): Likewise.
24626         (cortex-a75.cortex-a55): Likewise.
24627         * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
24628         cortex-a75.
24629         * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
24630         * config/arm/arm-cpu-cdata.h: Regenerate.
24631         * config/arm/arm-cpu-data.h: Regenerate.
24632         * config/arm/arm-cpu.h: Regenerate.
24633         * config/arm/arm-tables.opt: Regenerate.
24634         * config/arm/arm-tune.md: Regenerate.
24635
24636 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24637
24638         * haifa-sched.c (sched_create_recovery_edges): Update profile.
24639
24640 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24641
24642         * bb-reorder.c (better_edge_p): Fix handling of uninitialized
24643         probability.
24644
24645 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
24646
24647         PR tree-optimization/81292
24648         * tree-ssa-strlen.c (handle_builtin_strlen): When setting
24649         full_string_p, also call adjust_related_strinfos if the adjustment
24650         is simple, otherwise invalidate related strinfos.
24651
24652 2017-07-04  Martin Liska  <mliska@suse.cz>
24653
24654         PR sanitizer/81040
24655         * sanopt.c (sanitize_rewrite_addressable_params): Mark the
24656         newly created variable as DECL_IGNORED_P.
24657
24658 2017-07-04  Martin Liska  <mliska@suse.cz>
24659
24660         PR ipa/81293
24661         * ipa-inline.c (inline_small_functions):
24662         Use xstrdup_for_dump.
24663
24664 2017-07-04  Tom de Vries  <tom@codesourcery.com>
24665
24666         * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
24667
24668 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24669
24670         PR target/81033
24671         * config/darwin.c (darwin_function_switched_text_sections):
24672         Fix spaces.
24673
24674 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
24675
24676         * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
24677
24678 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24679
24680         * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
24681
24682 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24683
24684         * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
24685         min_profitable_iters, and th as inclusive lower bounds.
24686         Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
24687         (vect_estimate_min_profitable_iters): Return inclusive lower bounds
24688         for min_profitable_iters and min_profitable_estimate.
24689         (vect_transform_loop): Treat th as an inclusive lower bound.
24690         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
24691
24692 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24693
24694         PR target/81033
24695         * config/darwin.c (darwin_function_switched_text_sections):
24696         Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
24697         in two pieces, and suppress the use of buf.
24698
24699 2017-07-03  Nathan Sidwell  <nathan@acm.org>
24700
24701         * hash-table.h (hash_table_mod1): Fix indentation.
24702
24703 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24704
24705         PR middle-end/81290
24706         * predict.c (force_edge_cold): Be more careful about propagation
24707         backward.
24708         * profile-count.h (profile_probability::guessed,
24709         profile_probability::fdo, profile_count::guessed, profile_count::fdo):
24710         New.
24711         * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
24712
24713 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
24714
24715         * doc/invoke.texi (rcpc architecture extension): Document it.
24716
24717 2017-07-03  Richard Biener  <rguenther@suse.de>
24718
24719         PR tree-optimization/60510
24720         * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
24721         the scalar reduction PHI and use it.
24722         (vectorizable_reduction): Properly guard the single_defuse_cycle
24723         path for non-SLP reduction chains where we cannot use it.
24724         Rework reduc_def/index and vector type deduction.  Rework
24725         vector operand gathering during reduction op code-gen.
24726         * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
24727         chains dissolve the chain and leave it to non-SLP reduction
24728         handling.
24729
24730 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24731
24732         * tree-data-ref.h (dr_alignment): Declare.
24733         * tree-data-ref.c (dr_alignment): New function.
24734         * tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
24735         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
24736         set it.
24737         * tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
24738
24739 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24740
24741         * tree-data-ref.h (innermost_loop_behavior): Add base_alignment
24742         and base_misalignment fields.
24743         (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
24744         * tree-data-ref.c: Include builtins.h.
24745         (dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
24746         * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
24747         (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
24748         * tree-vect-data-refs.c: Include tree-cfg.h.
24749         (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
24750         fields instead of calculating an alignment here.
24751         (vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
24752         innermost_loop_behavior fields.
24753
24754 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24755
24756         * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
24757         field.
24758         (DR_STEP_ALIGNMENT): New macro.
24759         * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
24760         * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
24761         (create_data_ref): Print it.
24762         * tree-vect-stmts.c (vectorizable_load): Use the step alignment
24763         to tell whether the step preserves vector (mis)alignment.
24764         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24765         Move the check for an integer step and generalise to all INTEGER_CST.
24766         (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
24767         Print the outer step alignment.
24768
24769 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24770
24771         * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
24772         with offset_alignment.
24773         (DR_ALIGNED_TO): Delete.
24774         (DR_OFFSET_ALIGNMENT): New macro.
24775         * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
24776         (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
24777         * tree-data-ref.c (dr_analyze_innermost): Update after above changes.
24778         (create_data_ref): Likewise.
24779         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24780         (vect_analyze_data_refs): Likewise.
24781         * tree-if-conv.c (if_convertible_loop_p_1): Use memset before
24782         creating dummy innermost behavior.
24783
24784 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24785
24786         * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
24787         with a "innermost_loop_behavior *" and refeence tree.
24788         * tree-data-ref.c (dr_analyze_innermost): Likewise.
24789         (create_data_ref): Update call accordingly.
24790         * tree-predcom.c (find_looparound_phi): Likewise.
24791
24792 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24793
24794         * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
24795         fields with dr_wrt_vec_loop.
24796         (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
24797         (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
24798         (STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
24799         (vect_dr_behavior): New function.
24800         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24801         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
24802         vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
24803         track whether the step preserves the misalignment.
24804         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24805         Use vect_dr_behavior.
24806         (vect_setup_realignment): Update call accordingly.
24807         (vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
24808         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
24809         call to vect_create_addr_base_for_vector_ref.
24810         (vect_create_cond_for_align_checks): Likewise.
24811         * tree-vect-patterns.c (vect_recog_bool_pattern): Copy
24812         STMT_VINFO_DR_WRT_VEC_LOOP as a block.
24813         (vect_recog_mask_conversion_pattern): Likewise.
24814         * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
24815         (new_stmt_vec_info): Remove redundant zeroing.
24816
24817 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24818
24819         * common/config/arm/arm-common.c (arm_be8_option): New function.
24820         * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
24821         (ISA_ARMv6): Add isa_bit_be8.
24822         * config/arm/arm.h (arm_be8_option): Add prototype.
24823         (BE8_SPEC_FUNCTION): New define.
24824         (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
24825         * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
24826         (mlittle-endian): Similarly.
24827         (mbe8, mbe32): New options.
24828         * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
24829         * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
24830
24831 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24832
24833         * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
24834
24835 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24836
24837         * tree-cfgcleanup.c (want_merge_blocks_p): New function.
24838         (cleanup_tree_cfg_bb): Use it.
24839         * profile-count.h (profile_count::of_for_merging, profile_count::merge):
24840         New functions.
24841         * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
24842
24843 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24844
24845         PR bootstrap/81285
24846         * loop-doloop.c (add_test): Update profile.
24847
24848 2017-07-03  Martin Liska  <mliska@suse.cz>
24849
24850         PR sanitize/81040
24851         * sanopt.c (rewrite_usage_of_param): New function.
24852         (sanitize_rewrite_addressable_params): Likewise.
24853         (pass_sanopt::execute): Call rewrite_usage_of_param.
24854
24855 2017-07-03  Richard Biener  <rguenther@suse.de>
24856
24857         * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
24858         back to using VIEW_CONVERT_EXPR.
24859
24860 2017-07-03  Martin Liska  <mliska@suse.cz>
24861
24862         PR other/78366
24863         * doc/extend.texi: Document when a resolver function is
24864         generated for target_clones.
24865
24866 2017-07-03  Martin Liska  <mliska@suse.cz>
24867
24868         * asan.c (asan_emit_stack_protection): Unpoison just red zones
24869         and shadow memory of auto variables which are subject of
24870         use-after-scope sanitization.
24871         (asan_expand_mark_ifn): Add do set only when is_poison.
24872
24873 2016-07-03  Richard Biener  <rguenther@suse.de>
24874
24875         * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
24876         reduction PHIs.
24877         (vect_force_simple_reduction): Record reduction def -> phi mapping.
24878         (vectorizable_reduction): Perform reduction PHI creation when
24879         visiting a reduction PHI and adjust and simplify code generation
24880         phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
24881         (vect_transform_loop): Visit reduction PHIs.
24882         * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
24883         defs into the SLP tree.
24884         (vect_build_slp_tree): Reduction defs terminate the recursion.
24885         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
24886         of reduction defs.
24887         (vect_get_vec_defs_for_stmt_copy): Export.
24888         (vect_get_vec_defs): Likewise.
24889         * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
24890         purpose.
24891         (vect_get_vec_defs_for_stmt_copy): Declare.
24892         (vect_get_vec_defs): Likewise.
24893
24894 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24895
24896         * tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
24897         parameter with a "loop" parameter and use it instead of the
24898         loop containing DR_STMT.  Don't check simple_iv when doing
24899         BB analysis.  Describe the two analysis modes in the comment.
24900
24901 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24902
24903         PR tree-optimization/69468
24904         * tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
24905         (find_same_succ_bb): Handle ignore_edge_flags.
24906
24907 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24908
24909         PR tree-optimization/81192
24910         * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
24911         hash.
24912         (same_succ::equal): Don't find bbs to be equal if bb->loop_father
24913         differs.
24914         (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
24915
24916 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24917
24918         PR tree-optimization/81192
24919         * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
24920         BB_SAME_SUCC (bb) == NULL.
24921
24922 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24923
24924         * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
24925         consistency.
24926
24927 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24928
24929         * dumpfile.c: Include profile-count.h
24930         * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
24931         update profile.
24932         (insert_cond_bb): Update profile.
24933         * tree-cfg.h (insert_cond_bb): Update prototype.
24934         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
24935         * tree-dump.c: Do not include tree-cfg.
24936
24937 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24938
24939         * bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
24940
24941 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24942
24943         * expect.c (dw2_build_landing_pads): Update profile of the landing pad
24944         bb.
24945
24946 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24947
24948         * tree-complex.c (expand_complex_div_wide): update profile.
24949
24950 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
24951             Alan Hayward  <alan.hayward@arm.com>
24952             David Sherwood  <david.sherwood@arm.com>
24953
24954         * Makefile.in (MACHMODE_H): Remove insn-modes.h
24955         (CORETYPES_H): New define.
24956         (MOSTLYCLEANFILES): Add insn-modes-inline.h.
24957         (insn-modes-inline.h, s-modes-inline-h): New rules.
24958         (generated_files): Add insn-modes-inline.h.
24959         (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
24960         (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
24961         (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
24962         (build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
24963         (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
24964         (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
24965         (build/gencodes.o, build/genconditions.o): Likewise.
24966         (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
24967         (build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
24968         (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
24969         (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
24970         (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
24971         (build/gencfn-macros.o, build/gcov-iov.o): Likewise.
24972         * coretypes.h: Include everything up to real.h for generators.
24973         Include insn-modes.h first.  Include wide-int-print.h after
24974         wide-int.h.  Include insn-modes-inline.h and then machmode.h.
24975         * machmode.h: Don't include insn-modes.h here.
24976         * function-tests.c: Remove includes of signop.h, machmode.h,
24977         double-int.h and wide-int.h.
24978         * rtl.h: Likewise.
24979         * gcc-rich-location.c: Remove includes of machmode.h, double-int.h
24980         and wide-int.h.
24981         * optc-save-gen.awk: Likewise.
24982         * gencheck.c (BITS_PER_UNIT): Delete dummy definition.
24983         * godump.c: Remove include of wide-int-print.h.
24984         * pretty-print.h: Likewise.
24985         * wide-int-print.cc: Likewise.
24986         * wide-int.cc: Likewise.
24987         * hash-map-tests.c: Remove include of signop.h.
24988         * hash-set-tests.c: Likewise.
24989         * rtl-tests.c: Likewise.
24990         * mkconfig.sh: Remove include of machmode.h.
24991         * genmodes.c (emit_insn_modes_h): Split emission of inline functions
24992         into...
24993         (emit_insn_modes_inline_h): ...this new function.  Emit the code
24994         into an insn-modes-inline.h header file, adding appropriate
24995         include guards and end comments.
24996         (emit_insn_modes_c_header): Remove include of machmode.h.
24997         (emit_min_insn_modes_c_header): Include coretypes.h rather than
24998         machmode.h.
24999         (main): Handle -i flag and call emit_insn_modes_inline_h when
25000         it is passed.
25001
25002 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25003
25004         * tree-ssa-strlen.c (strinfo): Rename the length field to
25005         nonzero_chars.  Add a full_string_p field.
25006         (compare_nonzero_chars, zero_length_string_p): New functions.
25007         (get_addr_stridx): Add an offset_out parameter.
25008         Use compare_nonzero_chars.
25009         (get_stridx): Update accordingly.  Use compare_nonzero_chars.
25010         (new_strinfo): Update after above changes to strinfo.
25011         (set_endptr_and_length): Set full_string_p.
25012         (get_string_length): Update after above changes to strinfo.
25013         (unshare_strinfo): Update call to new_strinfo.
25014         (maybe_invalidate): Likewise.
25015         (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
25016         Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
25017         as a uhwi instead of an shwi.  Update after above changes to
25018         strinfo and new_strinfo.
25019         (zero_length_string): Assert that chainsi contains full strings.
25020         Use zero_length_string_p.  Update call to new_strinfo.
25021         (adjust_related_strinfos): Update after above changes to strinfo.
25022         Copy full_string_p from origsi.
25023         (adjust_last_stmt): Use zero_length_string_p.
25024         (handle_builtin_strlen): Update after above changes to strinfo and
25025         new_strinfo.  Install the lhs as the string length if the previous
25026         entry didn't describe a full string.
25027         (handle_builtin_strchr): Update after above changes to strinfo
25028         and new_strinfo.
25029         (handle_builtin_strcpy): Likewise.
25030         (handle_builtin_strcat): Likewise.
25031         (handle_builtin_malloc): Likewise.
25032         (handle_pointer_plus): Likewise.
25033         (handle_builtin_memcpy): Likewise.  Track nonzero characters
25034         that aren't necessarily followed by a nul terminator.
25035         (handle_char_store): Likewise.
25036
25037 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25038
25039         PR tree-optimization/80769
25040         * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
25041         for malloc and calloc.  Document the new invariant that all related
25042         strinfos have delayed lengths or none do.
25043         (verify_related_strinfos): Move earlier in file.
25044         (set_endptr_and_length): New function, split out from...
25045         (get_string_length): ...here.  Also set the lengths of related
25046         strinfos.
25047         (zero_length_string): Assert that chainsi has known (rather than
25048         delayed) lengths.
25049         (adjust_related_strinfos): Likewise.
25050
25051 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25052
25053         PR tree-optimization/81136
25054         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
25055         assert that two references with the same misalignment have the same
25056         compile-time misalignment if those compile-time misalignments
25057         are known.
25058
25059 2017-07-01  Andi Kleen  <ak@linux.intel.com>
25060
25061         * print-tree.c (print_node): Print all attributes.
25062
25063 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25064
25065         * cfg.c (scale_bbs_frequencies): New function.
25066         * cfg.h (scale_bbs_frequencies): Declare it.
25067         * cfgloopanal.c (single_likely_exit): Cleanup.
25068         * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
25069         as parameter.
25070         (scale_loop_profile): Likewise.
25071         (loop_version): Likewise.
25072         (create_empty_loop_on_edge): Update.
25073         * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
25074         scale_loop_frequencies, scale_loop_profile, loopify,
25075         loop_version): Update prototypes.
25076         * modulo-sched.c (sms_schedule): Update.
25077         * predict.c (unlikely_executed_edge_p): Also check probability.
25078         (probably_never_executed_edge_p): Fix typo.
25079         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25080         * tree-parloops.c (gen_parallel_loop): Update.
25081         * tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
25082         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25083         * tree-ssa-loop-split.c (split_loop): Update.
25084         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25085         * tree-vect-loop-manip.c (vect_do_peeling): Update.
25086         (vect_loop_versioning): Update.
25087         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25088
25089 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25090
25091         * trans-mem.c (split_bb_make_tm_edge): Update profile.
25092
25093 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25094
25095         * tree-if-conv.c (combine_blocks): Use make_single_succ_edge
25096         to keep profile consistent.
25097
25098 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25099
25100         * cfgrtl.c (rtl_flow_call_edges_add): Update profile.
25101         * tree-cfg.c (gimple_flow_call_edges_add): Likewise.
25102         * profile-count.h (max_safe_multiplier): Make unsigned.
25103         (profile_count::guessed_zero): New.
25104
25105 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25106
25107         * bb-reorder.c (fix_up_crossing_landing_pad,
25108         fix_crossing_conditional_branches): Use make_single_succ_edge
25109         to keep profile consistent.
25110
25111 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25112
25113         * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
25114         to update profile.
25115
25116 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
25117
25118         PR sanitizer/81262
25119         * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
25120         the right scopes, make sure cond_jump isn't preserved between multiple
25121         iterations.  Search for fallthru edge whenever there are 3+ edges and
25122         use find_fallthru_edge for it.
25123
25124 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25125
25126         Patch by Alexander Monakov <amonakov@ispras.ru>
25127         * sel-sched-ir.c (compute_succs_info): Handle uninitialized
25128         probabilities consistently.
25129
25130 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25131
25132         * pa.c (pa_expand_compare_and_swap_loop): Update call of
25133         emit_cmp_and_jump_insns.
25134
25135 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25136
25137         PR ipa/81261
25138         * tree-inline.c (expand_call_inline): Combine profile statuses.
25139
25140 2017-06-30  Andrew Pinski  <apinski@cavium.com>
25141
25142         * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
25143         fold_stmt returned true.
25144
25145 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25146
25147         * ggc.h (empty_string): Delete.
25148         * cfgexpand.c (expand_asm_stmt): Use plain "".
25149         * optabs.c (expand_asm_memory_barrier): Likewise.
25150         * stringpool.c (empty_string): Delete.
25151         (digit_vector, digit_string): Delete.
25152         (ggc_alloc_string): Use plain "", don't optimize single digit
25153         strings.  Use ggc_alloc_atomic.
25154
25155 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
25156
25157         * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
25158         comparison set and one other set, use the cost of the non-comparison
25159         set.
25160
25161 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25162
25163         * ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
25164         some formatting.
25165
25166 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
25167
25168         * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
25169         loops.  Remove now unneeded calls to gimple_switch_set_label() that
25170         just set removed labels to NULL_TREE.
25171
25172 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
25173
25174         * tree-ssanames.c (set_range_info_raw): Abstract from ...
25175         (set_range_info): ...here.  Only call set_range_info_raw if domain
25176         is useful.
25177         (set_nonzero_bits): Call set_range_info_raw.
25178         * tree-ssanames.h (set_range_info_raw): New.
25179
25180 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
25181
25182         PR target/81225
25183         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
25184         V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
25185         of nonimmediate_operand and <store_mask_constraint> instead of m
25186         for the input operand.  For V8FI iterator, always split if input
25187         is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
25188         operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
25189         <store_mask_predicate> instead of register_operand and
25190         <store_mask_constraint> instead of v for the input operand.  Make
25191         sure both operands aren't MEMs for if not <mask_applied>.
25192
25193 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
25194
25195         * lto-wrapper.c (copy_file) Close both file descriptors before
25196         exiting normally.
25197
25198 2017-06-30  Martin Liska  <mliska@suse.cz>
25199
25200         PR ipa/81214
25201         * multiple_target.c (create_dispatcher_calls): Make ifunc
25202         also for function that don't have calls or are not referenced.
25203
25204 2017-06-30  Richard Biener  <rguenther@suse.de>
25205
25206         * tree-vect-slp.c (vect_slp_analyze_node_operations): Only
25207         analyze the first scalar stmt.  Move vector type computation
25208         for the BB case here from ...
25209         * tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
25210         live operation processing in the SLP case properly.
25211
25212 2017-06-30  Richard Biener  <rguenther@suse.de>
25213
25214         * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
25215
25216 2017-06-30  Martin Liska  <mliska@suse.cz>
25217
25218         PR sanitizer/81021
25219         * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
25220         before BUILT_IN_UNWIND_RESUME when ASAN is used.
25221
25222 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
25223
25224         * doc/invoke.texi (AArch64): Add missing options and remove redundant
25225         ones.
25226
25227 2017-06-30  Richard Biener  <rguenther@suse.de>
25228
25229         PR tree-optimization/81249
25230         * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
25231         condition reduction result to original scalar type.
25232
25233 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25234
25235         * profile-count.h (enum profile_quality): Fix typos and whitespace
25236         issues.
25237
25238 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25239
25240         * config/s390/s390.c (s390_expand_setmem): Adjust to the new data
25241         type for branch probabilities.
25242
25243 2017-06-29  Julian Brown  <julian@codesourcery.com>
25244             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25245
25246         * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
25247         * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
25248         (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
25249         (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
25250
25251 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25252
25253         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
25254         check for CC usage into AARCH64_FUSE_CMP_BRANCH.
25255         * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
25256         CC usage from generic code to here.
25257         * sched-deps.c (sched_macro_fuse_insns): Move the condition for
25258         CC usage into the target macros.
25259
25260 2017-06-29  Maya Rashish  <coypu@sdf.org>
25261
25262         * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
25263         objects.
25264
25265 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25266
25267         * arm/arm-builtins.c: Include profile-count.h
25268         * except.c (sjlj_emit_function_enter): Use
25269         profile_probability::unlikely.
25270
25271 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
25272
25273         * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
25274         and tocrel_offset be pointer args rather than implicitly using
25275         static versions.
25276         (legitimate_constant_pool_address_p, rs6000_emit_move,
25277         const_load_sequence_p, adjust_vperm): Add local tocrel_base and
25278         tocrel_offset and use in toc_relative_expr_p call.
25279         (print_operand, print_operand_address): Use static tocrel_base_oac
25280         and tocrel_offset_oac.
25281         (rs6000_output_addr_const_extra): Use static tocrel_base_oac and
25282         tocrel_offset_oac.
25283
25284 2017-06-29  Maya Rashish  <coypu@sdf.org>
25285
25286         * config/vax/builtins.md (ffssi2_internal): Correct constraint.
25287
25288 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
25289
25290         * expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
25291         objects, take into account only the alignment of 'op0' and 'mode1' if
25292         'op0' is a MEM.
25293
25294 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
25295
25296         * ccmp.c (ccmp_tree_comparison_p): New function.
25297         (ccmp_candidate_p): Update to use above function.
25298         (get_compare_parts): New function.
25299         (expand_ccmp_next): Update to use new functions.
25300         (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
25301         new functions.
25302         (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
25303         take mode as argument.
25304         * ccmp.h (expand_ccmp_expr): Add mode as argument.
25305         * expr.c (expand_expr_real_1): Pass mode as argument.
25306
25307 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
25308
25309         * combine.c (combine_instructions): Print insns to dump_file, together
25310         with their costs.
25311
25312 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25313
25314         * asan.c (asan_emit_stack_protection): Update.
25315         (create_cond_insert_point): Update.
25316         * auto-profile.c (afdo_propagate_circuit): Update.
25317         * basic-block.h (struct edge_def): Turn probability to
25318         profile_probability.
25319         (EDGE_FREQUENCY): Update.
25320         * bb-reorder.c (find_traces_1_round): Update.
25321         (better_edge_p): Update.
25322         (sanitize_hot_paths): Update.
25323         * cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
25324         (make_single_succ_edge): Update.
25325         (check_bb_profile): Update.
25326         (dump_edge_info): Update.
25327         (update_bb_profile_for_threading): Update.
25328         * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
25329         probabilitycount to 0.
25330         * cfgbuild.c (compute_outgoing_frequencies): Update.
25331         * cfgcleanup.c (try_forward_edges): Update.
25332         (outgoing_edges_match): Update.
25333         (try_crossjump_to_edge): Update.
25334         * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
25335         (expand_gimple_tailcall): Update.
25336         (construct_init_block): Use make_single_succ_edge.
25337         (construct_exit_block): Use make_single_succ_edge.
25338         * cfghooks.c (verify_flow_info): Update.
25339         (redirect_edge_succ_nodup): Update.
25340         (split_edge): Update.
25341         (account_profile_record): Update.
25342         * cfgloopanal.c (single_likely_exit): Update.
25343         * cfgloopmanip.c (scale_loop_profile): Update.
25344         (set_zero_probability): Remove.
25345         (duplicate_loop_to_header_edge): Update.
25346         * cfgloopmanip.h (loop_version): Update prototype.
25347         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
25348         (force_nonfallthru_and_redirect): Update.
25349         (update_br_prob_note): Update.
25350         (rtl_verify_edges): Update.
25351         (purge_dead_edges): Update.
25352         (rtl_lv_add_condition_to_bb): Update.
25353         * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
25354         * cgraphunit.c (init_lowered_empty_function): Update.
25355         (cgraph_node::expand_thunk): Update.
25356         * cilk-common.c: Include profile-count.h
25357         * dojump.c (inv): Remove.
25358         (jumpifnot): Update.
25359         (jumpifnot_1): Update.
25360         (do_jump_1): Update.
25361         (do_jump): Update.
25362         (do_jump_by_parts_greater_rtx): Update.
25363         (do_compare_rtx_and_jump): Update.
25364         * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
25365         do_jump_1. do_compare_rtx_and_jump): Update prototype.
25366         * dwarf2cfi.c: Include profile-count.h
25367         * except.c (dw2_build_landing_pads): Use make_single_succ_edge.
25368         (sjlj_emit_dispatch_table): Likewise.
25369         * explow.c: Include profile-count.h
25370         * expmed.c (emit_store_flag_force): Update.
25371         (do_cmp_and_jump): Update.
25372         * expr.c (compare_by_pieces_d::generate): Update.
25373         (compare_by_pieces_d::finish_mode): Update.
25374         (emit_block_move_via_loop): Update.
25375         (store_expr_with_bounds): Update.
25376         (store_constructor): Update.
25377         (expand_expr_real_2): Update.
25378         (expand_expr_real_1): Update.
25379         * expr.h (try_casesi, try_tablejump): Update prototypes.
25380         * gimple-pretty-print.c (dump_probability): Update.
25381         (dump_profile): New.
25382         (dump_gimple_label): Update.
25383         (dump_gimple_bb_header): Update.
25384         * graph.c (draw_cfg_node_succ_edges): Update.
25385         * hsa-gen.c (convert_switch_statements): Update.
25386         * ifcvt.c (cheap_bb_rtx_cost_p): Update.
25387         (find_if_case_1): Update.
25388         (find_if_case_2): Update.
25389         * internal-fn.c (expand_arith_overflow_result_store): Update.
25390         (expand_addsub_overflow): Update.
25391         (expand_neg_overflow): Update.
25392         (expand_mul_overflow): Update.
25393         (expand_vector_ubsan_overflow): Update.
25394         * ipa-cp.c (good_cloning_opportunity_p): Update.
25395         * ipa-split.c (split_function): Use make_single_succ_edge.
25396         * ipa-utils.c (ipa_merge_profiles): Update.
25397         * loop-doloop.c (add_test): Update.
25398         (doloop_modify): Update.
25399         * loop-unroll.c (compare_and_jump_seq): Update.
25400         (unroll_loop_runtime_iterations): Update.
25401         * lra-constraints.c (lra_inheritance): Update.
25402         * lto-streamer-in.c (input_cfg): Update.
25403         * lto-streamer-out.c (output_cfg): Update.
25404         * mcf.c (adjust_cfg_counts): Update.
25405         * modulo-sched.c (sms_schedule): Update.
25406         * omp-expand.c (expand_omp_for_init_counts): Update.
25407         (extract_omp_for_update_vars): Update.
25408         (expand_omp_ordered_sink): Update.
25409         (expand_omp_for_ordered_loops): Update.
25410         (expand_omp_for_generic): Update.
25411         (expand_omp_for_static_nochunk): Update.
25412         (expand_omp_for_static_chunk): Update.
25413         (expand_cilk_for): Update.
25414         (expand_omp_simd): Update.
25415         (expand_omp_taskloop_for_outer): Update.
25416         (expand_omp_taskloop_for_inner): Update.
25417         * omp-simd-clone.c (simd_clone_adjust): Update.
25418         * optabs.c (expand_doubleword_shift): Update.
25419         (expand_abs): Update.
25420         (emit_cmp_and_jump_insn_1): Update.
25421         (expand_compare_and_swap_loop): Update.
25422         * optabs.h (emit_cmp_and_jump_insns): Update prototype.
25423         * predict.c (predictable_edge_p): Update.
25424         (edge_probability_reliable_p): Update.
25425         (set_even_probabilities): Update.
25426         (combine_predictions_for_insn): Update.
25427         (combine_predictions_for_bb): Update.
25428         (propagate_freq): Update.
25429         (estimate_bb_frequencies): Update.
25430         (force_edge_cold): Update.
25431         * profile-count.c (profile_count::dump): Add missing space into dump.
25432         (profile_count::debug): Add newline.
25433         (profile_count::differs_from_p): Explicitly convert to unsigned.
25434         (profile_count::stream_in): Update.
25435         (profile_probability::dump): New member function.
25436         (profile_probability::debug): New member function.
25437         (profile_probability::differs_from_p): New member function.
25438         (profile_probability::differs_lot_from_p): New member function.
25439         (profile_probability::stream_in): New member function.
25440         (profile_probability::stream_out): New member function.
25441         * profile-count.h (profile_count_quality): Rename to ...
25442         (profile_quality): ... this one.
25443         (profile_probability): New.
25444         (profile_count): Update.
25445         * profile.c (compute_branch_probabilities): Update.
25446         * recog.c (peep2_attempt): Update.
25447         * sched-ebb.c (schedule_ebbs): Update.
25448         * sched-rgn.c (find_single_block_region): Update.
25449         (compute_dom_prob_ps): Update.
25450         (schedule_region): Update.
25451         * sel-sched-ir.c (compute_succs_info): Update.
25452         * stmt.c (struct case_node): Update.
25453         (do_jump_if_equal): Update.
25454         (get_outgoing_edge_probs): Update.
25455         (conditional_probability): Update.
25456         (emit_case_dispatch_table): Update.
25457         (expand_case): Update.
25458         (expand_sjlj_dispatch_table): Update.
25459         (emit_case_nodes): Update.
25460         * targhooks.c: Update.
25461         * tracer.c (better_p): Update.
25462         (find_best_successor): Update.
25463         * trans-mem.c (expand_transaction): Update.
25464         * tree-call-cdce.c: Update.
25465         * tree-cfg.c (gimple_split_edge): Upate.
25466         (move_sese_region_to_fn): Upate.
25467         * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
25468         * tree-eh.c (lower_resx): Upate.
25469         (cleanup_empty_eh_move_lp): Upate.
25470         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25471         * tree-inline.c (copy_edges_for_bb): Update.
25472         (copy_cfg_body): Update.
25473         * tree-parloops.c (gen_parallel_loop): Update.
25474         * tree-profile.c (gimple_gen_ic_func_profiler): Update.
25475         (gimple_gen_time_profiler): Update.
25476         * tree-ssa-dce.c (remove_dead_stmt): Update.
25477         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
25478         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
25479         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
25480         (unloop_loops): Update.
25481         (try_peel_loop): Update.
25482         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25483         * tree-ssa-loop-split.c (connect_loops): Update.
25484         (split_loop): Update.
25485         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25486         (hoist_guard): Update.
25487         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
25488         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
25489         (value_replacement): Update.
25490         * tree-ssa-reassoc.c (branch_fixup): Update.
25491         * tree-ssa-tail-merge.c (replace_block_by): Update.
25492         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
25493         (create_edge_and_update_destination_phis): Update.
25494         (compute_path_counts): Update.
25495         (recompute_probabilities): Update.
25496         (update_joiner_offpath_counts): Update.
25497         (freqs_to_counts_path): Update.
25498         (duplicate_thread_path): Update.
25499         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
25500         (struct switch_conv_info): Update.
25501         (gen_inbound_check): Update.
25502         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
25503         (vect_do_peeling): Update.
25504         (vect_loop_versioning): Update.
25505         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25506         (optimize_mask_stores): Update.
25507         * ubsan.c (ubsan_expand_null_ifn): Update.
25508         * value-prof.c (gimple_divmod_fixed_value): Update.
25509         (gimple_divmod_fixed_value_transform): Update.
25510         (gimple_mod_pow2): Update.
25511         (gimple_mod_pow2_value_transform): Update.
25512         (gimple_mod_subtract): Update.
25513         (gimple_mod_subtract_transform): Update.
25514         (gimple_ic): Update.
25515         (gimple_stringop_fixed_value): Update.
25516         (gimple_stringops_transform): Update.
25517         * value-prof.h: Update.
25518
25519 2017-06-29  Carl Love  <cel@us.ibm.com>
25520
25521         * config/rs6000/rs6000-c.c: Add support for built-in functions
25522         vector signed int vec_signed (vector float);
25523         vector signed long long vec_signed (vector double);
25524         vector signed int vec_signed2 (vector double, vector double);
25525         vector signed int vec_signede (vector double);
25526         vector signed int vec_signedo (vector double);
25527         * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
25528         instruction generator.
25529         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
25530         UNSPEC_VSX_VSIGNED2): Add UNSPECS.
25531         (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
25532         Add define_insn.
25533         (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
25534         vunsignede_v2df): Add define_expands.
25535         * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
25536         VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
25537         VEC_UNSIGNEDO): Add definitions.
25538         * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
25539         UNSPEC_VSX_VSIGNED2): Add UNSPECs.
25540         (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
25541         (vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
25542         vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
25543         * config/rs6000/altivec.h (vec_signed, vec_signed2,
25544         vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
25545         vec_unsignede, vec_unsignedo): Add builtin defines.
25546         * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
25547         declaration.
25548         * doc/extend.texi: Update the built-in documentation file for the
25549         new built-in functions.
25550
25551 2017-06-29  Richard Biener  <rguenther@suse.de>
25552
25553         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
25554         reduction chains to LOOP_VINFO_REDUCTIONS.
25555         * tree-vect-slp.c (vect_analyze_slp): Continue looking for
25556         SLP reductions after processing reduction chains.
25557
25558 2017-06-29  Nathan Sidwell  <nathan@acm.org>
25559
25560         * builtins.c (fold_builtin_FUNCTION): Use
25561         lang_hooks.decl_printable_name.
25562
25563 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
25564
25565         PR middle-end/81194
25566         * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
25567         with only one label.
25568         * stmt.c (expand_case): Assert NCASES is greater than one.
25569
25570 2017-06-29  Richard Biener  <rguenther@suse.de>
25571
25572         * tree-cfg.c (group_case_labels_stmt): Return whether we changed
25573         anything.
25574         (group_case_labels): Likewise.
25575         (find_taken_edge): Push sanity checking on val to workers...
25576         (find_taken_edge_cond_expr): ... here
25577         (find_taken_edge_switch_expr): ... and here, handle cases
25578         with just a default label.
25579         * tree-cfg.h (group_case_labels_stmt): Adjust prototype.
25580         (group_case_labels): Likewise.
25581         * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
25582         group_case_labels does anything cleanup the CFG again.
25583
25584 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
25585
25586         PR tree-optimization/81196
25587         * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
25588         exit condition comparing two IVs.
25589
25590 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
25591
25592         * config/arm/parsecpu.awk (gen_comm_data): Add initializer for
25593         profile to the dummy entry at the end of the list of architectures.
25594         * config/arm/arm-cpu-cdata.h: Regenerated.
25595
25596 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25597             Michael Collison <michael.collison@arm.com>
25598
25599         PR target/70119
25600         * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
25601         New pattern.
25602         (*aarch64_reg_<mode>3_neg_mask2): New pattern.
25603         (*aarch64_reg_<mode>3_minus_mask): New pattern.
25604         (*aarch64_<optab>_reg_di3_mask2): New pattern.
25605         * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
25606         of shift when the shift amount is masked with constant equal to
25607         the size of the mode.
25608         * config/aarch64/predicates.md (subreg_lowpart_operator): New
25609         predicate.
25610
25611 2017-06-29  Martin Liska  <mliska@suse.cz>
25612
25613         * config/i386/i386.opt: Change range from [1,5] to [0,5].
25614
25615 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
25616
25617         PR bootstrap/80565
25618         * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
25619         code.
25620         * ipa-inline.h
25621         (edge_growth_cache_entry::edge_growth_cache_entry): New
25622         function.
25623         (reset_edge_growth_cache): Update to use constructor.
25624
25625 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25626
25627         * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
25628         (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
25629         (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
25630
25631 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
25632
25633         * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
25634         (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
25635
25636 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
25637
25638         * config.gcc (*-linux-musl*): Add t-musl tmake_file.
25639         (*-linux-uclibc*): Add t-uclibc tmake_file.
25640         * config/t-musl: New.
25641         * config/t-uclibc: New.
25642
25643 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
25644
25645         * config/arm/parsecpu.awk (profile): Parse new keyword in an arch
25646         context.
25647         (gen_comm_data): Emit architectural setting of arch_prof.
25648         * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
25649         profile.
25650         (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
25651         (armv8-m.base, armv8-m.main): Likewise.
25652         * arm-protos.h (arm_build_target): Add profile field.
25653         (arch_option): Likewise.
25654         * config/arm/arm.c (arm_configure_build_target): Copy the profile to
25655         the active target.
25656         * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
25657         arm_active_target.profile.
25658
25659 2017-06-28  Richard Biener  <rguenther@suse.de>
25660
25661         PR middle-end/81227
25662         * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
25663         TYPE_OVERFLOW_WRAPS.
25664         * match.pd (negate_expr_p): Likewise.
25665         * tree-ssa-reassoc.c (optimize_range_tests_diff): Use
25666         fold_build2, not fold_binary.
25667
25668 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25669
25670         * config/aarch64/aarch64 (aarch64_expand_mov_immediate):
25671         Convert memory address to Pmode.
25672         (aarch64_print_operand): Assert MEM operands are always Pmode.
25673
25674 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25675
25676         PR target/79665
25677         * config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
25678         Remove redundant if.
25679         (aarch_forward_to_shift_is_not_shifted_reg): Remove.
25680         * config/arm/aarch-common-protos.h
25681         (aarch_forward_to_shift_is_not_shifted_re): Remove.
25682         * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
25683
25684 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
25685
25686         PR ipa/81238
25687         * multiple_target.c (create_dispatcher_calls): Set the default
25688         clone to be static, not public.
25689
25690 2017-06-28  Richard Biener  <rguenther@suse.de>
25691
25692         * tree-vect-loop.c (vectorizable_reduction): Move special
25693         cond reduction IV var creation ...
25694         (vect_create_epilog_for_reduction): ... here.  Remove induction_index
25695         parameter.  Use STMT_VINFO_VECTYPE.
25696         * tree-vect-slp.c (vect_get_constant_vectors): Properly reset
25697         constant_p.
25698
25699 2017-06-28  Martin Liska  <mliska@suse.cz>
25700
25701         PR ipa/81128
25702         * ipa-visibility.c (non_local_p): Handle visibility.
25703
25704 2017-06-28  Martin Liska  <mliska@suse.cz>
25705
25706         PR driver/79659
25707         * common.opt: Add IntegerRange to various options.
25708         * opt-functions.awk (integer_range_info): New function.
25709         * optc-gen.awk: Add integer_range_info to cl_options struct.
25710         * opts-common.c (decode_cmdline_option): Handle
25711         CL_ERR_INT_RANGE_ARG.
25712         (cmdline_handle_error): Likewise.
25713         * opts.c (print_filtered_help): Show valid interval in
25714         when --help is provided.
25715         * opts.h (struct cl_option): Add range_min and range_max fields.
25716         * config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
25717
25718 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
25719
25720         * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
25721         (x * C EQ/NE y * C): New transformation.
25722
25723 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
25724
25725         * genmultilib (combination_space): Accept '+' in option names.
25726
25727 2017-06-28  Martin Liska  <mliska@suse.cz>
25728
25729         PR sanitizer/81224
25730         * asan.c (instrument_derefs): Bail out inner references
25731         that are hard register variables.
25732
25733 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
25734
25735         PR target/81175
25736         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
25737         rather than def_builtin_pure for __builtin_ia32_gatherpf*.
25738
25739 2017-06-28  Richard Biener  <rguenther@suse.de>
25740
25741         * tree-vectorizer.h (vect_get_vec_defs): Remove.
25742         (vect_get_slp_defs): Adjust.
25743         * tree-vect-loop.c (get_initial_defs_for_reduction): Split
25744         out from ...
25745         * tree-vect-slp.c (vect_get_constant_vectors): ... here and
25746         simplify.
25747         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
25748         get_initial_defs_for_reduction instead of vect_get_vec_defs.
25749         (vectorizable_reduction): Adjust.
25750         * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
25751         handling.
25752         (vect_get_slp_defs): Likewise.
25753         * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
25754         (vectorizable_bswap): Adjust.
25755         (vectorizable_call): Likewise.
25756         (vectorizable_conversion): Likewise.
25757         (vectorizable_assignment): Likewise.
25758         (vectorizable_shift): Likewise.
25759         (vectorizable_operation): Likewise.
25760         (vectorizable_store): Likewise.
25761         (vectorizable_condition): Likewise.
25762         (vectorizable_comparison): Likewise.
25763
25764 2017-06-28  Michael Collison  <michael.collison@arm.com>
25765
25766         PR target/68535
25767         * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
25768         set of base_reg
25769         (arm_gen_movmemqi): Removed unused variable 'i'.
25770         Convert 'for' loop into 'while' loop.
25771         (arm_expand_prologue): Remove last unnecessary set of insn.
25772         (thumb_pop): Remove unused variable 'pushed_words'.
25773         (thumb_exit): Remove last unnecessary set of regs_to_pop.
25774
25775 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25776
25777         * config/s390/predicates.md: Use s390_rel_address_ok_p.
25778         * config/s390/s390-protos.h: Add prototype of
25779         s390_rel_address_ok_p.
25780         * config/s390/s390.c (s390_got_symbol): New function.
25781         (s390_rel_address_ok_p): New function.
25782         (legitimize_pic_address): Use s390_rel_address_ok_p.
25783         (s390_load_got): Use s390_got_symbol.
25784         (s390_option_override): Issue error if
25785         -mno-pic-data-is-text-relative is used without -fpic/-fPIC.
25786         * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
25787         New macro.
25788         * config/s390/s390.opt: New option mpic-data-is-text-relative.
25789
25790 2017-06-27  Andrew Pinski  <apinski@cavium.com>
25791
25792         * match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
25793         (X * copysign (1.0, X)): New pattern.
25794         (X * copysign (1.0, -X)): New pattern.
25795         (copysign (-1.0, CST)): New pattern.
25796
25797 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
25798
25799         * genmultilib (combination_space): Remove variable.
25800         Validate reuse rules against regular expression for any sequence
25801         of multilib options in any order.
25802
25803 2017-06-27  Michael Collison  <michael.collison@arm.com>
25804
25805         * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
25806         call aarch64_split_simd_combine.
25807         * (aarch64_combine_internal<mode>): Delete pattern.
25808         * config/aarch64/aarch64.c (aarch64_split_simd_combine):
25809         Allow register and subreg operands.
25810
25811 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25812
25813         * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
25814         specific need, just fallback on defaults.
25815         (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
25816
25817 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25818             Olivier Hainque  <hainque@adacore.com>
25819
25820         * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
25821         map for 64bits.
25822         (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
25823         targets. Pick a default if no particular attempt applied.
25824         (STACK_CHECK_PROTECT): Double for 64bit targets, which have
25825         larger contexts.
25826
25827 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25828
25829         * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
25830         (x86_64-wrs-vxworks7): Likewise.
25831
25832 2017-06-27  Marek Polacek  <polacek@redhat.com>
25833
25834         PR sanitizer/81223
25835         * ubsan.c (instrument_null): Check get_base_address's result for null.
25836
25837 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25838
25839         * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
25840
25841 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25842
25843         * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
25844         BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
25845         (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
25846         BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
25847         New function types.
25848         * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
25849         BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
25850         BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
25851         BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
25852         BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
25853         BUILT_IN_FEUPDATEENV): New builtins.
25854         * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
25855         TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
25856         * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
25857         fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
25858         macros.
25859         (builtin_structptr_types): Adjust size.
25860         * tree.c (builtin_structptr_types): Add four entries.
25861
25862 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25863             Olivier Hainque  <hainque@adacore.com>
25864
25865         * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
25866         (TLS_SYM): New local macro, forcing reference to __tls__ on
25867         link command lines for VxWorks 7 RTPs, triggering initialization
25868         of tlsLib.
25869         (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
25870         OS features TLS support, true for RTPs on VxWorks 7.
25871         * config/vxworks.c (vxworks_override_options): Setup emutls
25872         accordingly.
25873
25874 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
25875
25876         * predict.c (test_prediction_value_range): Use -1U instead of -1
25877         to avoid narrowing conversion warning.
25878         * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
25879         to avoid narrowing conversion warning.
25880         * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
25881         -1.
25882         * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
25883
25884 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25885
25886         * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
25887         64bit configurations.
25888         (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
25889         (SIZE_TYPE): Likewise.
25890         * config/vxworks.c (vxworks_emutls_var_fields): Use
25891         long_unsigned_type_node instead of unsigned_type_node as the offset
25892         field type, which is "pointer" mode in emutls.c.
25893
25894 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
25895
25896         PR sanitizer/81209
25897         * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
25898
25899         PR middle-end/81207
25900         * gimple-fold.c (replace_call_with_call_and_fold): Handle
25901         gimple_vuse copying separately from gimple_vdef copying.
25902
25903 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
25904
25905         * value-prof.c (free_hist): Remove call to memset and the enclosing if
25906         condition.
25907
25908 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
25909             Olivier Hainque  <hainque@adacore.com>
25910
25911         * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
25912         for all vxworks7 targets.
25913         * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
25914         (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
25915         (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
25916         variations for VX6/VX7 and 32/64bits later on in ...
25917         (VXWORKS_LIB_SPEC): Leverage new macros.
25918         (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
25919         as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
25920
25921 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
25922
25923         * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
25924         _VX_TOOL_FAMILY and _VX_TOOL to gnu.
25925
25926 2017-06-26  Carl Love  <cel@us.ibm.com>
25927
25928         * config/rs6000/rs6000-c.c: Add support for built-in functions
25929         vector bool char vec_reve (vector bool char);
25930         vector signed char vec_reve (vector signed char);
25931         vector unsigned char vec_reve (vector unsigned char);
25932         vector bool int vec_reve (vector bool int);
25933         vector signed int vec_reve (vector signed int);
25934         vector unsigned int vec_reve (vector unsigned int);
25935         vector bool long long vec_reve (vector bool long long);
25936         vector signed long long vec_reve (vector signed long long);
25937         vector unsigned long long vec_reve (vector unsigned long long);
25938         vector bool short vec_reve (vector bool short);
25939         vector signed short vec_reve (vector signed short);
25940         vector double vec_reve (vector double);
25941         vector float vec_reve (vector float);
25942         * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
25943         VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
25944         * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
25945         (altivec_vreve): New pattern.
25946         * config/rs6000/altivec.h (vec_reve): New define.
25947         * doc/extend.texi (vec_rev): Update the built-in documentation file
25948         for the new built-in functions.
25949
25950 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
25951
25952         PR tree-optimization/71815
25953         * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
25954         function.
25955         (find_basis_for_candidate): Call uses_consumed_by_stmt rather than
25956         has_single_use.
25957         (slsr_process_phi): Likewise.
25958         (replace_uncond_cands_and_profitable_phis): Don't replace a
25959         multiply candidate with a stride of 1 (copy or cast).
25960         (phi_incr_cost): Call uses_consumed_by_stmt rather than
25961         has_single_use.
25962         (lowest_cost_path): Likewise.
25963         (total_savings): Likewise.
25964
25965 2017-06-26  Richard Biener  <rguenther@suse.de>
25966
25967         PR target/81175
25968         * config/i386/i386.c (ix86_init_mmx_sse_builtins):
25969         Use def_builtin_pure for all gather builtins.
25970
25971 2017-06-26  Richard Biener  <rguenther@suse.de>
25972
25973         PR tree-optimization/81203
25974         * tree-tailcall.c (find_tail_calls): Do not move stmts into
25975         non-dominating BBs.
25976
25977 2017-06-26  Marek Polacek  <polacek@redhat.com>
25978
25979         PR c/80116
25980         * doc/invoke.texi: Document -Wmultistatement-macros.
25981
25982 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
25983
25984         * doc/sourcebuild.texi (ARM-specific attributes): Document new
25985         arm_neon_ok_no_float_abi effective target.
25986
25987 2017-06-26  Richard Biener  <rguenther@suse.de>
25988
25989         PR tree-optimization/80928
25990         * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
25991         (copy_bbs): Set BB_DUPLICATED flag early.
25992         (execute_on_growing_pred): Do not execute for BB_DUPLICATED
25993         marked blocks.
25994         (execute_on_shrinking_pred): Likewise.
25995         * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
25996         BB_DUPLICATED blocks.
25997         * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
25998         iterate over all PHIs considering removal of *gsi.
25999
26000 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
26001
26002         * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
26003         qdf24xx.
26004
26005 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
26006
26007         * config/rs6000/rs6000-string.c: (expand_block_clear,
26008         do_load_for_compare, select_block_compare_mode,
26009         compute_current_alignment, expand_block_compare,
26010         expand_strncmp_align_check, expand_strn_compare,
26011         expand_block_move, rs6000_output_load_multiple)
26012         Move functions related to string/block move/compare
26013         to a separate file.
26014         * config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
26015         * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
26016         for this function which is now used in two files.
26017         * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
26018         * config.gcc: Add rs6000-string.o to extra_objs for
26019         targets powerpc*-*-* and rs6000*-*-*.
26020
26021 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
26022
26023         PR target/80510
26024         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
26025         32-bit, since indexed is not valid for DImode.
26026         (mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
26027         3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
26028         (define_peephole2 for Altivec d-form load): Add 32-bit support.
26029         (define_peephole2 for Altivec d-form store): Likewise.
26030
26031         PR ipa/81185
26032         * multiple_target.c (create_dispatcher_calls): Only create the
26033         dispatcher call if the function is the default clone of a
26034         versioned function.
26035
26036 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
26037
26038         PR middle-end/80902
26039         * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
26040         a call, force the call to not be a tail call.
26041
26042 2017-06-23  Jeff Law  <law@redhat.com>
26043
26044         * doc/contrib.texi: Add entry for Steven Pemberton's work on
26045         enquire.
26046
26047 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
26048
26049         * config/rs6000/rs6000.c: Add include of ssa-propagate.h for
26050         update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
26051         handling for early expansion of vector shifts (sl,sr,sra,rl).
26052         (builtin_function_type): Add vector shift right instructions
26053         to the unsigned argument list.
26054
26055 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
26056
26057         rtl-optimizatoin/79286
26058         * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
26059         * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
26060         trap.  PIC register plus a const unspec without offset can never trap.
26061
26062 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
26063
26064         * tree.h (builtin_structptr_type): New type.
26065         (builtin_structptr_types): Declare new array.
26066         * tree.c (builtin_structptr_types): New array.
26067         (free_lang_data, build_common_tree_nodes): Use it.
26068
26069 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
26070
26071         PR c++/81187
26072         * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
26073         -Wnoexcept.
26074
26075 2017-06-22  Matt Turner  <mattst88@gmail.com>
26076
26077         * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
26078         Lake models to skylake case.  Assume skylake for unknown
26079         models with clflushopt.
26080
26081 2017-06-22  Jeff Law  <law@redhat.com>
26082
26083         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
26084         frame sizes that do not satisfy aarch64_uimm12_shift.
26085
26086 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
26087
26088         * profile-count.h (apply_probability,
26089         apply_scale, probability_in): Fix checks for zero.
26090
26091 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26092
26093         * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
26094         * doc/cppdiropts.texi (-I @var{dir}): Document it.
26095
26096 2016-06-22  Richard Biener  <rguenther@suse.de>
26097
26098         * tree-vect-loop.c (vect_model_reduction_cost): Handle
26099         COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
26100         REDUC_MAX_EXPR support.
26101         (vectorizable_reduction): Likewise.
26102         (vect_create_epilog_for_reduction): Likewise.
26103
26104 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
26105
26106         * match.pd (A / (1 << B) -> A >> B): New.
26107         * generic-match-head.c: Include optabs-tree.h.
26108         * gimple-match-head.c: Likewise.
26109         * optabs-tree.h (target_supports_op_p): New.
26110         * optabs-tree.c (target_supports_op_p): New.
26111
26112 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26113
26114         * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
26115         $gcc_cv_ld --help output.
26116         (gcc_cv_ld_demangle): Likewise.
26117         (gcc_cv_ld_eh_frame_hdr): Likewise.
26118         (gcc_cv_ld_pie): Likewise.
26119         (gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
26120         (gcc_cv_ld_buildid): Likewise.
26121         (gcc_cv_ld_sysroot): Likewise.
26122         (ld_bndplt_support): Likewise.
26123         (ld_pushpopstate_support): Likewise.
26124         * configure: Regenerate.
26125         * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
26126
26127 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26128
26129         PR target/81151
26130         * config/i386/sse.md (round<mode>2): Renumber match_dup and
26131         operands indexes to avoid gap between operands and match_dups.
26132
26133 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26134
26135         * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
26136         Increment Arith_shift and Arith_shift_reg by 1.
26137         * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
26138         New tuning flag.
26139         * config/aarch64/aarch64.c (thunderx_tunings): Enable
26140         AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
26141         (aarch64_strip_extend): Add new argument and test for it.
26142         (aarch64_cheap_mult_shift_p): New function.
26143         (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
26144         add a cost if it is true.
26145         Update calls to aarch64_strip_extend.
26146         (aarch64_rtx_costs): Update calls to aarch64_strip_extend.
26147
26148 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26149
26150         * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
26151         tunings.
26152         (thunderxt88): Likewise.
26153         * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
26154         (thunderx_prefetch_tune): New variable.
26155         (thunderx2t99_prefetch_tune): Update for the correct values.
26156         (thunderxt88_tunings): New variable.
26157         (thunderx_tunings): Use thunderx_prefetch_tune instead of
26158         generic_prefetch_tune.
26159         (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
26160
26161 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26162
26163         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
26164         SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
26165         (aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
26166         (aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
26167         (aarch64_atomic_cas<mode>, GPI): Likewise.
26168
26169 2017-06-21  Martin Liska  <mliska@suse.cz>
26170
26171         * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
26172         statements on cold and hot labels.
26173         * predict.c (tree_estimate_probability_bb): Remove the
26174         prediction from this place.
26175
26176 2017-06-21  Martin Liska  <mliska@suse.cz>
26177
26178         PR tree-optimization/79489
26179         * gimplify.c (maybe_add_early_return_predict_stmt): New
26180         function.
26181         (gimplify_return_expr): Call the function.
26182         * predict.c (tree_estimate_probability_bb): Remove handling
26183         of early return.
26184         * predict.def: Update comment about early return predictor.
26185         * gimple-predict.h (is_gimple_predict): New function.
26186         * predict.def: Change default value of early return to 66.
26187         * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
26188         statements.
26189         * passes.def: Put pass_strip_predict_hints to the beginning of
26190         IPA passes.
26191
26192 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
26193
26194         * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
26195         FUNCTION_DECL declarations.
26196         (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
26197         declarations.
26198         (dwaf2out_decl): Likewise.
26199         * godump.c (go_early_global_decl): Skip call to the real debug hook
26200         for FUNCTION_DECL declarations.
26201         * passes.c (rest_of_decl_compilation): Skip call to the
26202         early_global_decl debug hook for FUNCTION_DECL declarations, unless
26203         -fdump-go-spec is passed.
26204
26205 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26206
26207         * config/i386/i386.c (struct builtin_isa): New field pure_p.
26208         Reorder for compactness.
26209         (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
26210         (def_builtin_pure, def_builtin_pure2): New functions.
26211         (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
26212
26213 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26214
26215         * match.pd (nop_convert): New predicate.
26216         ((A +- CST1) +- CST2): Allow some NOP conversions.
26217
26218 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26219
26220         PR c++/81130
26221         * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
26222         with ctors/dtors if GOVD_SHARED is set.
26223
26224 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26225
26226         * config/aarch64/aarch64.md (movti_aarch64):
26227         Emit mov rather than orr.
26228         (movtf_aarch64): Likewise.
26229         * config/aarch64/aarch64-simd.md (aarch64_simd_mov):
26230         Emit mov rather than orr.
26231
26232 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26233
26234         * config/aarch64/aarch64-simd.md (aarch64_simd_dup):
26235         Swap alternatives, make integer dup more expensive.
26236
26237 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26238
26239         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
26240         Return true for non-tls symbols.
26241
26242 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
26243
26244         * config/aarch64/aarch64-cores.def (cortex-a55): New.
26245         (cortex-a75): Likewise.
26246         (cortex-a75.cortex-a55): Likewise.
26247         * config/aarch64/aarch64-tune.md: Regenerate.
26248         * doc/invoke.texi (-mtune): Document new values for -mtune.
26249
26250 2017-06-21  Tom de Vries  <tom@codesourcery.com>
26251
26252         * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
26253         stack_size feature.
26254         (Effective-Target Keywords, Other attributes): Suggest using
26255         dg-add-options stack_size feature to get stack limit in stack_size
26256         effective target documentation.
26257
26258 2017-06-21  Julian Brown  <julian@codesourcery.com>
26259             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
26260
26261         * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
26262         (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
26263         * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
26264         reservation.
26265         * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
26266         attribute type list for neon_multiply.
26267         * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
26268         attribute type list for neon_multiply.
26269         * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
26270         * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
26271         attribute type list for neon_multiply.
26272         * config/arm/types.md (crypto_pmull): Add.
26273         * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
26274         attribute type list.
26275
26276 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
26277
26278         * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
26279         arm1176jzf-s.
26280
26281 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26282
26283         * ira-costs.c (find_costs_and_classes): Initialize cost_classes later
26284         to make sure not to dereference a NULL cost_classes_ptr pointer.
26285
26286 2017-06-20  Carl Love  <cel@us.ibm.com>
26287
26288         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26289         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
26290         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
26291         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
26292         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
26293         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
26294         VMULOSW): New enum "unspec" values.
26295         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
26296         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
26297         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
26298         altivec_vmulosw): New patterns.
26299         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
26300         VMULOSW): Add definitions.
26301
26302 2017-06-20  Julia Koval  <julia.koval@intel.com>
26303
26304         * config/i386/i386.c: Fix rounding expand for new pattern.
26305         * config/i386/subst.md: Fix pattern (parallel -> unspec).
26306
26307 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26308
26309         * config/aarch64/aarch64-option-extensions.def (rcpc): New.
26310         * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
26311
26312 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26313
26314         * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
26315         feature string.
26316
26317 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26318
26319         * config/aarch64/aarch64-cores.def: Rearrange to sort by
26320         architecture, then by implementer ID.
26321         * config/aarch64/aarch64-tune.md: Regenerate.
26322
26323 2017-06-20  Richard Biener  <rguenther@suse.de>
26324
26325         PR middle-end/81097
26326         * fold-const.c (split_tree): Fold to type before negating.
26327
26328 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
26329
26330         * diagnostic-show-locus.c
26331         (selftest::test_fixit_deletion_affecting_newline): New function.
26332         (selftest::diagnostic_show_locus_c_tests): Call it.
26333
26334 2017-06-20  Andreas Schwab  <schwab@suse.de>
26335
26336         PR target/80970
26337         * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
26338         instead of "+d".
26339
26340 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
26341
26342         * config/arm/arm-c.c (arm_cpu_builtins): New block to define
26343         __ARM_FEATURE_COPROC according to support.
26344
26345 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26346
26347         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
26348         Rewritten to avoid overflow for > 32-bit pointers.
26349
26350         PR sanitizer/81125
26351         * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
26352         by removing enum keyword.
26353         (ubsan_type_descriptor): Likewise.  Formatting fix.
26354
26355         PR target/81121
26356         * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
26357         splitter): Require TARGET_SSE2 in the condition.
26358
26359 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
26360
26361         PR target/79799
26362         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
26363         for doing vector set of SFmode on ISA 3.0.
26364         * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
26365         (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
26366         element.
26367         (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
26368         SFmode value into a V4SF variable that was extracted from another
26369         V4SF variable without converting the element to double precision
26370         and back to single precision vector format.
26371         (vsx_insert_extract_v4sf_p9_2): Likewise.
26372
26373 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
26374
26375         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
26376         in UWHI to avoid undefined overflow.
26377
26378         PR sanitizer/81125
26379         * ubsan.h (enum ubsan_encode_value_phase): New.
26380         (ubsan_encode_value): Change second argument to
26381         enum ubsan_encode_value_phase with default value of
26382         UBSAN_ENCODE_VALUE_GENERIC.
26383         * ubsan.c (ubsan_encode_value): Change second argument to
26384         enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
26385         adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
26386         create_tmp_var_raw instead of create_tmp_var and use a
26387         TARGET_EXPR.
26388         (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
26389         instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
26390         ubsan_encode_value callers.
26391
26392         PR sanitizer/81111
26393         * ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
26394         use create_tmp_var_raw instead of create_tmp_var, mark it addressable
26395         just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
26396
26397 2017-06-19  Richard Biener  <rguenther@suse.de>
26398
26399         PR middle-end/81118
26400         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
26401         estimates if we changed anything.
26402
26403 2017-06-19  Richard Biener  <rguenther@suse.de>
26404
26405         PR tree-optimization/80887
26406         * tree-ssa-sccvn.c (mprts_hook_cnt): New global.
26407         (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
26408         simplified lookups, then reset mprts_hook.
26409         (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
26410         simplifying.
26411         (try_to_simplify): Likewise.
26412
26413 2017-06-19  Martin Liska  <mliska@suse.cz>
26414
26415         PR sanitizer/80879
26416         * gimplify.c (gimplify_switch_expr):
26417         Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
26418
26419 2017-06-19  Martin Liska  <mliska@suse.cz>
26420
26421         * doc/install.texi: Document that PGO runs in 4 stages.
26422
26423 2017-06-19  Martin Liska  <mliska@suse.cz>
26424
26425         PR ipa/80732
26426         * attribs.c (make_dispatcher_decl): Do not append '.ifunc'
26427         to dispatcher function name.
26428         * multiple_target.c (replace_function_decl): New function.
26429         (create_dispatcher_calls): Redirect both edges and references.
26430
26431 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
26432
26433         * profile-count.c (profile_count::dump): Dump quality.
26434         (profile_count::differs_from_p): Update for unsigned val.
26435         * profile-count.h (profile_count_quality): New enum.
26436         (profile_count): Turn m_val to 62bit unsigned, add quality tracking.
26437
26438 2017-06-19  Richard Biener  <rguenther@suse.de>
26439
26440         * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
26441         struct function as arg.
26442         (estimate_numbers_of_iterations): Export overload with loop arg.
26443         (free_numbers_of_iterations_estimates_loop): Use an overload of
26444         free_numbers_of_iterations_estimates instead.
26445         * tree-cfg.c (remove_bb): Adjust.
26446         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
26447         * tree-parloops.c (gen_parallel_loop): Likewise.
26448         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
26449         Likewise.
26450         (tree_unroll_loops_completely): Likewise.
26451         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
26452         Use an overload instead and export.
26453         (estimated_loop_iterations): Adjust.
26454         (max_loop_iterations): Likewise.
26455         (likely_max_loop_iterations): Likewise.
26456         (estimate_numbers_of_iterations): Take struct function as arg
26457         and adjust.
26458         (loop_exits_before_overflow): Adjust.
26459         (free_numbers_of_iterations_estimates_loop): Use an overload.
26460         * tree-vect-loop.c (vect_analyze_loop_form): Adjust.
26461         * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
26462
26463 2017-06-19  Richard Biener  <rguenther@suse.de>
26464
26465         PR ipa/81112
26466         * ipa-prop.c (find_constructor_constant_at_offset): Handle
26467         RANGE_EXPR conservatively.
26468
26469 2017-06-16  Carl Love  <cel@us.ibm.com>
26470
26471         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26472         definitions for vec_float, vec_float2, vec_floato,
26473         vec_floate built-ins.
26474         * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
26475         for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
26476         floate.
26477         * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
26478         FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
26479         UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
26480         * config/altivec.md (define_insn "p8_vmrgew_<mode>",
26481         define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
26482         * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
26483         vec_floato): Add builtin defines.
26484         * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
26485         Update the built-in documentation file for the new built-in
26486         functions.
26487
26488 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26489
26490         * config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
26491         (mthumb): Mark as the negative of -marm.
26492
26493 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26494
26495         * doc/invoke.texi (ARM Options, -mcpu): Document supported
26496         extension options.
26497         (ARM Options, -mtune): Document that this accepts the same
26498         extension options as -mcpu.
26499         (ARM Options, -mfpu): Document addition of -mfpu=auto.
26500
26501 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26502
26503         * doc/invoke.texi (ARM Options, -march=): Document new syntax and
26504         permitted extensions.
26505
26506 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26507
26508         * config/arm/arm-cpus.in (armv7): Add extension +nofp.
26509         (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
26510         (armv8-m.main): Add option +nodsp.
26511         * config/arm/arm-cpu-cdata.h: Regenerated.
26512
26513 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26514
26515         * config/arm/t-fuchsia: New file.
26516         * config.gcc (arm*-*-fuchsia*): Use it.
26517
26518 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26519
26520         * config/arm/t-symbian: Rewrite for new option infrastructure.
26521
26522 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26523
26524         * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
26525         (MULTILIB_REQUIRED): Likewise.
26526
26527 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26528
26529         * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
26530         (MULTILIB_RESUE): Likewise.
26531         (MULTILIB_MATCHES): Likewise.
26532         (MULTLIB_REQUIRED): Likewise.
26533
26534 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26535
26536         * config/arm/t-rtems: Rewrite for new option framework.
26537
26538 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26539
26540         * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
26541         (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
26542         (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
26543         (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
26544         * config/arm/t-multilib: ... here.
26545         (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
26546         (MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
26547         armv7-a and armv8*-a when A-profile libraries have not been built.
26548         * config/arm/t-rmprofile: Rewrite.
26549
26550 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26551
26552         * genmultilib (multilib_reuse): Allow an explicit period to be escaped
26553         with a backslash.  Remove the backslash after substituting unescaped
26554         periods.
26555         * doc/fragments.texi (MULTILIB_REUSE): Document it.
26556
26557 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26558
26559         * config.gcc: (arm*-*-*): When building a-profile libraries, force
26560         the driver to pass through the default setting of -mfloat-abi.
26561         * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
26562         rather than NULL.
26563         * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
26564         (all_feat_combs): New rule.
26565         (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
26566         default libraries.
26567         * config/arm/t-aprofile: Rewrite.
26568
26569 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26570
26571         * config/arm/arm.h (FPUTYPE_AUTO): Define.
26572         * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
26573         fpu is not specified by the user/command-line.
26574         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
26575         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
26576         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
26577         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
26578         * common/config/arm/arm-common.c (arm_canon_arch_option): Use
26579         FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
26580
26581 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26582
26583         * config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
26584         * config/arm/t-arm-elf: Rewritten.
26585
26586 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26587
26588         * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
26589         have some floating-point instructions.
26590         (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
26591         (TARGET_MAYBE_HARD_FLOAT): New macro.
26592         * config/arm/arm-builtins.c (arm_init_builtins): Use
26593         TARGET_MAYBE_HARD_FLOAT.
26594         * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
26595
26596 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26597
26598         * common/config/arm/arm-common.c: Define INCLUDE_LIST.
26599         (configargs.h): Include it.
26600         (arm_print_hint_for_fpu_option): New function.
26601         (arm_parse_fpu_option): New function.
26602         (candidate_extension): New class.
26603         (arm_canon_for_multilib): New function.
26604         * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
26605         (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
26606         (ARCH_CANONICAL_SPECS): New macro.
26607         (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
26608
26609 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26610
26611         * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
26612         are set after handling multilib fragments.  Set target_cpu_default2
26613         from with_cpu.
26614
26615 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26616
26617         * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
26618         cpu name.
26619         (arm*-*-*): Set target_cpu_default2 to a quoted string.
26620         * config/arm/parsecpu.awk (check_cpu): Validate any extension
26621         options.
26622         (check_arch): Likewise.
26623         * config/arm/arm.c (arm_configure_build_target): Handle
26624         TARGET_CPU_DEFAULT being a string constant.  Scan any feature
26625         options in the default.
26626
26627 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26628
26629         * config/arm/arm-protos.h (cpu_arch_extension): Add field to record
26630         when an option is an alias of another.
26631         * config/arm/parsecpu.awk (optalias): New parser token.
26632         (gen_comm_data): Mark non-alias options as such.  Emit entries
26633         for extension aliases.
26634         * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
26635         (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
26636         (armv6kz, armv6zk, armv6t2): Likewise.
26637         (armv7): Make vfpv3-d16 an alias.
26638         (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
26639         canonical order.
26640         (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
26641         Sort in canonical order.
26642         (armv8-a): Sort in canonical order.
26643         (armv8.1-a, armv8.2-a):  Likewise.
26644         (generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
26645         canonical order.
26646         (cortex-a9): Sort in canonical order.
26647         * config/arm/arm.c (selftests.h): Include it.
26648         (arm_test_cpu_arch_data): New function.
26649         (arm_run_self_tests): New function.
26650         (TARGET_RUN_TARGET_SELFTESTS): Redefine.
26651         (targetm): Move declaration to the end of the file.
26652         * arm-cpu-cdata.h: Regenerated.
26653
26654 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26655
26656         * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
26657         call to target_mode_check describing the type of option passed.
26658         * common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
26659         (arm_target_thumb_only): Use arm_parse_arch_option_name or
26660         arm_parse_cpu_option_name to match parameters against list of
26661         available targets.
26662         * config/arm/parsecpu.awk (gen_comm_data): Don't generate
26663         arm_arch_core_flags data structure.
26664         * config/arm/arm-cpu_cdata.h: Regenerated.
26665
26666 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26667
26668         * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
26669         config/arm/arm.c.
26670         (arm_print_hint_for_cpu_option): Likewise.
26671         (arm_print_hint_for_arch_option): Likewise.
26672         (arm_parse_cpu_option_name): Likewise.
26673         (arm_parse_arch_option_name): Likewise.
26674         * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
26675         of entries in the all_fpus list.
26676         * config/arm/arm-protos.h (all_architectures, all_cores): Declare.
26677         (arm_parse_cpu_option_name): Declare.
26678         (arm_parse_arch_option_name): Declare.
26679         (arm_parse_option_features): Declare.
26680         (arm_intialize_isa): Declare.
26681         * config/arm/parsecpu.awk (gen_data): Move CPU and architecture
26682         data tables to ...
26683         (gen_comm_data): ... here.  Make definitions non-static.
26684         * config/arm/arm-cpu-data.h: Regenerated.
26685         * config/arm/arm-cpu-cdata.h: Regenerated.
26686
26687 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26688
26689         * config/arm/arm-protos.h (arm_build_target): Remove arch_core.
26690         (cpu_arch_extension): New structure.
26691         (cpu_arch_option, arch_option, cpu_option): New structures.
26692         * config/arm/parsecpu.awk (gen_headers): Build an enumeration of
26693         architecture types.
26694         (gen_data): Generate new format data tables.
26695         * config/arm/arm.c (cpu_tune): New structure.
26696         (cpu_option, processors): Delete.
26697         (arm_print_hint_for_core_or_arch): Delete.  Replace with ...
26698         (arm_print_hint_for_cpu_option): ... this and ...
26699         (arm_print_hint_for_arch_option): ... this.
26700         (arm_parse_arch_cpu_name): Delete.  Replace with ...
26701         (arm_parse_cpu_option_name): ... this and ...
26702         (arm_parse_arch_option_name): ... this.
26703         (arm_unrecognized_feature): Change type of target parameter to
26704         cpu_arch_option.
26705         (arm_parse_arch_cpu_features): Delete.  Replace with ...
26706         (arm_parse_option_features): ... this.
26707         (arm_configure_build_target): Rework to use new configuration data
26708         tables.
26709         (arm_print_tune_info): Rework for new configuration data tables.
26710         * config/arm/arm-cpu-data.h: Regenerated.
26711         * config/arm/arm-cpu.h: Regenerated.
26712
26713 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26714
26715         * Makefile.in (OBJS): Move sbitmap.o from here ...
26716         (OBJS-libcommon): ... to here.
26717
26718 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26719
26720         * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
26721         (ISA_ALL_CRYPTO): New macro.
26722         (ISA_ALL_SIMD): New macro
26723         (ISA_ALL_FP): New macro.
26724         * config/arm/arm.c (fpu_bitlist): Update initializer.
26725         * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
26726         simd or fp.
26727         (arm9e): Add fpu.  Add option for nofp
26728         (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
26729         (arm926ej-s, arm1026ej-s): Likewise.
26730         (generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
26731         vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
26732         neon-fp16, neon-vfpv4, nofp and nosimd.
26733         (cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
26734         (cortex-a8): Add fpu.  Add option for nofp.
26735         (cortex-a9): Add fpu.  Add options for nosimd and nofp.
26736         (cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
26737         (cortex-r4f): Add fpu.
26738         (cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
26739         (cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
26740         for nofp.
26741         (cortex-r8): Likewise.
26742         (cortex-m4): Add fpu.  Add option for nofp.
26743         (cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
26744         (cortex-a17.cortex-a7): Likewise.
26745         (cortex-a32): Add fpu.  Add options for crypto and nofp.
26746         (cortex-a35, cortex-a53): Likewise.
26747         (cortex-a57): Add fpu.  Add option for crypto.
26748         (cortex-a72, cortex-a73): Likewise.
26749         (exynos-m1): Likewise.
26750         (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
26751         (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
26752         (cortex-m33): Add fpu.  Add option for nofp.
26753         * config/arm/arm-cpu-cdata.h: Regenerated
26754         * config/arm/arm-cpu-data.h: Regenerated.
26755
26756 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26757
26758         * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
26759         (armv5te, armv5tej): Likewise.
26760         (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
26761         (armv7): Add options fp and vfpv3-d16.
26762         (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
26763         vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
26764         nofp and nosimd.
26765         (armv7ve): Likewise.
26766         (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
26767         (armv7e-m): Add options fp, fpv5, fp.dp and nofp.
26768         (armv8-a): Add nocrypto option.
26769         (armv8.1-a, armv8.2-a): Likewise.
26770         (armv8-m.main): add options fp, fp.dp and nofp.
26771
26772 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26773
26774         * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
26775         nofp.
26776         (armv8-a+crc): Delete.
26777         (armv8.1-a): Add options simd, crypto and nofp.
26778         (armv8.2-a): Add options fp16, simd, crypto and nofp.
26779         (armv8.2-a+fp16): Delete.
26780         (armv8-m.main): Add option dsp.
26781         (armv8-m.main+dsp): Delete.
26782         (cortex-a8): Add fpu.  Add nofp option.
26783         (cortex-a9): Add fpu.  Add nofp and nosimd options.
26784         * config/arm/parsecpu.awk (gen_data): Generate option tables and
26785         link to main cpu and architecture data structures.
26786         (gen_comm_data): Only put isa attributes from the main architecture
26787         in common tables.
26788         (option): New statement for architecture and CPU entries.
26789         * arm.c (struct cpu_option): New structure.
26790         (struct processors): Add entry for options.
26791         (arm_unrecognized_feature): New function.
26792         (arm_parse_arch_cpu_name): Ignore any characters after the first
26793         '+' character.
26794         (arm_parse_arch_cpu_feature): New function.
26795         (arm_configure_build_target): Separate out any CPU and architecture
26796         features and parse separately.  Don't error out if -mfpu=auto is
26797         used with only an architecture string.
26798         (arm_print_asm_arch_directives): New function.
26799         (arm_file_start): Call it.
26800         * config/arm/arm-cpu-cdata.h: Regenerated.
26801         * config/arm/arm-cpu-data.h: Likewise.
26802         * config/arm/arm-tables.opt: Likewise.
26803
26804 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26805
26806         * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
26807         assembler when it is not -mfpu=auto.
26808
26809 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26810
26811         * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
26812         (ASM_REWRITE_SPEC_FUNCTIONS): New macro.
26813         (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
26814         (ASM_CPU_SPEC): Rewrite.
26815         (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
26816         (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
26817         MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
26818         reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
26819         * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
26820         copied string is NUL-terminated.  Also strip any characters prefixed
26821         by '+'.
26822         (arm_rewrite_selected_arch): New function.
26823         (arm_rewrite_march): New function.
26824
26825 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26826
26827         * config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
26828         (x_arm_cpu_string, x_arm_tune_string): Likewise.
26829         (march, mcpu, mtune): Convert to string-based options.
26830         * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
26831         (arm_parse_arch_cpu_name): New function.
26832         (arm_configure_build_target): Use arm_parse_arch_cpu_name to
26833         identify selected architecture or CPU.
26834         (arm_option_save): New function.
26835         (TARGET_OPTION_SAVE): Redefine.
26836         (arm_option_restore): Restore string options.
26837         (arm_option_print): Print string options.
26838
26839 2017-06-16  Martin Sebor  <msebor@redhat.com>
26840
26841         PR tree-optimization/80933
26842         PR tree-optimization/80934
26843         * builtins.c (fold_builtin_3): Do not handle bcmp here.
26844         * gimple-fold.c (gimple_fold_builtin_bcmp): New function.
26845         (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
26846         (gimple_fold_builtin): Call them.
26847
26848 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26849
26850         * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
26851         as unlikely; update profile.
26852
26853 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26854
26855         * predict.c (force_edge_cold): Handle declaring edges impossible
26856         more aggresively.
26857
26858 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26859
26860         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
26861         profile.
26862         (try_unroll_loop_completely): Fix reporting.
26863
26864 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26865
26866         * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
26867
26868 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
26869
26870         PR target/71778
26871         * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
26872         if given a non-constant argument for an intrinsic which requires a
26873         constant.
26874
26875 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26876
26877         * profile.c (compare_freqs): New function.
26878         (branch_prob): Sort edge list.
26879         (find_spanning_tree): Assume that the list is priority sorted.
26880
26881 2017-06-16  Richard Biener  <rguenther@suse.de>
26882
26883         PR tree-optimization/81090
26884         * passes.def (pass_record_bounds): Remove.
26885         * tree-pass.h (make_pass_record_bounds): Likewise.
26886         * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
26887         make_pass_record_bounds): Likewise.
26888         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
26889         not free niter estimates at the beginning but at the end.
26890         * tree-scalar-evolution.c (scev_finalize): Free niter estimates.
26891
26892 2017-06-16  Richard Biener  <rguenther@suse.de>
26893
26894         * tree-switch-conversion.c (emit_case_bit_tests): Adjust
26895         initializer to workaround ICE in host GCC 4.8.
26896
26897 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26898
26899         * ipa-inline-transform.c (update_noncloned_frequencies): Update also
26900         counts.
26901         (clone_inlined_nodes): Update.
26902
26903 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26904
26905         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
26906         prefetch settings, and enable prefetching by default at -O3.
26907
26908 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26909
26910         * config/aarch64/aarch64.c (aarch64_override_options_internal):
26911         Set flag_prefetch_loop_arrays according to tuning data.
26912
26913 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26914
26915         * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
26916         New tune structure.
26917         (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
26918         [Unrelated to main purpose of the patch] Place the pointer field last
26919         to enable type checking errors when tune structure are wrongly merged.
26920         * config/aarch64/aarch64.c (generic_prefetch_tune,)
26921         (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
26922         (thunderx2t99_prefetch_tune): New tune constants.
26923         (tune_params *_tunings): Update all tunings (no functional change).
26924         (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
26925         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
26926         from tunings structures.
26927
26928 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
26929
26930         PR sanitizer/81094
26931         * ubsan.c (instrument_null): Add T argument, use it instead
26932         of computing it based on IS_LHS.
26933         (instrument_object_size): Likewise.
26934         (pass_ubsan::execute): Adjust instrument_null and
26935         instrument_object_size callers to pass gimple_get_lhs or
26936         gimple_assign_rhs1 result to it.  Use instrument_null instead of
26937         calling get_base_address and instrument_mem_ref.  Handle
26938         aggregate call arguments for object-size sanitization.
26939
26940 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
26941
26942         PR tree-optimization/81089
26943         * tree-vrp.c (is_masked_range_test): Validate operands of
26944         subexpression.
26945
26946 2017-06-15  Martin Sebor  <msebor@redhat.com>
26947
26948         PR c++/80560
26949         * dumpfile.c (dump_register): Avoid calling memset to initialize
26950         a class with a default ctor.
26951         * gcc.c (struct compiler): Remove const qualification.
26952         * genattrtab.c (gen_insn_reserv): Replace memset with initialization.
26953         * hash-table.h: Ditto.
26954         * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
26955           assignment.
26956         * ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
26957         * omp-low.c (lower_omp_ordered_clauses): Replace memset with
26958         default ctor.
26959         * params.h (struct param_info): Make struct members non-const.
26960         * tree-switch-conversion.c (emit_case_bit_tests): Replace memset
26961         with default initialization.
26962         * vec.h (vec_copy_construct, vec_default_construct): New helper
26963         functions.
26964         (vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
26965         with vec_copy_construct.
26966         (vect<T>::quick_grow_cleared): Replace memset with default ctor.
26967         (vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
26968         * doc/invoke.texi (-Wclass-memaccess): Document.
26969
26970 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26971
26972         * emit-rtl.h (is_leaf): Update comment about local
26973         register allocator.
26974
26975 2017-06-15  Jozef Lawrynowicz   <jozef.l@somniumtech.com>
26976
26977         PR target/78818
26978         * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
26979         for a variable to have a section before checking if the section has a
26980         name.
26981         Set section to.persistent if persistent attribute is set.
26982         Warn if .persistent attribute is used on an automatic variable.
26983
26984 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
26985
26986         PR rtl-optimization/80474
26987         * reorg.c (update_block): Do not ignore instructions in a delay slot.
26988
26989 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
26990
26991         * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
26992         of REGNO.
26993
26994 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
26995
26996         * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
26997         (casesi): Emit bounds checking as RTL.
26998         (casesi_internal_mips16_<mode>): Remove bounds checking.
26999
27000 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
27001
27002         * config/xtensa/xtensa.c (xtensa_option_override): Append
27003         MASK_CONST16 to target_flags in the absence of TARGET_L32R.
27004         (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
27005          xtensa_doloop_hooks): Define unconditionally.
27006         (xtensa_reorg_loops): Only call reorg_loops in the presence of
27007         TARGET_LOOPS.
27008         * config/xtensa/xtensa.h (TARGET_L32R): New definition.
27009         (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
27010         for it in xtensa_option_override.
27011         (HARD_FRAME_POINTER_IS_FRAME_POINTER,
27012          HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
27013
27014 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
27015
27016         * doc/cppopts.texi: Document '-' special value to -MF.
27017
27018 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
27019
27020         * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
27021         (cortex_a53_fconst): Likewise.
27022         (cortex_a53_fpmul): Likewise.
27023         (cortex_a53_f_load_64): Likewise.
27024         (cortex_a53_f_load_many): Likewise.
27025         (cortex_a53_advsimd_alu): Likewise.
27026         (cortex_a53_advsimd_alu_q): Likewise.
27027         (cortex_a53_advsimd_mul): Likewise.
27028         (cortex_a53_advsimd_mul_q): Likewise.
27029         (fpmac bypass): Add new bypass for fpmac-fpmac case.
27030         Add missing fmul, r2f_cvt and fconst cases.
27031
27032 2017-06-14  Richard Biener  <rguenther@suse.de>
27033
27034         PR middle-end/81088
27035         * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
27036         literal constants.
27037         (fold_binary_loc): When associating do not treat pre-existing
27038         TREE_OVERFLOW on literal constants as a reason to allow
27039         TREE_OVERFLOW on associated literal constants.
27040
27041 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27042
27043         * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
27044         (MASK_FEATURES): New macro.
27045         * config/sparc/sparc.c (sparc_option_override): Remove the special
27046         handling of -mfpu and generalize it to all MASK_FEATURES switches.
27047
27048 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27049
27050         * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
27051         a division of 0 if non-call exceptions are enabled.
27052
27053 2017-06-14  Andrew Pinski  <apinski@cavium.com>
27054             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
27055
27056         PR target/71663
27057         * config/aarch64/aarch64.c (aarch64_expand_vector_init):
27058         Improve vector initialization code gen for only variable case.
27059
27060 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27061
27062         * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
27063
27064 2017-06-14  Richard Biener  <rguenther@suse.de>
27065
27066         PR tree-optimization/81083
27067         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
27068         as values.
27069
27070 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27071
27072         * config/rs6000/rs6000.c: Update all comments that mentioned SPE.
27073         (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
27074         * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
27075         * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
27076         * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
27077         * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
27078
27079 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27080
27081         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
27082         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
27083
27084 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27085
27086         * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
27087
27088 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27089
27090         * config/rs6000/t-rtems: Don't handle SPE.
27091
27092 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27093
27094         * config/rs6000/t-linux: Don't handle SPE.
27095
27096 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27097
27098         * config/rs6000/eabispe.h: Delete file.
27099
27100 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27101
27102         * config/rs6000/t-spe: Delete file.
27103
27104 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27105
27106         * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
27107         (rs6000_legitimate_offset_address_p): Return false for anything in
27108         V2SImode or V2SFmode.
27109
27110 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27111
27112         * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
27113         except V2SF and V2SI.  Rearrange the vector modes, and add comments.
27114         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
27115         and V4HImode.
27116         (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
27117         (rs6000_legitimate_offset_address_p): Ditto.
27118         (rs6000_emit_move): Ditto.
27119         (rs6000_init_builtins): Remove V4HI_type_node.
27120
27121 2017-06-13  Martin Liska  <mliska@suse.cz>
27122
27123         PR sanitize/78204
27124         * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
27125         (gate_asan): Likewise.
27126         * asan.h (asan_no_sanitize_address_p): Remove the function.
27127         (sanitize_flags_p): New function.
27128         * builtins.def: Fix coding style.
27129         * common.opt: Use renamed enum value.
27130         * convert.c (convert_to_integer_1): Use sanitize_flags_p.
27131         * doc/extend.texi: Document no_sanitize attribute.
27132         * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
27133         to SANITIZE_UNDEFINED_NONDEFAULT.
27134         * gcc.c (sanitize_spec_function): Use the renamed enum value.
27135         * gimple-fold.c (optimize_atomic_compare_exchange_p):
27136         Use sanitize_flags_p.
27137         * gimplify.c (gimplify_function_tree): Likewise.
27138         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
27139         * opts.c (parse_no_sanitize_attribute): New function.
27140         (common_handle_option): Use renamed enum value.
27141         * opts.h (parse_no_sanitize_attribute): Declare.
27142         * tree.c (sanitize_flags_p): New function.
27143         * tree.h: Declared here.
27144         * tsan.c: Use sanitize_flags_p.
27145         * ubsan.c (ubsan_expand_null_ifn): Likewise.
27146         (instrument_mem_ref): Likewise.
27147         (instrument_bool_enum_load): Likewise.
27148         (do_ubsan_in_current_function): Remove the function.
27149         (pass_ubsan::execute): Use sanitize_flags_p.
27150         * ubsan.h: Remove do_ubsan_in_current_function
27151         * tree-cfg.c (print_no_sanitize_attr_value): New function.
27152         (dump_function_to_file): Use it here.
27153
27154 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27155
27156         PR tree-optimization/80803
27157         PR tree-optimization/81063
27158         * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
27159         (propagate_subaccesses_across_link): Enqueue subtree whenever
27160         necessary instead of relying on the caller.
27161
27162 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27163
27164         * tree-sra.c (add_access_to_work_queue): Only enqueue accesses
27165         that have a first_link.
27166         (sort_and_splice_var_accesses): Do not check first_link before
27167         enquing.
27168         (subtree_mark_written_and_enqueue): Likewise.
27169         (propagate_all_subaccesses): Likewise and do not stop at first
27170         parent with a first_link.
27171
27172 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27173
27174         * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
27175         instead of f.
27176
27177 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27178
27179         * match.pd: New pattern.
27180
27181 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27182
27183         * tree-vrp.c (is_masked_range_test): New function.
27184         (register_edge_assert_for): Determine ranges for
27185         some bit tests.
27186
27187 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27188
27189         PR tree-optimization/67328
27190         * fold-const.c (maskable_range_p): New function.
27191         (build_range_check): Generate bittests if possible.
27192
27193 2017-06-13  Martin Liska  <mliska@suse.cz>
27194
27195         * gimple-pretty-print.c (dump_probability): Add new argument.
27196         (dump_edge_probability): Dump both probability and count.
27197         (dump_gimple_label): Likewise.
27198         (dump_gimple_bb_header): Likewise.
27199
27200 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
27201
27202         PR target/81072
27203         * config/avr/avr-devices.c: Fix indentation.
27204         * config/avr/gen-avr-mmcu-specs.c: Dito.
27205
27206 2017-06-13  Richard Biener  <rguenther@suse.de>
27207
27208         * tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
27209         instead get vector type from stmt_info.
27210         (vectorizable_reduction): Adjust.  Remove dead code.
27211
27212 2017-06-13  Richard Biener  <rguenther@suse.de>
27213
27214         PR middle-end/81065
27215         * fold-const.c (extract_muldiv_1): Remove bogus distribution
27216         case of C * (x * C2 + C3).
27217         (fold_addr_of_array_ref_difference): Properly fold index difference.
27218
27219 2017-06-12  David S. Miller  <davem@davemloft.net>
27220
27221         PR target/80968
27222         * config/sparc/sparc.md (return expander): Emit frame blockage if
27223         function uses alloca.
27224
27225 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
27226
27227         * combine.c (make_field_assignment): Check len rather than the mode
27228         precision when calling force_to_mode.
27229
27230 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
27231
27232         Support multilibs and devices that see flash in RAM address range.
27233
27234         PR target/81072
27235         * config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
27236         (avr_mcu_t) <flash_pm_offset>: New field.
27237         (avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
27238         * config/avr/avr.h (AVR_SHORT_CALLS): New define.
27239         (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
27240         (AVR_TINY_PM_OFFSET): Remove macro.
27241         * config/avr/avr.opt (-mshort-calls): New option.
27242         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
27243         [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
27244         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
27245         <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
27246         <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
27247         instead of avr_arch->have_jmp_call.
27248         <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
27249         [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
27250         avr_arch->flash_pm_offset to define.
27251         * config/avr/avr-devices.c (avr_arch_types): Add initializers for
27252         new field flash_pm_offset.  Add entry for avrxmega3.
27253         (avr_texinfo): Add entry for avrxmega3.
27254         * config/avr/avr-mcus.def: Add entries for: avrxmega3,
27255         attiny212, attiny214,
27256         attiny412, attiny414, attiny416, attiny417,
27257         attiny814, attiny816, attiny817,
27258         attiny1614, attiny1616, attiny1617,
27259         attiny3214, attiny3216, attiny3217.
27260         * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
27261         avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
27262         (avr_print_operand_address) [AVR_TINY]: Same.
27263         (avr_asm_init_sections) <readonly_data_section>: Only patch
27264         callback if avr_arch->flash_pm_offset = 0.
27265         (avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
27266         for rodata if avr_arch->flash_pm_offset != 0.
27267         (avr_encode_section_info) [AVR_TINY]: Adjust comment.
27268         * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
27269         (opts) [AVR_ISA_RCALL]: Append opt_rcall.
27270         (m_options): Append opt_rcall.
27271         (m_dirnames): Append dir_rcall.
27272         * config/avr/t-multilib: Regenerate.
27273
27274         * configure.ac [target=avr]: Check whether avrxmega3 default
27275         linker description file works as needed.
27276         * configure: Regenerate.
27277         * doc/avr-mmcu.texi: Regenerate.
27278         * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
27279         <__AVR_ARCH__>: Document avrxmega3 and 103.
27280         <__AVR_HAVE_JMP_CALL__>: Adjust documentation.
27281         <__AVR_SHORT_CALLS__>: Document it.
27282         <__AVR_PM_BASE_ADDRESS__>: Document it.
27283         * doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
27284         (AVR Variable Attributes) <progmem>: Document this is
27285         not needed for avrxmega3.
27286         (AVR Named Address Spaces) <__flash>: Dito.
27287
27288 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
27289
27290         * cgraph.c (cgraph_node::dump): Complain about profile insanities.
27291
27292 2017-06-12  Doug Rupp  <rupp@adacore.com>
27293
27294         * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
27295         Append vxworks-stdint.h to the tm_file list.
27296         * config/vxworks-stdint.h: New file.
27297
27298 2017-06-12  Martin Liska  <mliska@suse.cz>
27299
27300         PR tree-optimization/81041
27301         * tree-profile.c (gimple_gen_ic_func_profiler):
27302         Create an extra BB in profile-generate
27303         (gimple_gen_time_profiler): Likewise.
27304
27305 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
27306
27307         PR tree-optimization/81003
27308         * tree-ssa-reassoc.c (force_into_ssa_name): New function.
27309         (update_range_test): Use it instead of force_gimple_operand_gsi.
27310
27311 2017-06-12  Richard Biener  <rguenther@suse.de>
27312
27313         PR tree-optimization/81053
27314         * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
27315         with backedge value not defined in loop.  Simplify def stmt
27316         compute.
27317
27318 2017-06-11  Tom de Vries  <tom@codesourcery.com>
27319
27320         PR target/79939
27321         * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
27322         Return true.
27323         (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
27324         nvptx_cannot_force_const_mem.
27325
27326 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27327
27328         * opts.c (finish_options): Move test for flag_split_stack after
27329         it has been initialized.
27330
27331 2017-06-11  Jason Merrill  <jason@redhat.com>
27332
27333         * tree.h (id_equal): New.
27334         * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
27335         omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
27336         instead of strcmp of IDENTIFIER_POINTER.
27337
27338 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27339
27340         * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
27341         (mark_all_inlined_calls_cdtor): Fix formating.
27342         (inline_transform): Rescale profile before inlining.
27343
27344 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27345
27346         * cgraph.h (cgraph_edge::clone): Update prototype.
27347         * cgraphclones.c (cgraph_edge::clone): Update profile scaling.
27348         (cgraph_node::create_clone): Update.
27349         (cgraph_node::create_version_clone): Update.
27350         * tree-inline.c (copy_bb): Update.
27351         (expand_call_inline): Update.
27352
27353 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27354
27355         * config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
27356         factored out from ...
27357         (rs6000_emit_prologue): ... here.
27358
27359 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27360
27361         * config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
27362         factored out from ...
27363         (rs6000_emit_prologue): ... here.
27364
27365 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27366
27367         * predict.c (drop_profile): Also drop individual bb/edge and cgraph
27368         edge counts.
27369         (handle_missing_profiles): Fix computation of tp_first_run.
27370         (counts_to_freqs): Do not touch freqs when count is 0.
27371
27372 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27373
27374         * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
27375         profile.
27376
27377 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27378
27379         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
27380         attributes): Document signal effective target.
27381
27382 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27383
27384         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
27385         Document effective target stack_size.
27386
27387 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
27388
27389         * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
27390         to the edit_context if they can be auto-applied.
27391
27392 2017-06-9  Ian Lance Taylor  <iant@golang.org>
27393
27394         * opts.c (finish_options): If -fsplit-stack, disable implicit
27395         -forder-blocks-and-partition.
27396         * doc/invoke.texi (Optimize Options): Document that when using
27397         -fsplit-stack -forder-blocks-and-partition is not implicitly
27398         enabled.
27399
27400 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27401
27402         * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
27403         ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
27404         ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
27405         * builtins.def (abort, trap, unreachable): Declare cold.
27406         * calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
27407         * tree-core.h (ECF_COLD): New.
27408         * tree.c (set_call_expr_flags): Handle ECF_COLD.
27409         (build_common_builtin_nodes): Mark unreachable and abort as cold.
27410
27411 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27412
27413         * predict.c (unlikely_executed_stmt_p): Cleanup.
27414
27415 2017-06-09  Richard Biener  <rguenther@suse.de>
27416
27417         * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
27418         model if the ref is always written to.
27419
27420 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27421
27422         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
27423
27424 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27425
27426         * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
27427         than udiv.
27428
27429 2017-06-09  Tom de Vries  <tom@codesourcery.com>
27430
27431         PR target/80855
27432         * config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
27433         "target cannot support label values" when encountering LABEL_REF.
27434
27435 2017-06-09  Martin Liska  <mliska@suse.cz>
27436
27437         * tree-profile.c (gimple_gen_ic_profiler): Update comment.
27438         (gimple_gen_ic_func_profiler): Emit direct comparison
27439         of __gcov_indirect_call_callee with NULL.
27440         (gimple_gen_time_profiler): Change probability from
27441         PROB_VERY_UNLIKELY to PROB_UNLIKELY.
27442
27443 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27444
27445         * profile.c (edge_gcov_counts): Turn to pointer.
27446         (compute_branch_probabilities, compute_branch_probabilities): Update.
27447         (branch_prob): Do not clear edge_gcov_count.
27448         * profile.h (edge_gcov_counts): Turn to pointer.
27449         (edge_gcov_count): Update.
27450
27451 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27452
27453         * gimple.h (gimple_check_failed): Mark cold.
27454
27455 2017-06-09  Richard Biener  <rguenther@suse.de>
27456
27457         PR tree-optimization/66623
27458         * tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
27459         refactor check_reduction into two parts, properly computing
27460         whether we have to check reduction validity for outer loop
27461         vectorization.
27462
27463 2017-06-09  Richard Biener  <rguenther@suse.de>
27464
27465         PR tree-optimization/79483
27466         * graphite-scop-detection.c (order): New global.
27467         (get_order): Compute bb to order mapping that satisfies code
27468         generation constraints.
27469         (cmp_pbbs): New helper.
27470         (build_scops): Start domwalk at entry block, sort generated
27471         pbbs.
27472
27473 2017-06-09  Richard Biener  <rguenther@suse.de>
27474
27475         PR middle-end/81007
27476         * ipa-polymorphic-call.c
27477         (ipa_polymorphic_call_context::restrict_to_inner_class):
27478         Skip FIELD_DECLs with error_mark_node type.
27479         * passes.def (all_lowering_passes): Run pass_build_cgraph_edges
27480         last again.
27481
27482 2017-06-09  Martin Liska  <mliska@suse.cz>
27483
27484         * predict.c (struct branch_predictor): New struct.
27485         (test_prediction_value_range): New test.
27486         (predict_c_tests): New function.
27487         * selftest-run-tests.c (selftest::run_tests): Run the function.
27488         * selftest.h: Declare new tests.
27489
27490 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
27491
27492         PR target/80966
27493         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
27494         gen_add3_insn did not fail.
27495         * config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
27496         r0, construct that number in a temporary reg and add that reg to r0.
27497         If asked to put the result in r0 as well, fail.
27498
27499 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
27500
27501         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
27502         for early expansion of vec_eqv.
27503
27504 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
27505
27506         PR middle-end/81005
27507         * ubsan.c (instrument_null): Avoid pointless code temporary.
27508         (pass_ubsan::execute): Instrument aggregate arguments of calls.
27509
27510 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
27511
27512         PR target/81015
27513         Revert:
27514         2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
27515
27516         PR target/59874
27517         * config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
27518         (*clzhi2): Ditto.
27519
27520 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27521
27522         * predict.c (unlikely_executed_edge_p): Move ahead.
27523         (probably_never_executed_edge_p): Use it.
27524
27525 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
27526
27527         PR middle-end/79988
27528         * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
27529         gimple_call_builtin_p call.
27530
27531 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27532
27533         * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
27534         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
27535         rtl_check_failed_type2, rtl_check_failed_code1,
27536         rtl_check_failed_code2, rtl_check_failed_code_mode,
27537         rtl_check_failed_block_symbol, cwi_check_failed_bounds,
27538         rtvec_check_failed_bounds, rtl_check_failed_flag,
27539         _fatal_insn_not_found, _fatal_insn): Likewise.
27540         * tree.h (tree_contains_struct_check_failed,
27541         tree_check_failed, tree_not_check_failed,
27542         tree_class_check_failed, tree_range_check_failed,
27543         tree_not_class_check_failed, tree_int_cst_elt_check_failed,
27544         tree_vec_elt_check_failed, phi_node_elt_check_failed,
27545         tree_operand_check_failed, omp_clause_check_failed,
27546         omp_clause_operand_check_failed, omp_clause_range_check_failed):
27547         Likewise.
27548
27549 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27550
27551         * cgraph.c (cgraph_edge::maybe_hot_p): Do not check
27552         flag_branch_probabilities.
27553         * ipa-inline.c (edge_badness): Likewise.
27554         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
27555         * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
27556         * predict.c (maybe_hot_frequency_p): Likewise.
27557         (probably_never_executed): Likewise.
27558         * sched-ebb.c (schedule_ebbs): Likewise.
27559         * sched-rgn.c (find_single_block_region): Likewise.
27560         * tracer.c (tail_duplicate): Likewise.
27561
27562 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27563
27564         * opts.c (finish_options): x_flag_reorder_blocks_and_partition no
27565         longer requires x_flag_profile_use.
27566
27567 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27568
27569         * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
27570         instead of flag_reorder_blocks_and_partition.
27571         * dbxout.c (dbxout_function_end): Likewise.
27572         * dwarf2out.c (gen_subprogram_die): Likewise.
27573         * haifa-sched.c (sched_create_recovery_edges): Likewise.
27574         * hw-doloop.c (reorg_loops): Likewise.
27575         * varasm.c (assemble_start_function,
27576         assemble_end_function): Likewise.
27577         (decide_function_section): Do not check for
27578         flag_reorder_blocks_and_partition.
27579
27580 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
27581
27582         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
27583         New function.
27584         (chkp_get_hard_register_fake_addr_expr): Ditto.
27585         (chkp_build_addr_expr): Add check for hard reg case.
27586         (chkp_parse_array_and_component_ref): Ditto.
27587         (chkp_find_bounds_1): Ditto.
27588         (chkp_process_stmt): Don't generate bounds store for
27589         hard reg case.
27590
27591 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27592
27593         * predict.c (maybe_hot_bb_p): Do not check profile status.
27594         (maybe_hot_edge_p): Likewise.
27595         (probably_never_executed): Check for zero counts even if profile
27596         is not read.
27597         (unlikely_executed_edge_p): New function.
27598         (unlikely_executed_stmt_p): New function.
27599         (unlikely_executed_bb_p): New function.
27600         (set_even_probabilities): Use unlikely predicates.
27601         (combine_predictions_for_bb): Likewise.
27602         (predict_paths_for_bb): Likewise.
27603         (predict_paths_leading_to_edge): Likewise.
27604         (determine_unlikely_bbs): New function.
27605         (estimate_bb_frequencies): Use it.
27606         (compute_function_frequency): Use zero counts even if profile is
27607         not read.
27608         * profile-count.h: Fix typo.
27609
27610 2017-08-08  Julia Koval  <julia.koval@intel.com>
27611
27612         * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
27613         _mm512_mask_cvtsepi16_storeu_epi8,
27614         _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
27615         * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
27616         _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
27617         _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
27618         _mm_mask_cvtepi16_storeu_epi8): New intrinsics.
27619         * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
27620         (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
27621         VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
27622         * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
27623         __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
27624         __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
27625         __builtin_ia32_pmovuswb256mem_mask,
27626         __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
27627         __builtin_ia32_pmovwb512mem_mask): New builtins.
27628
27629 2017-08-08  Julia Koval  <julia.koval@intel.com>
27630
27631         PR target/73350,80862
27632         * config/i386/subst.md (round): Fix round pattern.
27633         * config/i386/i386.c (ix86_erase_embedded_rounding):
27634         Fix erasing rounding for the fixed pattern.
27635
27636 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
27637
27638         * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
27639
27640 2017-06-08  Martin Liska  <mliska@suse.cz>
27641
27642         PR gcov-profile/80911
27643         * gcov.c (block_info::block_info): New constructor.
27644
27645 2017-06-07  Carl Love  <cel@us.ibm.com>
27646
27647         * config/rs6000/rs6000-c: The return type of the following
27648         built-in functions was implemented as int not long long.  Fix sign
27649         of return value for the unsigned version of vec_mulo and vec_mule.
27650         vector unsigned long long vec_bperm (vector unsigned long long,
27651                                              vector unsigned char)
27652         vector signed long long vec_mule (vector signed int,
27653                                           vector signed int)
27654         vector unsigned long long vec_mule (vector unsigned int,
27655                                             vector unsigned int)
27656         vector signed long long vec_mulo (vector signed int,
27657                                           vector signed int)
27658         vector unsigned long long vec_mulo (vector unsigned int,
27659                                             vector unsigned int)
27660         * doc/extend.texi: Fix the documentation for the built-in
27661         functions.
27662
27663 2017-06-07  Carl Love  <cel@us.ibm.com>
27664
27665         PR target/80982
27666         * config/rs6000/altivec.md (double<mode>2): Fix the implementation of
27667         for BE.
27668
27669 2017-06-07  Carl Love  <cel@us.ibm.com>
27670
27671         * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
27672         support, Generate       doublehv for signed int/float for BE case only.
27673
27674 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
27675
27676         * doc/invoke.texi (mcx16): Rewrite.
27677
27678 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27679
27680         * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
27681         * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
27682         *mov<mode>_softfloat, and an anonymous splitter): Use
27683         nonimmediate_operand instead of rs6000_nonimmediate_operand.
27684
27685 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27686
27687         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
27688         SPEFSCR registers.
27689         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27690         (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
27691         (rs6000_debug_reg_global): Adjust.
27692         (rs6000_init_hard_regno_mode_ok): Adjust.
27693         (rs6000_dbx_register_number): Adjust.
27694         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
27695         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27696         Remove SPE_ACC and SPEFSCR.
27697         (REG_ALLOC_ORDER): Ditto.
27698         (FRAME_POINTER_REGNUM): Change to 111.
27699         (enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
27700         (REG_CLASS_NAMES): Ditto.
27701         (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
27702         (REGISTER_NAMES): Ditto.
27703         (ADDITIONAL_REG_NAMES): Ditto.
27704         (rs6000_reg_names): Ditto.
27705         * config/rs6000/rs6000.md: Renumber some register number
27706         define_constants.
27707
27708 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27709
27710         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
27711         registers.
27712         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27713         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
27714         to 117.
27715         (DWARF_REG_TO_UNWIND_COLUMN): Do not define.
27716         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27717         Delete the SPE high registers.
27718         (REG_ALLOC_ORDER): Ditto.
27719         (enum reg_class): Remove SPE_HIGH_REGS.
27720         (REG_CLASS_NAMES): Ditto.
27721         (REG_CLASS_CONTENTS): Delete the SPE high registers.
27722         (REGISTER_NAMES): Ditto.
27723         (rs6000_reg_names): Ditto.
27724         * doc/tm.texi.in: Remove SPE as example.
27725         * doc/tm.texi: Regenerate.
27726
27727 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27728
27729         * config/rs6000/8540.md (ppc8540_brinc): Delete.
27730         * config/rs6000/e500mc.md (e500mc_brinc): Delete.
27731         * config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
27732         * config/rs6000/rs6000.md (type): Remove "brinc".
27733
27734 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27735
27736         * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
27737         (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
27738         * config/rs6000/linuxspe.h: Delete file.
27739         * config/rs6000/rs6000.md: Don't include spe.md.
27740         * config/rs6000/spe.h: Delete file.
27741         * config/rs6000/spe.md: Delete file.
27742         * config/rs6000/t-rs6000: Remove spe.md.
27743
27744 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27745
27746         * config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
27747         (reg_or_none500mem_operand): Delete.
27748         * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
27749         instead of reg_or_none500mem_operand.
27750
27751 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27752
27753         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
27754         handling of SPE flags.
27755         * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
27756
27757 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27758
27759         * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
27760         SPE ABI handling.
27761         * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
27762         (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
27763         paired_divv2sf3): Similar.
27764         * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
27765         SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
27766         * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
27767         RS6000_BUILTIN_S.
27768         Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
27769         Rename the paired_* instruction patterns.
27770         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
27771         define __SPE__.
27772         * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
27773         * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
27774         (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
27775         spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
27776         TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
27777         PAIRED_VECTOR_MODE.
27778         (struct machine_function): Delete field spe_insn_chain_scanned_p.
27779         (spe_func_has_64bit_regs_p): Delete.
27780         (spe_expand_predicate_builtin): Delete.
27781         (spe_expand_evsel_builtin): Delete.
27782         (TARGET_DWARF_REGISTER_SPAN): Do not define.
27783         (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
27784         (invalid_e500_subreg): Delete.
27785         (rs6000_legitimize_address): Always force_reg op2 as well, for
27786         paired single memory accesses.
27787         (rs6000_member_type_forces_blk): Delete.
27788         (rs6000_spe_function_arg): Delete.
27789         (rs6000_expand_unop_builtin): Delete SPE handling.
27790         (rs6000_expand_binop_builtin): Ditto.
27791         (spe_expand_stv_builtin): Delete.
27792         (bdesc_2arg_spe): Delete.
27793         (spe_expand_builtin): Delete.
27794         (spe_expand_predicate_builtin): Delete.
27795         (spe_expand_evsel_builtin): Delete.
27796         (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
27797         (spe_init_builtins): Delete.
27798         (spe_func_has_64bit_regs_p): Delete.
27799         (savres_routine_name): Delete "info" parameter.  Adjust callers.
27800         (rs6000_emit_stack_reset): Ditto.
27801         (rs6000_dwarf_register_span): Delete.
27802         * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
27803         UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
27804         SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
27805         Delete.
27806         * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
27807         Delete.
27808         * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
27809         * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
27810         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
27811         mulv2sf3, divv2sf3): Delete expanders.
27812
27813 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27814
27815         config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
27816
27817 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27818
27819         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
27820         * config/rs6000/rs6000.c: Ditto.
27821
27822 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27823
27824         * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
27825         * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
27826         comparison_operator.
27827
27828 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27829
27830         * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
27831         * config/rs6000/rs6000.opt: Ditto.
27832         * config/rs6000/t-rtems: Ditto.
27833
27834 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27835
27836         * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
27837         TARGET_E500_SINGLE by 0, simplify.
27838         * config/rs6000/rs6000.c: Ditto.
27839         (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
27840         (spe_build_register_parallel): Delete.
27841         * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
27842         TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
27843         * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
27844         TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
27845         (E500_CONVERT): Delete.
27846         * config/rs6000/spe.md: Remove many patterns and all define_constants.
27847
27848 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27849
27850         * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
27851         * config/rs6000/dfp.md: Ditto.
27852         (negdd2, *negdd2_fpr): Merge.
27853         (absdd2, *absdd2_fpr): Merge.
27854         (negtd2, *negtd2_fpr): Merge.
27855         (abstd2, *abstd2_fpr): Merge.
27856         * config/rs6000/e500.h: Delete file.
27857         * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
27858         TARGET_FPRS by 1 and simplify.
27859         * config/rs6000/rs6000-c.c: Ditto.
27860         * config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
27861         TARGET_DF_SPE by 0.
27862         * config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
27863         TARGET_DF_SPE.
27864         * config/rs6000/rs6000.md: Ditto.
27865         (floatdidf2, *floatdidf2_fpr): Merge.
27866         (move_from_CR_gt_bit): Delete.
27867         * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
27868         (E500_CR_IOR_COMPARE): Delete.
27869         (All patterns that require !TARGET_FPRS): Delete.
27870         * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
27871
27872 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27873
27874         * passes.def (pass_iv_canon): Move before pass_loop_distribution.
27875
27876 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27877
27878         * graphds.c (add_edge): Intitialize edge's attached data.
27879         (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
27880         pointer parameter.  Call pointed function on each edge during
27881         graph traversing.  Skip traversing the edge when the function
27882         returns true.
27883         (graphds_dfs, graphds_scc): Ditto.
27884         (for_each_edge): New parameter.  Pass the new parameter to callback
27885         function.
27886         * graphds.h (skip_edge_callback): New function pointer type.
27887         (graphds_dfs, graphds_scc): New function pointer parameter.
27888         (graphds_edge_callback, for_each_edge): New parameter.
27889
27890 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27891
27892         * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
27893         out code checking if runtime alias check is possible to below ...
27894         Call the new function.
27895         * tree-data-ref.c (runtime_alias_check_p): ... to new function.
27896         * tree-data-ref.h (runtime_alias_check_p): New decalaration.
27897
27898 2017-06-07  Marek Polacek  <polacek@redhat.com>
27899
27900         PR sanitizer/80932
27901         * fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
27902         TYPE_OVERFLOW_WRAPS check.
27903
27904 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27905
27906         * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
27907         if versioning is required.
27908         * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
27909         peeling with the check for versioning.
27910
27911 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27912
27913         * tree-vectorizer.h (vect_build_loop_niters): New parameter.
27914         * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
27915         Set true to new parameter if new ssa variable is defined.
27916         (vect_gen_vector_loop_niters): Refactor.  Set range information
27917         for the new vector loop bound variable.
27918         (vect_do_peeling): Ditto.
27919
27920 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27921
27922         * tree-affine.c (ssa.h): Include header file.
27923         (tree_to_aff_combination): Handle (T1)(X - CST) when inner type
27924         has wrapping overflow behavior.
27925
27926 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27927
27928         * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
27929
27930 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27931
27932         (aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
27933         (tree_to_aff_combination): ... here.
27934
27935 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27936
27937         * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
27938         reg_pressure model function.
27939         (ivopts_global_cost_for_size): Delete.
27940         (determine_set_costs, iv_ca_recount_cost): Call new model function
27941         ivopts_estimate_reg_pressure.
27942
27943 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27944
27945         * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
27946         expensive than udiv.  Remove floating point cases from mod.
27947
27948 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27949
27950         * config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
27951         Increase idiv cost.
27952
27953 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27954
27955         * config/aarch64/aarch64.md
27956         (copysignsf3): Fix mask generation.
27957
27958 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
27959
27960         * dumpfile.h (enum tree_dump_index): Rename TDI_generic to
27961         TDI_gimple.
27962         (class dump_manager): Add register_dumps method.
27963         * dumpfile.c: Include langhooks.h.
27964         (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
27965         (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
27966         (FIRST_ME_AUTO_NUMBERED_DUMP): Define.
27967         (dump_manager::dump_register): Start with 512 entries instead of 32.
27968         (dump_manager::register_dumps): New method.
27969         * toplev.c (general_init): Instead of invoking register_dumps
27970         langhook, invoke register_dumps method on the dump manager.
27971         * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
27972         TDI_generic.
27973
27974 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
27975
27976         * doc/md.texi: Clarify the restrictions on a define_insn condition.
27977         Say that # requires an associated define_split to exist, and that
27978         the define_split must be suitable for use after register allocation.
27979
27980 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27981
27982         * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
27983         (compute_outgoing_frequencies): Also initialize zero counts.
27984         (find_many_sub_basic_blocks): Do not produce uninitialized profile
27985         around loops; preserve more of profile when nothing changes.
27986
27987 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
27988
27989         * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
27990         here.
27991         * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
27992         * config/arm/arm-cpu-cdata.h: Regenerate.
27993         * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
27994         * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
27995         * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
27996         * config/arm/arm.c (arm_qdf24xx_tune): Delete.
27997         * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
27998         support.
27999         * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
28000         support.
28001         * config/arm/t-rmprofile: Likewise.
28002         * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
28003
28004 2017-06-06  David S. Miller  <davem@davemloft.net>
28005
28006         PR target/80968
28007         * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
28008         blockage if function uses alloca.
28009
28010 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28011
28012         * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
28013         New "uid" fields to hold pretty-print IDs of group and ref.
28014         Memory references are now identified as <group_id>:<ref_id>
28015         instead of using [random] addresses.
28016         (dump_mem_details): Simplify, no functional change.
28017         (dump_mem_ref): Simplify and make output more concise.
28018         Replace couple of fprintf's throughout code with calls to dump_mem_ref.
28019         (find_or_create_group): Initialize group uid.
28020         (record_ref): Initialize ref uid.  Improve debug output.
28021         (prune_group_by_reuse, should_issue_prefetch_p,)
28022         (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
28023         (mark_nontemporal_store, determine_loop_nest_reuse):
28024         Improve debug output.
28025
28026 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28027
28028         * dbgcnt.def (prefetch): New debug counter.
28029         * tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
28030         (schedule_prefetches): Stop issueing prefetches if debug counter
28031         tripped.
28032
28033 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28034
28035         * doc/sourcebuild.texi (Testsuites, C Language Testsuites,
28036         gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
28037
28038 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28039
28040         * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
28041         Use aarch64_reg_or_zero predicate for operand 4.
28042         (aarch64_compare_and_swap<mode> define_insn_and_split):
28043         Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
28044         (aarch64_store_exclusive<mode>): Likewise for operand 2.
28045
28046 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28047
28048         * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
28049         (arm_compute_save_core_reg_mask): This.
28050         (thumb1_compute_save_reg_mask): Rename into ...
28051         (thumb1_compute_save_core_reg_mask): This.
28052         (arm_compute_save_reg0_reg12_mask): Adapt comment.
28053         (arm_compute_frame_layout): Likewise.
28054
28055 2017-06-06  Richard Biener  <rguenther@suse.de>
28056
28057         PR tree-optimization/80974
28058         * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
28059         keep or clear leaders SSA info.
28060
28061 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28062
28063         * config/nvptx/nvptx.c (split_mode_p): New function.
28064         (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
28065
28066 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28067
28068         * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
28069
28070 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28071
28072         PR bootstrap/80978
28073         * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
28074         profile.
28075
28076 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28077
28078         * shrink-wrap.c (handle_simple_exit): Update profile.
28079         (try_shrink_wrapping): Upate profile.
28080
28081 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28082
28083         * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
28084         (tree_guess_outgoing_edge_probabilities): New.
28085         * predict.h (tree_guess_outgoing_edge_probabilities): Declare.
28086         * tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
28087
28088 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28089
28090         * ipa-split.c (split_function): Initialize return bb profile.
28091
28092 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28093
28094         * profile.c (compute_branch_probabilities): Also initialize
28095         EXIT_BLOCK profile.
28096
28097 2017-06-06  Richard Biener  <rguenther@suse.de>
28098
28099         PR tree-optimization/80928
28100         * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
28101         (vect_analyze_loop_operations): Properly guard analysis for
28102         pure SLP case.
28103         (vect_transform_loop): Likewise.
28104         (vect_analyze_loop_2): Also reset SLP type on PHIs.
28105         (vect_model_induction_cost): Do not cost for pure SLP.
28106         (vectorizable_induction): Pass in SLP node, implement SLP vectorization
28107         of induction in inner loop vectorization.
28108         * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
28109         (vect_get_and_check_slp_defs): Handle vect_induction_def.
28110         (vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
28111         recursion.
28112         (vect_analyze_slp_cost_1): Cost induction.
28113         (vect_detect_hybrid_slp_stmts): Handle PHIs.
28114         (vect_get_slp_vect_defs): Likewise.
28115         * tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
28116         (vect_transform_stmt): Handle SLP reductions.
28117         * tree-vectorizer.h (vectorizable_induction): Adjust.
28118
28119 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28120
28121         * config/rs6000/rs6000.c (make_resolver_func): Update
28122         init_lowered_empty_function call.
28123
28124 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28125
28126         * doc/invoke.texi: Document the -fprofile-abs-path option.
28127         * common.opt (fprofile-abs-path): New option.
28128         * gcov-io.h (gcov_write_filename): Declare.
28129         * gcov-io.c (gcov_write_filename): New function.
28130         * coverage.c (coverage_begin_function): Use gcov_write_filename.
28131         * profile.c (output_location): Likewise.
28132
28133 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28134
28135         * shring-wrap.c: Revert accidental commit.
28136
28137 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
28138
28139         * doc/invoke.texi (-Wduplicated-branches): Add to warning list.
28140
28141 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28142
28143         * cfgexpand.c (expand_gimple_tailcall): Initialize profile of
28144         new edge.
28145         * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
28146         profile in callgraph edge.
28147         * profile-count.h (apply_probability): If THIS is 0, then result is 0
28148         (apply_scale): Likewise.
28149         * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
28150         Also scale profile when inlining function with zero profile.
28151         (initialize_cfun): Update exit block profile even when it is zero.
28152         * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
28153         when profile is read.
28154
28155 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28156
28157         * config/rs6000/rs6000.c (toplevel): Include attribs.h.
28158         (CLONE_*): New constants to define the processors we can generate
28159         code for with the target_clone attribute.
28160         (rs6000_clone_map): New array to identify which clone processors
28161         the current program is running on.
28162         (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
28163         target_clone attribute.
28164         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
28165         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
28166         (TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
28167         (cpu_expand_builtin): Add support for target_clone attribute.
28168         (rs6000_valid_attribute_p): Allow "default" attribute.
28169         (get_decl_name): New debug function to simplify printing the
28170         current function name in debugging statements.
28171         (rs6000_clone_priority): New functions to support the target_clone
28172         attribute, and be able to generate code to switch between ISA 2.05
28173         through ISA 3.0 (power6 through power9).
28174         (rs6000_compare_version_priority): Likewise.
28175         (rs6000_get_function_versions_dispatcher): Likewise.
28176         (make_resolver_func): Likewise.
28177         (add_condition_to_bb): Likewise.
28178         (dispatch_function_versions): Likewise.
28179         (rs6000_generate_version_dispatcher_body): Likewise.
28180         (rs6000_can_inline_p): Call get_decl_name for debugging usage.
28181         (fusion_gpr_load_p): Fix a spacing issue.
28182         * doc/extend.texi (Common Function Attributes): Document that the
28183         PowerPC supports the target_clone attribute.
28184
28185 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28186
28187         * config/arm/arm.h: explain F symbol found in description of ARM
28188         register allocation in its legend.
28189
28190 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28191
28192         * config/mips/frame-header-opt.c: Include profile-count.h.
28193         * config/riscv/riscv.c: Include profile-count.h
28194
28195 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28196
28197         * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
28198         update profile.
28199         (sm_set_flag_if_changed): Add bbs field.
28200         (execute_sm_if_changed_flag_set): Pass BBS.
28201         (execute_sm): Update.
28202
28203 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28204
28205         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
28206         New pattern.
28207
28208 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28209
28210         * config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
28211         (peephole2): New peephole2 to emit the above.
28212         * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
28213
28214 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28215
28216         * config/aarch64/aarch64.c (define_peephole2 above
28217         *sub_<shift>_<mode>): New peephole.
28218
28219 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28220
28221         * config/i386/i386.c (make_resolver_func): Update.
28222         * Makefile.in: Add profile-count.h and profile-count.o
28223         * auto-profile.c (afdo_indirect_call): Update to new API.
28224         (afdo_set_bb_count): Update.
28225         (afdo_propagate_edge): Update.
28226         (afdo_propagate_circuit): Update.
28227         (afdo_calculate_branch_prob): Update.
28228         (afdo_annotate_cfg): Update.
28229         * basic-block.h: Include profile-count.h
28230         (struct edge_def): Turn count to profile_count.
28231         (struct basic_block_def): Likewie.
28232         (REG_BR_PROB_BASE): Move to profile-count.h
28233         (RDIV): Move to profile-count.h
28234         * bb-reorder.c (max_entry_count): Turn to profile_count.
28235         (find_traces): Update.
28236         (rotate_loop):Update.
28237         (connect_traces):Update.
28238         (sanitize_hot_paths):Update.
28239         * bt-load.c (migrate_btr_defs): Update.
28240         * cfg.c (RDIV): Remove.
28241         (init_flow): Use alloc_block.
28242         (alloc_block): Uninitialize count.
28243         (unchecked_make_edge): Uninitialize count.
28244         (check_bb_profile): Update.
28245         (dump_edge_info): Update.
28246         (dump_bb_info): Update.
28247         (update_bb_profile_for_threading): Update.
28248         (scale_bbs_frequencies_int): Update.
28249         (scale_bbs_frequencies_gcov_type): Update.
28250         (scale_bbs_frequencies_profile_count): New.
28251         * cfg.h (update_bb_profile_for_threading): Update.
28252         (scale_bbs_frequencies_profile_count): Declare.
28253         * cfgbuild.c (compute_outgoing_frequencies): Update.
28254         (find_many_sub_basic_blocks): Update.
28255         * cfgcleanup.c (try_forward_edges): Update.
28256         (try_crossjump_to_edge): Update.
28257         * cfgexpand.c (expand_gimple_tailcall): Update.
28258         (construct_exit_block): Update.
28259         * cfghooks.c (verify_flow_info): Update.
28260         (dump_bb_for_graph): Update.
28261         (split_edge): Update.
28262         (make_forwarder_block): Update.
28263         (duplicate_block): Update.
28264         (account_profile_record): Update.
28265         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
28266         (get_estimated_loop_iterations): Update.
28267         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
28268         (single_likely_exit): Update.
28269         * cfgloopmanip.c (scale_loop_profile): Update.
28270         (loopify): Update.
28271         (set_zero_probability): Update.
28272         (lv_adjust_loop_entry_edge): Update.
28273         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
28274         (purge_dead_edges): Update.
28275         (rtl_account_profile_record): Update.
28276         * cgraph.c (cgraph_node::create): Uninitialize count.
28277         (symbol_table::create_edge): Uninitialize count.
28278         (cgraph_update_edges_for_call_stmt_node): Update.
28279         (cgraph_edge::dump_edge_flags): Update.
28280         (cgraph_node::dump): Update.
28281         (cgraph_edge::maybe_hot_p): Update.
28282         * cgraph.h: Include profile-count.h
28283         (create_clone), create_edge, create_indirect_edge): Update.
28284         (cgraph_node): Turn count to profile_count.
28285         (cgraph_edge0: Likewise.
28286         (make_speculative, clone): Update.
28287         (create_edge): Update.
28288         (init_lowered_empty_function): Update.
28289         * cgraphclones.c (cgraph_edge::clone): Update.
28290         (duplicate_thunk_for_node): Update.
28291         (cgraph_node::create_clone): Update.
28292         * cgraphunit.c (cgraph_node::analyze): Update.
28293         (cgraph_node::expand_thunk): Update.
28294         * final.c (dump_basic_block_info): Update.
28295         * gimple-streamer-in.c (input_bb): Update.
28296         * gimple-streamer-out.c (output_bb): Update.
28297         * graphite.c (print_global_statistics): Update.
28298         (print_graphite_scop_statistics): Update.
28299         * hsa-brig.c: Include basic-block.h.
28300         * hsa-dump.c: Include basic-block.h.
28301         * hsa-gen.c (T sum_slice): Update.
28302         (convert_switch_statements):Update.
28303         * hsa-regalloc.c: Include basic-block.h.
28304         * ipa-chkp.c (chkp_produce_thunks): Update.
28305         * ipa-cp.c (struct caller_statistics): Update.
28306         (init_caller_stats): Update.
28307         (gather_caller_stats): Update.
28308         (ipcp_cloning_candidate_p): Update.
28309         (good_cloning_opportunity_p): Update.
28310         (get_info_about_necessary_edges): Update.
28311         (dump_profile_updates): Update.
28312         (update_profiling_info): Update.
28313         (update_specialized_profile): Update.
28314         (perhaps_add_new_callers): Update.
28315         (decide_about_value): Update.
28316         (ipa_cp_c_finalize): Update.
28317         * ipa-devirt.c (struct odr_type_warn_count): Update.
28318         (struct decl_warn_count): Update.
28319         (struct final_warning_record): Update.
28320         (possible_polymorphic_call_targets): Update.
28321         (ipa_devirt): Update.
28322         * ipa-fnsummary.c (redirect_to_unreachable): Update.
28323         * ipa-icf.c (sem_function::merge): Update.
28324         * ipa-inline-analysis.c (do_estimate_edge_time): Update.
28325         * ipa-inline.c (compute_uninlined_call_time): Update.
28326         (compute_inlined_call_time): Update.
28327         (want_inline_small_function_p): Update.
28328         (want_inline_self_recursive_call_p): Update.
28329         (edge_badness): Update.
28330         (lookup_recursive_calls): Update.
28331         (recursive_inlining): Update.
28332         (inline_small_functions): Update.
28333         (dump_overall_stats): Update.
28334         (dump_inline_stats): Update.
28335         * ipa-profile.c (ipa_profile_generate_summary): Update.
28336         (ipa_propagate_frequency): Update.
28337         (ipa_profile): Update.
28338         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28339         * ipa-utils.c (ipa_merge_profiles): Update.
28340         * loop-doloop.c (doloop_modify): Update.
28341         * loop-unroll.c (report_unroll): Update.
28342         (unroll_loop_runtime_iterations): Update.
28343         * lto-cgraph.c (lto_output_edge): Update.
28344         (lto_output_node): Update.
28345         (input_node): Update.
28346         (input_edge): Update.
28347         (merge_profile_summaries): Update.
28348         * lto-streamer-in.c (input_cfg): Update.
28349         * lto-streamer-out.c (output_cfg): Update.
28350         * mcf.c (create_fixup_graph): Update.
28351         (adjust_cfg_counts): Update.
28352         (sum_edge_counts): Update.
28353         * modulo-sched.c (sms_schedule): Update.
28354         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
28355         * predict.c (maybe_hot_count_p): Update.
28356         (probably_never_executed): Update.
28357         (dump_prediction): Update.
28358         (combine_predictions_for_bb): Update.
28359         (propagate_freq): Update.
28360         (handle_missing_profiles): Update.
28361         (counts_to_freqs): Update.
28362         (rebuild_frequencies): Update.
28363         (force_edge_cold): Update.
28364         * predict.h: Include profile-count.h
28365         (maybe_hot_count_p, counts_to_freqs): UPdate.
28366         * print-rtl-function.c: Do not include cfg.h
28367         * print-rtl.c: Include basic-block.h
28368         * profile-count.c: New file.
28369         * profile-count.h: New file.
28370         * profile.c (is_edge_inconsistent): Update.
28371         (correct_negative_edge_counts): Update.
28372         (is_inconsistent): Update.
28373         (set_bb_counts): Update.
28374         (read_profile_edge_counts): Update.
28375         (compute_frequency_overlap): Update.
28376         (compute_branch_probabilities): Update; Initialize and deinitialize
28377         gcov_count tables.
28378         (branch_prob): Update.
28379         * profile.h (bb_gcov_counts, edge_gcov_counts): New.
28380         (edge_gcov_count): New.
28381         (bb_gcov_count): New.
28382         * shrink-wrap.c (try_shrink_wrapping): Update.
28383         * tracer.c (better_p): Update.
28384         * trans-mem.c (expand_transaction): Update.
28385         (ipa_tm_insert_irr_call): Update.
28386         (ipa_tm_insert_gettmclone_call): Update.
28387         * tree-call-cdce.c: Update.
28388         * tree-cfg.c (gimple_duplicate_sese_region): Update.
28389         (gimple_duplicate_sese_tail): Update.
28390         (gimple_account_profile_record): Update.
28391         (execute_fixup_cfg): Update.
28392         * tree-inline.c (copy_bb): Update.
28393         (copy_edges_for_bb): Update.
28394         (initialize_cfun): Update.
28395         (freqs_to_counts): Update.
28396         (copy_cfg_body): Update.
28397         (expand_call_inline): Update.
28398         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
28399         * tree-ssa-loop-ivcanon.c (unloop_loops): Update.
28400         (try_unroll_loop_completely): Update.
28401         (try_peel_loop): Update.
28402         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
28403         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
28404         * tree-ssa-loop-split.c (connect_loops): Update.
28405         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
28406         * tree-ssa-reassoc.c (branch_fixup): Update.
28407         * tree-ssa-tail-merge.c (replace_block_by): Update.
28408         * tree-ssa-threadupdate.c (create_block_for_threading): Update.
28409         (compute_path_counts): Update.
28410         (update_profile): Update.
28411         (recompute_probabilities): Update.
28412         (update_joiner_offpath_counts): Update.
28413         (estimated_freqs_path): Update.
28414         (freqs_to_counts_path): Update.
28415         (clear_counts_path): Update.
28416         (ssa_fix_duplicate_block_edges): Update.
28417         (duplicate_thread_path): Update.
28418         * tree-switch-conversion.c (case_bit_test_cmp): Update.
28419         (struct switch_conv_info): Update.
28420         * tree-tailcall.c (decrease_profile): Update.
28421         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
28422         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
28423         * value-prof.c (check_counter): Update.
28424         (gimple_divmod_fixed_value): Update.
28425         (gimple_mod_pow2): Update.
28426         (gimple_mod_subtract): Update.
28427         (gimple_ic_transform): Update.
28428         (gimple_stringop_fixed_value): Update.
28429         * value-prof.h (gimple_ic): Update.
28430
28431 2017-06-02  Carl Love  <cel@us.ibm.com>
28432
28433         * config/rs6000/rs6000-c: Add support for built-in functions
28434         vector double vec_doublee (vector signed int);
28435         vector double vec_doublee (vector unsigned int);
28436         vector double vec_doublee (vector float);
28437         vector double vec_doubleh (vector signed int);
28438         vector double vec_doubleh (vector unsigned int);
28439         vector double vec_doubleh (vector float);
28440         vector double vec_doublel (vector signed int);
28441         vector double vec_doublel (vector unsigned int);
28442         vector double vec_doublel (vector float);
28443         vector double vec_doubleo (vector signed int);
28444         vector double vec_doubleo (vector unsigned int);
28445         vector double vec_doubleo (vector float);.
28446         * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
28447         DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
28448         UNS_DOUBLEL.
28449         * config/rs6000/altivec.md: Add code generator for doublee<mode>2,
28450         unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
28451         unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
28452         VS_sxwsp.
28453         * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
28454         vec_doublel, vec_doubleh.
28455         * doc/extend.texi: Update the built-in documentation file for the
28456         new built-in functions.
28457
28458 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
28459
28460         PR jit/80954
28461         * ipa-inline-analysis.c (free_growth_caches): Set
28462         edge_removal_hook_holder to NULL after removing it.
28463
28464 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
28465
28466         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
28467         comparision with zero.
28468
28469 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28470         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28471         for early expansion of vec_min and vec_max builtins.
28472         (builtin_function_type): Add min/max unsigned variants to those
28473         identified as having unsigned arguments.
28474
28475 2017-06-02  Olivier Hainque  <hainque@adacore.com>
28476
28477         * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
28478
28479 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28480
28481         * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
28482         Use VALL_F16 iterator rather than VALL.
28483
28484 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28485
28486         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
28487         Emit CBNZ inside loop when doing a strong exchange and comparing
28488         against zero.  Generate the CC flags after the loop.
28489
28490 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
28491
28492         * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
28493         (dl_section_ref): New.
28494         (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
28495         On AIX, append an expression to subtract the size of the
28496         section length to dl_section_ref.
28497
28498 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28499
28500         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28501         for early expansion of vector absolute builtins.
28502
28503 2017-06-02  Richard Biener  <rguenther@suse.de>
28504
28505         * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
28506         what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
28507
28508 2017-06-02  Richard Biener  <rguenther@suse.de>
28509
28510         PR tree-optimization/80948
28511         * tree-tailcall.c (find_tail_calls): Track stmts to move in
28512         stmt order as well.
28513
28514 2017-06-02  Richard Biener  <rguenther@suse.de>
28515
28516         * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
28517         PHIs are ok.
28518         * tree-vect-stmts.c (process_use): Do not mark backedge defs
28519         for inductions as relevant.
28520
28521 2017-06-02  Richard Biener  <rguenther@suse.de>
28522
28523         * tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
28524         (vectorizable_induction): ... this.  Remove dead code.
28525
28526 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
28527
28528         * builtins. (expand_builtin_alloca): Remove second parameter and
28529         infer its value from the first parameter instead.
28530         (expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
28531
28532 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
28533
28534         PR rtl-optimization/80903
28535         * loop-doloop.c (add_test): Unshare sequence.
28536
28537 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28538
28539         * doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
28540
28541 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28542
28543         * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
28544         static.
28545         (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
28546         xlogue_layout::get_instance, logue_layout::xlogue_layout,
28547         sp_valid_at, fp_valid_at, choose_basereg): Formatting.
28548         (xlogue_layout::get_stub_rtx): Make static.
28549         (xlogue_layout::get_stub_name): Avoid const-cast, make static.
28550         (xlogue_layout::compute_stub_managed_regs): Rename to...
28551         (xlogue_layout::count_stub_managed_regs): ...this.
28552         (xlogue_layout::is_stub_managed_reg): New function.
28553         (xlogue_layout::m_stub_names): Rename to...
28554         (xlogue_layout::s_stub_names): ...this, make static.
28555         (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
28556         xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
28557         xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
28558         xlogue_layout::s_stub_names): Instantiate statics.
28559         (stub_managed_regs): Remove.
28560         (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
28561         (disable_call_ms2sysv_xlogues): Rename to...
28562         (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
28563         (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
28564         warning logic.
28565         (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
28566         change after reload_completed.
28567         (ix86_can_use_return_insn_p): Use the ix86_frame data structure
28568         directly.
28569         (ix86_expand_prologue): Likewise.
28570         (ix86_expand_epilogue): Likewise.
28571         (ix86_expand_split_stack_prologue): Likewise.
28572         (ix86_compute_frame_layout): Remove frame parameter ...
28573         (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
28574         (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
28575         only if necessary.
28576         (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
28577         (ix86_frame): Move from here ...
28578         * config/i386/i386.h (ix86_frame): ... to here.
28579         (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
28580         complete ix86_frame data structure instead.  Remove some_ld_name.
28581
28582 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
28583
28584         * dwarf2out.c (dwarf2out_late_global_decl): Add locations for
28585         symbols that hold a DECL_VALUE_EXPR.
28586
28587 2017-06-01  Martin Jambor  <mjambor@suse.cz>
28588
28589         PR tree-optimization/80898
28590         * tree-sra.c (process_subtree_disqualification): Removed.
28591         (disqualify_candidate): Do not acll
28592         process_subtree_disqualification.
28593         (subtree_mark_written_and_enqueue): New function.
28594         (propagate_all_subaccesses): Set grp_write of LHS subtree if the
28595         RHS has been disqualified and re-queue LHS if necessary.  Apart
28596         from that, ignore disqualified RHS.
28597
28598 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
28599
28600         * config/s390/s390.c (s390_emit_epilogue): Disable early return
28601         address fetch for z10 or later.
28602
28603 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28604
28605         * config/arc/arc.md (tst_movb): Add guard when splitting.
28606
28607 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28608
28609         * config/arc/arc.c (arc_can_eliminate): Test against
28610         arc_frame_pointer_needed.
28611
28612 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28613
28614         * config/arc/arc.c (arc_expand_prologue): Emit a special barrier
28615         to prevent store reordering.
28616         * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
28617         (type): Add block type.
28618         (stack_tie): Define special instruction to be used in
28619         expand_prologue.
28620
28621 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28622
28623         * config/arc/arc.md (commutative_binary_comparison): Remove 'I'
28624         constraint. It is not valid for the pattern.
28625         (noncommutative_binary_comparison): Likewise.
28626
28627 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28628
28629         * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
28630         scaled addresses.
28631
28632 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28633
28634         * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
28635         be used by the reg-alloc.
28636
28637 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28638
28639         * config/arc/arc.md (mulsi3): Avoid use of hard registers before
28640         reg-alloc when having mul64 or mul32x16 instructions.
28641         (mulsidi3): Likewise.
28642         (umulsidi3): Likewise.
28643         (mulsi32x16): New pattern.
28644         (mulsi64): Likewise.
28645         (mulsidi64): Likewise.
28646         (umulsidi64): Likewise.
28647         (MUL32x16_REG): Define.
28648         (mul64_600): Use MUL32x16_REG.
28649         (mac64_600): Likewise.
28650         (umul64_600): Likewise.
28651         (umac64_600): Likewise.
28652
28653 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28654
28655         * config/arc/arc.md (mulsi3_700): Make it commutative.
28656
28657 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
28658
28659         * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
28660         type for movstouw.
28661         (*sign_extendsidi2_insn): Likewise for movstosw.
28662
28663 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
28664
28665         * dwarf2out.c (get_discr_value): Call the get_debug_type hook on
28666         the type of the input discriminant value.  Convert the
28667         discriminant value of signedness vary.
28668
28669 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
28670
28671         * doc/invoke.texi (-Wcatch-value): Document new shortcut.
28672         Add to -Wall section.
28673
28674 2017-06-01  Richard Biener  <rguenther@suse.de>
28675
28676         PR middle-end/66313
28677         * fold-const.c (fold_plusminus_mult_expr): If the factored
28678         factor may be zero use a wrapping type for the inner operation.
28679         * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
28680         and handle moved defs.
28681         (process_assignment): Properly guard the unary op case.  Return a
28682         tri-state indicating that moving the stmt before the call may allow
28683         to continue.  Pass through to_move.
28684         (find_tail_calls): Handle moving unrelated defs before
28685         the call.
28686
28687 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
28688
28689         PR target/80618
28690         * config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
28691         splitter result in the canonical way.
28692
28693 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
28694
28695         * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
28696         also for 32bit target.  Update insn attributes.
28697         (zero-extendsidi2 splitter): Allow all registers for operand 1.
28698
28699 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
28700
28701         * config/i386/avx512fintrin.h (_mm_mask_max_sd)
28702         (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
28703         (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
28704         (_mm_maskz_min_ss): New intrinsics.
28705
28706 2017-05-31  Martin Liska  <mliska@suse.cz>
28707
28708         * tree-vect-loop.c (vect_create_epilog_for_reduction):
28709         Change comment style to one we normally use.
28710         (vectorizable_reduction): Likewise.
28711         (vectorizable_induction): Likewise.
28712         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
28713         (vectorizable_call): Likewise.
28714         (vectorizable_simd_clone_call): Likewise.
28715         (vectorizable_conversion): Likewise.
28716         (vectorizable_assignment): Likewise.
28717         (vectorizable_shift): Likewise.
28718         (vectorizable_operation): Likewise.
28719         (vectorizable_store): Likewise.
28720         (vectorizable_load): Likewise.
28721         * tree-vectorizer.h: Likewise.
28722
28723 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
28724
28725         * passes.c (emergency_dump_function): New.
28726         * tree-pass.h (emergency_dump_function): Declare.
28727         * plugin.c (plugins_internal_error_function): Remove.
28728         * plugin.h (plugins_internal_error_function): Remove declaration.
28729         * toplev.c (internal_error_function): New static function.  Use it...
28730         (general_init): ...here.
28731
28732 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
28733
28734         * config/arc/arc.c (arc_print_operand): Handle constant operands.
28735         (arc_rtx_costs): Add costs for new patterns.
28736         * config/arc/arc.md: Additional *add_n and *sub_n patterns.
28737         * config/arc/predicates.md: Add _1_2_3_operand predicate.
28738
28739 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28740
28741         * tree-ssa-strlen.c (get_next_strinfo): New function.
28742         (get_stridx_plus_constant): Use it.
28743         (zero_length_string): Likewise.
28744         (adjust_related_strinfos): Likewise.
28745         (adjust_last_stmt): Likewise.
28746
28747 2017-05-31  Richard Biener  <rguenther@suse.de>
28748
28749         PR target/80880
28750         * config/i386/i386.c (ix86_expand_builtin): Remove assert
28751         for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
28752
28753 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28754
28755         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
28756         loop_vinfo argument and use of dependence distance vectors.
28757         Check instead whether the two references differ only in their
28758         initial value and assume that they have the same alignment if the
28759         difference is a multiple of the vector alignment.
28760         (vect_analyze_data_refs_alignment): Update call accordingly.
28761
28762 2017-05-31  Martin Liska  <mliska@suse.cz>
28763
28764         PR target/79155
28765         * config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
28766
28767 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28768
28769         * tree-vect-loop-manip.c (create_intersect_range_checks_index)
28770         (create_intersect_range_checks): Move from ...
28771         * tree-data-ref.c (create_intersect_range_checks_index)
28772         (create_intersect_range_checks): ... to here.
28773         (create_runtime_alias_checks): New function factored from ...
28774         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
28775         here.  Call above function.
28776         * tree-data-ref.h (create_runtime_alias_checks): New function.
28777
28778 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28779
28780         * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
28781         segment length for dr_b and compute it in wide_int.
28782
28783 2017-05-31  Richard Biener  <rguenther@suse.de>
28784
28785         PR tree-optimization/80906
28786         * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
28787         and pass through iv_map.
28788         (copy_bb_and_scalar_dependences): Adjust.
28789         (translate_pending_phi_nodes): Likewise.
28790         (copy_loop_close_phi_args): Handle code-generating IVs instead
28791         of ICEing.
28792
28793 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
28794
28795         * diagnostic-color.c (color_dict): Add "type-diff".
28796         (parse_gcc_colors): Update comment.
28797         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
28798         -fdiagnostics-show-template-tree and -fno-elide-type.
28799         (GCC_COLORS): Add type-diff to example.
28800         (type-diff=): New.
28801         (-fdiagnostics-show-template-tree): New.
28802         (-fno-elide-type): New.
28803         * pretty-print.c (pp_format): Pass quote and formatters[argno] to
28804         the pp_format_decoder callback.  Call any m_format_postprocessor's
28805         "handle" method.
28806         (pretty_printer::pretty_printer): Initialize
28807         m_format_postprocessor.
28808         (pretty_printer::~pretty_printer): Delete any
28809         m_format_postprocessor.
28810         * pretty-print.h (printer_fn): Add bool and const char ** parameters.
28811         (class format_postprocessor): New class.
28812         (struct pretty_printer::format_decoder): Document the new parameters.
28813         (struct pretty_printer::m_format_postprocessor): New field.
28814         * tree-diagnostic.c (default_tree_printer): Update for new
28815         bool and const char ** params.
28816         * tree-diagnostic.h (default_tree_printer): Likewise.
28817
28818 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
28819
28820         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
28821         (lwa_operand): Delete rs6000_gen_cell_microcode test.
28822         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
28823         rs6000_gen_cell_microcode code.
28824         (rs6000_final_prescan_insn): Delete.
28825         (rs6000_opt_vars): Delete the "gen-cell-microcode" and
28826         "warn-cell-microcode" entries.
28827         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
28828         * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
28829         throughout.  Change cc_reg_not_micro_cr0_operand to
28830         cc_reg_not_cr0_operand throughout.
28831         (*extendhi<mode>2_noload): Delete.
28832         * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
28833         (mwarn-cell-microcode): Delete.
28834         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
28835         -mgen-cell-microcode and -mwarn-cell-microcode.
28836
28837 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
28838
28839         PR target/80833
28840         * config/i386/constraints.md (Yd): New constraint.
28841         (Ye): Ditto.
28842         * config/i386/i386.md (*movti_internal): Add (?r, Ye)
28843         and (?Yd, r) alternatives.  Update insn attributes.
28844         * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
28845         and (?*Yd, r) alternatives.  Update insn attributes.
28846         (double-mode inter-unit splitters): Add new GR<->XMM splitters.
28847
28848 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
28849
28850         * gimplify.c (gimplify_modify_expr): Don't create a
28851         DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
28852         function.
28853
28854 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
28855
28856         * config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
28857
28858 2017-05-30  Richard Biener  <rguenther@suse.de>
28859
28860         * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
28861         and reduc_def fields.
28862         (STMT_VINFO_REDUC_TYPE): New define.
28863         (STMT_VINFO_REDUC_DEF): Likewise.
28864         (vect_force_simple_reduction): Adjust prototype.
28865         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
28866         (vect_is_simple_reduction): Remove check_reduction argument.
28867         (vect_force_simple_reduction): Adjust and set
28868         STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
28869         (vectorizable_reduction): Do not re-do reduction analysis
28870         but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
28871         * tree-parloops.c (gather_scalar_reductions): Adjust.
28872
28873 2017-05-30  Richard Biener  <rguenther@suse.de>
28874
28875         PR middle-end/80901
28876         * cfgexpand.c (expand_gimple_cond): Match up loop fixup with
28877         split_edge code.
28878
28879 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28880
28881         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
28882         Introduce unknown_misalignment parameter and remove vf.
28883         (vect_peeling_hash_get_lowest_cost):
28884         Pass unknown_misalignment parameter.
28885         (vect_enhance_data_refs_alignment):
28886         Fix unsupportable data ref treatment.
28887
28888 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28889
28890         * tree-vect-data-refs.c (vect_get_data_access_cost):
28891         Workaround for SLP handling.
28892         (vect_enhance_data_refs_alignment):
28893         Compute costs for doing no peeling at all, compare to the best
28894         peeling costs so far and avoid peeling if cheaper.
28895
28896 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28897
28898         * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
28899         Return peeling info and set costs to zero for unlimited cost
28900         model.
28901         (vect_enhance_data_refs_alignment): Also inspect all datarefs
28902         with unknown misalignment. Compute and costs for unknown
28903         misalignment, compare them to the costs for known misalignment
28904         and choose the cheapest for peeling.
28905
28906 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28907
28908         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
28909         (vect_get_peeling_costs_all_drs): Create function.
28910         (vect_peeling_hash_get_lowest_cost):
28911         Use vect_get_peeling_costs_all_drs.
28912         (vect_peeling_supportable): Create function.
28913         (vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
28914
28915 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28916
28917         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
28918         DR_HAS_NEGATIVE_STEP.
28919         (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
28920         (vect_enhance_data_refs_alignment): Use.
28921         (vect_duplicate_ssa_name_ptr_info): Use.
28922         * tree-vectorizer.h (dr_misalignment): Use.
28923         (known_alignment_for_access_p): Use.
28924
28925 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
28926
28927         PR target/78838
28928         * config/msp430/msp430.c (gen_prefix): Return NULL when section name is
28929         .lowtext.
28930         (has_section_name): New function.
28931
28932 2017-05-30  Martin Liska  <mliska@suse.cz>
28933
28934         PR other/80909
28935         * auto-profile.c (get_function_decl_from_block): Fix
28936         parenthesis.
28937
28938 2017-05-30  Richard Biener  <rguenther@suse.de>
28939
28940         PR middle-end/80876
28941         * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
28942
28943 2017-05-30  Martin Liska  <mliska@suse.cz>
28944
28945         * dumpfile.c: Use newly added macro DUMP_FILE_INFO.
28946         * dumpfile.h (struct dump_file_info): Remove ctors.
28947
28948 2017-05-30  Martin Liska  <mliska@suse.cz>
28949
28950         * predict.def: Fix GNU coding style.
28951
28952 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
28953
28954         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
28955         Mark 'to' argument with ATTRIBUTE_UNUSED.
28956
28957 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
28958
28959         * config/xtensa/xtensa.c (xtensa_emit_call): Use
28960         HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
28961         (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
28962         format string.
28963
28964 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
28965
28966         * doc/install.texi (Options specification): Restore entry of
28967         --enable-sjlj-exceptions.
28968
28969 2017-05-27  Michael Eager  <eager@eagercon.com>
28970
28971         Revert:
28972         2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
28973
28974         See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
28975
28976         * config/microblaze/microblaze.h
28977         (FIXED_REGISTERS): Update in macro.
28978         (CALL_USED_REGISTERS): Update in macro.
28979
28980 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
28981
28982         * doc/install.texi: Add links to macOS binary distributions.
28983
28984 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
28985
28986         PR bootstrap/80887
28987         Revert:
28988         2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
28989
28990         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
28991
28992 2017-05-26  Martin Liska  <mliska@suse.cz>
28993
28994         * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
28995
28996 2017-05-26  Martin Liska  <mliska@suse.cz>
28997
28998         * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
28999         always leading ';; '.
29000         (dump_bb_info): Likewise.
29001         (brief_dump_cfg): Likewise.
29002         * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
29003         * dumpfile.c: Remove usage of TDF_VERBOSE.
29004         * dumpfile.h (enum dump_kind): Likewise.
29005         (dump_gimple_bb_header): Do not use TDF_COMMENT.
29006         * print-tree.c (debug_verbose): Remove.
29007         * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
29008         (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
29009         * tree-diagnostic.c (default_tree_printer): Replace
29010         TDF_DIAGNOSTIC with TDF_SLIM.
29011
29012 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29013
29014         * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
29015         in parameter loop, rather than loop_vinfo.
29016         (create_intersect_range_checks): Ditto.
29017         (vect_create_cond_for_alias_checks): Update call to above functions.
29018
29019 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29020
29021         PR tree-optimization/80815
29022         * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
29023         for merging runtime alias checks.  Handle negative DR_STEPs.
29024
29025 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29026
29027         * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
29028         Move from ...
29029         * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
29030         * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
29031         out code pruning runtime alias checks.
29032         * tree-data-ref.c (prune_runtime_alias_test_list): New function
29033         factored out from above.
29034         * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29035         Move from ...
29036         * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29037         ... to here.
29038         (prune_runtime_alias_test_list): New decalaration.
29039
29040 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29041
29042         * tree-vect-data-refs.c (compare_tree): Rename and move ...
29043         * tree-data-ref.c (data_ref_compare_tree): ... to here.
29044         * tree-data-ref.h (data_ref_compare_tree): New decalaration.
29045         * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
29046         (operator==, comp_dr_with_seg_len_pair): Ditto.
29047         (vect_prune_runtime_alias_test_list): Ditto.
29048
29049 2017-05-26  Martin Liska  <mliska@suse.cz>
29050
29051         PR ipa/80663
29052         * params.def: Bound partial-inlining-entry-probability param.
29053
29054 2017-05-26  Marek Polacek  <polacek@redhat.com>
29055
29056         PR sanitizer/80875
29057         * fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
29058         can be negated.
29059
29060 2017-05-26  Richard Biener  <rguenther@suse.de>
29061
29062         PR tree-optimization/80842
29063         * tree-ssa-ccp.c (set_lattice_value): Always meet with the old
29064         value.
29065
29066 2017-05-26  Richard Biener  <rguenther@suse.de>
29067
29068         PR tree-optimization/80844
29069         * tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
29070
29071 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
29072
29073         * doc/md.texi (Machine Constraints): Update x86 family
29074         machine constraints section to match 'config/i386/constraints.md'.
29075
29076 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
29077
29078         * doc/invoke.texi (-Wcatch-value=): Document new warning option.
29079
29080 2017-05-25  Nathan Sidwell  <nathan@acm.org>
29081
29082         * doc/invoke.texi (--enable-languages): Update documentation.
29083
29084 2017-05-25  Martin Liska  <mliska@suse.cz>
29085
29086         * dumpfile.c: Add TDF_FOLDING.
29087         * dumpfile.h (enum dump_kind): Likewise.
29088         * genmatch.c (dt_simplify::gen_1): Use it.
29089
29090 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29091
29092         * match.pd (view_convert (convert@0 @1)): Handle zero-extension.
29093
29094 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29095
29096         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29097         * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
29098
29099 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29100
29101         * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
29102         * match.pd (X == C): Rewrite it here.
29103         (with_possible_nonzero_bits, with_possible_nonzero_bits2,
29104         with_certain_nonzero_bits2): New predicates.
29105         * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
29106
29107 2017-05-24  Nathan Sidwell  <nathan@acm.org>
29108
29109         * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
29110         avoid warning.
29111
29112         * auto-profile.c (afdo_propagate): Adjust T const cast to avoid
29113         warning.
29114
29115 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29116
29117         * config/powerpcspe: New port.  Files are copied from the rs6000
29118         port, with "rs6000" in filenames replaced by "powerpcspe".
29119
29120 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
29121
29122         PR rtl-optimization/80754
29123         * lra-remat.c (do_remat): Add overlap checks for dst_regno.
29124
29125 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
29126
29127         * config/sparc/sparc.md (length): Return the correct value for -mflat
29128         sibcalls to match output_sibcall.
29129
29130 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29131
29132         PR bootstrap/80860
29133         PR bootstrap/80843
29134         * config/rs6000/rs6000.c (struct machine_function): Add new field
29135         n_components.
29136         (rs6000_get_separate_components): Init that field, use it.
29137         (rs6000_components_for_bb): Use the field.
29138
29139 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29140
29141         * config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
29142
29143 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
29144
29145         PR middle-end/80823
29146         * tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
29147
29148 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29149
29150         PR target/80725
29151         * config/s390/s390.c (s390_check_qrst_address): Check incoming
29152         address against address_operand predicate.
29153         * config/s390/s390.md ("*indirect_jump"): Swap alternatives.
29154
29155 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
29156
29157         * var-tracking.c (track_expr_p): Do not return 0 for tracked record
29158         parameters passed indirectly.
29159
29160 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
29161
29162         * config/i386/i386.md (*movdi_internal): Remove SSE4
29163         alternative 18 (?r, *v).  Update insn attributes.
29164         (*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
29165         Update insn attributes.
29166         (*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
29167         Update insn attributes.
29168         * config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
29169         alternative 1 (r, v). Remove isa attribute.
29170         * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
29171         Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
29172         and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
29173
29174 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29175
29176         * doc/sourcebuild.texi (Directives, Verify compiler message): Document
29177         dg-line directive.
29178
29179 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29180
29181         * cgraphunit.c (symbol_table::process_new_functions): Update.
29182         * ipa-fnsummary.c (pass_data_inline_parameters): Remove.
29183         (inline_generate_summary): Rename to ...
29184         (ipa_fn_summary_generate): ... this one.
29185         (inline_read_summary): Rename to ...
29186         (ipa_fn_summary_read): ... this one.
29187         (inline_write_summary): Rename to ...
29188         (ipa_fn_summary_write): ... this one.
29189         (inline_free_summary): Rename to ...
29190         (ipa_free_fn_summary): ... this one.
29191         (pass_data_local_fn_summary, pass_local_fn_summary,
29192         make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
29193         pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
29194         pass_data_ipa_fn_summary, pass_ipa_fn_summary,
29195         make_pass_ipa_fn_summary): New.
29196         * ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
29197         inline_write_summary, inline_free_summary): Remove.
29198         (ipa_free_fn_summary) : New.
29199         * ipa-inline.c (ipa_inline): Update.
29200         (pass_ipa_inline): Do not generate summaries.
29201         * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
29202         Remove.
29203         * passes.def: Replace pass_inline_parameters by pass_local_fn_summary
29204         and add pass_ipa_fn_summary.
29205         * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
29206         New.
29207         (make_pass_inline_parameters): Remove.
29208
29209 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
29210
29211         * omp-low.c (struct omp_context): Remove "default_kind" member.
29212         Adjust all users.
29213
29214         * omp-offload.c (execute_oacc_device_lower): Remove the
29215         parallelism dimensions function attributes for unparallelized
29216         OpenACC kernels constructs.
29217
29218 2017-05-23  Martin Liska  <mliska@suse.cz>
29219
29220         * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
29221         functions.
29222         (cgraph_edge::make_speculative): Likewise.
29223         (cgraph_edge::resolve_speculation): Likewise.
29224         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
29225         (cgraph_node::dump): Likewise.
29226         * cgraph.h: Likewise.
29227         * cgraphunit.c (analyze_functions): Likewise.
29228         (symbol_table::compile): Likewise.
29229         * ipa-cp.c (print_all_lattices): Likewise.
29230         (determine_versionability): Likewise.
29231         (initialize_node_lattices): Likewise.
29232         (ipcp_verify_propagated_values): Likewise.
29233         (estimate_local_effects): Likewise.
29234         (update_profiling_info): Likewise.
29235         (create_specialized_node): Likewise.
29236         (perhaps_add_new_callers): Likewise.
29237         (decide_about_value): Likewise.
29238         (decide_whether_version_node): Likewise.
29239         (identify_dead_nodes): Likewise.
29240         (ipcp_store_bits_results): Likewise.
29241         * ipa-devirt.c (dump_targets): Likewise.
29242         (ipa_devirt): Likewise.
29243         * ipa-icf.c (sem_item::dump): Likewise.
29244         (sem_function::equals): Likewise.
29245         (sem_variable::equals): Likewise.
29246         (sem_item_optimizer::read_section): Likewise.
29247         (sem_item_optimizer::execute): Likewise.
29248         (congruence_class::dump): Likewise.
29249         * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
29250         (dump_inline_summary): Likewise.
29251         (estimate_node_size_and_time): Likewise.
29252         (inline_analyze_function): Likewise.
29253         * ipa-inline-transform.c (inline_call): Likewise.
29254         * ipa-inline.c (report_inline_failed_reason): Likewise.
29255         (want_early_inline_function_p): Likewise.
29256         (edge_badness): Likewise.
29257         (update_edge_key): Likewise.
29258         (inline_small_functions): Likewise.
29259         * ipa-profile.c (ipa_profile): Likewise.
29260         * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
29261         (ipa_make_edge_direct_to_target): Likewise.
29262         (remove_described_reference): Likewise.
29263         (ipa_impossible_devirt_target): Likewise.
29264         (propagate_controlled_uses): Likewise.
29265         (ipa_print_node_params): Likewise.
29266         (ipcp_transform_function): Likewise.
29267         * ipa-pure-const.c (pure_const_read_summary): Likewise.
29268         (propagate_pure_const): Likewise.
29269         * ipa-reference.c (generate_summary): Likewise.
29270         (read_write_all_from_decl): Likewise.
29271         (propagate): Likewise.
29272         (ipa_reference_read_optimization_summary): Likewise.
29273         * ipa-utils.c (ipa_merge_profiles): Likewise.
29274         * ipa.c (walk_polymorphic_call_targets): Likewise.
29275         (symbol_table::remove_unreachable_nodes): Likewise.
29276         (ipa_single_use): Likewise.
29277         * passes.c (execute_todo): Likewise.
29278         * predict.c (drop_profile): Likewise.
29279         * symtab.c (symtab_node::get_dump_name): New function.
29280         (symtab_node::dump_name): Likewise.
29281         (symtab_node::dump_asm_name): Likewise.
29282         (symtab_node::dump_references): Likewise.
29283         (symtab_node::dump_referring): Likewise.
29284         (symtab_node::dump_base): Likewise.
29285         (symtab_node::debug_symtab): Likewise.
29286         * tree-sra.c (convert_callers_for_node): Likewise.
29287         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29288         * value-prof.c (init_node_map): Likewise.
29289
29290 2017-05-23  Martin Liska  <mliska@suse.cz>
29291
29292         * cgraph.h: Move symtab_node::dump_table to symbol_table::dump
29293         and symtab_node::debug_symtab to symbol_table::debug.
29294         * cgraphunit.c (analyze_functions): Use the renamed function.
29295         (symbol_table::compile): Likewise.
29296         * ipa-cp.c (ipcp_verify_propagated_values): Likewise.
29297         * ipa-icf.c (sem_item_optimizer::execute): Likewise.
29298         * passes.c (execute_todo): Likewise.
29299         * symtab.c (symbol_table::dump): New function.
29300         * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
29301
29302 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29303
29304         * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
29305         that nonconst implies exec.
29306
29307 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29308
29309         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29310         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29311         (inline_edge_summary_vec): Turn into ...
29312         (ipa_call_summaries): ... this one.
29313         (redirect_to_unreachable, edge_set_predicate,
29314         evaluate_properties_for_edge, inline_summary_alloc,
29315         reset_ipa_call_summary, reset_inline_summary,
29316         inline_summary_t::duplicate): Update.
29317         (inline_edge_duplication_hook): Turn to ...
29318         (ipa_call_summary_t::duplicate): ... this one.
29319         (inline_edge_removal_hook): Turn to ...
29320         (ipa_call_summary_t::remove): ... this one.
29321         (dump_inline_edge_summary): Turn to ...
29322         (dump_ipa_call_summary): ... this one.
29323         (estimate_function_body_sizes): Update.
29324         (inline_update_callee_summaries): Update.
29325         (remap_edge_change_prob): Update.
29326         (remap_edge_summaries): Update.
29327         (inline_merge_summary): Update.
29328         (do_estimate_edge_time): Update.
29329         (inline_generate_summary): Update.
29330         (inline_read_section): Update.
29331         (inline_read_summary): Update.
29332         (inline_free_summary): Update.
29333         * ipa-inline.c (can_inline_edge_p): Update.
29334         (compute_inlined_call_time): Update.
29335         (want_inline_small_function_p): Update.
29336         (edge_badness): Update.
29337         (early_inliner): Update.
29338         * ipa-inline.h (inline_edge_summary): Turn to ...
29339         (ipa_call_summary): ... this one.
29340         (ipa_call_summary_t): New class.
29341         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29342         (ipa_call_summaries): New.
29343         (inline_edge_summary): Remove.
29344         (estimate_edge_growth): Update.
29345         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29346         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29347         * ipa-split.c (execute_split_functions): Update.
29348         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29349
29350 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29351
29352         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29353         attributes): Document rdrand effective target.
29354
29355 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29356
29357         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29358         attributes): Sort alphabetically.
29359
29360 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
29361
29362         * config/avr/genmultilib.awk: Use gsub instead of gensub.
29363
29364 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
29365
29366         PR target/80718
29367         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
29368         V2DF/V2DI splat into two separate patterns, one that handles
29369         registers, and the other that only handles memory.  Drop support
29370         for splatting from a GPR on ISA 2.07 and then splitting the
29371         splat into direct move and splat.
29372         (vsx_splat_<mode>_reg): Likewise.
29373         (vsx_splat_<mode>_mem): Likewise.
29374
29375 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
29376
29377         * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
29378
29379 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
29380
29381         PR middle-end/80809
29382         * omp-low.c (finish_taskreg_remap): New function.
29383         (finish_taskreg_scan): If unit size of ctx->record_type
29384         is non-constant, unshare the size expression and replace
29385         decls in it with possible outer var refs.
29386
29387         PR middle-end/80809
29388         * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
29389         GOVD_SHARED rather than GOVD_PRIVATE with it.
29390         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
29391         GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
29392
29393         PR middle-end/80853
29394         * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
29395         as last argument to build_outer_var_ref for pointer bases of array
29396         section reductions.
29397
29398 2017-05-19  Martin Sebor  <msebor@redhat.com>
29399
29400         * print-tree.c (print_node): Print DECL_READ_P flag.
29401
29402 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29403
29404         * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
29405         * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
29406         * cgraph.c: Likewise.
29407         * cgraphunit.c: Likewise.
29408         * gengtype.c: Likewise.
29409         * ipa-cp.c: Likewise.
29410         * ipa-devirt.c: Likewise.
29411         * ipa-icf.c: Likewise.
29412         * ipa-predicate.c: Likewise.
29413         * ipa-profile.c: Likewise.
29414         * ipa-prop.c: Likewise.
29415         * ipa-split.c: Likewise.
29416         * ipa.c: Likewise.
29417         * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
29418         edge_predicate_pool, dump_inline_hints,
29419         inline_summary::account_size_time, redirect_to_unreachable,
29420         edge_set_predicate, set_hint_predicate,
29421         evaluate_conditions_for_known_args, evaluate_properties_for_edge,
29422         inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
29423         inline_summary_t::remove, remap_hint_predicate_after_duplication,
29424         inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
29425         ipa_call_summary_t::remove, initialize_growth_caches,
29426         free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
29427         debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
29428         mark_modified, unmodified_parm_1, unmodified_parm,
29429         unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
29430         set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
29431         compute_bb_predicates, will_be_nonconstant_expr_predicate,
29432         will_be_nonconstant_predicate, record_modified_bb_info,
29433         get_minimal_bb, record_modified, param_change_prob,
29434         phi_result_unknown_predicate, predicate_for_phi_result,
29435         array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
29436         estimate_function_body_sizes, compute_inline_parameters,
29437         compute_inline_parameters_for_curren, pass_data_inline_parameters,
29438         estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
29439         inline_update_callee_summaries, remap_edge_change_prob,
29440         remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
29441         inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
29442         inline_analyze_function, inline_summary_t::insert,
29443         inline_generate_summary, read_ipa_call_summary, inline_read_section,
29444         inline_read_summary, write_ipa_call_summary, inline_write_summary,
29445         inline_free_summary): Move to ipa-fnsummary.h
29446         (predicate_t): Remove.
29447         * ipa-fnsummary.c: New file.
29448         * ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
29449         (enum inline_hints_vals, inline_hints, agg_position_info,
29450         INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
29451         inline_summaries, ipa_call_summary, ipa_call_summary_t,
29452         ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
29453         dump_inline_summary, dump_inline_hints, inline_generate_summary,
29454         inline_read_summary, inline_write_summary, inline_free_summary,
29455         inline_analyze_function, initialize_inline_failed,
29456         inline_merge_summary, inline_update_overall_summary,
29457         compute_inline_parameters): Move to ipa-fnsummary.h
29458         * ipa-fnsummary.h: New file.
29459         * ipa-inline-transform.h: Include ipa-inline.h.
29460         * ipa-inline.c: LIkewise.
29461
29462 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29463
29464         * ipa-inline.c (edge_badness): Use inlined_time instead of
29465         inline_summaries->get.
29466
29467 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29468
29469         * ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
29470
29471 2017-05-22  Nathan Sidwell  <nathan@acm.org>
29472
29473         * doc/invoke.texi (fdump-translation-unit): Delete documentation.
29474         (fdump-lang): Document 'raw' option.
29475         * dumpfile.h (TDI_tu): Delete.
29476         * dumpfile.c (dump_files): Remove translation-unit.
29477         (FIRST_AUTO_NUMBERED_DUMP): Decrement.
29478
29479 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
29480
29481         * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
29482         command option from $(AWK) call.
29483         * config/avr/genmultilib.awk: Simplify and rewrite so that it
29484         generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
29485         [FORMAT]: Remove handling of variable.
29486         * config/avr/t-multilib: Regenerate.
29487
29488 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29489
29490         * ipa-inline-analysis.c (inline_summary::reset): Do not reset
29491         self_time.
29492         (dump_inline_summary): Do not print self_time.
29493         (estimate_function_body_sizes): Do not set self_time.
29494         (compute_inline_parameters): Likewise.
29495         (inline_read_section, inline_write_summary): Do not stream self_time.
29496         * ipa-inline.h (inline_summary): Drop self_time.
29497
29498 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29499
29500         * ipa-inline-analysis.c (account_size_time): Rename to ...
29501         (inline_summary::account_size_time): ... this one.
29502         (reset_ipa_call_summary): Turn to ...
29503         (ipa_call_summary::reset): ... this one.
29504         (reset_inline_summary): Turn to ...
29505         (inline_summary::reset): ... this one.
29506         (inline_summary_t::remove): Update.
29507         (inline_summary_t::duplicate): Update.
29508         (ipa_call_summary_t::remove): Update.
29509         (dump_inline_summary): Update.
29510         (estimate_function_body_sizes): Update.
29511         (compute_inline_parameters): Update.
29512         (estimate_node_size_and_time): Update.
29513         (inline_merge_summary): Update.
29514         (inline_update_overall_summary): Update.
29515         (inline_read_section): Update.
29516         (inline_write_summary): Update.
29517         * ipa-inline.h (inline_summary): Rename entry to size_time_table;
29518         add account_size_time and reset member functions.
29519         (ipa_call_summary): Add reset function.
29520         * ipa-predicate.h (predicate::operator &): Constify.
29521
29522 2017-05-22  Richard Biener  <rguenther@suse.de>
29523
29524         * df-scan.c (df_insn_refs_verify): Speedup when not verifying.
29525
29526 2017-05-19  Jason Merrill  <jason@redhat.com>
29527
29528         * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
29529
29530 2017-05-19  Marek Polacek  <polacek@redhat.com>
29531
29532         PR sanitizer/80800
29533         * fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
29534         TYPE_OVERFLOW_WRAPS checks.
29535
29536 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
29537
29538         * tree-core.h (enum omp_clause_default_kind): Add
29539         "OMP_CLAUSE_DEFAULT_PRESENT".
29540         * tree-pretty-print.c (dump_omp_clause): Handle it.
29541         * gimplify.c (enum gimplify_omp_var_data): Add
29542         "GOVD_MAP_FORCE_PRESENT".
29543         (gimplify_adjust_omp_clauses_1): Map it to
29544         "GOMP_MAP_FORCE_PRESENT".
29545         (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
29546
29547         * gimplify.c (oacc_default_clause): Clarify.
29548
29549 2017-05-19  Nathan Sidwell  <nathan@acm.org>
29550
29551         LANG_HOOK_REGISTER_DUMPS
29552         * toplev.c (general_init): Call register dump lang hook.
29553         * doc/invoke.texi: Document -fdump-lang option family.
29554         * dumpfile.c (dump_files): Remove class dump here.
29555         (FIRST_AUTO_NUMBERED_DUMP): Adjust.
29556         * dumpfile.h (tree_dump_index): Remove TDI_class.
29557         * langhooks-def.h (lhd_register_dumps): Declare.
29558         (LANG_HOOKS_REGISTER_DUMPS): Define.
29559         (LANG_HOOKS_INITIALIZER): Add it.
29560         * langhooks.c (lhd_register_dumps): Define.
29561         * langhooks.h (struct lang_hooks): Add register_dumps.
29562
29563 2017-05-19  Nathan Sidwell  <nathan@acm.org>
29564
29565         * context.h (context::set_passes): New.
29566         * context.c (context::context): Do not create pass manager.
29567         * toplev.c (general_init): Create pass manager here.
29568
29569 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
29570
29571         * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
29572         use this splitter if two add or or instructions would also work for
29573         the constant we want to generate.
29574
29575 2017-05-19  Richard Biener  <rguenther@suse.de>
29576
29577         PR build/80821
29578         * genmatch.c (dt_node::gen_kids_1): Add missing scope around
29579         predicate evaluation.
29580
29581 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
29582
29583         * ipa-inline.h (ipa_call_summary): Turn sizes into signed;
29584         add ctor.
29585         * ipa-inline.c (want_inline_small_function_p): Do not cast to
29586         unsigned.
29587
29588 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
29589
29590         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29591         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29592         (inline_edge_summary_vec): Turn into ...
29593         (ipa_call_summaries): ... this one.
29594         (redirect_to_unreachable, edge_set_predicate,
29595         evaluate_properties_for_edge, inline_summary_alloc,
29596         reset_ipa_call_summary, reset_inline_summary,
29597         inline_summary_t::duplicate): Update.
29598         (inline_edge_duplication_hook): Turn to ...
29599         (ipa_call_summary_t::duplicate): ... this one.
29600         (inline_edge_removal_hook): Turn to ...
29601         (ipa_call_summary_t::remove): ... this one.
29602         (dump_inline_edge_summary): Turn to ...
29603         (dump_ipa_call_summary): ... this one.
29604         (estimate_function_body_sizes): Update.
29605         (inline_update_callee_summaries): Update.
29606         (remap_edge_change_prob): Update.
29607         (remap_edge_summaries): Update.
29608         (inline_merge_summary): Update.
29609         (do_estimate_edge_time): Update.
29610         (inline_generate_summary): Update.
29611         (inline_read_section): Update.
29612         (inline_read_summary): Update.
29613         (inline_free_summary): Update.
29614         * ipa-inline.c (can_inline_edge_p): Update.
29615         (compute_inlined_call_time): Update.
29616         (want_inline_small_function_p): Update.
29617         (edge_badness): Update.
29618         (early_inliner): Update.
29619         * ipa-inline.h (inline_edge_summary): Turn to ...
29620         (ipa_call_summary): ... this one.
29621         (ipa_call_summary_t): New class.
29622         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29623         (ipa_call_summaries): New.
29624         (inline_edge_summary): Remove.
29625         (estimate_edge_growth): Update.
29626         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29627         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29628         * ipa-split.c (execute_split_functions): Update.
29629         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29630
29631 2017-05-19  Richard Biener  <rguenther@suse.de>
29632
29633         PR middle-end/80764
29634         * cfgexpand.c (expand_gimple_cond): Fix loop fixup.
29635
29636 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
29637
29638         * config/rs6000/rs6000.c (struct machine_function): Add field
29639         fpr_is_wrapped_separately.
29640         (rs6000_get_separate_components): Use 64 components.  Handle the
29641         new FPR components.
29642         (rs6000_components_for_bb): Handle the FPR components.
29643         (rs6000_emit_prologue_components): Handle the FPR components.
29644         (rs6000_emit_epilogue_components): Handle the FPR components.
29645         (rs6000_set_handled_components): Handle the FPR components.
29646         (rs6000_emit_prologue): Don't output prologue code for those FPRs
29647         that are already separately shrink-wrapped.
29648         (rs6000_emit_epilogue): Don't output epilogue code for those FPRs
29649         that are already separately shrink-wrapped.
29650
29651 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
29652
29653         PR target/80510
29654         * config/rs6000/predicates.md (simple_offsettable_mem_operand):
29655         New predicate.
29656
29657         * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
29658         (define_peephole2 for Altivec d-form load): Add peepholes to catch
29659         cases where the register allocator uses a move and an offsettable
29660         memory operation to/from a FPR register on ISA 2.06/2.07.
29661         (define_peephole2 for Altivec d-form store): Likewise.
29662
29663 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
29664
29665         PR target/80799
29666         * config/i386/mmx.md (*mov<mode>_internal): Enable
29667         alternatives 11, 12, 13 and 14 also for 32bit targets.
29668         Remove alternatives 15, 16, 17 and 18.
29669         * config/i386/sse.md (vec_concatv2di): Change
29670         alternative (!x, *y) to (x, ?!*Yn).
29671
29672 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
29673
29674         * dumpfile.h (enum dump_kind): Remove stray comma.
29675
29676 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29677
29678         * Makefile.in: Add ipa-predicate.o and ipa-predicate.h
29679         * ipa-inline-analysis.c (NUM_CONDITIONS): turn into
29680         predicate::num_conditions
29681         (IS_NOT_CONSTANT): turn into predicate::is_not_constant.
29682         (CHANGED): turn into predicate::changed.
29683         (agg_position_info): Move to ipa-predicate.h
29684         (add_condition, predicate::add_clause, predicate::operator &=,
29685         predicate::or_with, predicate::evaluate, predicate::probability,
29686         dump_condition, dump_clause, predicate::dump,
29687         predicate::remap_after_duplication, predicate::remap_after_inlining,
29688         predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
29689         (evaluate_conditions_for_known_args): Update.
29690         (set_cond_stmt_execution_predicate): Update.
29691         * ipa-inline.h: Include ipa-predicate.h
29692         (condition, inline_param_summary, conditions, agg_position_info,
29693         predicate): Move to ipa-predicate.h
29694         * ipa-predicate.c: New file.
29695         * ipa-predicate.h: New file.
29696
29697 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
29698
29699         * final.c (leaf_function_p): Check we are not in a sequence.
29700
29701 2017-05-18  Martin Liska  <mliska@suse.cz>
29702
29703         * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
29704         * dumpfile.c (dump_register): Use new enum dump_kind.
29705         (get_dump_file_name): Likewise.
29706         (dump_enable_all): Likewise.
29707         (dump_switch_p_1): Likewise.
29708         (enable_rtl_dump_file): Remove usage of TDF_RTL.
29709         * dumpfile.h (enum dump_kind): New enum type.
29710         (struct dump_file_info): Create constructor and
29711         format fields and comments.
29712         * passes.c (pass_manager::register_one_dump_file):
29713         Use num dump_kind.
29714         * statistics.c (statistics_early_init): Likewise.
29715         * tree-ssa-loop-prefetch.c (dump_mem_details): Replace
29716         TDF_TREE with TDF_SLIM.
29717         (gather_memory_references_ref): Likewise.
29718
29719 2017-05-18  Martin Liska  <mliska@suse.cz>
29720
29721         * vec.h (struct vnull): Use it.
29722
29723 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29724
29725         * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
29726         (true_predicate, false_predicate, true_predicate_p,
29727         false_predicate_p): Remove.
29728         (single_cond_predicate, not_inlined_predicate): Turn to member function
29729         in ipa-inline.h
29730         (add_condition): Update.
29731         (add_clause): Turn to...
29732         (predicate::add_clause): ... this one; update; allow passing NULL
29733         as parameter.
29734         (and_predicates): Turn to ...
29735         (predicate::operator &=): ... this one.
29736         (predicates_equal_p): Move to predicate::operator == in ipa-inline.h
29737         (or_predicates): Turn to ...
29738         (predicate::or_with): ... this one.
29739         (evaluate_predicate): Turn to ...
29740         (predicate::evaluate): ... this one.
29741         (predicate_probability): Turn to ...
29742         (predicate::probability): ... this one.
29743         (dump_condition): Update.
29744         (dump_predicate): Turn to ...
29745         (predicate::dump): ... this one.
29746         (account_size_time): Update.
29747         (edge_set_predicate): Update.
29748         (set_hint_predicate): UPdate.
29749         (evaluate_conditions_for_known_args): Update.
29750         (evaluate_properties_for_edge): Update.
29751         (remap_predicate_after_duplication): Turn to...
29752         (predicate::remap_after_duplication): ... this one.
29753         (remap_hint_predicate_after_duplication): Update.
29754         (inline_summary_t::duplicate): UPdate.
29755         (dump_inline_edge_summary): Update.
29756         (dump_inline_summary): Update.
29757         (set_cond_stmt_execution_predicate): Update.
29758         (set_switch_stmt_execution_predicate): Update.
29759         (compute_bb_predicates): Update.
29760         (will_be_nonconstant_expr_predicate): Update.
29761         (will_be_nonconstant_predicate): Update.
29762         (phi_result_unknown_predicate): Update.
29763         (predicate_for_phi_result): Update.
29764         (array_index_predicate): Update.
29765         (estimate_function_body_sizes): Update.
29766         (estimate_node_size_and_time): Update.
29767         (estimate_ipcp_clone_size_and_time): Update.
29768         (remap_predicate): Rename to ...
29769         (predicate::remap_after_inlining): ... this one.
29770         (remap_hint_predicate): Update.
29771         (inline_merge_summary): Update.
29772         (inline_update_overall_summary): Update.
29773         (estimate_size_after_inlining): Update.
29774         (read_predicate): Rename to ...
29775         (predicate::stream_in): ... this one.
29776         (read_inline_edge_summary): Update.
29777         (write_predicate): Rename to ...
29778         (predicate::stream_out): ... this one.
29779         (write_inline_edge_summary): Update.
29780         * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
29781         (clause_t): Turn to uint32_t
29782         (predicate): Turn to class; implement constructor and operators
29783         ==, !=, &
29784         (size_time_entry): Update.
29785         (inline_summary): Update.
29786         (inline_edge_summary): Update.
29787
29788 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
29789
29790         * fold-const.c (fold_binary_loc): Move transformation...
29791         * match.pd (C - X CMP X): ... here.
29792
29793 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
29794
29795         * config/sparc/sparc.c (sparc_option_override): Set function
29796         alignment for -mcpu=niagara7 to 64 to match the I$ line.
29797         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
29798         latency to 1.
29799         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
29800         latency to 2.
29801         * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
29802
29803 2017-05-18  Marek Polacek  <polacek@redhat.com>
29804
29805         PR sanitizer/80797
29806         * ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
29807         (pass_ubsan::execute): Call gimple_assign_single_p instead of
29808         gimple_assign_load_p.
29809
29810 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
29811
29812         PR middle-end/80692
29813         * real.c (do_compare): Give decimal_do_compare preference over
29814         comparing just the signs.
29815
29816 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
29817
29818         * doc/md.texi (Canonicalization of Instructions): Describe the
29819         canonical form of instructions that inherently set a condition
29820         code register.
29821
29822 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
29823
29824         PR middle-end/80775
29825         * tree-cfg.c: Move deletion of unreachable case statements to after
29826         the merging of consecutive case labels.
29827
29828 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29829
29830         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
29831         readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
29832         restoring of callee-saved registers.
29833
29834 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
29835
29836         * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
29837         * config/visium/visium.c (single_set_and_flags): Likewise.
29838         * config/visium/visium.md (Substitutions): Likewise.
29839
29840 2017-05-17  Martin Liska  <mliska@suse.cz>
29841
29842         * cfg.c: Introduce dump_flags_t type and
29843         use it instead of int type.
29844         * cfg.h: Likewise.
29845         * cfghooks.c: Likewise.
29846         * cfghooks.h (struct cfg_hooks): Likewise.
29847         * cfgrtl.c: Likewise.
29848         * cfgrtl.h: Likewise.
29849         * cgraph.c (cgraph_node::get_body): Likewise.
29850         * coretypes.h: Likewise.
29851         * domwalk.c: Likewise.
29852         * domwalk.h: Likewise.
29853         * dumpfile.c (struct dump_option_value_info): Likewise.
29854         (dump_enable_all): Likewise.
29855         (dump_switch_p_1): Likewise.
29856         (opt_info_switch_p): Likewise.
29857         * dumpfile.h (enum tree_dump_index): Likewise.
29858         (struct dump_file_info): Likewise.
29859         * genemit.c: Likewise.
29860         * generic-match-head.c: Likewise.
29861         * gengtype.c (open_base_files): Likewise.
29862         * gimple-pretty-print.c: Likewise.
29863         * gimple-pretty-print.h: Likewise.
29864         * graph.c (print_graph_cfg): Likewise.
29865         * graphite-scop-detection.c (dot_all_sese): Likewise.
29866         * ipa-devirt.c (build_type_inheritance_graph): Likewise.
29867         * loop-unroll.c (report_unroll): Likewise.
29868         * passes.c (pass_manager::register_one_dump_file): Likewise.
29869         * print-tree.c: Likewise.
29870         * statistics.c: Likewise.
29871         * tree-cfg.c: Likewise.
29872         * tree-cfg.h: Likewise.
29873         * tree-dfa.c: Likewise.
29874         * tree-dfa.h: Likewise.
29875         * tree-dump.c (dump_function): Likewise.
29876         * tree-dump.h (struct dump_info): Likewise.
29877         * tree-pretty-print.c: Likewise.
29878         * tree-pretty-print.h: Likewise.
29879         * tree-ssa-live.c: Likewise.
29880         * tree-ssa-live.h: Likewise.
29881         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
29882         * tree-vect-loop.c: Likewise.
29883         * tree-vect-slp.c: Likewise.
29884
29885 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
29886             Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
29887
29888         PR tree-optimization/80457
29889         * tree-vect-stmts.c (vect_model_simple_cost): Model the cost
29890         of all arguments to a statement as scalar_to_vec operations.
29891         (vectorizable_call): Adjust call to vect_model_simple_cost for
29892         new parameter.
29893         (vectorizable_conversion): Likewise.
29894         (vectorizable_assignment): Likewise.
29895         (vectorizable_shift): Likewise.
29896         (vectorizable_operation): Likewise.
29897         (vectorizable_comparison): Likewise.
29898         (vect_is_simple_cond): Record the def types for operands.
29899         (vectorizable_condition): Likewise, call vect_model_simple_cost.
29900         * tree-vectorizer.h (vect_model_simple_cost): Add new parameter
29901         for statement argument count.
29902
29903 2017-05-16  Carl Love  <cel@us.ibm.com>
29904
29905         * config/rs6000/rs6000-c: Add support for built-in functions
29906         vector unsigned long long vec_bperm (vector unsigned long long,
29907                                              vector unsigned char)
29908         vector signed long long vec_mule (vector signed int,
29909                                           vector signed int)
29910         vector unsigned long long vec_mule (vector unsigned int,
29911                                             vector unsigned int)
29912         vector signed long long vec_mulo (vector signed int,
29913                                           vector signed int)
29914         vector unsigned long long vec_mulo (vector unsigned int,
29915                                             vector unsigned int)
29916         vector signed char vec_sldw (vector signed char,
29917                                      vector signed char,
29918                                      const int)
29919         vector unsigned char vec_sldw (vector unsigned char,
29920                                        vector unsigned char,
29921                                        const int)
29922         vector signed short vec_sldw (vector signed short,
29923                                       vector signed short,
29924                                       const int)
29925         vector unsigned short vec_sldw (vector unsigned short,
29926                                         vector unsigned short,
29927                                         const int)
29928         vector signed int vec_sldw (vector signed int,
29929                                     vector signed int,
29930                                     const int)
29931         vector unsigned int vec_sldw (vector unsigned int,
29932                                       vector unsigned int,
29933                                       const int)
29934         vector signed long long vec_sldw (vector signed long long,
29935                                           vector signed long long,
29936                                           const int)
29937         vector unsigned long long vec_sldw (vector unsigned long long,
29938                                             vector unsigned long long,
29939                                             const int)
29940         * config/rs6000/rs6000-c: Add support for built-in functions
29941         * config/rs6000/rs6000-builtin.def: Add definition for SLDW.
29942         * config/rs6000/altivec.h: Add defintion for vec_sldw.
29943         * doc/extend.texi: Update the built-in documentation for the
29944         new built-in functions.
29945
29946 2017-05-16  Marek Polacek  <polacek@redhat.com>
29947
29948         PR sanitizer/80536
29949         PR sanitizer/80386
29950         * tree.c (save_expr): Don't fold the expression.
29951
29952 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
29953
29954         * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
29955         to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
29956         and (?*y,m).  Update insn attributes.
29957
29958 2017-05-16  Martin Liska  <mliska@suse.cz>
29959
29960         * cgraph.c (cgraph_edge::resolve_speculation): Add default value for
29961         flags argument of print_gimple_stmt, print_gimple_expr,
29962         print_generic_stmt and print_generic_expr.
29963         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
29964         * coretypes.h: Likewise.
29965         * except.c (dump_eh_tree): Likewise.
29966         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
29967         * gimple-pretty-print.h: Likewise.
29968         * gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
29969         (backprop::push_to_worklist): Likewise.
29970         (backprop::pop_from_worklist): Likewise.
29971         (backprop::process_use): Likewise.
29972         (backprop::intersect_uses): Likewise.
29973         (note_replacement): Likewise.
29974         * gimple-ssa-store-merging.c
29975         (pass_store_merging::terminate_all_aliasing_chains): Likewise.
29976         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
29977         (pass_store_merging::execute): Likewise.
29978         * gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
29979         (ssa_base_cand_dump_callback): Likewise.
29980         (dump_incr_vec): Likewise.
29981         (replace_refs): Likewise.
29982         (replace_mult_candidate): Likewise.
29983         (create_add_on_incoming_edge): Likewise.
29984         (create_phi_basis): Likewise.
29985         (insert_initializers): Likewise.
29986         (all_phi_incrs_profitable): Likewise.
29987         (introduce_cast_before_cand): Likewise.
29988         (replace_one_candidate): Likewise.
29989         * gimplify.c (gimplify_expr): Likewise.
29990         * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
29991         (set_rename): Likewise.
29992         (rename_uses): Likewise.
29993         (copy_loop_phi_nodes): Likewise.
29994         (add_close_phis_to_merge_points): Likewise.
29995         (copy_loop_close_phi_args): Likewise.
29996         (copy_cond_phi_args): Likewise.
29997         (graphite_copy_stmts_from_block): Likewise.
29998         (translate_pending_phi_nodes): Likewise.
29999         * graphite-poly.c (print_pdr): Likewise.
30000         (dump_gbb_cases): Likewise.
30001         (dump_gbb_conditions): Likewise.
30002         (print_scop_params): Likewise.
30003         * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
30004         (build_cross_bb_scalars_use): Likewise.
30005         (gather_bbs::before_dom_children): Likewise.
30006         * hsa-dump.c (dump_hsa_immed): Likewise.
30007         * ipa-cp.c (print_ipcp_constant_value): Likewise.
30008         (get_replacement_map): Likewise.
30009         * ipa-inline-analysis.c (dump_condition): Likewise.
30010         (estimate_function_body_sizes): Likewise.
30011         * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
30012         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
30013         * ipa-prop.c (ipa_dump_param): Likewise.
30014         (ipa_print_node_jump_functions_for_edge): Likewise.
30015         (ipa_modify_call_arguments): Likewise.
30016         (ipa_modify_expr): Likewise.
30017         (ipa_dump_param_adjustments): Likewise.
30018         (ipa_dump_agg_replacement_values): Likewise.
30019         (ipcp_modif_dom_walker::before_dom_children): Likewise.
30020         * ipa-pure-const.c (check_stmt): Likewise.
30021         (pass_nothrow::execute): Likewise.
30022         * ipa-split.c (execute_split_functions): Likewise.
30023         * omp-offload.c (dump_oacc_loop_part): Likewise.
30024         (dump_oacc_loop): Likewise.
30025         * trans-mem.c (tm_log_emit): Likewise.
30026         (tm_memopt_accumulate_memops): Likewise.
30027         (dump_tm_memopt_set): Likewise.
30028         (dump_tm_memopt_transform): Likewise.
30029         * tree-cfg.c (gimple_verify_flow_info): Likewise.
30030         (print_loop): Likewise.
30031         * tree-chkp-opt.c (chkp_print_addr): Likewise.
30032         (chkp_gather_checks_info): Likewise.
30033         (chkp_get_check_result): Likewise.
30034         (chkp_remove_check_if_pass): Likewise.
30035         (chkp_use_outer_bounds_if_possible): Likewise.
30036         (chkp_reduce_bounds_lifetime): Likewise.
30037         * tree-chkp.c (chkp_register_addr_bounds): Likewise.
30038         (chkp_mark_completed_bounds): Likewise.
30039         (chkp_register_incomplete_bounds): Likewise.
30040         (chkp_mark_invalid_bounds): Likewise.
30041         (chkp_maybe_copy_and_register_bounds): Likewise.
30042         (chkp_build_returned_bound): Likewise.
30043         (chkp_get_bound_for_parm): Likewise.
30044         (chkp_build_bndldx): Likewise.
30045         (chkp_get_bounds_by_definition): Likewise.
30046         (chkp_generate_extern_var_bounds): Likewise.
30047         (chkp_get_bounds_for_decl_addr): Likewise.
30048         * tree-chrec.c (chrec_apply): Likewise.
30049         * tree-data-ref.c (dump_data_reference): Likewise.
30050         (dump_subscript): Likewise.
30051         (dump_data_dependence_relation): Likewise.
30052         (analyze_overlapping_iterations): Likewise.
30053         * tree-inline.c (expand_call_inline): Likewise.
30054         (tree_function_versioning): Likewise.
30055         * tree-into-ssa.c (dump_defs_stack): Likewise.
30056         (dump_currdefs): Likewise.
30057         (dump_names_replaced_by): Likewise.
30058         (dump_update_ssa): Likewise.
30059         (update_ssa): Likewise.
30060         * tree-object-size.c (pass_object_sizes::execute): Likewise.
30061         * tree-parloops.c (build_new_reduction): Likewise.
30062         (try_create_reduction_list): Likewise.
30063         (ref_conflicts_with_region): Likewise.
30064         (oacc_entry_exit_ok_1): Likewise.
30065         (oacc_entry_exit_single_gang): Likewise.
30066         * tree-pretty-print.h: Likewise.
30067         * tree-scalar-evolution.c (set_scalar_evolution): Likewise.
30068         (get_scalar_evolution): Likewise.
30069         (add_to_evolution): Likewise.
30070         (get_loop_exit_condition): Likewise.
30071         (analyze_evolution_in_loop): Likewise.
30072         (analyze_initial_condition): Likewise.
30073         (analyze_scalar_evolution): Likewise.
30074         (instantiate_scev): Likewise.
30075         (number_of_latch_executions): Likewise.
30076         (gather_chrec_stats): Likewise.
30077         (final_value_replacement_loop): Likewise.
30078         (scev_const_prop): Likewise.
30079         * tree-sra.c (dump_access): Likewise.
30080         (disqualify_candidate): Likewise.
30081         (create_access): Likewise.
30082         (reject): Likewise.
30083         (maybe_add_sra_candidate): Likewise.
30084         (create_access_replacement): Likewise.
30085         (analyze_access_subtree): Likewise.
30086         (analyze_all_variable_accesses): Likewise.
30087         (sra_modify_assign): Likewise.
30088         (initialize_constant_pool_replacements): Likewise.
30089         (find_param_candidates): Likewise.
30090         (decide_one_param_reduction): Likewise.
30091         (replace_removed_params_ssa_names): Likewise.
30092         * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
30093         * tree-ssa-copy.c (dump_copy_of): Likewise.
30094         (copy_prop_visit_cond_stmt): Likewise.
30095         * tree-ssa-dce.c (mark_operand_necessary): Likewise.
30096         * tree-ssa-dom.c (pass_dominator::execute): Likewise.
30097         (record_equivalences_from_stmt): Likewise.
30098         * tree-ssa-dse.c (compute_trims): Likewise.
30099         (delete_dead_call): Likewise.
30100         (delete_dead_assignment): Likewise.
30101         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
30102         (forward_propagate_into_cond): Likewise.
30103         (pass_forwprop::execute): Likewise.
30104         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
30105         * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
30106         Likewise.
30107         (move_computations_worker): Likewise.
30108         (execute_sm): Likewise.
30109         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
30110         (remove_exits_and_undefined_stmts): Likewise.
30111         (remove_redundant_iv_tests): Likewise.
30112         * tree-ssa-loop-ivopts.c (dump_use): Likewise.
30113         (adjust_iv_update_pos): Likewise.
30114         * tree-ssa-math-opts.c (bswap_replace): Likewise.
30115         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
30116         (value_replacement): Likewise.
30117         * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
30118         * tree-ssa-pre.c (print_pre_expr): Likewise.
30119         (get_representative_for): Likewise.
30120         (create_expression_by_pieces): Likewise.
30121         (insert_into_preds_of_block): Likewise.
30122         (eliminate_insert): Likewise.
30123         (eliminate_dom_walker::before_dom_children): Likewise.
30124         (eliminate): Likewise.
30125         (remove_dead_inserted_code): Likewise.
30126         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
30127         * tree-ssa-reassoc.c (get_rank): Likewise.
30128         (eliminate_duplicate_pair): Likewise.
30129         (eliminate_plus_minus_pair): Likewise.
30130         (eliminate_not_pairs): Likewise.
30131         (undistribute_ops_list): Likewise.
30132         (eliminate_redundant_comparison): Likewise.
30133         (update_range_test): Likewise.
30134         (optimize_range_tests_var_bound): Likewise.
30135         (optimize_vec_cond_expr): Likewise.
30136         (rewrite_expr_tree): Likewise.
30137         (rewrite_expr_tree_parallel): Likewise.
30138         (linearize_expr): Likewise.
30139         (break_up_subtract): Likewise.
30140         (linearize_expr_tree): Likewise.
30141         (attempt_builtin_powi): Likewise.
30142         (attempt_builtin_copysign): Likewise.
30143         (transform_stmt_to_copy): Likewise.
30144         (transform_stmt_to_multiply): Likewise.
30145         (dump_ops_vector): Likewise.
30146         * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
30147         (print_scc): Likewise.
30148         (set_ssa_val_to): Likewise.
30149         (visit_reference_op_store): Likewise.
30150         (visit_use): Likewise.
30151         (sccvn_dom_walker::before_dom_children): Likewise.
30152         (run_scc_vn): Likewise.
30153         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
30154         Likewise.
30155         (expr_hash_elt::print): Likewise.
30156         (const_and_copies::pop_to_marker): Likewise.
30157         (const_and_copies::record_const_or_copy_raw): Likewise.
30158         * tree-ssa-structalias.c (compute_dependence_clique): Likewise.
30159         * tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
30160         (dump_predicates): Likewise.
30161         (find_uninit_use): Likewise.
30162         (warn_uninitialized_phi): Likewise.
30163         (pass_late_warn_uninitialized::execute): Likewise.
30164         * tree-ssa.c (verify_vssa): Likewise.
30165         (verify_ssa): Likewise.
30166         (maybe_optimize_var): Likewise.
30167         * tree-vrp.c (dump_value_range): Likewise.
30168         (dump_all_value_ranges): Likewise.
30169         (dump_asserts_for): Likewise.
30170         (register_edge_assert_for_2): Likewise.
30171         (vrp_visit_cond_stmt): Likewise.
30172         (vrp_visit_switch_stmt): Likewise.
30173         (vrp_visit_stmt): Likewise.
30174         (vrp_visit_phi_node): Likewise.
30175         (simplify_cond_using_ranges_1): Likewise.
30176         (fold_predicate_in): Likewise.
30177         (evrp_dom_walker::before_dom_children): Likewise.
30178         (evrp_dom_walker::push_value_range): Likewise.
30179         (evrp_dom_walker::pop_value_range): Likewise.
30180         (execute_early_vrp): Likewise.
30181
30182 2017-05-16  Richard Biener  <rguenther@suse.de>
30183
30184         * dwarf2out.c (loc_list_from_tree_1): Do not create
30185         DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
30186
30187 2017-05-16  Richard Biener  <rguenther@suse.de>
30188
30189         * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
30190         just generated.
30191         (note_variable_value_in_expr): If we resolved the decl ref
30192         do not push to the stack.
30193
30194 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
30195
30196         * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
30197         operations in fast-math mode.
30198         (vaddq_f16): Likewise.
30199         (vmul_f16): Likewise.
30200         (vmulq_f16): Likewise.
30201         (vsub_f16): Likewise.
30202         (vsubq_f16): Likewise.
30203         * config/arm/neon.md (add<mode>3): New.
30204         (sub<mode>3): New.
30205         (fma:<VH:mode>3): New.  Also remove outdated comment.
30206         (mul<mode>3): New.
30207
30208 2017-05-16  Martin Liska  <mliska@suse.cz>
30209
30210         PR ipa/79849.
30211         PR ipa/79850.
30212         * ipa-devirt.c (warn_types_mismatch): Fix typo.
30213         (odr_types_equivalent_p): Likewise.
30214
30215 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
30216
30217         * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
30218
30219 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
30220
30221         PR target/80425
30222         * config/i386.i386.md (*zero_extendsidi2): Do not penalize
30223         non-interunit SSE move alternatives with '?'.
30224         (zero-extendsidi peephole2): New peephole to skip intermediate
30225         general register in SSE zero-extend sequence.
30226
30227 2017-05-15  Jeff Law  <law@redhat.com>
30228
30229         * reorg.c (relax_delay_slots): Create a new variable to hold
30230         the temporary target rather than clobbering TARGET_LABEL.
30231
30232         * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
30233         missing argument to extract_bit_field call.
30234         * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
30235
30236 2017-05-15  Martin Liska  <mliska@suse.cz>
30237
30238         PR driver/31468
30239         * gcc.c (process_command): Do not allow empty argument of -o option.
30240
30241 2017-05-15  Renlin Li  <renlin.li@arm.com>
30242
30243         * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
30244         * config/aarch64/aarch64.c (aarch64_expand_call): Define.
30245         * config/aarch64/constraints.md (Usf): Add long call check.
30246         * config/aarch64/aarch64.md (call): Use aarch64_expand_call.
30247         (call_value): Likewise.
30248         (sibcall): Likewise.
30249         (sibcall_value): Likewise.
30250         (call_insn): New.
30251         (call_value_insn): New.
30252         (sibcall_insn): Update rtx pattern.
30253         (sibcall_value_insn): Likewise.
30254         (call_internal): Remove.
30255         (call_value_internal): Likewise.
30256         (sibcall_internal): Likewise.
30257         (sibcall_value_internal): Likewise.
30258         (call_reg): Likewise.
30259         (call_symbol): Likewise.
30260         (call_value_reg): Likewise.
30261         (call_value_symbol): Likewise.
30262
30263 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
30264
30265         PR target/80600
30266         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
30267
30268 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
30269
30270         * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
30271         compatible with CCGOCmode and with CCZmode.
30272
30273 2017-05-14  Martin Sebor  <msebor@redhat.com>
30274
30275         PR middle-end/77671
30276         * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
30277         (gimple_fold_builtin_snprintf): Same.
30278         * gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
30279         (gimple_fold_builtin_snprintf): Same.
30280         * gimple-ssa-sprintf.c (get_format_string): Correct the detection
30281         of character types.
30282         (is_call_safe): New function.
30283         (try_substitute_return_value): Call it.
30284         (try_simplify_call): New function.
30285         (pass_sprintf_length::handle_gimple_call): Call it.
30286
30287 2017-05-14  Martin Sebor  <msebor@redhat.com>
30288
30289         PR middle-end/80669
30290         * builtins.c (expand_builtin_stpncpy): Simplify.
30291
30292 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
30293
30294         * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
30295         * config/i386/i386.h
30296         (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
30297         (NUM_X86_64_MS_CLOBBERED_REGS): New macro.
30298         (struct machine_function): Add new members call_ms2sysv,
30299         call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
30300         (struct machine_frame_state): New fields sp_realigned and
30301         sp_realigned_offset.
30302         * config/i386/i386.c
30303         (enum xlogue_stub): New enum.
30304         (enum xlogue_stub_sets): New enum.
30305         (class xlogue_layout): New class.
30306         (struct ix86_frame): New fields stack_realign_allocate_offset,
30307         stack_realign_offset and outlined_save_offset.  Modify comments to
30308         detail stack layout when using out-of-line stubs.
30309         (ix86_target_string): Add -mcall-ms2sysv-xlogues option.
30310         (ix86_option_override_internal): Add sorry() for TARGET_SEH and
30311         -mcall-ms2sysv-xlogues.
30312         (stub_managed_regs): New static variable.
30313         (ix86_save_reg): Add new parameter ignore_outlined to optionally omit
30314         registers managed by out-of-line stub.
30315         (disable_call_ms2sysv_xlogues): New function.
30316         (ix86_compute_frame_layout): Modify re-alignment calculations, disable
30317         m->call_ms2sysv when appropriate and compute frame layout for
30318         out-of-line stubs.
30319         (sp_valid_at, fp_valid_at): New inline functions.
30320         (choose_basereg): New function.
30321         (choose_baseaddr): Add align parameter, use choose_basereg and modify
30322         all callers.
30323         (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
30324         Use align parameter of choose_baseaddr to generated aligned SSE movs
30325         when possible.
30326         (pro_epilogue_adjust_stack): Modify to track
30327         machine_frame_state::sp_realigned.
30328         (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
30329         (ix86_nsaved_sseregs): Likewise.
30330         (ix86_emit_save_regs): Likewise.
30331         (ix86_emit_save_regs_using_mov): Likewise.
30332         (ix86_emit_save_sse_regs_using_mov): Likewise.
30333         (get_scratch_register_on_entry): Likewise.
30334         (gen_frame_set): New function.
30335         (gen_frame_load): Likewise.
30336         (gen_frame_store): Likewise.
30337         (emit_outlined_ms2sysv_save): Likewise.
30338         (emit_outlined_ms2sysv_restore): Likewise.
30339         (ix86_expand_prologue): Modify stack re-alignment code and call
30340         emit_outlined_ms2sysv_save when appropriate.
30341         (ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
30342         parameter rtx_insn *insn, which allows the function to be used to only
30343         generate the notes.
30344         (ix86_expand_epilogue): Modify validity checks of frame and stack
30345         pointers, and call emit_outlined_ms2sysv_restore when appropriate.
30346         (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
30347         * config/i386/predicates.md
30348         (save_multiple): New predicate.
30349         (restore_multiple): Likewise.
30350         * config/i386/sse.md
30351         (save_multiple<mode>): New pattern.
30352         (save_multiple_realign<mode>): Likewise.
30353         (restore_multiple<mode>): Likewise.
30354         (restore_multiple_and_return<mode>): Likewise.
30355         (restore_multiple_leave_return<mode>): Likewise.
30356         * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
30357
30358 2017-05-14  Julia Koval  <julia.koval@intel.com>
30359
30360         * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
30361         * config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
30362         (__builtin_ia32_xsetbv): New builtins.
30363         * config/i386/i386.c (ix86_expand_special_args_builtin):
30364         Process new types.
30365         (ix86_expand_builtin): Special expand for new intrinsics.
30366         * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
30367         (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
30368         * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
30369
30370 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30371
30372         * cfganal.c (inverted_post_order_compute): Change argument type
30373         to vec *.
30374         * cfganal.h (inverted_post_order_compute): Adjust prototype.
30375         * df-core.c (rest_of_handle_df_initialize): Adjust.
30376         (rest_of_handle_df_finish): Likewise.
30377         (df_analyze_1): Likewise.
30378         (df_analyze): Likewise.
30379         (loop_inverted_post_order_compute): Change argument to be a vec *.
30380         (df_analyze_loop): Adjust.
30381         (df_get_n_blocks): Likewise.
30382         (df_get_postorder): Likewise.
30383         * df.h (struct df_d): Change field to be a vec.
30384         * lcm.c (compute_laterin): Adjust.
30385         (compute_available): Likewise.
30386         * lra-lives.c (lra_create_live_ranges_1): Likewise.
30387         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
30388         * tree-ssa-pre.c (compute_antic): Likewise.
30389
30390 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30391
30392         * cfganal.c (connect_infinite_loops_to_exit): Adjust.
30393         (depth_first_search::depth_first_search): Change structure init
30394         function to this constructor.
30395         (depth_first_search::add_bb): Rename function to this member.
30396         (depth_first_search::execute): Likewise.
30397         (flow_dfs_compute_reverse_finish): Adjust.
30398
30399 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30400
30401         * ddg.c (find_nodes_on_paths): Use auto_sbitmap.
30402         (longest_simple_path): Likewise.
30403         * shrink-wrap.c (spread_components): Likewise.
30404         (disqualify_problematic_components): Likewise.
30405         (emit_common_heads_for_components): Likewise.
30406         (emit_common_tails_for_components): Likewise.
30407         (insert_prologue_epilogue_for_components): Likewise.
30408
30409 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30410
30411         * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
30412         auto_sbitmap.
30413
30414 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30415
30416         * df-core.c (df_set_blocks): Start using auto_bitmap.
30417         (df_compact_blocks): Likewise.
30418         * df-problems.c (df_rd_confluence_n): Likewise.
30419         * df-scan.c (df_insn_rescan_all): Likewise.
30420         (df_process_deferred_rescans): Likewise.
30421         (df_update_entry_block_defs): Likewise.
30422         (df_update_exit_block_uses): Likewise.
30423         (df_entry_block_bitmap_verify): Likewise.
30424         (df_exit_block_bitmap_verify): Likewise.
30425         (df_scan_verify): Likewise.
30426         * lra-constraints.c (lra_constraints): Likewise.
30427         (undo_optional_reloads): Likewise.
30428         (lra_undo_inheritance): Likewise.
30429         * lra-remat.c (calculate_gen_cands): Likewise.
30430         (do_remat): Likewise.
30431         * lra-spills.c (assign_spill_hard_regs): Likewise.
30432         (spill_pseudos): Likewise.
30433         * tree-ssa-pre.c (bitmap_set_and): Likewise.
30434         (bitmap_set_subtract_values): Likewise.
30435
30436 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30437
30438         * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
30439         management with auto_bitmap.
30440         (fix_inter_tick): Likewise.
30441         (fix_recovery_deps): Likewise.
30442         * ira.c (add_store_equivs): Likewise.
30443         (find_moveable_pseudos): Likewise.
30444         (split_live_ranges_for_shrink_wrap): Likewise.
30445         * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
30446         (rtx_reuse_manager::seen_def_p): Likewise.
30447         (rtx_reuse_manager::set_seen_def): Likewise.
30448         * print-rtl.h (class rtx_reuse_manager): Likewise.
30449
30450 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30451
30452         * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
30453         lifetime.
30454         (migrate_btr_def): Likewise.
30455         * cfgloop.c (get_loop_body_in_bfs_order): Likewise.
30456         * df-core.c (loop_post_order_compute): Likewise.
30457         (loop_inverted_post_order_compute): Likewise.
30458         * hsa-common.h: Likewise.
30459         * hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
30460         * init-regs.c (initialize_uninitialized_regs): Likewise.
30461         * ipa-inline.c (resolve_noninline_speculation): Likewise.
30462         (inline_small_functions): Likewise.
30463         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
30464         * ira.c (combine_and_move_insns): Likewise.
30465         (build_insn_chain): Likewise.
30466         * loop-invariant.c (find_invariants): Likewise.
30467         * lower-subreg.c (propagate_pseudo_copies): Likewise.
30468         * predict.c (tree_predict_by_opcode): Likewise.
30469         (predict_paths_leading_to): Likewise.
30470         (predict_paths_leading_to_edge): Likewise.
30471         (estimate_loops_at_level): Likewise.
30472         (estimate_loops): Likewise.
30473         * shrink-wrap.c (try_shrink_wrapping): Likewise.
30474         (spread_components): Likewise.
30475         * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
30476         * tree-loop-distribution.c (rdg_build_partitions): Likewise.
30477         * tree-predcom.c (tree_predictive_commoning_loop): Likewise.
30478         * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
30479         * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
30480         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
30481         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
30482         * tree-ssa-threadupdate.c (compute_path_counts): Likewise.
30483         (mark_threaded_blocks): Likewise.
30484         (thread_through_all_blocks): Likewise.
30485         * tree-ssa.c (verify_ssa): Likewise.
30486         (execute_update_addresses_taken): Likewise.
30487         * tree-ssanames.c (verify_ssaname_freelists): Likewise.
30488
30489 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30490
30491         * cfganal.c (mark_dfs_back_edges): Replace manual stack with
30492         auto_vec.
30493         (post_order_compute): Likewise.
30494         (inverted_post_order_compute): Likewise.
30495         (pre_and_rev_post_order_compute_fn): Likewise.
30496
30497 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30498
30499         * genrecog.c (int_set::int_set): Explicitly construct our
30500         auto_vec base class.
30501         * vec.h (auto_vec::auto_vec): New constructor.
30502
30503 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30504
30505         * bitmap.h (class auto_bitmap): New constructor taking
30506         bitmap_obstack * argument.
30507
30508 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30509
30510         * bitmap.h (class auto_bitmap): Change type of m_bits to
30511         bitmap_head, and adjust ctor / dtor and member operators.
30512
30513 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
30514
30515         * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
30516         when returned register mode doesn't match original mode.
30517
30518 2017-05-12  Jeff Law  <law@redhat.com>
30519             Jakub Jelinek  <jakub@redhat.com>
30520
30521         * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
30522         we look for cc setter after the compare-elim changes.
30523         * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
30524         within the vector to match what compare-elim now expects.
30525         (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
30526         (xorsi3_flags, one_cmplsi2_flags): Likewise.
30527
30528         * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
30529         after the compare-elim changes.
30530         * config/rx/rx.md (abssi2_flags): Fix order of patterns within
30531         the vector to match what compare-elim now expects.
30532         (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
30533         (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
30534         (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
30535         (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
30536         (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
30537
30538         * config/visium/visium.c (single_set_and_flags): Fix where
30539         we look for cc setter after the compare-elim changes.
30540         * config/visium/visium.md (flags_subst_logic): Fix order of patterns
30541         with the vector to match what compare-elim now expects.
30542         (flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
30543         (add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
30544         (addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
30545         (sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
30546         (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
30547         (neg<mode>2_insn_set_overflow): Likewise.
30548
30549 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
30550
30551         PR middle-end/79794
30552         * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
30553         maybe_expand_insn call, set ops[0].target.  If still set after call,
30554         set alt_rtl.  Add extra arg to recursive calls.
30555         (extract_bit_field): Add alt_rtl argument.  Pass to
30556         extract_bit_field.
30557         * expmed.h (extract_bit_field): Fix prototype.
30558         * expr.c (emit_group_load_1, copy_blkmode_from_reg)
30559         (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
30560         to extract_bit_field_calls.
30561         (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
30562         Pass alt_rtl to extract_bit_field calls.
30563         * calls.c (store_unaligned_arguments_into_psuedos)
30564         load_register_parameters): Pass extra NULL to extract_bit_field calls.
30565         * optabs.c (maybe_legitimize_operand): Clear op->target when call
30566         gen_reg_rtx.
30567         * optabs.h (struct expand_operand): Add target bitfield.
30568
30569 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
30570
30571         * compare-elim.c (try_eliminate_compare): Canonicalize
30572         operation with embedded compare to
30573         [(set (reg:CCM) (compare:CCM (operation) (immediate)))
30574          (set (reg) (operation)].
30575
30576         * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
30577
30578 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
30579
30580         PR target/80723
30581         * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
30582         cost of adding a carry flag for ADC instruction.
30583         [case MINUS]: Ignore the cost of subtracting a carry flag
30584         for SBB instruction.
30585
30586 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
30587
30588         * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
30589         and x86intrin.h
30590         * config/rs6000/bmiintrin.h: New file.
30591         * config/rs6000/bmi2intrin.h: New file.
30592         * config/rs6000/x86intrin.h: New file.
30593
30594 2017-05-12  Jeff Law  <law@redhat.com>
30595
30596         * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
30597         markers.
30598
30599 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
30600
30601         PR middle-end/80707
30602         * tree-cfg.c: Remove cfg edges of unreachable case statements.
30603
30604 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30605
30606         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
30607         early expansion of vector divide builtins.
30608         (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
30609         builtins identified as having unsigned arguments.
30610
30611 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30612
30613         * config/rs6000/rs6000.c (gimple-fold.h): New #include.
30614         (rs6000_gimple_fold_builtin): Add handling for early GIMPLE
30615         expansion of vector logical operations (and, andc, or, xor,
30616         nor, orc, nand).
30617
30618 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30619
30620         * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
30621         * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
30622
30623 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
30624
30625         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
30626         early GIMPLE expansion of vector multiplies.
30627
30628 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
30629
30630         * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
30631         TARGET_HAVE_MOVT conditional.
30632         (movt splitter): Likewise.
30633
30634 2017-05-12  Richard Biener  <rguenther@suse.de>
30635
30636         * tree-ssa-sccvn.h (has_VN_INFO): Declare.
30637         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
30638         Fold all stmts not inplace.
30639
30640 2017-05-12  Richard Biener  <rguenther@suse.de>
30641
30642         PR tree-optimization/80713
30643         * tree-ssa-pre.c (remove_dead_inserted_code): Clear
30644         inserted_exprs bit for not removed stmts.
30645
30646 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
30647
30648         PR middle-end/69921
30649         * tree-parloops.c (create_parallel_loop): Set "oacc kernels
30650         parallelized" attribute for parallelized OpenACC kernels.
30651         * omp-offload.c (execute_oacc_device_lower): Use it.
30652
30653         * omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
30654         Set "oacc kernels" attribute.
30655         * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
30656         parameter.  Adjust all users.
30657         (oacc_fn_attrib_kernels_p): Remove function.
30658         * omp-offload.c (execute_oacc_device_lower): Look for "oacc
30659         kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
30660         * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
30661         * tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
30662         assert "oacc kernels" attribute is set.
30663
30664 2017-05-11  Carl Love  <cel@us.ibm.com>
30665
30666         * config/rs6000/rs6000-c: Add support for built-in functions
30667         vector unsigned char vec_popcnt (vector signed char)
30668         vector unsigned char vec_popcnt (vector unsigned char)
30669         vector unsigned short vec_popcnt (vector signed short)
30670         vector unsigned short vec_popcnt (vector unsigned short)
30671         vector unsigned int vec_popcnt (vector signed int)
30672         vector unsigned int vec_popcnt (vector unsigned int)
30673         vector unsigned long long vec_popcnt (vector signed long long)
30674         vector unsigned long long vec_popcnt (vector unsigned long long)
30675         vector signed long long vec_slo (vector signed long long,
30676                                          vector signed char)
30677         vector signed long long vec_slo (vector signed long long,
30678                                          vector unsigned char)
30679         vector unsigned long long vec_slo (vector unsigned long long,
30680                                            vector signed char)
30681         vector unsigned long long vec_slo (vector unsigned long long,
30682                                            vector unsigned char)
30683         * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
30684         VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
30685         * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
30686         vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
30687         * doc/extend.texi: Update the built-in documentation file for the
30688         new built-in functions.
30689
30690 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
30691
30692         * attribs.h (sorted_attr_string): Move machine independent
30693         functions for target clone support from the i386 port to common
30694         code.  Rename ix86_function_versions to common_function_versions.
30695         Rename make_name to make_unique_name.
30696         (common_function_versions): Likewise.
30697         (make_unique_name): Likewise.
30698         (make_dispatcher_decl): Likewise.
30699         (is_function_default_version): Likewise.
30700         * attribs.c (attr_strcmp): Likewise.
30701         (sorted_attr_string): Likewise.
30702         (common_function_versions): Likewise.
30703         (make_unique_name): Likewise.
30704         (make_dispatcher_decl): Likewise.
30705         (is_function_default_version): Likewise.
30706         * config/i386/i386.c (attr_strcmp): Likewise.
30707         (sorted_attr_string): Likewise.
30708         (ix86_function_versions): Likewise.
30709         (make_name): Likewise.
30710         (make_dispatcher_decl): Likewise.
30711         (is_function_default_version): Likewise.
30712         (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
30713
30714 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30715
30716         PR target/80695
30717         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
30718         Account for direct move costs for vec_construct of integer
30719         vectors.
30720
30721 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
30722
30723         PR target/80706
30724         * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
30725         (UNSPEC_STX_ATOMIC): Ditto.
30726         (loaddi_via_sse): New insn.
30727         (storedi_via_sse): Ditto.
30728         (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
30729         Update corresponding peephole2 patterns.
30730         (atomic_storedi_fpu): Ditto.
30731
30732 2017-05-11  Julia Koval  <julia.koval@intel.com>
30733
30734         * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
30735         (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
30736         New intrinsics.
30737         * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
30738         (__builtin_ia32_rsqrt14ss_mask): New builtins.
30739         * config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
30740
30741 2017-05-11  Nathan Sidwell  <nathan@acm.org>
30742
30743         * graphite-poly.c: Include dumpfile.h.
30744
30745         * dumpfle.h (dump_function): Declare here ...
30746         * tree-dump.h (dump_function): ... not here.
30747         * dumpfile.c: #include tree-cfg.h.
30748         (dump_function): Move here from ...
30749         * tree-dump.c (dump_function): ... here.
30750         * gimplify.c: #include splay-tree.h, not tree-dump.h.
30751         * graphite-poly.c: Don't include tree-dump.h.
30752         * cgraphclones.c: Include dumpfile.h not tree-dump.h.
30753         * print-tree.c: Likewise.
30754         * stor-layout.c: Likewise.
30755         * tree-nested.c: Likewise.
30756
30757         * dumpfile.c (dump_start): Use TDF_FLAGS.
30758         (dump_enable_all): Fix TDF_KIND check thinko.
30759
30760 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
30761
30762         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
30763         array entries to represent two legal parameterizations of the
30764         overloaded __builtin_cmpb function, as represented by the
30765         P6_OV_BUILTIN_CMPB constant.
30766         (altivec_resolve_overloaded_builtin): Add special case handling
30767         for the __builtin_cmpb function, as represented by the
30768         P6_OV_BUILTIN_CMPB constant.
30769         * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
30770         (BU_P6_64BIT_2): New macro.
30771         (BU_P6_OVERLOAD_2): New macro
30772         (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
30773         (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
30774         (CMPB): Add overload support to represent both 32-bit and 64-bit
30775         compare-bytes function.
30776         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
30777         support for TARGET_CMPB.
30778         * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
30779         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
30780         documentation of the __builtin_cmpb overloaded built-in function.
30781
30782 2017-05-11  Richard Biener  <rguenther@suse.de>
30783
30784         PR tree-optimization/80705
30785         * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
30786         bases are not vectorizable.
30787
30788 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30789
30790         * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
30791         when counting register pressure.
30792
30793 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30794
30795         * tree-ssa-loop-ivopts.c (compare_cost_pair): New.
30796         (iv_ca_more_deps): Renamed to ...
30797         (iv_ca_compare_deps): ... this.
30798         (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
30799
30800 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30801
30802         * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
30803         to ...
30804         (determine_group_iv_costs): ... here.
30805         (find_inv_vars_cb): Record inv var if it's not recorded before.
30806
30807 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30808
30809         * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
30810         (get_shiftadd_cost): Ditto.
30811
30812 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30813
30814         * tree-ssa-address.c: Include header file.
30815         (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
30816         address.
30817         (add_to_parts): Refactor.
30818         (addr_to_parts): New parameter.  Update use of move_hint_to_base.
30819         (create_mem_ref): Update use of addr_to_parts.  Re-associate addr
30820         in new order.
30821
30822 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30823
30824         PR tree-optimization/53090
30825         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
30826         COMP_IV_EXPR_2.
30827         (extract_cond_operands): Detect condition with IV on both sides
30828         and return COMP_IV_EXPR_2.
30829         (find_interesting_uses_cond): Add iv_use for both IVs in condition.
30830         (rewrite_use_compare): Simplify by removing call to function
30831         extract_cond_operands.
30832
30833 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30834
30835         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
30836         (extract_cond_operands): Detect condition comparing against non-
30837         invariant bound and return appropriate enum value.
30838         (find_interesting_uses_cond): Update use of extract_cond_operands.
30839         Handle its return value accordingly.
30840         (determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
30841
30842 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30843
30844         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
30845         nonlinear iv_use computation in loop invariant sensitive way.
30846
30847 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30848
30849         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
30850         (find_iv_candidates): Call relate_compare_use_with_all_cands.
30851
30852 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30853
30854         * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
30855         (dump_cand): Support iv_cand.inv_exprs.
30856         (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
30857         for candidates.
30858         (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
30859         iv_cand.inv_exprs.
30860
30861 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30862
30863         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
30864         from ...
30865         * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
30866         as local function.  Include necessary header files.
30867         * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
30868
30869 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30870
30871         * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
30872
30873 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30874
30875         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
30876         operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
30877         RSHIFT_EXPR and BIT_NOT_EXPR.
30878
30879 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30880
30881         * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
30882         (adjust_setup_cost): New parameter supporting round up adjustment.
30883         (struct address_cost_data): Delete.
30884         (force_expr_to_var_cost): Don't bound cost with spill_cost.
30885         (split_address_cost, ptr_difference_cost): Delete.
30886         (difference_cost, compare_aff_trees, record_inv_expr): Delete.
30887         (struct ainc_cost_data): New struct.
30888         (get_address_cost_ainc): New function.
30889         (get_address_cost, get_computation_cost): Reimplement.
30890         (determine_group_iv_cost_address): Record inv_expr for all uses of
30891         a group.
30892         (determine_group_iv_cost_cond): Call get_loop_invariant_expr.
30893         (iv_ca_has_deps): Reimplemented to ...
30894         (iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
30895         than OLD_CP.
30896         (iv_ca_extend): Call iv_ca_more_deps.
30897
30898 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30899
30900         * tree-ssa-address.c (struct mem_address): Move to header file.
30901         (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
30902         * tree-ssa-address.h (struct mem_address): Move from C file.
30903         (valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
30904
30905 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30906
30907         * tree-affine.h (aff_combination_type): New interface.
30908         (aff_combination_zero_p): Remove static.
30909         (aff_combination_const_p): New interface.
30910         (aff_combination_singleton_var_p): New interfaces.
30911
30912 2017-05-11  Richard Biener  <rguenther@suse.de>
30913
30914         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
30915         Skip unreachable blocks and destinations.
30916         (eliminate): Move stmt removal and fixup ...
30917         (fini_eliminate): ... here.  Skip inserted exprs.
30918         (pass_pre::execute): Move fini_pre after fini_eliminate.
30919         * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
30920         (tail_merge_optimize): Run cleanup_tree_cfg if requested by
30921         PRE to get rid of dead code that has invalid SSA form and
30922         split critical edges again.
30923
30924 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30925
30926         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
30927
30928 2017-05-11  Richard Biener  <rguenther@suse.de>
30929
30930         * passes.c (execute_function_todo): Verify loops if they are
30931         said to be up-to-date.
30932         * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
30933         * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
30934
30935 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
30936
30937         PR target/80090
30938         * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
30939         handle calling assemble_external ourself.
30940
30941         PR target/79027
30942         * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
30943         modes with zero size.  Enhance comment.
30944
30945 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30946
30947         * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
30948         built-ins for vec_xl and vec_xst with short and char pointer
30949         arguments.
30950
30951 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
30952
30953         * config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
30954         (_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
30955         (_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
30956         (_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
30957         (_mm_maskz_min_round_ss): New intrinsics.
30958         * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
30959         (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
30960         * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
30961         (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
30962         (__builtin_ia32_minss_mask_round): New builtins.
30963         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30964         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
30965         * config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
30966         Rename to ...
30967         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
30968         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
30969         Change to ...
30970         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
30971         ... this.
30972
30973 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
30974
30975         * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
30976         (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
30977         (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
30978         (_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
30979         (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
30980         (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
30981         (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
30982         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30983         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
30984         * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
30985         (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
30986         (__builtin_ia32_mulss_mask_round): New builtins.
30987         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30988         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
30989         * config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
30990         Rename to ...
30991         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
30992         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
30993         Change to ...
30994         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
30995         ... this.
30996
30997 2017-05-10  Julia Koval  <julia.koval@intel.com>
30998
30999         * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
31000         (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
31001         (_mm256_setr_m128i): New intrinsics.
31002
31003 2017-05-10  Julia Koval  <julia.koval@intel.com>
31004
31005         * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
31006         (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
31007         (_mm_maskz_rcp14_ss): New intrinsics.
31008         * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
31009         (__builtin_ia32_rcp14ss_mask): New builtins.
31010         * config/i386/sse.md (srcp14<mode>_mask): New pattern.
31011
31012 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
31013
31014         PR tree-optimization/51513
31015         * tree-cfg.c (gimple_seq_unreachable_p): New function.
31016         (assert_unreachable_fallthru_edge_p): Use it.
31017         (group_case_labels_stmt): Likewise.
31018         * tree-cfg.h: Prototype it.
31019         * stmt.c: Include cfghooks.h and tree-cfg.h.
31020         (emit_case_dispatch_table) <gap_label>: New local variable.
31021         Use it to fill dispatch table gaps.
31022         Test for default_label before updating probabilities.
31023         (expand_case) <default_label>: Remove unneeded initialization.
31024         Test for unreachable default case statement and remove its edge.
31025         Set default_label accordingly.
31026         * tree-ssa-ccp.c (optimize_unreachable): Update comment.
31027
31028 2017-05-10  Carl Love  <cel@us.ibm.com>
31029
31030         * config/rs6000/rs6000-c: Add support for built-in functions
31031         vector signed char      vec_neg (vector signed char)
31032         vector signed short int vec_neg (vector short int)
31033         vector signed int       vec_neg (vector signed int)
31034         vector signed long long vec_neg (vector signed long long)
31035         vector float            vec_neg (vector float)
31036         vector double           vec_neg (vector double)
31037         * config/rs6000/rs6000-builtin.def: Add definitions for NEG function
31038         overload.
31039         * config/rs6000/altivec.h: Add define for vec_neg
31040         * doc/extend.texi: Update the built-in documentation for the
31041         new built-in functions.
31042
31043 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31044
31045         PR tree-optimization/77644
31046         * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
31047
31048 2017-05-10  Nathan Sidwell  <nathan@acm.org>
31049
31050         * dumpfile.h (TDI_lang_all): New.
31051         (TDF_KIND): New. Renumber others
31052         (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
31053         than bits.
31054         * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
31055         lang-all.
31056         (get_dump_file_name): Adjust suffix generation.
31057         (dump_enable_all): Use TDF_KIND.
31058         * doc/invoke.texi (-fdump-lang-all): Document.
31059
31060         * dumpfile.h: Tabify.
31061
31062 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
31063
31064         PR target/80671
31065         * config/aarch64/cortex-a57-fma-steering.c (merge_forest):
31066         Move member access before delete.
31067
31068 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
31069
31070         * tree-inline.c (expand_call_inline): Split block at stmt
31071         before the call.
31072
31073 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
31074
31075         PR target/68163
31076         * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
31077         are now unused after splitting mov{sf,sd}_hardfloat.
31078         (f32_lr2): Likewise.
31079         (f32_lm): Likewise.
31080         (f32_lm2): Likewise.
31081         (f32_li): Likewise.
31082         (f32_li2): Likewise.
31083         (f32_lv): Likewise.
31084         (f32_sr): Likewise.
31085         (f32_sr2): Likewise.
31086         (f32_sm): Likewise.
31087         (f32_sm2): Likewise.
31088         (f32_si): Likewise.
31089         (f32_si2): Likewise.
31090         (f32_sv): Likewise.
31091         (f32_dm): Likewise.
31092         (f32_vsx): Likewise.
31093         (f32_av): Likewise.
31094         (mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
31095         For movsf, order stores so the VSX stores occur before the GPR
31096         store which encourages the register allocator to use a traditional
31097         FPR instead of a GPR.  For movsd, order the stores so that the GPR
31098         store comes before the VSX stores to allow the power6 to work.
31099         This is due to the power6 not having a 32-bit integer store
31100         instruction from a FPR.
31101         (movsf_hardfloat): Likewise.
31102         (movsd_hardfloat): Likewise.
31103
31104 2017-05-09  Martin Sebor  <msebor@redhat.com>
31105
31106         PR translation/80280
31107         * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
31108         added in r247778.
31109
31110         PR translation/80280
31111         * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
31112         data member added in r247778.
31113         (ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
31114
31115 2017-05-09  Nathan Sidwell  <nathan@acm.org>
31116
31117         * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
31118
31119         * ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
31120         typedefs.
31121
31122 2017-05-09  Marek Polacek  <polacek@redhat.com>
31123
31124         * doc/invoke.texi: Fix typo.
31125
31126 2017-05-09  Richard Biener  <rguenther@suse.de>
31127
31128         * tree-vrp.c (vrp_val_is_max): Adjust comment.
31129         (vrp_val_is_min): Likewise.
31130         (set_value_range_to_value): Likewise.
31131         (set_value_range_to_nonnegative): Likewise.
31132         (gimple_assign_nonzero_p): Likewise.
31133         (gimple_stmt_nonzero_p): Likewise.
31134         (vrp_int_const_binop): Likewise.  Remove unreachable case.
31135         (adjust_range_with_scev): Adjust comments.
31136         (compare_range_with_value): Likewise.
31137         (extract_range_from_phi_node): Likewise.
31138         (test_for_singularity): Likewise.
31139
31140 2017-05-09  Richard Biener  <rguenther@suse.de>
31141
31142         * tree-vrp.c (get_single_symbol): Add assert that we don't
31143         get overflowed constants as invariant part.
31144         (compare_values_warnv): Add comment before the TREE_NO_WARNING
31145         checks.  Use wi::cmp instead of recursing for integer constants.
31146         (compare_values): Just ignore whether we assumed undefined
31147         overflow instead of failing the compare.
31148         (extract_range_for_var_from_comparison_expr): Add comment before the
31149         TREE_NO_WARNING sets.
31150         (test_for_singularity): Likewise.
31151         (extract_range_from_comparison): Do not disable optimization
31152         when we assumed undefined overflow.
31153         (extract_range_basic): Remove init of unused var.
31154
31155 2017-05-09  Richard Biener  <rguenther@suse.de>
31156
31157         * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
31158         (extract_range_from_multiplicative_op_1): Adjust.
31159         (extract_range_from_binary_expr_1): Use int_const_binop.
31160
31161 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31162
31163         PR target/80101
31164         * config/rs6000/power6.md: Replace store_data_bypass_p calls with
31165         rs6000_store_data_bypass_p in seven define_bypass directives and
31166         in several comments.
31167         * config/rs6000/rs6000-protos.h: Add prototype for
31168         rs6000_store_data_bypass_p function.
31169         * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
31170         function implements slightly different (rs6000-specific) semantics
31171         than store_data_bypass_p, returning false rather than aborting
31172         with assertion error when arguments do not satisfy the
31173         requirements of store data bypass.
31174         (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
31175         rs6000_store_data_bypass_p.
31176
31177 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
31178
31179         * config/xtensa/xtensa-protos.h
31180         (xtensa_initial_elimination_offset): New declaration.
31181         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
31182         New function. Move its body from the INITIAL_ELIMINATION_OFFSET
31183         macro definition, add case for FRAME_POINTER_REGNUM when
31184         FRAME_GROWS_DOWNWARD.
31185         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
31186         (INITIAL_ELIMINATION_OFFSET): Replace body with call to
31187         xtensa_initial_elimination_offset.
31188
31189 2017-05-08  Nathan Sidwell  <nathan@acm.org>
31190
31191         * doc/invoke.texi: Alphabetize -fdump options.
31192
31193 2017-05-08  Martin Sebor  <msebor@redhat.com>
31194
31195         PR translation/80280
31196         * config/sol2-c.c (solaris_pragma_align): Correct quoting.
31197
31198 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31199
31200         * target.def (compute_frame_layout): New optional target hook.
31201         * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
31202         * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
31203         * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
31204         target hook.
31205         * reload1.c (verify_initial_elim_offsets): Likewise.
31206         * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
31207         (use_simple_return_p): Call arm_compute_frame_layout if needed.
31208         (arm_get_frame_offsets): Split up into this ...
31209         (arm_compute_frame_layout): ... and this function.
31210
31211 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
31212
31213         * config/aarch64/constraints.md (Usa): New constraint.
31214         * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
31215
31216 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31217
31218         * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
31219         with_multilib_list after it has been checked.
31220
31221 2017-05-08  Richard Biener  <rguenther@suse.de>
31222
31223         * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
31224         (bitmap_set_subtract_values): Likewise.
31225
31226 2017-05-08  Richard Biener  <rguenther@suse.de>
31227
31228         * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
31229         (gimple_assign_nonzero): ... this and remove strict_overflow_p
31230         argument.
31231         (gimple_stmt_nonzero_warnv_p): Rename to ...
31232         (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
31233         argument.
31234         (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
31235         (extract_range_basic): Adjust, do not disable propagation on
31236         strict overflow sensitive simplification.
31237         (vrp_visit_cond_stmt): Likewise.
31238
31239 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
31240
31241         * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
31242         body size unconditionally.
31243
31244 2017-05-07  Jeff Law  <law@redhat.com>
31245
31246         Revert:
31247         2017-05-06  Jeff Law  <law@redhat.com>
31248         PR tree-optimization/78496
31249         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31250         code.
31251
31252         PR tree-optimization/78496
31253         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31254         (simplify_stmt_using_ranges): Call it.
31255         (vrp_dom_walker::before_dom_children): Extract equivalences
31256         from an ASSERT_EXPR with an equality comparison against a
31257         constant.
31258
31259 2017-05-06  Jeff Law  <law@redhat.com>
31260
31261         PR tree-optimization/78496
31262         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31263         code.
31264
31265         PR tree-optimization/78496
31266         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31267         (simplify_stmt_using_ranges): Call it.
31268         (vrp_dom_walker::before_dom_children): Extract equivalences
31269         from an ASSERT_EXPR with an equality comparison against a
31270         constant.
31271
31272 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31273
31274         * lra-constraints.c (lra_copy_reg_equiv): New function.
31275         (split_reg): Use it to copy equivalence information from the
31276         original register to the spill register.
31277
31278 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31279
31280         PR rtl-optimization/75964
31281         * simplify-rtx.c (simplify_const_relational_operation): Remove
31282         invalid handling of comparisons of integer ABS.
31283
31284 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
31285
31286         * config/i386/i386.c (ext_80387_constant_init): Do not explicitly
31287         initialize to zero.
31288         (init_regs): Remove declaration.
31289         (function_arg_advance_32): Initialize error_p as boolean variable.
31290
31291 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31292
31293         * store-motion.c (remove_reachable_equiv_notes): Reformat long
31294         lines.  Use for (;;).
31295
31296 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31297
31298         * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
31299         (rs6000_init_cost): Initialize rs6000_vect_nonmem.
31300         (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
31301         (rs6000_finish_cost): Avoid vectorizing simple copy loops with
31302         VF=2 that require versioning.
31303
31304 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31305
31306         * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
31307         int.
31308
31309 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31310
31311         * diagnostic.h (diagnostic_override_option_index): Convert from
31312         macro to inline function.
31313
31314 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31315
31316         * diagnostic.c (last_module_changed_p): New function.
31317         (set_last_module): New function.
31318         (diagnostic_report_current_module): Convert macro usage to
31319         the above functions.
31320         * diagnostic.h (diagnostic_context::last_module): Strengthen
31321         from const line_map * to const line_map_ordinary *.
31322         (diagnostic_last_module_changed): Delete macro.
31323         (diagnostic_set_last_module): Delete macro.
31324
31325 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31326
31327         * diagnostic.c (diagnostic_impl): Replace report_diagnostic
31328         with diagnostic_report_diagnostic.
31329         (diagnostic_n_impl_richloc): Likewise.
31330         * diagnostic.h (report_diagnostic): Delete macro.
31331         * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
31332         with diagnostic_report_diagnostic.
31333         * substring-locations.c (format_warning_va): Likewise.
31334
31335 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31336
31337         * diagnostic.c (diagnostic_report_diagnostic): Eliminate
31338         save/restor of format_spec.  Move option-printing code to...
31339         (print_option_information): ...this new function, and
31340         reimplement by simply printing to the pretty_printer,
31341         rather than appending to the format string.
31342
31343 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31344
31345         * diagnostic.c (diagnostic_report_diagnostic): Split out pragma
31346         handling logic into...
31347         (update_effective_level_from_pragmas): ...this new function.
31348
31349 2017-05-04  Andrew Waterman  <andrew@sifive.com>
31350
31351         * config/riscv/riscv.opt (mstrict-align): New option.
31352         * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
31353         (SLOW_UNALIGNED_ACCESS): Define.
31354         (riscv_slow_unaligned_access): Declare.
31355         * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
31356         field.
31357         (riscv_slow_unaligned_access): New variable.
31358         (rocket_tune_info): Set slow_unaligned_access to true.
31359         (optimize_size_tune_info): Set slow_unaligned_access to false.
31360         (riscv_cpu_info_table): Add entry for optimize_size_tune_info.
31361         (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
31362         (riscv_option_override): Set riscv_slow_unaligned_access.
31363         * doc/invoke.texi: Add -mstrict-align to RISC-V.
31364
31365 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
31366
31367         * config/riscv/riscv.md: Unify indentation.
31368
31369 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
31370
31371         PR target/79038
31372         PR target/79202
31373         PR target/79203
31374         * config/rs6000/rs6000.md (u code attribute): Add FIX and
31375         UNSIGNED_FIX.
31376         (extendsi<mode>2): Add support for doing sign extension via
31377         VUPKHSW and XXPERMDI if the value is in Altivec registers and we
31378         don't have ISA 3.0 instructions.
31379         (extendsi<mode>2 splitter): Likewise.
31380         (fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
31381         generate the normal insns since SImode can now go in vector
31382         registers.  Disallow the special UNSPECs needed for previous
31383         machines to hide SImode being used.  Add new insns
31384         fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
31385         (fix_trunc<mode>si2_stfiwx): Likewise.
31386         (fix_trunc<mode>si2_internal): Likewise.
31387         (fixuns_trunc<mode>si2): Likewise.
31388         (fixuns_trunc<mode>si2_stfiwx): Likewise.
31389         (fctiw<u>z_<mode>_smallint): Likewise.
31390         (fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
31391         of floating point to 32-bit integer from doing a direct move to
31392         the GPR registers to do a store.
31393         (fctiwz_<mode>): Break long line.
31394
31395 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
31396
31397         * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
31398         * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
31399         (addr_list, addr_offset_valid_p): New.
31400         (split_address_groups): Check offset validity with above function.
31401         (gt-tree-ssa-loop-ivopts.h): Include header file.
31402
31403 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31404
31405         * config.gcc (arm*-*-*): Add missing 'fi'.
31406
31407 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
31408
31409         * doc/invoke.texi (-fopt-info): Explicitly say order of options
31410         included in -fopt-info does not matter.
31411         * doc/optinfo.texi (-fopt-info): Fix description of default
31412         behavour. Explicitly say order of options included in -fopt-info
31413         does not matter.
31414
31415 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31416
31417         * config.gcc: Allow combinations of aprofile and rmprofile values for
31418         --with-multilib-list.
31419         * config/arm/t-multilib: New file.
31420         * config/arm/t-aprofile: Remove initialization of MULTILIB_*
31421         variables.  Remove setting of ISA and floating-point ABI in
31422         MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
31423         MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
31424         and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
31425         matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
31426         CPU options.
31427         * config/arm/t-rmprofile: Likewise except for the matches changes.
31428         * doc/install.texi (--with-multilib-list): Document the combination of
31429         aprofile and rmprofile values and warn about pitfalls in doing that.
31430
31431 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31432
31433         * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
31434         (movdi_aarch64): Likewise.
31435
31436 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31437
31438         PR tree-optimization/80632
31439         * tree-switch-conversion.c (struct switch_conv_info): Add target_vop
31440         field.
31441         (build_arrays): Initialize it for virtual phis.
31442         (fix_phi_nodes): Use it for virtual phis.
31443
31444         PR tree-optimization/80558
31445         * tree-vrp.c (extract_range_from_binary_expr_1): Optimize
31446         [x, y] op z into [x op, y op z] for op & or | if conditions
31447         are met.
31448
31449 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
31450             Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31451
31452         PR target/71607
31453         * config/arm/arm.md (use_literal_pool): Remove.
31454         (64-bit immediate split): No longer takes cost into consideration
31455         if arm_disable_literal_pool is enabled.
31456         * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
31457         used when arm_disable_literal_pool is enabled.
31458         (arm_max_const_double_inline_cost): Remove use of
31459         arm_disable_literal_pool.
31460         (push_minipool_fix): Add assert.
31461         (arm_reorg): Add return if arm_disable_literal_pool is enabled.
31462         * config/arm/vfp.md (no_literal_pool_df_immediate): New.
31463         (no_literal_pool_sf_immediate): New.
31464
31465 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31466
31467         PR tree-optimization/80613
31468         * tree-ssa-dce.c (propagate_necessity): Remove cases for
31469         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
31470
31471 2017-05-05  Richard Biener  <rguenther@suse.de>
31472
31473         * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
31474
31475 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
31476
31477         * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
31478         of this flag from insn conditions due to removal from r247495.
31479
31480 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31481
31482         * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
31483         New function.
31484         (arm_early_store_addr_dep_ptr): Likewise.
31485         * config/arm/aarch-common-protos.h
31486         (arm_early_load_addr_dep_ptr): Add prototype.
31487         (arm_early_store_addr_dep_ptr): Likewise.
31488         * config/arm/cortex-a53.md: Add new bypasses.
31489
31490 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31491
31492         * tree.c (next_type_uid): Change type to unsigned.
31493         (type_hash_canon): Decrement back next_type_uid if
31494         freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
31495         also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
31496         if possible.
31497
31498 2017-05-04  Martin Sebor  <msebor@redhat.com>
31499
31500         * builtins.c: Fix a trivial typo in a comment.
31501
31502         PR middle-end/79234
31503         * builtins.c (check_sizes): Adjust to handle reading past the end.
31504         Avoid printing excessive upper bound of ranges.  Use %E to print
31505         tree nodes instead of converting them to %wu.
31506         (expand_builtin_memchr): New function.
31507         (compute_dest_size): Rename...
31508         (compute_objsize): ...to this.
31509         (expand_builtin_memcpy): Adjust.
31510         (expand_builtin_mempcpy): Adjust.
31511         (expand_builtin_strcat): Adjust.
31512         (expand_builtin_strcpy): Adjust.
31513         (check_strncat_sizes): Adjust.
31514         (expand_builtin_strncat): Adjust.
31515         (expand_builtin_strncpy): Adjust and simplify.
31516         (expand_builtin_memset): Adjust.
31517         (expand_builtin_bzero): Adjust.
31518         (expand_builtin_memcmp): Adjust.
31519         (expand_builtin): Handle memcmp.
31520         (maybe_emit_chk_warning): Check strncat just once.
31521
31522 2017-05-04  Martin Sebor  <msebor@redhat.com>
31523
31524         PR preprocessor/79214
31525         PR middle-end/79222
31526         PR middle-end/79223
31527         * builtins.c (check_sizes): Add inlining context and issue
31528         warnings even when -Wno-system-headers is set.
31529         (check_strncat_sizes): Same.
31530         (expand_builtin_strncat): Same.
31531         (expand_builtin_memmove): New function.
31532         (expand_builtin_stpncpy): Same.
31533         (expand_builtin): Handle memmove and stpncpy.
31534
31535 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
31536
31537         * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
31538         which is not used any more.
31539
31540 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31541
31542         * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
31543
31544 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31545
31546         * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
31547         (cortexa53_tunings): Likewise.
31548         (cortexa57_tunings): Likewise.
31549         (cortexa72_tunings): Likewise.
31550         (cortexa73_tunings): Likewise.
31551
31552 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31553
31554         * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
31555         Set loop alignment to 8.
31556
31557 2017-05-04  Martin Sebor  <msebor@redhat.com>
31558
31559         PR translation/80280
31560         * builtins.c (expand_builtin_object_size): Add missing quoting to
31561         %D and like directives.
31562         * hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
31563         (hsa_type_for_tree_type): Same.
31564         (verify_function_arguments): Same.
31565         * symtab.c (symbol_table::change_decl_assembler_name): Same.
31566         * varasm.c (get_section): Same.
31567         (mark_weak): Same.
31568
31569 2017-05-04  Martin Sebor  <msebor@redhat.com>
31570
31571         PR translation/80280
31572         * config/i386/i386.c (ix86_function_versions): Quote a %D directive.
31573
31574 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
31575
31576         * config/aarch64/aarch64.c (generic_addrcost_table):
31577         Change HI/TI mode setting.
31578
31579 2017-05-04  Martin Jambor  <mjambor@suse.cz>
31580
31581         PR tree-optimization/80622
31582         * tree-sra.c (comes_initialized_p): New function.
31583         (build_accesses_from_assign): Only set write lazily when
31584         comes_initialized_p is false.
31585         (analyze_access_subtree): Use comes_initialized_p.
31586         (propagate_subaccesses_across_link): Assert !comes_initialized_p
31587         instead of testing for PARM_DECL.
31588
31589 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31590
31591         * config/aarch64/aarch64.md (prefetch); Adjust predicate and
31592         constraint on operand 0 to allow more general addressing modes.
31593         Adjust output template.
31594         * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
31595         New function.
31596         * config/aarch64/aarch64-protos.h
31597         (aarch64_address_valid_for_prefetch_p): Declare prototype.
31598         * config/aarch64/constraints.md (Dp): New address constraint.
31599         * config/aarch64/predicates.md (aarch64_prefetch_operand): New
31600         predicate.
31601
31602 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
31603
31604         * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
31605         update use of estimate_ipcp_clone_size_and_time.
31606         (estimate_local_effects): Update use of
31607         estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
31608         * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
31609         * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
31610         Return nonspecialized time.
31611
31612 2017-05-04  Richard Biener  <rguenther@suse.de>
31613
31614         * tree-ssa-alias.c (get_continuation_for_phi): Improve looking
31615         for the last VUSE which def dominates the PHI.  Directly call
31616         maybe_skip_until.
31617         (get_continuation_for_phi_1): Remove.
31618
31619 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
31620
31621         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
31622         to explain the use of truncating division.  Cap the number of
31623         iterations to the maximum given by nb_iterations_upper_bound,
31624         if defined.
31625
31626 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31627
31628         * configure.ac (--enable-mingw-wildcard): Add new configurable feature.
31629         * configure: Regenerate.
31630         * config.in: Regenerate.
31631         * config/i386/driver-mingw32.c: new file.
31632         * config/i386/x-mingw32: Add rule to build driver-mingw32.o.
31633         * config.host: Link driver-mingw32.o on MinGW host.
31634         * doc/install.texi: Document new --enable-mingw-wildcard configure
31635         option.
31636
31637 2017-05-04  Marek Polacek  <polacek@redhat.com>
31638
31639         PR tree-optimization/80612
31640         * calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
31641
31642 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31643             Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
31644
31645         * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
31646         (movt splitter): Likewise.
31647         * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
31648         to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
31649         (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
31650         block for Thumb-1 with MOVT.
31651         (thumb2_legitimate_address_p): Move code block ...
31652         (can_avoid_literal_pool_for_label_p): ... into this new function.
31653         (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
31654         literal pool.
31655         (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
31656         * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
31657         "M-profile targets with the MOVT instruction".
31658
31659 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31660
31661         * config/arm/arm-builtins.c (arm_init_builtins): Rename
31662         __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
31663         __builtin_arm_stfscr to __builtin_arm_set_fpscr.
31664
31665 2017-05-04  Martin Liska  <mliska@suse.cz>
31666
31667         * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
31668         variable cond_code.
31669
31670 2017-05-04  Richard Biener  <rguenther@suse.de>
31671
31672         * tree.c (array_at_struct_end_p): Handle arrays at struct
31673         end with flexarrays more conservatively.  Refactor and treat
31674         arrays of arrays or aggregates more strict.  Fix
31675         VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
31676         * tree.c (array_at_struct_end_p): Adjust prototype.
31677         * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
31678         * gimple-fold.c (get_range_strlen): Likewise.
31679         * tree-chkp.c (chkp_may_narrow_to_field): Likewise.
31680
31681 2017-05-04  Richard Biener  <rguenther@suse.de>
31682
31683         PR tree-optimization/31130
31684         * tree-vrp.c (needs_overflow_infinity): Remove as always returning
31685         false.
31686         (supports_overflow_infinity): Likewise.
31687         (is_negative_overflow_infinity): Likewise.
31688         (is_positive_overflow_infinity): Likewise.
31689         (is_overflow_infinity): Likewise.
31690         (stmt_overflow_infinity): Likewise.
31691         (overflow_infinity_range_p): Likewise.
31692         (usable_range_p): Remove as always returning true.
31693         (make_overflow_infinity): Remove.
31694         (negative_overflow_infinity): Likewise.
31695         (positive_overflow_infinity): Likewise.
31696         (avoid_overflow_infinity): Likewise.
31697         (set_value_range): Adjust accordingly.
31698         (set_value_range_to_nonnegative): Likewise, remove now unused
31699         overflow_infinity arg.
31700         (vrp_operand_equal_p): Adjust.
31701         (update_value_range): Likewise.
31702         (range_int_cst_singleton_p): Likewise.
31703         (operand_less_p): Likewise.
31704         (compare_values_warnv): Likewise.
31705         (extract_range_for_var_from_comparison_expr): Likewise.
31706         (vrp_int_const_binop): Likewise.
31707         (zero_nonzero_bits_from_vr): Likewise.
31708         (extract_range_from_multiplicative_op_1): Likewise.
31709         (extract_range_from_binary_expr_1): Likewise.
31710         (extract_range_from_unary_expr): Likewise.
31711         (extract_range_from_comparison): Likewise.
31712         (extract_range_basic): Likewise.
31713         (adjust_range_with_scev): Likewise.
31714         (compare_ranges): Likewise.
31715         (compare_range_with_value): Likewise.
31716         (dump_value_range): Likewise.
31717         (test_for_singularity): Likewise, remove strict_overflow_p parameter
31718         never used.
31719         (simplify_cond_using_ranges): Adjust.
31720
31721 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
31722
31723         * brig-builtins.def: Added a builtin for class_f64.
31724         * builtin-types.def: Added a builtin type needed by class_f64.
31725
31726 2017-05-03  Jason Merrill  <jason@redhat.com>
31727
31728         * timevar.def: Add TV_CONSTEXPR.
31729
31730 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31731
31732         * common.opt (fdiagnostics-parseable-fixits): Fix typo.
31733
31734 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31735
31736         * ipa-prop.c (ipa_update_after_lto_read): Removed.
31737         * ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
31738         * ipa-cp.c (ipcp_propagate_stage): Do not call
31739         ipa_update_after_lto_read.
31740         * ipa-inline.c (ipa_inline): Likewise.
31741
31742 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31743
31744         * ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
31745         tag.  Added a default constructor and a destructor.
31746         (ipa_edge_args_sum_t): New class;
31747         (ipa_edge_args_sum): Declare.
31748         (ipa_edge_args_vector): Remove declaration.
31749         (IPA_EDGE_REF): Use ipa_edge_args_sum.
31750         (ipa_free_edge_args_substructures): Remove declaration.
31751         (ipa_check_create_edge_args): Use ipa_edge_args_sum.
31752         (ipa_edge_args_info_available_for_edge_p): Likewise.
31753         * ipa-prop.c (ipa_edge_args_vector): Removed.
31754         (edge_removal_hook_holder): Likewise.
31755         (edge_duplication_hook_holder): Likewise.
31756         (ipa_edge_args_sum): New variable.
31757         (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
31758         ipa_edge_args_vector.
31759         (ipa_free_edge_args_substructures): Likewise.
31760         (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
31761         ipa_edge_args_vector.
31762         (ipa_edge_removal_hook): Turned into method
31763         ipa_edge_args_sum_t::remove.
31764         (ipa_edge_duplication_hook): Turned into method
31765         ipa_edge_args_sum_t::duplicate.
31766         (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
31767         registering edge hooks.
31768         (ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
31769         * ipa-inline-analysis.c (estimate_function_body_sizes): Test
31770         ipa_edge_args_sum instead of ipa_edge_args_vector.
31771         * ipa-profile.c (ipa_profile): Likewise.
31772
31773 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31774
31775         * symbol-summary.h (function_summary): New method exists.
31776         (function_summary::symtab_removal): Deallocate through release.
31777         (call_summary): New class.
31778         (gt_ggc_mx): New overload.
31779         (gt_pch_nx): Likewise.
31780         (gt_pch_nx): Likewise.
31781
31782 2017-05-03  Jeff Law  <law@redhat.com>
31783
31784         PR tree-optimization/78496
31785         * tree-vrp.c (simplify_cond_using_ranges_1): Renamed
31786         from simplify_cond_using_ranges.  Split off code to walk
31787         backwards through casts into ...
31788         (simplify_cond_using_ranges_2): New function.
31789         (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
31790         (execute_vrp): After identifying jump threads, call
31791         simplify_cond_using_ranges_2.
31792
31793 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
31794
31795         PR bootstrap/80609
31796         * ipa-inline.h (inline_summary): Add ctor.
31797         (create_ggc): Do not use ggc_cleared_alloc.
31798
31799 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
31800             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
31801
31802         * gcc.c (handle_braces): Support escaping in switch matching
31803         text.
31804         * doc/invoke.texi (Spec Files): Document it.
31805         Remove superfluous @code markup in items.
31806
31807 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31808
31809         * diagnostic-show-locus.c (struct column_range): New struct.
31810         (get_affected_columns): New function.
31811         (get_printed_columns): New function.
31812         (struct correction): New struct.
31813         (correction::ensure_capacity): New function.
31814         (correction::ensure_terminated): New function.
31815         (struct line_corrections): New struct.
31816         (line_corrections::~line_corrections): New dtor.
31817         (line_corrections::add_hint): New function.
31818         (layout::print_trailing_fixits): Reimplement in terms of the new
31819         classes.
31820         (selftest::test_overlapped_fixit_printing): New function.
31821         (selftest::diagnostic_show_locus_c_tests): Call it.
31822
31823 2017-05-03  Nathan Sidwell  <nathan@acm.org>
31824
31825         Canonicalize canonical type hashing
31826         * tree.h (type_hash_canon_hash): Declare.
31827         * tree.c (type_hash_list, attribute_hash_list): Move into
31828         type_hash_canon_hash.
31829         (build_type_attribute_qual_variant): Break out hash code calc into
31830         type_hash_canon_hash.
31831         (type_hash_canon_hash): New.  Generic type hash computation.
31832         (build_range_type_1, build_array_type_1, build_function_type,
31833         build_method_type_directly, build_offset_type, build_complex_type,
31834         make_vector_type): Call it.
31835
31836 2017-05-03  Richard Biener  <rguenther@suse.de>
31837
31838         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
31839         When all DRs have unknown misaligned do not always peel
31840         when there is a store but apply the same costing model as if
31841         there were only loads.
31842
31843 2017-05-03  Richard Biener  <rguenther@suse.de>
31844
31845         Revert
31846         PR tree-optimization/80492
31847         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
31848         compare_base_decls returning dont-know properly.
31849
31850 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31851
31852         * config/arm/iterators.md (CCSI): New mode iterator.
31853         (arch): New mode attribute.
31854         * config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
31855         (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
31856         (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
31857         code iterator for success result mode.
31858         * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
31859         the corresponding new insn generators.
31860
31861 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
31862
31863         Revert r247509
31864         2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31865         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31866
31867 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
31868
31869         * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
31870         (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
31871         (DDR_A): Wrap DDR argument in brackets.
31872         (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
31873         (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
31874         (DDR_REVERSED_P): Likewise.
31875
31876 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
31877
31878         PR tree-optimization/79472
31879         * tree-switch-conversion.c (struct switch_conv_info): Add
31880         contiguous_range and default_case_nonstandard fields.
31881         (collect_switch_conv_info): Compute contiguous_range and
31882         default_case_nonstandard fields, don't clear final_bb if
31883         contiguous_range and only the default case doesn't have the required
31884         structure.
31885         (check_all_empty_except_final): Set default_case_nonstandard instead
31886         of failing if contiguous_range and the default case doesn't have empty
31887         block.
31888         (check_final_bb): Add SWTCH argument, don't fail if contiguous_range
31889         and only the default case doesn't have the required constants.  Skip
31890         virtual phis.
31891         (gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
31892         if default_case_nonstandard.
31893         (build_constructors): Build constant 1 just once.  Assert that default
31894         values aren't inserted in between cases if contiguous_range.  Skip
31895         virtual phis.
31896         (build_arrays): Skip virtual phis.
31897         (prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
31898         (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
31899         Handle virtual phis.
31900         (gen_inbound_check): Handle default_case_nonstandard case.
31901         (process_switch): Adjust check_final_bb caller.  Call
31902         gather_default_values with the first non-default case instead of
31903         default case if default_case_nonstandard.
31904
31905 2017-05-02  Nathan Sidwell  <nathan@acm.org>
31906
31907         * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
31908         check.  Fix formatting.
31909
31910 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
31911
31912         * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
31913         errors when comparing specialized and unspecialized times.
31914
31915 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
31916
31917         * diagnostic-show-locus.c
31918         (layout::should_print_annotation_line_p): Make private.
31919         (layout::print_annotation_line): Make private.
31920         (layout::annotation_line_showed_range_p): Make private.
31921         (layout::show_ruler): Make private.
31922         (layout::print_source_line): Make private.  Pass in line and
31923         line_width, rather than calling location_get_source_line.  Drop
31924         returned value.
31925         (layout::print_leading_fixits): New method.
31926         (layout::print_any_fixits): Rename to...
31927         (layout::print_trailing_fixits): ...this, and make private.
31928         Don't print newline fixits.
31929         (diagnostic_show_locus): Move logic for printing one row into...
31930         (layout::print_line): ...this new function.  Move the
31931         location_get_source_line call and error-handling from
31932         print_source_line to here.  Call print_leading_fixits, and rename
31933         print_any_fixits to print_trailing_fixits.
31934         (selftest::test_fixit_insert_containing_newline): Update now that
31935         newlines are partially supported.
31936         (selftest::test_fixit_insert_containing_newline_2): New test.
31937         (selftest::test_fixit_replace_containing_newline): Update comments.
31938         (selftest::diagnostic_show_locus_c_tests): Call the new test.
31939         * edit-context.c (class added_line): New class.
31940         (class edited_line): Describe newline handling in comment.
31941         (edited_line::actually_edited_p): New method.
31942         (edited_line::print_content): Delete redundant decl.
31943         (edited_line::m_predecessors): New field.
31944         (edited_file::print_content): Call edited_line::print_content.
31945         (edited_file::print_diff): Update to support newlines.
31946         (edited_file::print_diff_hunk): Likewise.
31947         (edited_file::print_run_of_changed_lines): New function.
31948         (edited_file::print_diff_line): Convert to...
31949         (print_diff_line): ...this.
31950         (edited_file::get_effective_line_count): New function.
31951         (edited_line::edited_line): Initialize new field m_predecessors.
31952         (edited_line::~edited_line): Clean up m_predecessors.
31953         (edited_line::apply_fixit): Handle newlines.
31954         (edited_line::get_effective_line_count): New function.
31955         (edited_line::print_content): New function.
31956         (edited_line::print_diff_lines): New function.
31957         (selftest::test_applying_fixits_insert_containing_newline): New
31958         test.
31959         (selftest::test_applying_fixits_replace_containing_newline): New
31960         test.
31961         (selftest::insert_line): New function.
31962         (selftest::test_applying_fixits_multiple_lines): Add example of
31963         inserting a line.
31964         (selftest::edit_context_c_tests): Call the new tests.
31965
31966 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31967
31968         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
31969         parameter cand.  Update dump information.
31970         (get_computation_cost): Update uses.
31971
31972 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31973
31974         * tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
31975         (get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
31976         (get_computation_at, rewrite_use_address): Update use of
31977         get_computation_aff.
31978
31979 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31980
31981         * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
31982         (get_computation): Delete.
31983         (get_computation_cost): Implement like get_computation_cost_at.
31984         Use get_computation_at.
31985         (get_computation_cost_at): Delete.
31986         (rewrite_use_nonlinear_expr): Use get_computation_at.
31987         (rewrite_use_compare, remove_unused_ivs): Ditto.
31988
31989 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31990
31991         * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
31992
31993 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31994
31995         * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
31996         (ivopts_global_cost_for_size): Rename parameter and update uses.
31997         (iv_ca_recount_cost): Update uses.
31998         (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
31999         candidates seperately in n_invs and n_cands.
32000         (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
32001
32002 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32003
32004         * tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
32005         (find_inv_vars_cb): New.
32006         (find_depends): Renamed to ...
32007         (find_inv_vars): ... this.
32008         (add_candidate_1, force_var_cost): Call find_inv_vars.
32009         (split_address_cost, determine_group_iv_cost_cond): Ditto.
32010
32011 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32012
32013         * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
32014         inv_vars.  Add inv_exprs.
32015         (struct iv_cand): Rename depends_on to inv_vars.
32016         (struct ivopts_data): Rename max_inv_id/n_invariant_uses to
32017         max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
32018         Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
32019         (dump_cand): Dump inv_vars.
32020         (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
32021         (record_invariant, find_depends, add_candidate_1): Ditto.
32022         (set_group_iv_cost, force_var_cost): Ditto.
32023         (split_address_cost, ptr_difference_cost, difference_cost): Ditto.
32024         (get_computation_cost_at, get_computation_cost): Ditto.
32025         (determine_group_iv_cost_generic): Ditto.
32026         (determine_group_iv_cost_address): Ditto.
32027         (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
32028         (determine_group_iv_costs): Ditto.
32029         (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
32030         (iv_ca_set_remove_invariants): Renamed to ...
32031         (iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
32032         (iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
32033         (iv_ca_set_add_invariants):  Renamed to ...
32034         (iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
32035         (iv_ca_set_cp): Use iv_ca_set_add_invs.
32036         (iv_ca_has_deps): Support inv_vars and inv_exprs.
32037         (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
32038         (create_new_ivs): Remove useless dump.
32039
32040 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32041
32042         * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
32043         iv_cand code.
32044         (determine_group_iv_cost_cond, determine_iv_cost): Ditto.
32045         (iv_ca_set_no_cp, create_new_iv): Ditto.
32046
32047 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32048
32049         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32050
32051 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32052
32053         * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
32054         function tree_check2.
32055
32056 2017-05-02  Martin Liska  <mliska@suse.cz>
32057
32058         * doc/gcov.texi: Add missing preposition.
32059         * gcov.c (function_info::function_info): Properly fill up
32060         all member variables.
32061
32062 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32063
32064         * expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
32065
32066 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32067
32068         * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
32069
32070 2017-05-02  Martin Liska  <mliska@suse.cz>
32071
32072         PR lto/77954.
32073         * lto-streamer-in.c (lto_read_tree_1): Remove
32074         LTO_STREAMER_DEBUG.
32075         * lto-streamer.c (struct tree_hash_entry): Likewise.
32076         (struct tree_entry_hasher): Likewise.
32077         (tree_entry_hasher::hash): Likewise.
32078         (tree_entry_hasher::equal): Likewise.
32079         (lto_streamer_init): Likewise.
32080         (lto_orig_address_map): Likewise.
32081         (lto_orig_address_get): Likewise.
32082         (lto_orig_address_remove): Likewise.
32083         * lto-streamer.h: Likewise.
32084         * tree-streamer-in.c (streamer_alloc_tree): Likewise.
32085         * tree-streamer-out.c (streamer_write_tree_header): Likewise.
32086
32087 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
32088
32089         * config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
32090         (_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
32091         (mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
32092         (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
32093         (mm_maskz_sub_round_ss, _mm_mask_add_sd)
32094         (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
32095         (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
32096         (mm_maskz_sub_ss): New intrinsics.
32097         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32098         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
32099         * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
32100         (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
32101         (__builtin_ia32_subss_mask_round): New builtins.
32102         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32103         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
32104         * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
32105         Renamed to ...
32106         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
32107         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
32108         Changed to ...
32109         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
32110         ... this.
32111
32112 2017-05-02  Martin Jambor  <mjambor@suse.cz>
32113
32114         PR tree-optimization/78687
32115         * tree-sra.c (access): New field parent.
32116         (process_subtree_disqualification): New function.
32117         (disqualify_candidate): Call it.
32118         (build_accesses_from_assign): Reset write flag if creating an
32119         assighnment link.
32120         (build_access_subtree): Fill in parent field and also prpagate
32121         down grp_write flag.
32122         (create_artificial_child_access): New parameter set_grp_write, set
32123         grp_write to its value.
32124         (propagate_subaccesses_across_link): Also propagate grp_write flag
32125         values.
32126         (propagate_all_subaccesses): Push the closest parent back to work
32127         queue if add_access_to_work_queue returned true.
32128
32129 2017-05-02  Richard Biener  <rguenther@suse.de>
32130
32131         * common.opt (fstrict-overflow): Alias negative to fwrapv.
32132         * doc/invoke.texi (fstrict-overflow): Remove all traces of
32133         -fstrict-overflow documentation.
32134         * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
32135         (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
32136         flag_strict_overflow.
32137         * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
32138         * lto-opts.c (lto_write_options): Do not stream it.
32139         * lto-wrapper.c (merge_and_complain): Do not handle it.
32140         * opts.c (default_options_table): Do not set -fstrict-overflow.
32141         (finish_options): Likewise do not clear it when sanitizing.
32142         * simplify-rtx.c (simplify_const_relational_operation): Do not
32143         test flag_strict_overflow.
32144
32145 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32146
32147         * config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
32148         using enabled attribute.
32149         (*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
32150         (*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
32151         (*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
32152         (*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
32153         (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
32154         (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
32155         (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
32156         (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
32157         (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
32158         (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
32159
32160 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32161
32162         * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
32163
32164 2017-05-02  Richard Biener  <rguenther@suse.de>
32165
32166         PR tree-optimization/80591
32167         Revert
32168         2017-04-10  Richard Biener  <rguenther@suse.de>
32169
32170         * tree-ssa-structalias.c (find_func_aliases): Properly handle
32171         asm inputs.
32172
32173 2017-05-02  Richard Biener  <rguenther@suse.de>
32174
32175         PR tree-optimization/80549
32176         * tree-cfgcleanup.c (mfb_keep_latches): New helper.
32177         (cleanup_tree_cfg_noloop): Create forwarders to known loop
32178         headers if they do not have a preheader.
32179
32180 2017-05-02  Martin Liska  <mliska@suse.cz>
32181
32182         PR other/80589
32183         * common.opt: Fix typo.
32184         * doc/invoke.texi: Likewise.
32185
32186 2017-05-01  Jan Beulich  <jbeulich@suse.com>
32187
32188         * config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
32189         swapping, add (x,x,m,x,n) alternative.
32190
32191 2017-05-01  Nathan Sidwell  <nathan@acm.org>
32192
32193         * calls.c (combine_pending_stack_adjustment_and_call): Remove
32194         unnecessary unadjusted_alignment check.
32195
32196 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32197
32198         PR c++/80038
32199         * cilk_common.c (expand_builtin_cilk_detach): Move pedigree
32200         operations here.
32201         * gimplify.c (gimplify_cilk_detach): New function.
32202         (gimplify_call_expr, gimplify_modify_expr): Call it as needed.
32203         * tree-core.h: Document EXPR_CILK_SPAWN.
32204         * tree.h (EXPR_CILK_SPAWN): Define.
32205
32206 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
32207
32208         * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
32209         to use new fixit_hint representation, using the "replace" logic.
32210         (get_line_span_for_fixit_hint): Likewise.
32211         (layout::print_any_fixits): Likewise.
32212         (selftest::test_one_liner_many_fixits): Rename to...
32213         (selftest::test_one_liner_many_fixits_1): ...this, and update
32214         comment and expected output to reflect that the multiple fix-it
32215         hints are now consolidated into one insertion.
32216         (selftest::test_one_liner_many_fixits_2): New test.
32217         (selftest::test_diagnostic_show_locus_one_liner): Update for
32218         above.
32219         (selftest::test_fixit_consolidation): Update for fix-it API
32220         change.
32221         * diagnostic.c (print_parseable_fixits): Likewise.
32222         * edit-context.c (edited_line::m_line_events): Convert from
32223         auto_vec <line_event *> to auto_vec <line_event>.
32224         (class line_event): Convert from abstract base class to a concrete
32225         class, taking over the role of replace_event.
32226         (class insert_event): Delete.
32227         (class replace_event): Rename to class line_event.  Convert to
32228         half-open range.
32229         (edit_context::add_fixits): Reimplement.
32230         (edit_context::apply_insert): Delete.
32231         (edit_context::apply_replace): Rename to...
32232         (edit_context::apply_fixit): ...this.  Convert to half-open range.
32233         (edited_file::apply_insert): Delete.
32234         (edited_file::apply_replace): Rename to...
32235         (edited_file::apply_fixit): ...this.
32236         (edited_line::~edited_line): Drop deletion of events.
32237         (edited_line::apply_insert): Delete.
32238         (edited_line::apply_replace): Rename to...
32239         (edited_line::apply_fixit): ...this.  Convert to half-open range.
32240         Update for change to type of m_line_events.
32241         * edit-context.h (edit_context::apply_insert): Delete.
32242         (edit_context::apply_replace): Rename to...
32243         (edit_context::apply_fixit): ...this.
32244
32245 2017-05-01  Martin Sebor  <msebor@redhat.com>
32246
32247         * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
32248         known.
32249
32250 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
32251
32252         PR target/68491
32253         * config/i386/cpuid.h (__get_cpuid): Always return 0 when
32254         __get_cpuid_max returns 0.
32255         (__get_cpuid_count): Ditto.
32256
32257 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
32258
32259         * tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
32260         replacement expression is another instance of one of its arguments.
32261
32262 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
32263
32264         PR target/79430
32265         * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
32266         check for stack push/pop autoinc.
32267         * config/i386/i386.c (ix86_agi_dependent): Return false
32268         if the only reason why modified_in_p returned true is that
32269         addr is SP based and set_insn is a push or pop.
32270
32271 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32272
32273         * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
32274         overflow check.
32275
32276 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32277
32278         PR ipa/79224
32279         * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
32280         (account_size_time): Use two predicates - exec_pred and
32281         nonconst_pred_ptr.
32282         (evaluate_conditions_for_known_args): Compute both clause and
32283         nonspec_clause.
32284         (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
32285         (inline_summary_t::duplicate): Update.
32286         (estimate_function_body_sizes): Caluculate exec and nonconst predicates
32287         separately.
32288         (compute_inline_parameters): Likewise.
32289         (estimate_edge_size_and_time): Update caluclation of time.
32290         (estimate_node_size_and_time): Compute both time and nonspecialized
32291         time.
32292         (estimate_ipcp_clone_size_and_time): Update.
32293         (inline_merge_summary): Update.
32294         (do_estimate_edge_time): Update.
32295         (do_estimate_edge_size): Update.
32296         (do_estimate_edge_hints): Update.
32297         (inline_read_section, inline_write_summary): Stream both new predicates.
32298         * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
32299         as argument.
32300         (compute_inlined_call_time): Cleanup.
32301         (big_speedup_p): Update.
32302         (edge_badness): Update.
32303         * ipa-inline.h (INLINE_TIME_SCALE): Remove.
32304         (size_time_entry): Replace predicate by exec_predicate and
32305         nonconst_predicate.
32306         (edge_growth_cache_entry): Cache both time nad nonspecialized time.
32307         (estimate_edge_time): Return also nonspec_time.
32308         (reset_edge_growth_cache): Update.
32309
32310 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
32311
32312         PR rtl-optimization/80491
32313         * ifcvt.c (noce_process_if_block): When looking for x setter
32314         with missing else_bb, don't check only the insn right before
32315         cond_earliest, but look for the last insn that x is modified in
32316         within the same bb.
32317
32318         PR rtl-optimization/80491
32319         * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
32320
32321 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
32322
32323         PR tree-optimization/80487
32324         * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
32325
32326 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32327
32328         PR tree-optimization/79697
32329         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
32330         is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
32331         (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
32332         BUILT_IN_STRNDUP.
32333         * gimple-fold.c (gimple_fold_builtin_realloc): New function.
32334         (gimple_fold_builtin): Call gimple_fold_builtin_realloc.
32335
32336 2017-04-28  Martin Sebor  <msebor@redhat.com>
32337
32338         PR tree-optimization/80523
32339         * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
32340         (init_target_to_host_charmap, target_to_host, target_strtol10): New
32341         functions.
32342         (maybe_warn, format_directive, parse_directive): Use new functions.
32343         (pass_sprintf_length::execute): Call init_target_to_host_charmap.
32344
32345 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
32346
32347         * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
32348
32349 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32350
32351         * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
32352         target_header_dir): Set correctly.
32353         * configure: Regenerated.
32354         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
32355         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
32356         instead of SYSTEM_HEADER_DIR.
32357
32358 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
32359
32360         * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
32361         (estimate_local_effects): Likewise.
32362         * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
32363         edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
32364         * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
32365         estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
32366         do_estimate_edge_time, estimate_edge_time): Likewise.
32367         * ipa-inline-analysis.c (estimate_node_size_and_time,
32368         estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
32369         (estimate_time_after_inlining): Remove.
32370
32371 2017-04-28  Martin Liska  <mliska@suse.cz>
32372
32373         * doc/gcov.texi: Enhance documentation of gcov.
32374
32375 2017-04-28  Martin Liska  <mliska@suse.cz>
32376
32377         * doc/gcov.texi: Sort options in alphabetic order.
32378         * doc/gcov-dump.texi: Likewise.
32379         * doc/gcov-tool.texi: Likewise.
32380         * gcov.c (print_usage): Likewise.
32381         * gcov-dump.c (print_usage): Likewise.
32382         * gcov-tool.c (print_merge_usage_message): Likewise.
32383         (print_rewrite_usage_message): Likewise.
32384         (print_overlap_usage_message): Likewise.
32385
32386 2017-04-28  Martin Liska  <mliska@suse.cz>
32387
32388         PR gcov-profile/53915
32389         * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
32390
32391 2017-04-28  Martin Liska  <mliska@suse.cz>
32392
32393         PR gcov-profile/79891
32394         * gcov.c (add_line_counts): Assign BBs to lines just if the BB
32395         is marked by compiler as living on a line.
32396         (get_cycles_count): Remove usage of the union.
32397         (output_intermediate_file): Likewise.
32398         (find_source): Fix GNU coding style.
32399         (accumulate_line_counts): Remove old non-all block mode.
32400         (output_lines): Remove usage of the union.
32401         * profile.c (output_location): Include all BBs, even if
32402         belonging to a same line (and file) as a previous BB.
32403
32404 2017-04-28  Martin Liska  <mliska@suse.cz>
32405
32406         * gcov.c (process_args): Handle new argument 'w'.
32407         (read_graph_file): Assign ID to BBs.
32408         (output_branch_count): Display BB # if verbose flag is set.
32409         (output_lines): Likewise for arcs.
32410         (print_usage): Add '--verbose' option help.
32411         * doc/gcov.texi: Document --verbose (-w) option.
32412
32413 2017-04-28  Martin Liska  <mliska@suse.cz>
32414
32415         * gcov.c (struct block_location_info): New struct.
32416         (process_file): Fill up the new structure.
32417         (read_graph_file): Replace usage of encoding by the newly added
32418         struct.
32419         (add_line_counts): Likewise.
32420         (accumulate_line_counts): Remove usage of the union.
32421         (function_info::function_info): New function.
32422         (function_info::~function_info): Likewise.
32423         (process_file): Call delete instead of release_function.
32424         (release_function): Release the function.
32425         (release_structures): Call delete instead of release_function.
32426         (solve_flow_graph): Replace usage of num_blocks.
32427         (find_exception_blocks): Likewise.
32428         (output_lines): Fix GNU coding style.
32429
32430 2017-04-28  Martin Liska  <mliska@suse.cz>
32431
32432         PR driver/56469
32433         * coverage.c (coverage_remove_note_file): New function.
32434         * coverage.h: Declare the function.
32435         * toplev.c (finalize): Clean if an error has been seen.
32436
32437 2017-04-28  Martin Liska  <mliska@suse.cz>
32438
32439         PR gcov-profile/80031
32440         * gcov-dump.c (tag_blocks): Just print number of basic blocks.
32441         * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
32442         * gcov.c (read_graph_file): Read just number of blocks.
32443         * profile.c (branch_prob): Do not stream 0 flags per a basic
32444         block.
32445
32446 2017-04-28  Martin Liska  <mliska@suse.cz>
32447
32448         * gcov-dump.c (tag_*): Add new argument to declarations.
32449         (dump_gcov_file): Likewise.
32450         (tag_blocks): Add and use new argument depth.
32451         (tag_arcs): Likewise.
32452         (tag_lines): Likewise.
32453         (tag_counters): Likewise.
32454         (tag_summary): Likewise.
32455         (dump_working_sets): Use depth to do a proper indentation.
32456
32457 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
32458
32459         PR bootstrap/80531
32460         * cgraph.h (symtab_node::debug_symtab): No longer inline.
32461         * symtab.c (symtab_node::debug_symtab): Move definition here.
32462
32463 2017-04-28  Richard Biener  <rguenther@suse.de>
32464
32465         * lto-streamer.h (LTO_major_version): Bump to 7.
32466
32467 2017-04-28  Richard Biener  <rguenther@suse.de>
32468
32469         * tree-vrp.c (assert_info): New struct.
32470         (add_assert_info): New helper.
32471         (register_edge_assert_for_2): Refactor to add asserts to a vector
32472         of assert_info.
32473         (register_edge_assert_for_1): Likewise.
32474         (register_edge_assert_for): Likewise.
32475         (finish_register_edge_assert_for): New helper actually registering
32476         asserts where live on edge.
32477         (find_conditional_asserts): Adjust.
32478         (find_switch_asserts): Likewise.
32479         (evrp_dom_walker::try_find_new_range): Generalize.
32480         (evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
32481
32482 2017-04-27  Marek Polacek  <polacek@redhat.com>
32483
32484         PR sanitizer/80349
32485         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
32486         arg10 and arg11 to itype.
32487
32488 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
32489
32490         * doc/extend.texi (Object Size Checking): Improve grammar.
32491
32492 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
32493
32494         PR target/80530
32495         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
32496         that the logic for permitting reciprocal estimates matches that
32497         in use_rsqrt_p.
32498
32499 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
32500
32501         PR c++/80534
32502         * tree.c (type_cache_hasher::equal): Only compare
32503         TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
32504         (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
32505         non-aggregate element types.
32506         * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
32507         about the flag on ARRAY_TYPEs in the comment, formatting fix.
32508
32509 2017-04-27  Richard Biener  <rguenther@suse.de>
32510
32511         PR middle-end/80533
32512         * emit-rtl.c (set_mem_attributes_minus_bitpos): When
32513         stripping ARRAY_REFs from MEM_EXPR make sure we're not
32514         keeping a reference to a trailing array.
32515
32516 2017-04-27  Richard Biener  <rguenther@suse.de>
32517
32518         PR middle-end/80539
32519         * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
32520         being in loop-closed SSA form conservatively.
32521         (chrec_fold_multiply_poly_poly): Likewise.
32522
32523 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
32524
32525         PR middle-end/79665
32526         * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
32527         CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
32528
32529 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
32530
32531         PR target/77728
32532         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
32533         (aarch64_function_arg_alignment): Return unsigned int again, but still
32534         ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
32535         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
32536         Don't emit -Wpsabi note.
32537         (aarch64_function_arg_boundary): Likewise.
32538         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
32539         caller.
32540
32541 2017-04-26  Nathan Sidwell  <nathan@acm.org>
32542
32543         * tree.h (crc32_unsigned_n): Declare.
32544         (crc32_unsigned, crc32_unsigned): Make inline.
32545         * tree.c (crc32_unsigned_bits): Replace with ...
32546         (crc32_unsigned_n): ... this.
32547         (crc32_unsigned, crc32_byte): Remove.
32548         (crc32_string): Remove unnecessary braces.
32549
32550 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
32551
32552         * ipa-cp.c (estimate_local_effects): Convert sreal to int.
32553         * ipa-inline-analysis.c (MAX_TIME): Remove.
32554         (account_size_time): Use sreal for time.
32555         (dump_inline_summary): Update.
32556         (estimate_function_body_sizes): Update.
32557         (estimate_edge_size_and_time): Update.
32558         (estimate_calls_size_and_time): Update.
32559         (estimate_node_size_and_time): Update.
32560         (inline_merge_summary): Update.
32561         (inline_update_overall_summary): Update.
32562         (estimate_time_after_inlining): Update.
32563         (inline_read_section): Update.
32564         (inline_write_summary): Update.
32565         * ipa-inline.c (compute_uninlined_call_time): Update.
32566         (compute_inlined_call_time): Update.
32567         (recursive_inlining): Update.
32568         (inline_small_functions): Update.
32569         (dump_overall_stats): Update.
32570         * ipa-inline.h: Include sreal.h.
32571         (size_time_entry): Turn time to sreal.
32572         (inline_summary): Turn self_time nad time to sreal.
32573
32574 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
32575
32576         * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
32577         data-streamer.h
32578         (sreal::stream_out, sreal::stream_in): New.
32579         * sreal.h (sreal::stream_out, sreal::stream_in): Declare.
32580
32581 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
32582
32583         * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
32584         environment.
32585
32586 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
32587
32588         PR target/70799
32589         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
32590         Handle ASHIFTRT.
32591         (dimode_scalar_chain::compute_convert_gain): Ditto.
32592         (dimode_scalar_chain::make_vector_copies): Ditto.
32593         (dimode_scalar_chain::convert_reg): Ditto.
32594         (dimode_scalar_chain::convert_insn): Ditto.
32595         * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
32596         (VI248_AVX512BW_1): New mode iterator.
32597         (<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
32598         <mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
32599         mode iterator.
32600
32601 2017-04-25  Martin Sebor  <msebor@redhat.com>
32602
32603         PR tree-optimization/80497
32604         * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
32605         constants are representable in HOST_WIDE_INT.
32606         (parse_directive): Ditto.
32607
32608 2017-04-25  Martin Sebor  <msebor@redhat.com>
32609
32610         PR bootstrap/80486
32611         * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
32612         (new_zero_array): Adjust signature.
32613         (dom_info::dom_init): Used unsigned rather that size_t.
32614         (dom_info::dom_info): Same.
32615
32616 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
32617             Jakub Jelinek  <jakub@redhat.com>
32618
32619         PR target/77728
32620         * config/arm/arm.c: Include gimple.h.
32621         (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
32622         returns negative, increment ncrn only if it returned positive.
32623         (arm_needs_doubleword_align): Return int instead of bool,
32624         ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
32625         members, but if there is any such non-FIELD_DECL
32626         > PARM_BOUNDARY aligned decl, return -1 instead of false.
32627         (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
32628         returns negative, increment nregs only if it returned positive.
32629         (arm_setup_incoming_varargs): Likewise.
32630         (arm_function_arg_boundary): Emit -Wpsabi note if
32631         arm_needs_doubleword_align returns negative, return
32632         DOUBLEWORD_ALIGNMENT only if it returned positive.
32633
32634 2017-04-25  Marek Polacek  <polacek@redhat.com>
32635
32636         PR sanitizer/80349
32637         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
32638         first argument to type.
32639
32640 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
32641
32642         PR target/80482
32643         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
32644         type checks to test for compatibility instead of equality.
32645
32646 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
32647             Jakub Jelinek  <jakub@redhat.com>
32648
32649         PR target/77728
32650         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
32651         type.
32652         (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
32653         struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
32654         the alignment computation, but return their maximum in warn_alignment.
32655         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
32656         Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
32657         is smaller.
32658         (aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
32659         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
32660         caller.
32661
32662 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32663
32664         * config/arc/simdext.md (dmpyh): Fix typo.
32665
32666 2017-04-25  Richard Biener  <rguenther@suse.de>
32667
32668         PR tree-optimization/80492
32669         * alias.c (compare_base_decls): Handle registers with asm
32670         specification conservatively.
32671         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
32672         compare_base_decls returning dont-know properly.
32673
32674 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32675
32676         * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
32677         (legitimate_offset_address_p): New function.
32678         (arc_legitimate_address_p): Use above function.
32679
32680 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32681
32682         * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
32683
32684 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32685
32686         * config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
32687         ACCH registers whenever they are available.
32688
32689 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32690
32691         * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
32692         double regs fix when not used.
32693
32694 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32695
32696         * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
32697         core registers.
32698         (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
32699         (REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
32700
32701 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32702
32703         * config/arc/arc.c (arc_output_addsi): Check for h-register class
32704         when emitting short ADD instructions.
32705
32706 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32707
32708         * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
32709         constraint.
32710         (cmpsi_cc_c_insn): Likewise.
32711         (cbranchsi4_scratch): Compute proper instruction length using
32712         compact_hreg_operand.
32713         * config/arc/predicates.md (compact_hreg_operand): New predicate.
32714
32715 2017-04-25  Richard Biener  <rguenther@suse.de>
32716
32717         PR middle-end/80509
32718         * passes.c (pass_manager::pass_manager): Initialize
32719         m_name_to_pass_map.
32720
32721 2017-04-25  Richard Biener  <rguenther@suse.de>
32722
32723         PR tree-optimization/79201
32724         * tree-ssa-sink.c (statement_sink_location): Handle calls.
32725
32726 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32727
32728         PR target/80464
32729         * config/s390/vector.md: Split MEM->GPR vector moves for
32730         non-s_operand addresses.
32731
32732 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32733
32734         PR target/79895
32735         * config/s390/predicates.md (reload_const_wide_int_operand): New
32736         predicate.
32737         * config/s390/s390.md ("movti"): Remove d/P alternative.
32738         ("movti_bigconst"): New pattern definition.
32739
32740 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32741
32742         PR target/80080
32743         * s390-protos.h (s390_expand_cs_hqi): Removed.
32744         (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
32745         * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
32746         modes as well as CCZ1mode and CCZmode.
32747         (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
32748         signature of s390_emit_compare_and_swap.
32749         (s390_expand_cs_hqi): Likewise, make static.
32750         (s390_expand_cs_tdsi): Generate an explicit compare before trying
32751         compare-and-swap, in some cases.
32752         (s390_expand_cs): Wrapper function.
32753         (s390_expand_atomic_exchange_tdsi): New backend specific expander for
32754         atomic_exchange.
32755         (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
32756         * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
32757         patterns for small and large integers.  Forbid symref memory operands.
32758         Move expander to s390.c.  Require cc register.
32759         ("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
32760         ("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
32761         ("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
32762         ("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
32763         symref memory operands.  Remove CC mode and call s390_match_ccmode
32764         instead.
32765         ("atomic_exchange<mode>"): Allow and implement all integer modes.
32766
32767 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32768
32769         * config/s390/s390.md (define_peephole2): New peephole to help
32770         combining the load-and-test pattern with volatile memory.
32771
32772 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32773
32774         * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
32775         with CCZmode for TARGET_Z196.
32776
32777 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
32778
32779         PR rtl-optimization/80501
32780         * combine.c (make_compound_operation_int): Set subreg_code to SET
32781         even for AND with mask of the sign bit of mode.
32782
32783         PR rtl-optimization/80500
32784         * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
32785         sum's initial value.
32786
32787 2017-04-25  Julian Brown  <julian@codesourcery.com>
32788             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32789
32790         * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
32791
32792 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
32793
32794         * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
32795
32796 2017-04-25  Julian Brown  <julian@codesourcery.com>
32797             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32798
32799         * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
32800         (thunderx2t99_sha): New Reservation.
32801
32802 2017-04-25  Julian Brown  <julian@codesourcery.com>
32803             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32804
32805         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
32806         type for 1-element load.
32807
32808 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
32809
32810         * match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
32811
32812 2017-04-24  Martin Jambor  <mjambor@suse.cz>
32813
32814         PR tree-optimization/80293
32815         * tree-sra.c (scalarizable_type_p): New parameter const_decl, make
32816         char arrays not totally scalarizable if it is false.
32817         (analyze_all_variable_accesses): Pass correct value in the new
32818         parameter.  Add a statistics counter.
32819
32820 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
32821
32822         PR middle-end/79931
32823         * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
32824
32825 2017-04-24  Richard Biener  <rguenther@suse.de>
32826
32827         PR tree-optimization/80494
32828         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
32829         out for complex types.
32830
32831 2017-04-24  Richard Biener  <rguenther@suse.de>
32832
32833         * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
32834         * tree-ssa-sccvn.c (print_scc): Print SCC size.
32835         (extract_and_process_scc_for_name): Never fail but drop SCC to varying.
32836         (DFS): Adjust and never fail.
32837         (sccvn_dom_walker::fail): Remove.
32838         (sccvn_dom_walker::before_dom_children): Adjust.
32839         (run_scc_vn): Likewise and never fail.
32840         * tree-ssa-pre.c (pass_pre::execute): Adjust.
32841         (pass_fre::execute): Likewise.
32842
32843 2017-04-24  Richard Biener  <rguenther@suse.de>
32844
32845         PR tree-optimization/79725
32846         * tree-ssa-sink.c (statement_sink_location): Return whether
32847         failure reason was zero uses.  Move that check later.
32848         (sink_code_in_bb): Deal with zero uses by removing the stmt
32849         if possible.
32850
32851 2017-04-24  Richard Biener  <rguenther@suse.de>
32852
32853         PR c++/2972
32854         * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
32855         pointer-based references.
32856
32857 2017-04-24  Richard Biener  <rguenther@suse.de>
32858
32859         PR bootstrap/79814
32860         * pass_manager.h (pass_manager::operator new): Remove.
32861         (pass_manager::operator delete): Likewise.
32862         * passes.c (pass_manager::operator new): Remove.
32863         (pass_manager::operator delete): Likewise.
32864         (pass_manager::pass_manager): Zero individual pass members.
32865
32866 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
32867
32868         PR target/70799
32869         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
32870         <case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
32871         Check "XEXP (src, 1)" operand here.
32872         <case PLUS, case MINUS, case IOR, case XOR, case AND>:
32873         Check "XEXP (src, 1)" operand here.
32874         (dimode_scalar_chain::make_vector_copies): Detect count register
32875         of a shift instruction.  Zero extend count register from QImode
32876         to DImode to satisfy vector shift pattern count operand predicate.
32877         Substitute vector shift count operand with a DImode copy.
32878         (dimode_scalar_chain::convert_reg): Ditto, zero-extend from
32879         vector register.
32880
32881 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
32882
32883         * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
32884         Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
32885         (*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
32886         UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
32887         (UNSPEC_NOREX_MEM): Remove definition.
32888
32889 2017-04-21  Richard Biener  <rguenther@suse.de>
32890
32891         PR tree-optimization/79547
32892         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
32893         Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
32894         bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
32895         without any constraints.
32896
32897 2017-04-21  Richard Biener  <rguenther@suse.de>
32898
32899         PR tree-optimization/78847
32900         * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
32901
32902 2017-04-21  Richard Biener  <rguenther@suse.de>
32903
32904         * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
32905         (build_distinct_type_copy): Likewise.
32906         (build_variant_type_copy): Likewise.
32907         * tree.c (build_qualified_type): Pass down mem-stat info.
32908         (build_distinct_type_copy): Likewise.
32909         (build_variant_type_copy): Likewise.
32910
32911 2017-04-21  Richard Biener  <rguenther@suse.de>
32912
32913         PR tree-optimization/80237
32914         * tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
32915         defaulted to NULL.
32916         (phi_translate_1): Also allow a leader in AVAIL_OUT of pred
32917         for a simplified result.
32918
32919 2016-04-21  Richard Biener  <rguenther@suse.de>
32920
32921         * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
32922         sth as strict as a simple_iv but a chrec without symbols and an
32923         operand defined in the loop we are peeling (and not some subloop).
32924         (propagate_constants_for_unrolling): Propagate all constants.
32925
32926 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
32927
32928         PR target/79804
32929         * config/i386/i386.c (print_reg): Remove assert for disalowed
32930         regno values, call output_operand_lossage instead.
32931
32932 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
32933
32934         PR target/78090
32935         * config/i386/constraints.md (Yc): New register constraint.
32936         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
32937         Use Yc constraint for alternative 2 of operand 0.  Remove
32938         preferred_for_speed attribute.
32939
32940 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
32941
32942         * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
32943         lastprivate clauses in SIMT case.
32944
32945 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
32946
32947         * doc/invoke.texi (-Wextra-semi): Document new warning option.
32948
32949 2017-04-20  Richard Biener  <rguenther@suse.de>
32950
32951         PR tree-optimization/57796
32952         * tree-vect-stmts.c (vect_model_store_cost): Cost scatters
32953         as N scalar stores.
32954         (vect_model_load_cost): Cost gathers as N scalar loads.
32955
32956 2017-04-20  Richard Biener  <rguenther@suse.de>
32957
32958         * ggc-page.c (ggc_allocated_p): Rename to ...
32959         (safe_lookup_page_table_entry): ... this and return the lookup
32960         result.
32961         (gt_ggc_m_S): Use safe_lookup_page_table_entry.
32962
32963 2017-04-20  Richard Biener  <rguenther@suse.de>
32964
32965         PR tree-optimization/80453
32966         * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
32967         * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
32968         from the conditions.
32969         (vn_phi_eq): Pass them down.
32970         (vn_phi_lookup): Record them.
32971         (vn_phi_insert): Likewise.
32972
32973 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
32974
32975         * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
32976         uninitialized variable warning to avoid buffer overrun.
32977
32978 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
32979
32980         PR other/71250
32981         * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
32982         is suppressed for '{ 0 }' in C.
32983
32984 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
32985
32986         * BASE-VER: Set to 8.0.0.
32987
32988 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32989
32990         * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
32991         priority .init_array and .fini_array section with SECTION_NOTYPE
32992         flag.
32993
32994 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
32995
32996         PR middle-end/80423
32997         * tree.h (build_array_type): Add typeless_storage default argument.
32998         * tree.c (type_cache_hasher::equal): Also compare
32999         TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
33000         (build_array_type): Add typeless_storage argument, set
33001         TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
33002         recursive call.
33003         (build_nonshared_array_type): Adjust build_array_type_1 caller.
33004         (build_array_type): Likewise.  Add typeless_storage argument.
33005
33006 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33007             Jakub Jelinek  <jakub@redhat.com>
33008
33009         PR tree-optimization/80426
33010         * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
33011         operation on symbolic operands, also compute the overflow for the
33012         invariant part when the operation degenerates into a negation.
33013
33014 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
33015
33016         PR debug/80461
33017         * dwarf2out.c (modified_type_die, gen_type_die_with_usage):
33018         Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
33019
33020         PR debug/80436
33021         * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
33022
33023 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
33024
33025         PR target/80462
33026         * config/avr/avr.c (tree.h): Include it.
33027         (cgraph.h): Include it.
33028         (avr_encode_section_info): Don't warn for uninitialized progmem
33029         variable if it's just an alias.
33030
33031 2017-04-19  Richard Biener  <rguenther@suse.de>
33032
33033         PR ipa/65972
33034         * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
33035         when needed by AutoPGO.
33036
33037 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
33038
33039         PR lto/50345
33040         * doc/lto.texi: Remove an extra 'that'.
33041
33042 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
33043
33044         PR rtl-optimization/80429
33045         * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
33046         are only used in debug insns.
33047
33048 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33049             Vladimir Makarov  <vmakarov@redhat.com>
33050
33051         * config/sparc/predicates.md (input_operand): Add comment.  Return
33052         true for any memory operand when LRA is in progress.
33053         * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
33054
33055 2017-04-18  Jeff Law  <law@redhat.com>
33056
33057         PR target/74563
33058         * mips.md ({return,simple_return}_internal): Do not overwrite
33059         operands[0].
33060
33061 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33062
33063         PR tree-optimization/80443
33064         * tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
33065         instead of adding 1, subtract -1 and similarly instead of subtracting
33066         1 add -1.
33067
33068 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
33069
33070         PR rtl-optimization/80357
33071         * haifa-sched.c (tmp_bitmap): New variable.
33072         (model_recompute): Handle duplicate use records.
33073         (alloc_global_sched_pressure_data): Initialize tmp_bitmap.
33074         (free_global_sched_pressure_data): Free it.
33075
33076 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33077
33078         Revert:
33079         2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33080         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
33081         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
33082         instead of SYSTEM_HEADER_DIR.
33083
33084 2017-04-18  Jeff Law  <law@redhat.com>
33085
33086         PR middle-end/80422
33087         * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
33088         predecessors after walking up the insn chain.
33089
33090 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33091
33092         PR debug/80263
33093         * dwarf2out.c (modified_type_die): Try harder not to emit internal
33094         sizetype type into debug info.
33095
33096 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
33097
33098         PR target/80099
33099         * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
33100         unneeded test for TARGET_UPPER_REGS_SF.
33101         * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
33102
33103 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33104
33105         PR sanitizer/80444
33106         * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
33107         instead of gsi_after_labels.
33108
33109 2017-04-18  Jeff Law  <law@redhat.com>
33110
33111         * regcprop.c (maybe_mode_change): Avoid creating copies of the
33112         stack pointer.
33113
33114         Revert:
33115         2017-04-13  Jeff Law  <law@redhat.com>
33116         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33117         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33118
33119 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
33120
33121         PR target/79453
33122         * config/avr/avr.c (intl.h): Include it.
33123         (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
33124
33125 2017-04-18  Martin Liska  <mliska@suse.cz>
33126
33127         PR gcov-profile/78783
33128         * gcov-tool.c (gcov_output_files): Validate that destination
33129         file is either removed by the tool or by a user.
33130
33131 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33132             Guy Benyei  <guybe@mellanox.com>
33133
33134         * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
33135         block, and do not negate it, the stored id is already negative.
33136
33137 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33138
33139         * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
33140
33141 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
33142
33143         PR target/80098
33144         * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
33145         masks of options that should be turned off if the VSX vector
33146         options are turned off.
33147         (OTHER_P8_VECTOR_MASKS): Likewise.
33148         (OTHER_VSX_VECTOR_MASKS): Likewise.
33149         * config/rs6000/rs6000.c (rs6000_option_override_internal): Call
33150         rs6000_disable_incompatible_switches to validate no type switches
33151         like -mvsx.
33152         (rs6000_incompatible_switch): New function to disallow turning on
33153         other vector options if -mno-vsx, -mno-power8-vector, or
33154         -mno-power9-vector are specified.
33155
33156 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33157
33158         * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
33159
33160 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33161
33162         * config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
33163         * config/arc/arc.c (arc_decl_pretend_args): Likewise.
33164         * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
33165         (ARG_POINTER_CFA_OFFSET): Likewise.
33166
33167 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33168
33169         * config/arc/arc.c (arc_mode_dependent_address_p): Relax
33170         conditions to take advantage of various optimizations.
33171
33172 2017-04-13  Jeff Law  <law@redhat.com>
33173
33174         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33175         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33176         (zero_extendsidi2_dext): Likewise.
33177
33178 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33179
33180         PR sanitizer/80403
33181         * fold-const.c (fold_ternary_loc): Revert
33182         use op0 instead of fold_convert_loc (loc, type, arg0) part of
33183         2017-04-12 change.
33184
33185 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
33186
33187         PR rtl-optimization/80343
33188         * lra-remat.c (update_scratch_ops): Assign original hard reg to
33189         new scratch pseudo.
33190
33191 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
33192
33193         PR sanitizer/80414
33194         * ubsan.c (ubsan_expand_bounds_ifn): Pass original index
33195         to ubsan_encode_value.
33196
33197 2017-04-13  Jeff Law  <law@redhat.com>
33198
33199         * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
33200         appearing in DEBUG_INSNs.
33201
33202 2017-04-13  Martin Liska  <mliska@suse.cz>
33203
33204         PR gcov-profile/80413
33205         * gcov-io.c (gcov_write_string): Copy to buffer just when
33206         allocated size is greater than zero.
33207
33208 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33209
33210         PR debug/80321
33211         * dwarf2out.c (decls_for_scope): Ignore declarations of
33212         current_function_decl in BLOCK_NONLOCALIZED_VARS.
33213
33214 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
33215
33216         PR lto/69953
33217         * ipa-visibility.c (non_local_p): Fix typos.
33218         (localize_node): When localizing symbol in same comdat group,
33219         dissolve the group only when we know external symbols are going
33220         to be privatized.
33221         (function_and_variable_visibility): Do not localize DECL_EXTERNAL.
33222
33223 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33224
33225         PR tree-optimization/79390
33226         * optabs.c (emit_conditional_move): If the preferred op2/op3 operand
33227         order does not result in usable sequence, retry with reversed operand
33228         order.
33229
33230         PR sanitizer/80403
33231         PR sanitizer/80404
33232         PR sanitizer/80405
33233         * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
33234         to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
33235         op0 instead of fold_convert_loc (loc, type, arg0).
33236
33237 2017-04-12  Jeff Law  <law@redhat.com>
33238
33239         * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
33240         has a delay slot in the generated code.
33241
33242         * config/cris/cris.md (cris_preferred_reload_class): Return
33243         GENNONACR_REGS rather than GENERAL_REGS.
33244
33245 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33246
33247         PR c/80163
33248         * expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
33249         vs. ZERO_EXTEND based on signedness of treeop0's type rather than
33250         signedness of the result type.
33251
33252 2017-04-12  Richard Biener  <rguenther@suse.de>
33253             Jeff Law  <law@redhat.com>
33254
33255         PR tree-optimization/80359
33256         * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
33257         trim stores to TARGET_MEM_REFs.
33258
33259 2017-04-12  Richard Biener  <rguenther@suse.de>
33260
33261         PR tree-optimization/79390
33262         * gimple-ssa-split-paths.c (is_feasible_trace): Restrict
33263         threading case even more.
33264
33265 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
33266
33267         PR target/80382
33268         * config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
33269         for quad_address_p for TImode, instead of just not indexed_address.
33270
33271 2017-04-12  Richard Biener  <rguenther@suse.de>
33272             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33273
33274         PR middle-end/79671
33275         * alias.c (component_uses_parent_alias_set_from): Handle
33276         TYPE_TYPELESS_STORAGE.
33277         (get_alias_set): Likewise.
33278         * tree-core.h (tree_type_common): Add typeless_storage flag.
33279         * tree.h (TYPE_TYPELESS_STORAGE): New macro.
33280         * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
33281         for types containing members with TYPE_TYPELESS_STORAGE.
33282         (place_field): Likewise.
33283         (layout_type): Likewise for ARRAY_TYPE.
33284         * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
33285         * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
33286         TYPE_TYPELESS_STORAGE.
33287         * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
33288
33289 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33290
33291         PR sanitizer/80349
33292         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33293         first argument to type.
33294
33295 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33296
33297         PR target/80376
33298         PR target/80315
33299         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
33300         CONST0_RTX (mode) rather than const0_rtx where appropriate.
33301         (rs6000_expand_binop_builtin): Likewise.
33302         (rs6000_expand_ternop_builtin): Likewise; also add missing
33303         vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
33304         vshasigma built-ins.
33305         * doc/extend.texi: Document that vec_xxpermdi's third argument
33306         must be a constant.
33307
33308 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
33309
33310         * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
33311         Use shift_const cost parameter when calculating gain of STV shifts.
33312
33313 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
33314
33315         PR rtl-optimization/70478
33316         * lra-constraints.c (process_alt_operands): Check memory for
33317         disfavoring memory insn operand.
33318
33319 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33320
33321         PR middle-end/80100
33322         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
33323         left shift in unsigned HOST_WIDE_INT type.
33324
33325         PR rtl-optimization/80385
33326         * simplify-rtx.c (simplify_unary_operation_1): Don't transform
33327         (not (neg X)) into (plus X -1) for complex or non-integral modes.
33328
33329         PR libgomp/80394
33330         * omp-low.c (scan_omp_task): Don't optimize away empty tasks
33331         if they have any depend clauses.
33332
33333 2017-04-11  Martin Liska  <mliska@suse.cz>
33334
33335         PR ipa/80212
33336         * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
33337         * ipa-split.c (split_function): Create a local comdat symbol
33338         if caller is in a comdat group.
33339
33340 2017-04-11  Martin Liska  <mliska@suse.cz>
33341
33342         PR ipa/80212
33343         * ipa-cp.c (determine_versionability): Handle calls_comdat_local
33344         flags.
33345
33346 2017-04-11  Martin Sebor  <msebor@redhat.com>
33347
33348         PR middle-end/80364
33349         * gimple-ssa-sprintf.c (get_int_range): Remove second argument and
33350         always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
33351         for INTEGER_TYPE.
33352         (directive::set_width, directive::set_precision, format_character):
33353         Adjust.
33354         (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
33355         INTEGER_TYPE.
33356
33357 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
33358
33359         PR target/80389
33360         * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
33361         conflict, set target->arch_name instead of target->cpu_name.
33362
33363 2017-04-11  Richard Biener  <rguenther@suse.de>
33364
33365         PR tree-optimization/80374
33366         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
33367         build_zero_cst, remove fold_convertible_p check again.
33368
33369 2017-04-11  Martin Liska  <mliska@suse.cz>
33370
33371         PR sanitizer/70878
33372         * ubsan.c (instrument_object_size): Do not instrument register
33373         variables.
33374
33375 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33376
33377         PR target/80381
33378         * config/i386/i386-builtin-types.def
33379         (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
33380         V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
33381         V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
33382         V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
33383         V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
33384         V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
33385         V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
33386         V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
33387         V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
33388         V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
33389         V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
33390         V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
33391         V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
33392         V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
33393         V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
33394         V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
33395         V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
33396         V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
33397         * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
33398         __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
33399         __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
33400         __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
33401         __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
33402         __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
33403         __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
33404         __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
33405         __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
33406         __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
33407         __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
33408         __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
33409         __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
33410         __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
33411         __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
33412         __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
33413         __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
33414         __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
33415         __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
33416         __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
33417         __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
33418         __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
33419         __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
33420         __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
33421         __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
33422         __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
33423         __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
33424         __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
33425         aliases.
33426         * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
33427         flag to second_arg_count, handle 4 argument function type _COUNT
33428         aliases, handle second_arg_count on second argument rather than last.
33429
33430 2017-04-10  Jeff Law  <law@redhat.com>
33431
33432         PR tree-optimization/80374
33433         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
33434         record anything if we can not convert integer_zero_node to the
33435         desired type.
33436
33437 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
33438
33439         PR target/80108
33440         * config/rs6000/rs6000.c (rs6000_option_override_internal):
33441         Enhance special handling given to the TARGET_P9_MINMAX option in
33442         relation to certain other options.
33443
33444 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
33445
33446         PR tree-optimization/80153
33447         * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
33448         remove POINTER_PLUS_EXPR's base part directly, rather than through
33449         aff_tree.
33450
33451 2017-04-10  Richard Biener  <rguenther@suse.de>
33452             Bin Cheng  <bin.cheng@arm.com>
33453
33454         PR tree-optimization/80153
33455         * tree-affine.c (aff_combination_to_tree): Get base pointer from
33456         the first element of pointer type aff_tree.  Build result expr in
33457         aff_tree's type.
33458         (add_elt_to_tree): Convert to type unconditionally.  Remove other
33459         fold_convert calls.
33460         * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
33461         (rewrite_use_nonlinear_expr): Check invariant using iv information.
33462
33463 2017-04-10  Richard Biener  <rguenther@suse.de>
33464
33465         * tree-ssa-structalias.c (find_func_aliases): Properly handle
33466         asm inputs.
33467
33468 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
33469
33470         PR rtl-optimization/70478
33471         * lra-constraints.c (curr_small_class_check): New.
33472         (update_and_check_small_class_inputs): New.
33473         (process_alt_operands): Update curr_small_class_check.  Disfavor
33474         alternative insn memory operands.  Check available regs for small
33475         class operands.
33476
33477 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
33478
33479         PR target/80057
33480         * config/mips/mips.opt (-mvirt): Update description.
33481         * doc/invoke.texi (-mvirt): Likewise.
33482
33483 2017-04-10  Richard Biener  <rguenther@suse.de>
33484
33485         PR middle-end/80362
33486         * fold-const.c (fold_binary_loc): Look at unstripped ops when
33487         looking for NEGATE_EXPR in -A / -B to A / B folding.
33488
33489 2017-04-10  Martin Liska  <mliska@suse.cz>
33490
33491         PR gcov-profile/80224
33492         * gcov.c (print_usage): Fix usage string.
33493         (get_gcov_intermediate_filename): Remove.
33494         (output_gcov_file): Use both for normal and intermediate format.
33495         (generate_results): Do not initialize special file for
33496         intermediate format.
33497
33498 2017-04-10  Richard Biener  <rguenther@suse.de>
33499
33500         PR tree-optimization/80304
33501         * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
33502         for safelen.
33503
33504 2017-04-10  Nathan Sidwell  <nathan@acm.org>
33505
33506         PR target/79905
33507         * config/rs6000/rs6000.c (rs6000_vector_type): New.
33508         (rs6000_init_builtins): Use it.
33509
33510 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33511
33512         * config/arm/arm.md (<mrc>): Add mode to SET source.
33513         (<mrrc>): Likewise.
33514
33515 2017-04-10  Richard Biener  <rguenther@suse.de>
33516
33517         PR middle-end/80344
33518         * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
33519
33520 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
33521
33522         PR target/80324
33523         * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
33524         _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
33525         _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
33526         _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
33527         _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
33528         _mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
33529         _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
33530         _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
33531         _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
33532         _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
33533         _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
33534         _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
33535         _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
33536         _mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
33537         _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
33538         _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
33539         _mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
33540         _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
33541         _mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
33542         _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
33543         _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
33544         _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
33545         _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
33546
33547 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
33548
33549         PR rtl-optimization/70478
33550         * lra-constraints.c: Reverse the last patch.
33551
33552 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
33553
33554         * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
33555         Add comment for WCHAR_T.
33556
33557 2017-04-08  Martin Liska  <mliska@suse.cz>
33558
33559         Revert:
33560         2017-04-07  Martin Liska  <mliska@suse.cz>
33561
33562         PR ipa/80212
33563         * ipa-split.c (split_function): Add function part to a same comdat
33564         group.
33565
33566 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
33567
33568         PR target/80358
33569         * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
33570
33571 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
33572
33573         * rs6000/rs6000.c (vec_load_pendulum): Rename...
33574         (vec_pairing): ...to this.
33575         (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
33576         (rs6000_sched_init): Adjust for name change.
33577         (struct rs6000_sched_context): Likewise.
33578         (rs6000_init_sched_context): Likewise.
33579         (rs6000_set_sched_context): Likewise.
33580
33581 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
33582
33583         PR target/80322
33584         PR target/80323
33585         PR target/80325
33586         PR target/80326
33587         * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
33588         intrinsics.
33589         * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
33590         _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
33591         _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
33592
33593 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
33594
33595         * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
33596
33597 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
33598
33599         PR rtl-optimization/70703
33600         * ira-color.c (update_conflict_hard_regno_costs): Use
33601         int64_t instead of HOST_WIDE_INT.
33602
33603 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
33604
33605         PR rtl-optimization/70478
33606         * lra-constraints.c (process_alt_operands): Disfavor alternative
33607         insn memory operands.
33608
33609 2017-04-07  Jeff Law  <law@redhat.com>
33610
33611         * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
33612         CALL and NOTE_INSN_CALL_ARG_LOCATION.
33613
33614 2017-04-07  Martin Liska  <mliska@suse.cz>
33615
33616         PR target/79889
33617         * config/aarch64/aarch64.c (aarch64_process_target_attr):
33618         Show error message instead of an ICE.
33619
33620 2017-04-07  Martin Liska  <mliska@suse.cz>
33621
33622         PR ipa/80212
33623         * ipa-split.c (split_function): Add function part to a same comdat
33624         group.
33625
33626 2017-04-07  Richard Biener  <rguenther@suse.de>
33627
33628         PR middle-end/80341
33629         * tree.c (get_unwidened): Also handle ! for_type case for
33630         INTEGER_CSTs.
33631         * convert.c (do_narrow): Split out from ...
33632         (convert_to_integer_1): ... here.  Do not pass final truncation
33633         type to get_unwidened for TRUNC_DIV_EXPR.
33634
33635 2017-04-07  Richard Biener  <rguenther@suse.de>
33636
33637         * tree-affine.c (wide_int_ext_for_comb): Take type rather
33638         than aff_tree.
33639         (aff_combination_const): Adjust.
33640         (aff_combination_scale): Likewise.
33641         (aff_combination_add_elt): Likewise.
33642         (aff_combination_add_cst): Likewise.
33643         (aff_combination_convert): Likewise.
33644         (add_elt_to_tree): Likewise.  Remove unused argument.
33645         (aff_combination_to_tree): Adjust calls to add_elt_to_tree.
33646
33647 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
33648
33649         * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
33650         definition.
33651         * config/arm/arm.c (arm_default_short_enums): Use
33652         ARM_DEFAULT_SHORT_ENUMS.
33653         * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
33654
33655 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
33656
33657         PR debug/80234
33658         * dwarf2out.c (gen_member_die): Handle C++17 inline static data
33659         members with redundant out-of-class redeclaration.
33660
33661 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33662
33663         PR target/80286
33664         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
33665         * config/i386/i386.md (*zero_extendsidi2):
33666         Add (?*x,*x) and (?*v,*v) alternatives.
33667
33668 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33669
33670         PR target/79733
33671         * config/i386/i386.c (ix86_expand_builtin)
33672         <case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
33673         mode from insn data. Convert operands to insn operand mode.
33674         Copy operands that don't satisfy insn predicate to a register.
33675
33676 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
33677
33678         * config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
33679         Update comments.
33680
33681 2017-04-06  Richard Biener  <rguenther@suse.de>
33682
33683         PR tree-optimization/80334
33684         * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
33685         preserve alignment of accesses.
33686
33687 2017-04-06  Richard Biener  <rguenther@suse.de>
33688
33689         PR tree-optimization/80262
33690         * tree-sra.c (build_ref_for_offset): Preserve address-space
33691         information.
33692         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
33693         Drop useless address-space information on MEM_REF offsets.
33694
33695 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
33696
33697         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
33698
33699 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33700
33701         PR rtl-optimization/70703
33702         * ira-color.c (update_conflict_hard_regno_costs): Use
33703         HOST_WIDE_INT instead of long.
33704
33705 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
33706
33707         PR target/80298
33708         * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
33709         not defined for x86_64 target.  Add -mmmx target option when __SSE2__
33710         is not defined.
33711         * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
33712         for x86_64 target.  Handle -m3dnowa option.
33713
33714 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33715
33716         PR rtl-optimization/70703
33717         * ira-color.c (update_costs_from_allocno): Use the smallest mode.
33718         (update_conflict_hard_regno_costs): Use long instead of unsigned
33719         arithmetic for cost calculation.
33720
33721 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33722             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33723
33724         PR sanitizer/80308
33725         * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
33726         for big endian.
33727
33728 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
33729
33730         PR target/78002
33731         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
33732         ptr_mode with Pmode throughout.
33733         * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
33734         into probe_stack_range and use DImode.
33735
33736 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33737
33738         PR target/79890
33739         * config/s390/s390.c (s390_register_info_gprtofpr): Return if
33740         call_eh_return is true.
33741
33742 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33743
33744         * config/s390/s390-c.c (s390_resolve_overloaded_builtin):
33745         Initialize last_match_fntype_index.
33746
33747 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33748
33749         PR target/80310
33750         * tree-nvr.c: Include internal-fn.h.
33751         (pass_return_slot::execute): Ignore internal calls without
33752         direct optab.
33753
33754 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33755             Richard Biener  <rguenther@suse.de>
33756
33757         PR c++/80297
33758         * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
33759         captures used multiple times, except for the last use.
33760         * generic-match-head.c: Include gimplify.h.
33761
33762 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33763
33764         PR tree-optimization/79390
33765         * target.h (struct noce_if_info): Declare.
33766         * targhooks.h (default_noce_conversion_profitable_p): Declare.
33767         * target.def (noce_conversion_profitable_p): New target hook.
33768         * ifcvt.h (struct noce_if_info): New type, moved from ...
33769         * ifcvt.c (struct noce_if_info): ... here.
33770         (noce_conversion_profitable_p): Renamed to ...
33771         (default_noce_conversion_profitable_p): ... this.  No longer
33772         static nor inline.
33773         (noce_try_store_flag_constants, noce_try_addcc,
33774         noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
33775         noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
33776         instead of noce_conversion_profitable_p.
33777         * config/i386/i386.c: Include ifcvt.h.
33778         (ix86_option_override_internal): Don't override
33779         PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
33780         (ix86_noce_conversion_profitable_p): New function.
33781         (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
33782         * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
33783         * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
33784         * doc/tm.texi: Regenerated.
33785
33786 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33787
33788         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
33789         correction.
33790
33791 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33792
33793         PR target/80307
33794         * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
33795         instructions for small multiply cores.
33796
33797 2017-04-04  Jeff Law  <law@redhat.com>
33798
33799         * config/mips/mips.c (mips_multi_add): Zero initialize the newly
33800         added member.
33801         (mips_expand_vec_perm_const): Initialize elements in orig_perm
33802         that are not set by the loop over the elements.
33803
33804 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33805
33806         PR target/80286
33807         * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
33808         int mode, convert_modes it to mode as unsigned, otherwise use
33809         lowpart_subreg to mode rather than SImode.
33810         * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
33811         ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
33812         Use DImode instead of SImode for the shift count operand.
33813         * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
33814         Likewise.
33815
33816 2017-04-04  Richard Biener  <rguenther@suse.de>
33817
33818         PR middle-end/80281
33819         * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
33820         arithmetic done for the negate or the plus.  Simplify.
33821         (A - (-B) -> A + B): Likewise.
33822         * fold-const.c (split_tree): Make sure to not negate pointers.
33823
33824 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
33825
33826         PR rtl-optimization/60818
33827         * simplify-rtx.c (simplify_binary_operation_1): Do not replace
33828         a compare of comparisons with the thing compared if this results
33829         in a different machine mode.
33830
33831 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
33832
33833         * alias.c (base_alias_check): Fix typo in comment.
33834         * cgraph.h (class ipa_polymorphic_call_context): Likewise.
33835         * cgraphunit.c (symbol_table::compile): Likewise.
33836         * collect2.c (maybe_run_lto_and_relink): Likewise.
33837         * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
33838         * config/avr/avr-arch.h (avr_arch_info_t): Likewise.
33839         * config/avr/avr.c (avr_map_op_t): Likewise.
33840         * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
33841         * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
33842         * config/epiphany/epiphany.md (movcc): Likewise.
33843         * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
33844         * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
33845         Likewise.
33846         * config/mips/mips.c (mips_save_restore_reg): Likewise.
33847         * config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
33848         * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
33849         * config/sh/sh.c (sh_rtx_costs): Likewise.
33850         * fold-const.c (fold_truth_andor): Likewise.
33851         * genautomata.c (collapse_flag): Likewise.
33852         * gengtype.h (struct type::u::s): Likewise.
33853         * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
33854         * input.c (FORMAT_AMOUNT): Likewise.
33855         * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
33856         (known_aggs_to_agg_replacement_list): Likewise.
33857         * ipa-inline-analysis.c: Likewise.
33858         * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
33859         * ipa-polymorphic-call.c
33860         (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
33861         * loop-unroll.c (analyze_insn_to_expand_var): Likewise.
33862         * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
33863         Likewise.
33864         * modulo-sched.c (apply_reg_moves): Likewise.
33865         * omp-expand.c (build_omp_regions_1): Likewise.
33866         * trans-mem.c (struct tm_wrapper_hasher): Likewise.
33867         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
33868         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
33869         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
33870         * value-prof.c: Likewise.
33871         * var-tracking.c (val_reset): Likewise.
33872
33873 2017-04-03  Richard Biener  <rguenther@suse.de>
33874
33875         PR tree-optimization/80275
33876         * fold-const.c (split_address_to_core_and_offset): Handle
33877         POINTER_PLUS_EXPR.
33878
33879 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
33880
33881         * tree-nested.c (get_descriptor_type): Make sure that the alignment of
33882         descriptors is at least equal to that of functions.
33883
33884 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
33885
33886         * config/i386/sse.md (movdi_to_sse): Add missing DONE.
33887
33888 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
33889
33890         PR target/80250
33891         * config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
33892         (mov<IMOD4:mode>): New expander.
33893         (*mov<IMOD4:mode>_internal): New insn and split pattern.
33894
33895 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
33896
33897         PR rtl-optimization/79405
33898         * fwprop.c (propagations_left): New variable.
33899         (forward_propagate_into): Decrement it.
33900         (fwprop_init): Initialize it.
33901         (fw_prop): If the variable has reached zero, stop propagating.
33902         (fwprop_addr): Ditto.
33903
33904 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
33905
33906         PR debug/79255
33907         * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
33908         a FUNCTION_DECL, pass it as decl instead of origin to
33909         process_scope_var.
33910
33911 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
33912
33913         * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
33914         string.
33915
33916 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
33917
33918         PR target/80107
33919         * config/rs6000/rs6000.md (extendhi<mode>2): Add test for
33920         TARGET_VSX_SMALL_INTEGER.
33921
33922 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33923
33924         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
33925         reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
33926
33927 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
33928
33929         * config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
33930         extraction from odd-numbered MSA register.
33931
33932 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
33933
33934         PR middle-end/80173
33935         * expmed.c (store_bit_field_1): Don't attempt to create
33936         a word subreg out of hard registers wider than word if they
33937         have HARD_REGNO_NREGS of 1 for their mode.
33938
33939         PR middle-end/80163
33940         * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
33941         conversions to integer types wider than word and pointer.
33942
33943         PR debug/80025
33944         * cselib.h (rtx_equal_for_cselib_1): Add depth argument.
33945         (rtx_equal_for_cselib_p): Pass 0 to it.
33946         * cselib.c (cselib_hasher::equal): Likewise.
33947         (rtx_equal_for_cselib_1): Add depth argument.  If depth
33948         is 128, don't look up VALUE locs and punt.  Increment
33949         depth in recursive calls when walking VALUE locs.
33950
33951 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33952
33953         * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
33954         (make_gcov_file_name): Use the canonical path name for generating
33955         the MD5 value.
33956         (read_line): Fix handling of files with ascii null bytes.
33957
33958 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
33959
33960         * config/mips/mips.c (mips_expand_vector_init): Create a const_vector
33961         to initialise a vector register instead
33962         of using a const_int.
33963
33964 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
33965
33966         PR translation/80189
33967         * gimplify.c (omp_default_clause): Use %qs instead of %s in
33968         diagnostic messages.
33969
33970 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
33971
33972         PR target/80246
33973         * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
33974         (dfp_diex_<mode>): Update mode of operand 1.
33975         * doc/extend.texi (dxex, dxexq): Document change to return type.
33976         (diex, diexq): Document change to argument type.
33977
33978 2017-03-30  Martin Jambor  <mjambor@suse.cz>
33979
33980         PR ipa/77333
33981         * cgraph.h (cgraph_build_function_type_skip_args): Declare.
33982         * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
33983         it reflects the signature changes performed at the callee side.
33984         * cgraphclones.c (build_function_type_skip_args): Make public, renamed
33985         to cgraph_build_function_type_skip_args.
33986         (build_function_decl_skip_args): Adjust call to the above function.
33987
33988 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
33989
33990         PR target/80206
33991         * config/i386/sse.md
33992         (<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
33993         register as dest whenever it is a MEM not rtx_equal_p to the
33994         corresponding dup operand, and when forcing into reg move the
33995         reg into the memory afterwards.
33996         (<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
33997         Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
33998         for the force_reg mode.
33999         (avx512vl_vextractf128<mode>): Use register as dest either
34000         always when a MEM, or when it is a MEM not rtx_equal_p to the
34001         corresponding dup operand, or even not when it is a CONST_VECTOR
34002         depending on the mode and lo vs. hi.
34003         (avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
34004         parens.
34005         (avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
34006         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
34007         Likewise.  Require that operands[2] is even.
34008         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
34009         Remove extraneous parens.  Require that operands[2] is a multiple
34010         of 4.
34011         (vec_extract_lo_<mode><mask_name>): Don't bother testing if
34012         operands[0] is a MEM if <mask_applied>, the predicates/constraints
34013         disallow memory then.
34014
34015 2017-03-30  Richard Biener  <rguenther@suse.de>
34016
34017         PR tree-optimization/77498
34018         * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
34019         to non-constants over backedges.
34020
34021 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
34022
34023         PR rtl-optimization/80233
34024         * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
34025         as last_combined_insn.  Do not test for BARRIER_P separately.
34026
34027 2017-03-29  Andreas Schwab  <schwab@suse.de>
34028
34029         PR ada/80146
34030         * calls.c (prepare_call_address): Convert funexp to Pmode before
34031         copying to temp reg.
34032
34033 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34034
34035         PR tree-optimization/80158
34036         * gimple-ssa-strength-reduction.c (replace_mult_candidate):
34037         Handle possible future case of more than one alternate
34038         interpretation.
34039         (replace_rhs_if_not_dup): Likewise.
34040         (replace_one_candidate): Likewise.
34041
34042 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
34043
34044         PR rtl-optimization/80193
34045         * ira.c (ira): Do not check allocation for LRA.
34046
34047 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
34048
34049         * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
34050         (nvptx_output_simt_exit): Declare.
34051         * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
34052         cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
34053         (init_softstack_frame): Move initialization of crtl->is_leaf to...
34054         (nvptx_declare_function_name): ...here.  Emit declaration of local
34055         memory space buffer for omp_simt_enter insn.
34056         (nvptx_output_unisimt_switch): New.
34057         (nvptx_output_softstack_switch): New.
34058         (nvptx_output_simt_enter): New.
34059         (nvptx_output_simt_exit): New.
34060         * config/nvptx/nvptx.h (struct machine_function): New fields
34061         has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
34062         * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
34063         (UNSPECV_SIMT_EXIT): Ditto.
34064         (omp_simt_enter_insn): New insn.
34065         (omp_simt_enter): New expansion.
34066         (omp_simt_exit): New insn.
34067         * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
34068
34069         * internal-fn.c (expand_GOMP_SIMT_ENTER): New.
34070         (expand_GOMP_SIMT_ENTER_ALLOC): New.
34071         (expand_GOMP_SIMT_EXIT): New.
34072         * internal-fn.def (GOMP_SIMT_ENTER): New internal function.
34073         (GOMP_SIMT_ENTER_ALLOC): Ditto.
34074         (GOMP_SIMT_EXIT): Ditto.
34075         * target-insns.def (omp_simt_enter): New insn.
34076         (omp_simt_exit): Ditto.
34077         * omp-low.c (struct omplow_simd_context): New fields simt_eargs,
34078         simt_dlist.
34079         (lower_rec_simd_input_clauses): Implement SIMT privatization.
34080         (lower_rec_input_clauses): Likewise.
34081         (lower_lastprivate_clauses): Handle SIMT privatization.
34082
34083         * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
34084         (ompdevlow_adjust_simt_enter): New.
34085         (find_simtpriv_var_op): New.
34086         (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
34087         IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
34088
34089         * tree-inline.h (struct copy_body_data): New field dst_simt_vars.
34090         * tree-inline.c (expand_call_inline): Handle SIMT privatization.
34091         (copy_decl_for_dup_finish): Ditto.
34092
34093         * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
34094
34095 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
34096
34097         PR target/53383
34098         * config/i386/i386.c (ix86_option_override_internal): Always
34099         allow -mpreferred-stack-boundary=3 for 64-bit targets.
34100
34101 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34102
34103         * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
34104
34105 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34106
34107         * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
34108         mark new edge's irreducible flag accordign to it.
34109         (vect_do_peeling): Check loop preheader edge's irreducible flag
34110         and pass it to function slpeel_add_loop_guard.
34111
34112 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
34113
34114         PR tree-optimization/80218
34115         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
34116         Update block frequencies and counts.
34117
34118 2017-03-28  Richard Biener  <rguenther@suse.de>
34119
34120         PR tree-optimization/78644
34121         * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
34122         of a simplification result we may not use it at all.
34123
34124 2017-03-28  Richard Biener  <rguenther@suse.de>
34125
34126         PR ipa/80205
34127         * tree-inline.c (copy_phis_for_bb): Do not create PHI node
34128         without arguments, generate default definition of a SSA name.
34129
34130 2017-03-28  Richard Biener  <rguenther@suse.de>
34131
34132         PR middle-end/80222
34133         * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
34134         TYPE_REF_CAN_ALIAS_ALL references.
34135         * fold-const.c (fold_indirect_ref_1): Likewise.
34136
34137 2017-03-28  Martin Liska  <mliska@suse.cz>
34138
34139         PR ipa/80104
34140         * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
34141         thunk call as DECL_GIMPLE_REG_P when vector or complex type.
34142
34143 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34144             Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
34145
34146         * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
34147         (EXTRA_SPECS): Define.
34148         (SUBTARGET_EXTRA_SPECS): Likewise.
34149         (SUBTARGET_CPP_SPEC): Likewise.
34150         * config/arc/elf.h (EXTRA_SPECS): Renamed to
34151         SUBTARGET_EXTRA_SPECS.
34152         * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
34153
34154 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34155
34156         * config/arc/simdext.md (vst64_insn): Update pattern.
34157         (vld32wh_insn): Likewise.
34158         (vld32wl_insn): Likewise.
34159         (vld64_insn): Likewise.
34160         (vld32_insn): Likewise.
34161
34162 2017-03-28  Marek Polacek  <polacek@redhat.com>
34163
34164         PR sanitizer/80067
34165         * fold-const.c (fold_comparison): Use protected_set_expr_location
34166         instead of SET_EXPR_LOCATION.
34167
34168 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
34169
34170         * tree.c (add_expr): Avoid name lookup warning.
34171
34172 2017-03-27  Jeff Law  <law@redhat.com>
34173
34174         PR tree-optimization/80216
34175         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
34176         function name.  Limit recursion depth.
34177         (record_temporary_equivalences): Corresponding changes.
34178
34179 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
34180
34181         * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
34182         covered first.
34183
34184 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34185
34186         PR target/80102
34187         * reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
34188         notes.
34189         * cfgcleanup.c (reg_note_cfa_p): New array.
34190         (insns_have_identical_cfa_notes): New function.
34191         (old_insns_match_p): Don't cross-jump in between /f
34192         and non-/f instructions.  If both i1 and i2 are frame related,
34193         verify all CFA notes, their order and content.
34194
34195 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
34196
34197         PR target/78543
34198         * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
34199         HImode and SImode with zero extend to DImode to one insn.
34200         (bswap<mode>2_extenddi): Likewise.
34201         (bswapsi2_extenddi): Likewise.
34202         (bswaphi2_extendsi): Likewise.
34203         (bswaphi2): Combine bswap HImode and SImode into one insn.
34204         Separate memory insns from swapping register.
34205         (bswapsi2): Likewise.
34206         (bswap<mode>2): Likewise.
34207         (bswaphi2_internal): Delete, no longer used.
34208         (bswapsi2_internal): Likewise.
34209         (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
34210         store, and gpr<-gpr swap insns.
34211         (bswap<mode>2_store): Likewise.
34212         (bswaphi2_reg): Register only splitter, combine with the splitter.
34213         (bswaphi2 splitter): Likewise.
34214         (bswapsi2_reg): Likewise.
34215         (bswapsi2 splitter): Likewise.
34216         (bswapdi2): If we have the LDBRX and STDBRX instructions, split
34217         the insns into load, store, and register/register insns.
34218         (bswapdi2_ldbrx): Likewise.
34219         (bswapdi2_load): Likewise.
34220         (bswapdi2_store): Likewise.
34221         (bswapdi2_reg): Likewise.
34222
34223 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
34224
34225         * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
34226         (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
34227
34228 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34229
34230         PR target/80103
34231         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
34232         add comments.
34233         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34234         special handling for target option conflicts between dform
34235         options (-mpower9-dform, -mpower9-dform-vector,
34236         -mpower9-dform-scalar) and -mno-direct-move.
34237
34238 2017-03-27  Richard Biener  <rguenther@suse.de>
34239
34240         PR tree-optimization/80181
34241         * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
34242
34243 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34244
34245         * config/arc/predicates.md (move_double_src_operand): Replace the
34246         call to move_double_src_operand with a call to address_operand.
34247
34248 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34249
34250         * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
34251         * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
34252         * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
34253
34254 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34255
34256         * config/arc/predicates.md (long_immediate_loadstore_operand):
34257         Consider scaled addresses cases.
34258
34259 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34260
34261         * config/arc/arc.c (arc_epilogue_uses): BLINK should be also
34262         restored when in interrupt.
34263         * config/arc/arc.md (simple_return): ARCv2 rtie instruction
34264         doesn't have delay slot.
34265
34266 2017-03-27  Richard Biener  <rguenther@suse.de>
34267
34268         PR ipa/79776
34269         * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
34270         inlined thunk clones.
34271
34272 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34273
34274         PR sanitizer/80168
34275         * asan.c (instrument_derefs): Copy over last operand from
34276         original COMPONENT_REF to the new COMPONENT_REF with
34277         DECL_BIT_FIELD_REPRESENTATIVE.
34278         * ubsan.c (instrument_object_size): Likewise.
34279
34280 2017-03-27  Richard Biener  <rguenther@suse.de>
34281
34282         PR tree-optimization/80170
34283         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
34284         sure DR/SCEV didnt fold in constants we do not see when looking
34285         at the reference base alignment.
34286
34287 2017-03-27  Richard Biener  <rguenther@suse.de>
34288
34289         PR middle-end/80171
34290         * gimple-fold.c (fold_ctor_reference): Properly guard against
34291         NULL return value from canonicalize_constructor_val.
34292
34293 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
34294
34295         PR target/80180
34296         * config/i386/i386.c (ix86_expand_builtin)
34297         <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
34298         flags reg setting and flags reg using instructions.
34299         <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
34300         clobbering instructions to zero extend op2.
34301
34302 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
34303
34304         * doc/install.texi (Configuration) <--with-aix-soname>:
34305         Update link to AIX ld.
34306
34307 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
34308
34309         PR rtl-optimization/80160
34310         PR rtl-optimization/80159
34311         * lra-assigns.c (must_not_spill_p): Tighten new test to also take
34312         reg_alternate_class into account.
34313
34314 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
34315
34316         PR target/80148
34317         * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
34318         to consider in curr_insn_transform.
34319
34320 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34321
34322         * genrecog.c (validate_pattern): Add VEC_SELECT validation.
34323         * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
34324         and emit_mode_inner.
34325
34326 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34327
34328         * config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
34329         argument to the overloaded builtin variants.  Use the new flag to
34330         deprecate certain builtin variants.
34331         * config/s390/s390-builtin-types.def: Add new builtin types.
34332         * config/s390/s390-builtins.h: Support new flags field for
34333         overloaded builtins.
34334         * config/s390/s390-c.c (OB_DEF_VAR): New flags field.
34335         (s390_macro_to_expand): Enable vector float data type.
34336         (s390_cpu_cpp_builtins_internal): Indicate support of the new
34337         builtins by incrementing the __VEC__ version number.
34338         (s390_expand_overloaded_builtin): Support expansion of vec_xl and
34339         vec_xst.
34340         (s390_resolve_overloaded_builtin): Emit error messages depending
34341         on the builtin flags.
34342         * config/s390/s390.c (s390_expand_builtin): Support additional
34343         flags argument.  Change error message to match the messages
34344         emitted in s390-c.c.
34345         * config/s390/s390.md: New UNSPEC_* constants.
34346         (op_type): Add new instruction types.
34347         * config/s390/vecintrin.h: Add new builtins and test data class
34348         constants.
34349         * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
34350         (V_HW_4, VEC_HW, VECF_HW): New mode iterators.
34351         (VEC_INEXACT, VEC_NOINEXACT): New constants.
34352         ("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
34353         ("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
34354         ("vec_mergel<mode>"): V_HW -> VEC_HW.
34355
34356         ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
34357         ("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
34358         ("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
34359         ("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
34360
34361         ("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
34362         ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
34363         ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
34364         ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
34365
34366         ("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
34367         ("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
34368         ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
34369         ("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
34370         ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
34371         ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
34372         ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
34373
34374         ("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
34375         ("vec_scatter_element<V_HW_4:mode>_DI")
34376         ("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
34377         ("vec_fpint<mode>", "vflls")
34378         ("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
34379         ("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
34380         ("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
34381         ("*vec_cmphe<mode>_cc"): ... these.
34382
34383         ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
34384         mode constant instead of magic value.
34385
34386 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34387
34388         * config/s390/s390.c (s390_expand_vec_compare): Support other
34389         vector floating point modes than just V2DF.
34390         (s390_expand_vcond): Likewise.
34391         (s390_hard_regno_mode_ok): Allow SFmode values in VRs.
34392         (s390_cannot_change_mode_class): Prevent mode changes between TF
34393         and V1TF in vector registers.
34394         * config/s390/s390.md (DF, SF): New mode attributes.
34395         ("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
34396         ("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
34397         SFmode support for VRs.
34398         * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
34399         vector fp modes.
34400         (VFT, VF_HW): New mode iterators.
34401         (vw, sdx): New mode attributes.
34402         ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
34403         ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
34404         ("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
34405         ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
34406         ("vec_unorderedv2df"): Adjust the v2df only patterns to support
34407         also the new vector floating point modes.  Renaming to ...
34408
34409         ("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
34410         ("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
34411         ("abs<mode>2", "negabs<mode>2", "smax<mode>3")
34412         ("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
34413         ("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
34414         ("vec_unordered<mode>"): ... these.
34415
34416         ("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
34417         ("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
34418         ("*vec_extendv2df"): New insn definitions.
34419
34420 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34421
34422         * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
34423         ("mulditi3_2", "*muldi3_sign"): New patterns.
34424         ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
34425         rename the pattern definition.
34426
34427 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34428
34429         * config/s390/s390.md ("indirect_jump"): Turn insn definition into
34430         expander.
34431         ("*indirect_jump", "*indirect2_jump"): New pattern definitions.
34432
34433 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34434
34435         * config/s390/s390.c (s390_expand_vec_init): Use vllezl
34436         instruction if possible.
34437         * config/s390/vector.md (vec_halfnumelts): New mode
34438         attribute.
34439         ("*vec_vllezlf<mode>"): New pattern.
34440
34441 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34442
34443         * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
34444         ("popcountv4si2", "popcountv2di2"): Rename to ...
34445         ("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
34446         ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
34447         condition.
34448         ("popcount<mode>2_vxe"): New pattern.
34449
34450 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34451
34452         * common/config/s390/s390-common.c (processor_flags_table): Add
34453         arch12.
34454         * config.gcc: Add arch12.
34455         * config/s390/driver-native.c (s390_host_detect_local_cpu):
34456         Default to arch12 for unknown CPU model numbers.
34457         * config/s390/s390-builtins.def: Add B_VXE builtin flag.
34458         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
34459         PROCESSOR_max sanity check.
34460         * config/s390/s390-opts.h (enum processor_type): Add
34461         PROCESSOR_ARCH12.
34462         * config/s390/s390.c (processor_table): Add arch12.
34463         (s390_expand_builtin): Add check for B_VXE flag.
34464         (s390_issue_rate): Add PROCESSOR_ARCH12.
34465         (s390_get_sched_attrmask): Likewise.
34466         (s390_get_unit_mask): Likewise.
34467         (s390_sched_score): Enable z13 scheduling for arch12.
34468         (s390_sched_reorder): Likewise.
34469         (s390_sched_variable_issue): Likewise.
34470         * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
34471         PF_VXE.
34472         (s390_tune_attr): Use z13 scheduling also for arch12.
34473         (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
34474         (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
34475         (TARGET_VXE_P): New macros.
34476         * config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
34477         and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
34478         * config/s390/s390.opt: Add arch12 as processor_type.
34479
34480 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34481
34482         * config/s390/s390.md
34483         ("fixuns_truncdddi2", "fixuns_trunctddi2")
34484         ("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
34485         ("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
34486
34487         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
34488         Rename expanders to ...
34489
34490         ("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
34491         ("fixuns_truncdddi2_emu"): ... these.
34492
34493         ("fixuns_trunc<mode>si2_emu"): New expander.
34494
34495         ("*fixuns_truncdfdi2_z13"): Rename to ...
34496         ("*fixuns_truncdfdi2_vx"): ... this.
34497
34498 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34499
34500         * config/s390/2964.md: Remove the single element vector compare
34501         instructions which are no longer used.
34502         * config/s390/s390.c (s390_select_ccmode): Remove handling of
34503         vector CCmodes.
34504         (s390_canonicalize_comparison): Remove handling of DFmode
34505         compares.
34506         (s390_expand_vec_compare_scalar): Remove function.
34507         (s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
34508         * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
34509         pattern.
34510         ("*cmp<mode>_ccs"): Add wfcdb instruction.
34511
34512 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34513
34514         * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
34515         FP zero.
34516         ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
34517         will anyway by matched by mov<mode>_64dfp.
34518
34519 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34520
34521         * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
34522         vlef/vstef.  Add missing operand to vleif.
34523
34524 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34525
34526         * config/s390/s390.c (s390_expand_vec_init): Enable vector load
34527         pair for all vector types with 64 bit elements.
34528         * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
34529         * config/s390/vector.md (V_HW_64): ... here.
34530         (V_128_NOSINGLE): New mode iterator.
34531         ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
34532         ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
34533         ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
34534         ("*vec_load_pairv2di"): Change to ...
34535         ("*vec_load_pair<mode>"): ... this one.
34536
34537 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34538
34539         * config/s390/constraints.md: Add comments.
34540         (jKK): Reject element sizes > 8 bytes.
34541         * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
34542         s_operands.
34543         * config/s390/s390.md: Add the s_operand checks formerly in
34544         s390_split_ok_p to various splitters where they are still
34545         required.
34546         * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
34547         for 128 bit vectors.  Plus two splitters.
34548
34549 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34550
34551         * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
34552         the file.
34553
34554 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34555
34556         PR target/79893
34557         * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
34558         error if the boundary argument is not constant.
34559
34560 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34561
34562         PR rtl-optimization/80112
34563         * loop-doloop.c (doloop_condition_get): Don't check condition
34564         if cmp isn't SET with IF_THEN_ELSE src.
34565
34566 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34567
34568         PR tree-optimization/80158
34569         * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
34570         replacing a candidate statement, also replace it for the
34571         candidate's alternate interpretation.
34572         (replace_rhs_if_not_dup): Likewise.
34573         (replace_one_candidate): Likewise.
34574
34575 2017-03-24  Richard Biener  <rguenther@suse.de>
34576
34577         PR tree-optimization/80167
34578         * graphite-isl-ast-to-gimple.c
34579         (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
34580         properly.
34581         (translate_isl_ast_to_gimple::get_rename): Likewise.
34582
34583 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34584
34585         * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
34586         handling of certain combinations of target options, including the
34587         combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
34588         -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
34589
34590 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34591
34592         PR target/71436
34593         * config/arm/arm.md (*load_multiple): Add reload_completed to
34594         matching condition.
34595
34596 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34597             Richard Biener  <rguenth@suse.de>
34598
34599         PR tree-optimization/79908
34600         PR tree-optimization/80136
34601         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
34602         been cast away, gimplify_and_add suffices.
34603
34604 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
34605
34606         * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
34607
34608 2017-03-23  Richard Biener  <rguenther@suse.de>
34609
34610         PR tree-optimization/80032
34611         * gimplify.c (gimple_push_cleanup): Forced unconditional
34612         cleanups still have to go to the conditional_cleanups
34613         sequence.
34614
34615 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
34616
34617         PR tree-optimization/80072
34618         * tree-ssa-reassoc.c (struct operand_entry): Change id field type
34619         to unsigned int.
34620         (next_operand_entry_id): Change type to unsigned int.
34621         (sort_by_operand_rank): Make sure to return the right return value
34622         even if unsigned fields are bigger than INT_MAX.
34623         (struct oecount): Change cnt and id type to unsigned int.
34624         (oecount_hasher::equal): Formatting fix.
34625         (oecount_cmp): Make sure to return the right return value
34626         even if unsigned fields are bigger than INT_MAX.
34627         (undistribute_ops_list): Change next_oecount_id type to unsigned int.
34628
34629         PR c++/80129
34630         * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
34631         TREE_READONLY on result if writing it more than once.
34632
34633         PR sanitizer/80110
34634         * doc/invoke.texi (-fsanitize=thread): Document that with
34635         -fnon-call-exceptions atomics are not able to throw
34636         exceptions.
34637
34638         PR sanitizer/80110
34639         * tsan.c: Include tree-eh.h.
34640         (instrument_builtin_call): Call maybe_clean_eh_stmt or
34641         maybe_clean_or_replace_eh_stmt where needed.
34642         (instrument_memory_accesses): Add cfg_changed argument.
34643         Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
34644         if it returned true.
34645         (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
34646
34647         PR rtl-optimization/63191
34648         * config/i386/i386.c (ix86_delegitimize_address): Turn into small
34649         wrapper function, moved the whole old content into ...
34650         (ix86_delegitimize_address_1): ... this.  New inline function.
34651         (ix86_find_base_term): Use ix86_delegitimize_address_1 with
34652         true as last argument instead of ix86_delegitimize_address.
34653
34654 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34655
34656         * config/aarch64/aarch64.c (generic_branch_cost): Copy
34657         cortexa57_branch_cost.
34658
34659 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34660
34661         * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
34662
34663 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34664
34665         PR target/80123
34666         * doc/md.texi (Constraints): Document wA constraint.
34667         * config/rs6000/constraints.md (wA): New.
34668         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
34669         (rs6000_init_hard_regno_mode_ok): Init wA constraint.
34670         * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
34671         * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
34672
34673 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
34674
34675         PR c++/80029
34676         * gimplify.c (is_oacc_declared): New function.
34677         (oacc_default_clause): Use it to set default flags for acc declared
34678         variables inside parallel regions.
34679         (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
34680         declared variables.
34681         (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
34682         declare attribute to any decl as necessary.
34683
34684 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
34685
34686         PR target/80082
34687         * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
34688         (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
34689         * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
34690         (arm_arch_lpae): This.
34691         * config/arm/arm.c (arm_arch7ve): Rename into ...
34692         (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
34693         * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
34694         arm_arch_lpae.
34695
34696 2017-03-22  Martin Liska  <mliska@suse.cz>
34697
34698         PR target/79906
34699         * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
34700         error message instead of an ICE.
34701
34702 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34703
34704         * doc/extend.texi (6.11 Additional Floating Types): Revise.
34705
34706 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34707
34708         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
34709         comments.
34710         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34711         comments.
34712
34713 2017-03-21  Martin Sebor  <msebor@redhat.com>
34714
34715         * doc/extend.texi: Use "cannot" instead of "can't."
34716         * doc/hostconfig.texi: Same.
34717         * doc/install.texi: Same.
34718         * doc/invoke.texi: Same.
34719         * doc/loop.texi: Same.
34720         * doc/md.texi: Same.
34721         * doc/objc.texi: Same.
34722         * doc/rtl.texi: Same.
34723         * doc/tm.texi: Same.
34724         * doc/tm.texi.in: Same.
34725         * doc/trouble.texi: Same.
34726
34727 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
34728
34729         PR debug/63238
34730         * dwarf2out.c (struct checksum_attributes): Add at_alignment.
34731         (collect_checksum_attributes): Set it.
34732         (die_checksum_ordered): Use it.
34733
34734 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34735
34736         PR tree-optimization/79908
34737         * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
34738         change: For a VA_ARG whose LHS has been cast away, use
34739         force_gimple_operand to construct the side effects.
34740
34741 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
34742
34743         PR translation/80001
34744         * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
34745         more amenable to translation.
34746         (oacc_loop_auto_partitions): Likewise.
34747
34748 2017-03-21  Marek Polacek  <polacek@redhat.com>
34749             Martin Sebor  <msebor@redhat.com>
34750
34751         PR tree-optimization/80109
34752         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
34753         on INTEGRAL_TYPE_P.
34754
34755 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34756             Segher Boessenkool  <segher@kernel.crashing.org>
34757
34758         PR target/80125
34759         * combine.c (can_combine_p): Revert the 2017-03-20 change, only
34760         check reg_used_between_p between insn and one of succ or succ2
34761         depending on if succ is artificial insn not inserted into insn
34762         stream.
34763
34764 2017-03-21  Martin Liska  <mliska@suse.cz>
34765
34766         PR gcov-profile/80081
34767         * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
34768         * doc/gcc.texi: Include gcov-dump stuff.
34769         * doc/gcov-dump.texi: New file.
34770
34771 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
34772
34773         PR rtl-optimization/79150
34774         * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
34775         conditional jump, if the jump is the last insn of the loop.
34776
34777 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34778             Richard Biener  <rguenth@suse.de>
34779
34780         PR tree-optimization/79908
34781         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
34782         been cast away, use force_gimple_operand to construct the side
34783         effects.
34784
34785 2017-03-21  Martin Liska  <mliska@suse.cz>
34786
34787         PR libfortran/79956
34788         * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
34789         to NULL.
34790
34791 2017-03-21  Brad Spengler <spender@grsecurity.net>
34792
34793         PR plugins/80094
34794         * plugin.c (htab_hash_plugin): New function.
34795         (add_new_plugin): Use it and adjust.
34796         (parse_plugin_arg_opt): Adjust.
34797         (init_one_plugin): Likewise.
34798
34799 2017-03-21  Richard Biener  <rguenther@suse.de>
34800
34801         PR tree-optimization/80032
34802         * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
34803         if set force the cleanup to happen unconditionally.
34804         (gimplify_target_expr): Push inserted clobbers with force_uncond
34805         to avoid them being removed by control-dependent DCE.
34806
34807 2017-03-21  Richard Biener  <rguenther@suse.de>
34808
34809         PR tree-optimization/80122
34810         * tree-inline.c (copy_bb): Do not expans va-arg packs or
34811         va_arg_pack_len when the inlined call stmt requires pack
34812         expansion itself.
34813         * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
34814
34815 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34816
34817         PR sanitizer/78158
34818         * tsan.c (instrument_builtin_call): If the memory model argument
34819         is not a constant, assume it is valid.
34820
34821         PR c/67338
34822         * fold-const.c (round_up_loc): Negate divisor in unsigned type to
34823         avoid UB.
34824
34825 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34826
34827         PR rtl-optimization/79910
34828         * combine.c (can_combine_p): Do not allow combining an I0 or I1
34829         if its dest is used by an insn before I2 (other than the combined
34830         insns themselves, which are properly handled already).
34831
34832 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34833
34834         Revert:
34835         2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
34836
34837         * combine.c (record_used_regs): New static function.
34838         (try_combine): Handle situations where there is an additional
34839         instruction between I2 and I3 which needs to have a LOG_LINK
34840         updated.
34841
34842         Revert:
34843         2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
34844
34845         * combine.c (try_combine): Delete redundant i1 test.  Call
34846         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
34847
34848 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34849
34850         PR target/80083
34851         * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
34852         alternatives 13/14.
34853
34854 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34855
34856         PR tree-optimization/80054
34857         * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
34858         the optimization if a PHI or any of its arguments is not dominated
34859         by the candidate's basis.  Use gphi* rather than gimple* as
34860         appropriate.
34861         (replace_profitable_candidates): Clean up a gimple* variable that
34862         should be a gphi* variable.
34863
34864 2017-03-20  Martin Sebor  <msebor@redhat.com>
34865
34866         PR c++/52477
34867         * doc/extend.texi (attribute constructor): Document present limitation.
34868
34869 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34870
34871         PR target/79963
34872         * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
34873         __POWER9_VECTOR__ #ifdef control, change template definition to
34874         use Power9-specific built-in function.
34875         (vec_any_eq): Likewise.
34876         * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
34877         to control outcomes from this test.
34878         (vector_ae_<mode>p): For VEC_F modes, likewise.
34879
34880 2017-03-20  Ian Lance Taylor  <iant@google.com>
34881
34882         * config/i386/i386.c (ix86_function_regparm): Save an extra
34883         register for -fsplit-stack with DECL_STATIC_CHAIN.
34884
34885 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
34886
34887         PR target/79912
34888         * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
34889         (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
34890
34891 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
34892
34893         * config/riscv/riscv.c (riscv_print_operand): Use "fence
34894         iorw,ow".
34895         * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
34896         iorw,iorw".
34897
34898 2017-03-20  Marek Polacek  <polacek@redhat.com>
34899
34900         PR sanitizer/80063
34901         * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
34902
34903 2017-03-20  Richard Biener  <rguenther@suse.de>
34904
34905         PR tree-optimization/80113
34906         * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
34907         allocate extra SSA name for PHI def.
34908         (add_close_phis_to_outer_loops): Likewise.
34909         (add_close_phis_to_merge_points): Likewise.
34910         (copy_loop_close_phi_args): Likewise.
34911         (copy_cond_phi_nodes): Likewise.
34912
34913 2017-03-20  Martin Liska  <mliska@suse.cz>
34914
34915         PR middle-end/79753
34916         * tree-chkp.c (chkp_build_returned_bound): Do not build
34917         returned bounds for a LHS that's not a BOUNDED_P type.
34918
34919 2017-03-20  Martin Liska  <mliska@suse.cz>
34920
34921         PR target/79769
34922         PR target/79770
34923         * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
34924         COMPLEX_CST and VECTOR_CST.
34925
34926 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34927
34928         PR target/78857
34929         * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
34930         target operand.  A new splitter adds the clobber statement in case
34931         the target operand is dead anyway.
34932
34933 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
34934
34935         * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
34936         to age-old versions of binutils and glibc.
34937
34938 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
34939
34940         * doc/contrib.texi (Contributors): Remove duplicate entry for myself.
34941
34942 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
34943
34944         * doc/contrib.texi (Contributors): Add Segher Boessenkool.
34945
34946 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
34947
34948         * doc/install.texi (Specific) <arm-*-eabi>: Remove old
34949         requirement for binutils 2.13.
34950
34951 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
34952
34953         * combine.c (try_combine): Delete redundant i1 test.  Call
34954         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
34955
34956 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
34957
34958         * doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
34959         riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
34960         contents.
34961         <riscv64-*-elf>: Re-arrange section
34962         <riscv32-*-elf>: Add a note about requiring binutils 2.28.
34963         <riscv32-*-linux>: Likewise.
34964         <riscv64-*-elf>: Likewise
34965         <riscv64-*-linux>: Likewise.
34966
34967 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
34968
34969         PR target/80052
34970         * aarch64.opt(verbose-cost-dump): Fix typo.
34971
34972 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
34973
34974         PR target/79951
34975         * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
34976         for VECTOR_UNIT_VSX_P (<MODE>mode) too.
34977
34978 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
34979
34980         * reload.c (find_reloads): When reloading a nonoffsettable address,
34981         use RELOAD_OTHER for it and its address reloads.
34982
34983         PR rtl-optimization/79910
34984         * combine.c (record_used_regs): New static function.
34985         (try_combine): Handle situations where there is an additional
34986         instruction between I2 and I3 which needs to have a LOG_LINK
34987         updated.
34988
34989 2017-03-17  Jeff Law  <law@redhat.com>
34990
34991         PR tree-optimization/71437
34992         * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
34993         conditional in the hash table first.
34994         (vrp_dom_walker::before_dom_children): Extract condition from
34995         ASSERT_EXPR.  Record condition, its inverion and any implied
34996         conditions as well.
34997
34998 2017-03-17  Marek Polacek  <polacek@redhat.com>
34999             Markus Trippelsdorf  <markus@trippelsdorf.de>
35000
35001         PR tree-optimization/80079
35002         * gimple-ssa-store-merging.c (class pass_store_merging): Initialize
35003         m_stores_head.
35004
35005 2017-03-17  Richard Biener  <rguenther@suse.de>
35006
35007         PR middle-end/80075
35008         * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
35009         Properly verify the LHS before the RHS possibly claims to be
35010         handled.
35011         (stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
35012         do not throw.
35013
35014 2017-03-17  Martin Jambor  <mjambor@suse.cz>
35015
35016         * doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
35017         (List of -O2 options): Likewise.
35018         (-fipa-bit-cp): Replace "ipa" with "interprocedural."
35019         (-fipa-vrp) New.
35020
35021 2017-03-17  Tom de Vries  <tom@codesourcery.com>
35022
35023         * gcov-dump.c (print_usage): Print bug_report_url.
35024
35025 2017-03-17  Richard Biener  <rguenther@suse.de>
35026
35027         PR middle-end/80050
35028         * genmatch.c (parser::next): Remove pointless check for CPP_EOF.
35029         (parser::peek): Likewise.
35030
35031 2017-03-17  Richard Biener  <rguenther@suse.de>
35032
35033         PR tree-optimization/80048
35034         * sese.c (free_sese_info): Properly release rename_map and
35035         copied_bb_map elements.
35036
35037 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
35038
35039         * gimple-ssa-store-merging.c (struct imm_store_chain_info):
35040         Add linked-list forward and backlinks.  Insert on
35041         construction, remove on destruction.
35042         (class pass_store_merging): Add m_stores_head field.
35043         (pass_store_merging::terminate_and_process_all_chains):
35044         Iterate over m_stores_head list.
35045         (pass_store_merging::terminate_all_aliasing_chains):
35046         Likewise.
35047         (pass_store_merging::execute): Check for debug stmts first.
35048         Push new chains onto the m_stores_head stack.
35049
35050 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
35051
35052         PR target/71294
35053         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
35054         SPLAT operation on ISA 2.07 64-bit systems that have direct move,
35055         but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
35056
35057 2017-03-16  Jeff Law  <law@redhat.com>
35058
35059         PR tree-optimization/71437
35060         * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
35061         member function.  Implementation moved into after_dom_children
35062         member function and into the threader's thread_outgoing_edges
35063         function.
35064         (dom_opt_dom_walker::after_dom_children): Simplify by moving
35065         some code into new thread_outgoing_edges.
35066         * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
35067         definition.  Simplify marker handling (do it here).   Assume we always
35068         have the available expression and the const/copies tables.
35069         (thread_outgoing_edges): New function extracted from tree-ssa-dom.c
35070         and tree-vrp.c
35071         * tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
35072         * tree-vrp.c (equiv_stack): No longer file scoped.
35073         (vrp_dom_walker): New class.
35074         (vrp_dom_walker::before_dom_children): New member function.
35075         (vrp_dom_walker::after_dom_children): Likewise.
35076         (identify_jump_threads):  Setup domwalker.  Use it rather than
35077         walking edges in a random order by hand.  Simplify setup/finalization.
35078         (finalize_jump_threads): Remove.
35079         (vrp_finalize): Do not call identify_jump_threads here.
35080         (execute_vrp): Do it here instead and call thread_through_all_blocks
35081         here too.
35082
35083         PR tree-optimization/71437
35084         * tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
35085         callers changed.
35086         (simplify_stmt_for_jump_threading): Add basic_block argument.  All
35087         callers changed.
35088         (lhs_of_dominating_assert): Moved from here into tree-vrp.c.
35089         (dom_opt_dom_walker::thread_across_edge): Remove
35090         handle_dominating_asserts argument.  All callers changed.
35091         (record_temporary_equivalences_from_stmts_at_dest): Corresponding
35092         changes.  Remove calls to lhs_of_dominating_assert.  Other
35093         uses of handle_dominating_asserts turn into unconditional code
35094         (simplify_control_stmt_condition_1): Likewise.
35095         (simplify_control_stmt_condition): Likewise.
35096         (thread_through_normal_block, thread_across_edge): Likewise.
35097         * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
35098         * tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
35099         object if it is not an SSA_NAME.
35100         (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
35101         before calling into the VRP specific simplifiers.
35102         (identify_jump_threads): Remove handle_dominating_asserts
35103         argument.
35104
35105 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
35106
35107         PR fortran/79886
35108         * tree-diagnostic.c (default_tree_printer): No longer static.
35109         * tree-diagnostic.h (default_tree_printer): New prototype.
35110
35111 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
35112
35113         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
35114         Change ins into fmov.
35115
35116 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35117
35118         * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
35119         * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
35120         Use h_con constraint for operand 1.
35121         (*aarch64_fnma4_elt_from_dup<mode>): Likewise.
35122         (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
35123
35124 2017-03-15  Jeff Law  <law@redhat.com>
35125
35126         PR tree-optimization/71437
35127         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
35128         (record_temporary_equivalences): Use it.
35129
35130         PR tree-optimization/71437
35131         * tree-ssa-dom.c (struct cond_equivalence): Moved from here into
35132         tree-ssa-scopedtables.
35133         (lookup_avail_expr, build_and_record_new_cond): Likewise.
35134         (record_conditions, record_cond, vuse_eq): Likewise.
35135         (record_edge_info): Adjust to API tweak of record_conditions.
35136         (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
35137         (record_temporary_equivalences, optimize_stmt): Likewise.
35138         (eliminate_redundant_computations): Likewise.
35139         (record_equivalences_from_stmt): Likewise.
35140         * tree-ssa-scopedtables.c: Include options.h and params.h.
35141         (vuse_eq): New function, moved from tree-ssa-dom.c
35142         (build_and_record_new_cond): Likewise.
35143         (record_conditions): Likewise.  Accept vector of conditions rather
35144         than edge_equivalence structure for first argument.
35145         for the first argument.
35146         (avail_exprs_stack::lookup_avail_expr): New member function, moved
35147         from tree-ssa-dom.c.
35148         (avail_exprs_stack::record_cond): Likewise.
35149         * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
35150         from tree-ssa-dom.c.
35151         (avail_exprs_stack): Add new member functions lookup_avail_expr
35152         and record_cond.
35153         (record_conditions): Declare.
35154
35155 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
35156
35157         PR target/80017
35158         * lra-constraints.c (process_alt_operands): Increase reject for
35159         reloading an input/output operand.
35160
35161 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
35162
35163         PR target/79038
35164         * config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
35165         insns to convert from signed/unsigned char/short to IEEE 128-bit
35166         floating point.
35167         (floatuns<QHI:mode><IEEE128:mode>2): Likewise.
35168
35169 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
35170
35171         PR target/80019
35172         * config/i386/i386.c (ix86_vector_duplicate_value): Create
35173         subreg of inner mode for values already in registers.
35174
35175 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
35176
35177         * config/c6x/c6x.c (hwloop_optimize): Handle case where the old
35178         iteration reg is used after the loop.
35179
35180 2017-03-14  Martin Sebor  <msebor@redhat.com>
35181
35182         PR tree-optimization/79800
35183         * gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
35184         precision in negative-positive range.
35185         (format_floating): Call non-const overload with adjusted precision.
35186
35187 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
35188
35189         PR target/79947
35190         * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
35191         -mpowerpc-gfxopt.
35192
35193 2017-03-14  Martin Sebor  <msebor@redhat.com>
35194
35195         PR middle-end/80020
35196         * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
35197         * builtins.def (aligned_alloc): Use it.
35198
35199         PR c/79936
35200         * Makefile.in (GTFILES): Add calls.c.
35201         * calls.c: Include "gt-calls.h".
35202
35203 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
35204
35205         PR rtl-optimization/79728
35206         * regs.h (struct target_regs): New field
35207         x_contains_allocatable_regs_of_mode.
35208         (contains_allocatable_regs_of_mode): New macro.
35209         * reginfo.c (init_reg_sets_1): Initialize it, and change
35210         contains_reg_of_mode so it includes global regs as well.
35211         * reload.c (push_reload): Use contains_allocatable_regs_of_mode
35212         rather than contains_regs_of_mode.
35213
35214 2017-03-14  Martin Liska  <mliska@suse.cz>
35215
35216         * doc/invoke.texi: Document options that can't be combined with
35217         -fcheck-pointer-bounds.
35218
35219 2017-03-14  Martin Liska  <mliska@suse.cz>
35220
35221         PR middle-end/79831
35222         * doc/invoke.texi (-Wchkp): Document the option.
35223
35224 2017-03-14  Martin Liska  <mliska@suse.cz>
35225
35226         * Makefile.in: Install gcov-dump.
35227
35228 2017-03-14  Martin Liska  <mliska@suse.cz>
35229
35230         * multiple_target.c (expand_target_clones): Bail out for
35231         an invalid attribute.
35232
35233 2017-03-14  Richard Biener  <rguenther@suse.de>
35234
35235         * alias.c (struct alias_set_entry): Pack properly.
35236         * cfgloop.h (struct loop): Likewise.
35237         * cse.c (struct set): Likewise.
35238         * ipa-utils.c (struct searchc_env): Likewise.
35239         * loop-invariant.c (struct invariant): Likewise.
35240         * lra-remat.c (struct cand): Likewise.
35241         * recog.c (struct change_t): Likewise.
35242         * rtl.h (struct address_info): Likewise.
35243         * symbol-summary.h (function_summary): Likewise.
35244         * tree-loop-distribution.c (struct partition): Likewise.
35245         * tree-object-size.c (struct object_size_info): Likewise.
35246         * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
35247         * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
35248         * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
35249         * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
35250         * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
35251         * tree-vectorizer.h (struct _loop_vec_info): Likewise.
35252         (struct _stmt_vec_info): Likewise.
35253
35254 2017-03-14  Martin Liska  <mliska@suse.cz>
35255
35256         PR target/79892
35257         * multiple_target.c (create_dispatcher_calls): Check that
35258         a target can create a function dispatcher.
35259
35260 2017-03-14  Martin Liska  <mliska@suse.cz>
35261
35262         PR lto/66295
35263         * multiple_target.c (expand_target_clones): Drop local.local
35264         flag for default implementation.
35265
35266 2017-03-14  Richard Biener  <rguenther@suse.de>
35267
35268         PR tree-optimization/80030
35269         * tree-vect-stmts.c (vectorizable_store): Plug memleak.
35270
35271 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
35272
35273         * config/riscv/riscv.c (riscv_emit_float_compare>: Use
35274         gcc_fallthrough() instead of __attribute__((fallthrough));
35275
35276 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35277
35278         * doc/gcc.texi: Remove "up" link to (DIR).
35279         * doc/gccint.texi: Ditto.
35280
35281 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35282
35283         * doc/install.texi (Specific) <avr>: Remove reference to
35284         binutils 2.13.
35285
35286 2017-03-13  Jeff Law  <law@redhat.com>
35287
35288         * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
35289         attribute rather than comments.
35290
35291         * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
35292         match_scratch operand is highest.
35293
35294 2017-03-13  Martin Liska  <mliska@suse.cz>
35295
35296         PR middle-end/78339
35297         * ipa-pure-const.c (warn_function_noreturn): If the declarations
35298         is a CHKP clone, use original declaration.
35299
35300 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35301
35302         * config/arc/arc.c (arc_init): Use multiplier whenever we have it.
35303         (arc_conditional_register_usage): Use a different allocation order
35304         when optimizing for size.
35305         * common/config/arc/arc-common.c (arc_option_optimization_table):
35306         Section anchors default on when optimizing for size.
35307
35308 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35309
35310         * config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
35311
35312 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35313
35314         * config/arc/arc.c (arc_output_addsi): Emit code density adds.
35315         * config/arc/arc.md (cpu_facility): Add cd variant.
35316         (*movqi_insn): Add code density variant.
35317         (*movhi_insn): Likewise.
35318         (*movqi_insn): Likewise.
35319         (*addsi3_mixed): Likewise.
35320         (subsi3_insn): Likewise.
35321
35322 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35323
35324         * config/arc/arc.md (movsi_cond_exec): Update constraint.
35325
35326 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35327
35328         * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
35329         expressions with MINUS and UNARY ops.
35330
35331 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35332
35333         PR target/79911
35334         * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
35335         Rename to...
35336         (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
35337         between vec_select and vector argument.
35338         (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
35339         (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
35340         (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
35341         (vec_sel_widen_usum_lo<mode><V_half>3): ... This.
35342         (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
35343         (vec_sel_widen_usum_hi<mode><V_half>3): ... This.
35344
35345 2017-03-13  Richard Biener  <rguenther@suse.de>
35346
35347         PR other/79991
35348         * params.def (vect-max-peeling-for-alignment): Fix typo.
35349
35350 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35351
35352         * doc/install.texi (Specific) <mips-*-*>: Remove description of
35353         issue that only occurred with binutils below 2.18.
35354
35355 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35356
35357         * doc/install.texi (Specific) <cris-axis-elf>: No longer
35358         refer to binutils 2.11/2.12 minimum.
35359
35360 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35361
35362         * doc/install.texi (Specific) <powerpc-*-*>: Remove link to
35363         ftp.kernel.org and simplify binutils requirement.
35364
35365 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
35366
35367         * doc/invoke.texi (Warning Options): Fix spelling of link-time
35368         optimization.
35369         (Optimize Options): Ditto.  Also remove redundancy.
35370
35371 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35372
35373         PR translation/79848
35374         * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
35375         "%qs".
35376         * ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
35377         to G_ to avoid double translation.
35378
35379 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35380
35381         PR translation/79923
35382         * auto-profile.c (get_combined_location): Convert leading
35383         character of diagnostics to lower case and remove trailing period.
35384         (read_profile): Likewise for various diagnostics.
35385         * config/arm/arm.c (arm_option_override): Remove trailing period
35386         from various diagnostics.
35387         * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
35388         (msp430_expand_delay_cycles): Likewise.
35389
35390 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35391
35392         PR target/79925
35393         * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
35394         full command-line argument, rather than just "str".
35395         (aarch64_validate_march): Likewise.
35396         (aarch64_validate_mtune): Likewise.
35397
35398 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
35399
35400         PR rtl-optimization/78911
35401         * lra-assigns.c (must_not_spill_p): New function.
35402         (spill_for): Use it.
35403
35404 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35405
35406         PR tree-optimization/79981
35407         * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
35408         ATOMIC_COMPARE_EXCHANGE ifn result.
35409         (stmt_interesting_for_vrp, vrp_visit_stmt): Handle
35410         IFN_ATOMIC_COMPARE_EXCHANGE.
35411
35412 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35413
35414         PR driver/79875
35415         * opts.c (parse_sanitizer_options): Add missing question mark to
35416         "did you mean" message.
35417
35418 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35419
35420         * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
35421         built-in.
35422         (VMULEUH_UNS): Likewise.
35423         (VMULOUB_UNS): Likewise.
35424         (VMULOUH_UNS): Likewise.
35425         * config/rs6000/rs6000.c (builtin_function_type): Remove
35426         references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
35427
35428 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35429
35430         PR bootstrap/79952
35431         * read-rtl-function.c (function_reader::read_rtx_operand): Update
35432         x with result of extra_parsing_for_operand_code_0.
35433         (function_reader::extra_parsing_for_operand_code_0): Convert
35434         return type from void to rtx, returning x.  When reading
35435         SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
35436         larger size containing struct block_symbol.
35437
35438 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
35439
35440         * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
35441         -mfloat128-hardware without -m64.
35442
35443 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
35444
35445         PR target/79941
35446         * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
35447         entries to the case statement that marks unsigned arguments to
35448         overloaded functions.
35449
35450 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35451
35452         * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
35453         two typographic errors in the handling of TARGET_UPPER_REGS_DI.
35454
35455 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
35456
35457         PR target/79907
35458         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
35459         TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
35460
35461 2017-03-10  Martin Liska  <mliska@suse.cz>
35462
35463         PR target/65705
35464         PR target/69804
35465         * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
35466         * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
35467         FIELD != NULL.
35468
35469 2017-03-10  Olivier Hainque  <hainque@adacore.com>
35470
35471         * tree-switch-conversion (array_value_type): Start by resetting
35472         candidate type to it's main variant.
35473
35474 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35475
35476         PR rtl-optimization/79909
35477         * combine.c (try_combine): Use simplify_replace_rtx on individual
35478         CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
35479         of the whole CALL_INSN_FUNCTION_USAGE.
35480
35481         PR tree-optimization/79972
35482         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call
35483         get_range_info on SSA_NAMEs.  Formatting fixes.
35484
35485 2017-03-10  Richard Biener  <rguenther@suse.de>
35486             Jakub Jelinek  <jakub@redhat.com>
35487
35488         PR tree-optimization/77975
35489         * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
35490         edge to be constant.
35491         (get_val_for): For constant x return it.  Formatting fix.
35492         (loop_niter_by_eval): Avoid pointless looping if the next iteration
35493         would use the same bases as the current one.
35494
35495 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35496
35497         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
35498         instead of vec_select for V1TImode.
35499         * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
35500         longer needed.
35501         (VSX_LE_128): Add V1TI to this mode iterator.
35502         (*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
35503         (*vsx_le_perm_store_<mode>): Likewise.
35504         (pre-reload splitter for VSX stores): Likewise.
35505         (post-reload splitter for VSX stores): Likewise.
35506         (*vsx_xxpermdi2_le_<mode>): Likewise.
35507         (*vsx_lxvd2x2_le_<mode>): Likewise.
35508         (*vsx_stxvd2x2_le_<mode>): Likewise.
35509
35510 2017-03-09  Michael Eager  <eager@eagercon.com>
35511
35512         Correct failures with --enable-checking=yes,rtl.
35513
35514         * config/microblaze/microblaze.c (microblaze_expand_shift):
35515         Replace GET_CODE test with CONST_INT_P and INTVAL test with
35516         test for const0_rtx.
35517         * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
35518         lshrsi3_byone): Replace INTVAL with test for const1_rtx.
35519
35520 2017-03-09  Richard Biener  <rguenther@suse.de>
35521
35522         PR tree-optimization/79977
35523         * graphite-scop-detection.c (scop_detection::merge_sese):
35524         Handle the case of extra exits to blocks dominating the entry.
35525
35526 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
35527
35528         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
35529         Document rdynamic.
35530
35531 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
35532
35533         PR rtl-optimization/79949
35534         * lra-constraints.c (process_alt_operands): Check memory when
35535         trying to predict a cycle.  Print about the overall increase.
35536
35537 2017-03-09  Richard Biener  <rguenther@suse.de>
35538
35539         PR middle-end/79971
35540         * gimple-expr.c (useless_type_conversion_p): Preserve
35541         TYPE_SATURATING for fixed-point types.
35542
35543 2017-03-09  Richard Biener  <rguenther@suse.de>
35544
35545         PR ipa/79970
35546         * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
35547         alignment of BLKmode params.
35548
35549 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35550
35551         PR target/79913
35552         * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
35553         (VALL_NO_V2Q): Likewise.
35554         (VDQF_DF): Delete.
35555         * config/aarch64/aarch64-simd.md
35556         (aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
35557         iterator.
35558         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
35559         VALL_NO_V2Q mode iterator.
35560         (*aarch64_vgetfmulx<mode>): Use VDQF iterator.
35561
35562 2017-03-09  Martin Liska  <mliska@suse.cz>
35563
35564         PR tree-optimization/79631
35565         * tree-chkp-opt.c (chkp_is_constant_addr): Call
35566         tree_int_cst_sign_bit just for INTEGER constants.
35567
35568 2017-03-09  Martin Liska  <mliska@suse.cz>
35569
35570         PR target/65705
35571         PR target/69804
35572         * toplev.c (process_options): Disable -fcheck-pointer-bounds with
35573         sanitizers.
35574
35575 2017-03-09  Marek Polacek  <polacek@redhat.com>
35576
35577         PR c++/79672
35578         * tree.c (inchash::add_expr): Handle TREE_VEC.
35579
35580 2017-03-09  Martin Liska  <mliska@suse.cz>
35581
35582         PR ipa/79764
35583         (chkp_narrow_size_and_offset): New function.
35584         (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
35585         (void chkp_parse_bit_field_ref): New function.
35586         (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
35587         (chkp_process_stmt): Use chkp_parse_bit_field_ref.
35588
35589 2017-03-09  Martin Liska  <mliska@suse.cz>
35590
35591         PR ipa/79761
35592         * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
35593         (chkp_find_bounds_1): Remove gcc_unreachable.
35594
35595 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
35596
35597         PR sanitizer/79944
35598         * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
35599         BUILT_IN_SYNC*, determine the access type from the size suffix and
35600         always build a MEM_REF with that type.  Handle forgotten
35601         BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
35602
35603         PR target/79932
35604         * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
35605         _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
35606         _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
35607         _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
35608         _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
35609         _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
35610         _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
35611         _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
35612         _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
35613         _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
35614         _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
35615         _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
35616         _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
35617         _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
35618         _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
35619         _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
35620         _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
35621         _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
35622         _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
35623         _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
35624         _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
35625         _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
35626         _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
35627         _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
35628         _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
35629         _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
35630         _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
35631         _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
35632         _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
35633         _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
35634         definitions outside of __OPTIMIZE__ guarded section.
35635
35636         PR target/79932
35637         * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
35638         _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
35639         _mm512_packus_epi32, _mm512_maskz_packus_epi32,
35640         _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
35641         guarded section.
35642
35643 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35644
35645         * config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
35646         ("vfenez<mode>"): Add missing constraints.
35647
35648 2017-03-08  Martin Sebor  <msebor@redhat.com>
35649
35650         PR target/79928
35651         * config/nds32/nds32.c (nds32_option_override):
35652         Fix misspelled diagnostic.
35653
35654 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35655
35656         PR c/79940
35657         * gimplify.c (gimplify_omp_for): Replace index var in outer
35658         taskloop statement with an artificial variable and add
35659         OMP_CLAUSE_PRIVATE clause for it.
35660
35661 2017-03-08  Richard Biener  <rguenther@suse.de>
35662
35663         PR tree-optimization/79955
35664         * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
35665         for accesses that are completely outside of the variable.
35666
35667 2017-03-08  Andrew Haley  <aph@redhat.com>
35668
35669         PR tree-optimization/79943
35670         * tree-ssa-loop-split.c (compute_new_first_bound): When
35671         calculating the new upper bound, (END-BEG) should be added, not
35672         subtracted.
35673
35674 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35675
35676         * config/avr/avr.md (setmemhi): Make sure match_dup
35677         operand number comes before match_scratch.
35678
35679 2017-03-08  Richard Biener  <rguenther@suse.de>
35680
35681         PR tree-optimization/79920
35682         * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
35683         with ncopies == 1 to ...
35684         (vect_transform_slp_perm_load): ... here.  Properly compute
35685         all element loads by iterating VF times over the group.  Do
35686         not handle ncopies (computed in a broken way) in
35687         vect_create_mask_and_perm.
35688
35689 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35690
35691         PR sanitizer/79904
35692         * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
35693         is a uniform vector, use uniform_vector_p return value instead of
35694         building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
35695
35696 2017-03-07  Marek Polacek  <polacek@redhat.com>
35697
35698         PR middle-end/79809
35699         * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
35700         (alloca_call_type): Likewise.
35701
35702 2017-03-07  Martin Liska  <mliska@suse.cz>
35703
35704         * gcov.c (process_args): Put comment to correct location.
35705
35706 2017-03-07  Martin Liska  <mliska@suse.cz>
35707
35708         PR middle-end/68270
35709         * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
35710         Use array_at_struct_end_p instead of DECL_CHAIN (field).
35711         (chkp_narrow_bounds_for_field): Likewise.
35712         (chkp_parse_array_and_component_ref): Pass one more argument to
35713         call.
35714
35715 2017-03-07  Richard Biener  <rguenther@suse.de>
35716
35717         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
35718         preheaders.
35719
35720 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
35721
35722         * config/i386/i386.c (ix86_local_alignment): Align most aggregates
35723         of 16 bytes and more to 16 bytes, not those of 16 bits and more.
35724
35725 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35726
35727         PR c/79855
35728         * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
35729         to end of description.
35730         (PARAM_MAX_STORES_TO_MERGE): Likewise.
35731
35732 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
35733
35734         PR rtl-optimization/79901
35735         * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
35736         ...
35737         (*avx512f_<code><mode>3<mask_name>): ... this.
35738         (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
35739         iterator instead of VI8_AVX2_AVX512BW.
35740
35741         PR rtl-optimization/79901
35742         * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
35743         min/max expander, expand it using expand_vec_cond_expr.
35744
35745         PR sanitizer/79897
35746         * ubsan.c (ubsan_encode_value): Call mark_addressable on the
35747         temporary.
35748
35749 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35750
35751         PR c++/79821
35752         * dwarf2out.h (dw_vec_const): Change array type from unsigned char *
35753         to void * for PCH reasons.
35754         * dwarf2out.c (output_loc_operands, output_die): Cast
35755         v.val_vec.array to unsigned char *.
35756
35757 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
35758
35759         PR target/77850
35760         * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
35761         vector types.
35762
35763 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
35764
35765         PR rtl-optimization/79571
35766         * lra-constraints.c (process_alt_operands): Calculate static
35767         reject and subtract it from overall when only addresses will be
35768         reloaded.
35769
35770 2017-03-06  Julia Koval  <julia.koval@intel.com>
35771
35772         PR target/79793
35773         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
35774         incoming stack boundary to 128 for 64-bit targets.
35775
35776 2017-03-06  Richard Biener  <rguenther@suse.de>
35777
35778         PR tree-optimization/79894
35779         * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
35780         to NULL after folding it.
35781
35782 2017-03-06  Richard Biener  <rguenther@suse.de>
35783
35784         PR tree-optimization/79824
35785         * tree-vect-stmts.c (get_group_load_store_type): Fix alignment
35786         check disabling peeling for gaps.
35787
35788 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
35789
35790         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
35791         attributes): Document gettimeofday.
35792
35793 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35794
35795         * config/s390/s390.c (s390_option_override_internal): Set
35796         PARAM_MIN_VECT_LOOP_BOUND
35797
35798 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35799
35800         * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
35801         * config/s390/s390.md: Likewise.
35802
35803 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35804
35805         PR target/79812
35806         * config/i386/sse.md (VI8F_256_512): Remove mode iterator.
35807         (<avx2_avx512>_perm<mode>): Rename to ...
35808         (avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
35809         of VI8F_256_512.
35810         (<avx512>_perm<mode>_mask): Rename to ...
35811         (avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
35812         of VI8F_256_512.
35813         (<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
35814         (avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
35815         instead of VI8F_256_512.
35816         (avx512f_perm<mode>): New define_expand.
35817         (avx512f_perm<mode>_mask): Likewise.
35818         (avx512f_perm<mode>_1<mask_name>): New define_insn.
35819         (<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
35820
35821 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35822
35823         * config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
35824         msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
35825         if_then_else.
35826         (smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
35827
35828 2017-03-06  Martin Liska  <mliska@suse.cz>
35829
35830         PR sanitize/79783
35831         * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
35832         when having a SSA NAME w/o VAR_DECL assigned to it.
35833
35834 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35835
35836         * config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
35837         msa_dpsub_<su>_d): Fix MODE for vec_select.
35838
35839 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35840
35841         * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
35842         argument.
35843         * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
35844
35845 2017-03-06  Richard Biener  <rguenther@suse.de>
35846
35847         * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
35848         * plugin.c (register_plugin_info): Likewise.
35849         * tree-chkp.c (chkp_make_static_const_bounds): Likewise.
35850
35851 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
35852
35853         * config/i386/sse.md (sse_storehps, sse_storelps,
35854         avx_<castmode><avxsizesuffix>_<castmode>,
35855         avx512f_<castmode><avxsizesuffix>_<castmode>,
35856         avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
35857         in condition that at least one operand is not a MEM.
35858
35859 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
35860
35861         PR middle-end/79805
35862         * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
35863         ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
35864         ECF_NOTHROW.
35865         * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
35866         gimple_call_nothrow_p flag based on whether original builtin can throw.
35867         If it can, emit following stmts on the fallthrough edge.
35868         * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
35869         don't create new bb if inserting just debug stmts on the edge, try to
35870         insert them on the fallthru bb or just reset debug stmts.
35871
35872 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
35873
35874         PR target/43763
35875         * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
35876         restore recog_data (including the operand rtxes inside it) around
35877         the call to get_insn_template.
35878
35879 2017-03-03  Martin Sebor  <msebor@redhat.com>
35880
35881         PR tree-optimization/79699
35882         * context.c (context::~context): Free MPFR caches to avoid
35883         a memory leak on program exit.
35884
35885 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35886
35887         * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
35888         Use wide_int::ulow () instead of .elt (0).
35889
35890 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
35891
35892         * config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
35893         (*pushxf): Limit oF constraint to 32bit targets and add oC
35894         constraint for 64bit targets.
35895         (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
35896         (*pushdf): Change rmF constraint to rmC.
35897
35898 2017-03-03  Martin Liska  <mliska@suse.cz>
35899
35900         * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
35901         Remove unused variable.
35902
35903 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
35904
35905         PR target/79807
35906         * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
35907         is a memory operand, increase num_memory.
35908         (ix86_expand_args_builtin): Likewise.
35909
35910 2017-03-03  Jan Hubicka  <jh@suse.cz>
35911
35912         PR lto/79760
35913         * ipa-devirt.c (maybe_record_node): Properly handle
35914         __cxa_pure_virtual visibility.
35915
35916 2017-03-03  Martin Liska  <mliska@suse.cz>
35917
35918         PR tree-optimization/79803
35919         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
35920         assert.
35921         (pass_loop_prefetch::execute): Disabled optimization if an
35922         assumption about L1 cache size is not met.
35923
35924 2017-03-03  Martin Liska  <mliska@suse.cz>
35925
35926         PR rtl-optimization/79574
35927         * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
35928         (hash_scan_set): Likewise.
35929         (dump_hash_table): Likewise.
35930         (hoist_code): Likewise.
35931
35932 2017-03-03  Richard Biener  <rguenther@suse.de>
35933
35934         * fixed-value.c (fixed_from_string): Restore use of elt (1)
35935         in place of uhigh ().
35936         (fixed_convert_from_real): Likewise.
35937
35938 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
35939
35940         PR target/79514
35941         * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
35942
35943 2017-03-03  Richard Biener  <rguenther@suse.de>
35944
35945         PR middle-end/79818
35946         * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
35947         TYPE_OVERFLOW_UNDEFINED check.
35948
35949 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35950
35951         * config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
35952         numbers.
35953         (vector_ae_<mode>_p): Likewise.
35954         (vector_nez_<mode>_p): Likewise.
35955         (vector_ne_v2di_p): Likewise.
35956         (vector_ae_v2di_p): Likewise.
35957         (vector_ne_<mode>_p): Likewise.
35958         * config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
35959         numbers.
35960         (vsx_tsqrt<mode>2_fe): Likewise.
35961
35962 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
35963
35964         PR target/79514
35965         * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
35966
35967 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
35968
35969         PR rtl-optimization/79780
35970         * cprop.c (one_cprop_pass): When second and further conditional trap
35971         in a single basic block is turned into an unconditional trap, turn it
35972         into a deleted note to avoid RTL verification failures.
35973
35974 2017-03-02  Richard Biener  <rguenther@suse.de>
35975
35976         * fold-const.c (const_binop): Use ulow () instead of elt (0).
35977
35978 2017-03-02  Richard Biener  <rguenther@suse.de>
35979
35980         PR tree-optimization/79345
35981         PR c++/42000
35982         * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
35983         param and abort the walk, returning -1 if it is hit.
35984         (walk_aliased_vdefs): Take a limit param and pass it on.
35985         * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
35986         defaulting to 0 and return a signed int.
35987         * tree-ssa-uninit.c (struct check_defs_data): New struct.
35988         (check_defs): New helper.
35989         (warn_uninitialized_vars): Use walk_aliased_vdefs to warn
35990         about uninitialized memory.
35991         * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
35992         bogus uninitialized warning.
35993         (fixed_convert_from_real): Likewise.
35994
35995 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
35996
35997         PR tree-optimization/66768
35998         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
35999         iv_use if base object can't be determined.
36000
36001 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36002
36003         PR tree-optimization/79345
36004         * gensupport.h (struct pattern_stats): Add min_scratch_opno field.
36005         * gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
36006         (get_pattern_stats): Initialize it.
36007         * genemit.c (gen_expand): Verify match_scratch numbers come after
36008         match_operand/match_dup numbers.
36009         * config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
36010         match_scratch numbers.
36011         * config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
36012         Likewise.
36013         * config/s390/s390.md (trunctdsd2): Likewise.
36014
36015 2017-03-02  Richard Biener  <rguenther@suse.de>
36016
36017         * wide-int.h (wide_int_storage::operator=): Implement in terms
36018         of wi::copy.
36019
36020 2017-03-02  Richard Biener  <rguenther@suse.de>
36021
36022         PR tree-optimization/79777
36023         * tree-ssa-pre.c (eliminate_insert): Give up if we simplify
36024         the to insert expression to sth existing.
36025
36026 2017-03-01  Martin Sebor  <msebor@redhat.com>
36027
36028         PR middle-end/79692
36029         * gimple-ssa-sprintf.c
36030         (directive::known_width_and_precision): New function.
36031         (format_integer): Use it.
36032         (get_mpfr_format_length): Consider the full range of precision
36033         when computing %g output with the # flag.  Set the likely byte
36034         count to 3 rather than 1 when precision is indeterminate.
36035         (format_floating): Correct the lower bound of precision.
36036
36037 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36038
36039         * doc/invoke.texi: Document default code model for 64-bit Linux.
36040
36041 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36042
36043         PR target/79752
36044         * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
36045         udiv rather than div since input pattern is unsigned.
36046
36047 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
36048
36049         * config/i386/i386.c (print_reg): Warn for values of
36050         unsupported size in integer register.
36051
36052 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
36053
36054         PR target/79439
36055         * config/rs6000/predicates.md (current_file_function_operand): Do
36056         not allow self calls to be local if the function is replaceable.
36057
36058 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
36059
36060         PR target/79395
36061         * config/rs6000/altivec.h (vec_ctz and others): Change the
36062         preprocessor macro that controls conditional compilation from
36063         _ARCH_PWR9 to __POWER9_VECTOR__.
36064         (vec_all_ne): Change parameterization of __altivec_scalar_pred
36065         macro expansion under preprocessor #ifdef __POWER9_VECTOR__
36066         control (instead of _ARCH_PWR9 control) so that template
36067         definition uses power9-specific function.
36068         (vec_any_eq): Likewise.
36069         (vec_all_ne): Change macro definition to use a power9-specific
36070         expansion under #ifdef __POWER9_VECTOR__ control (instead of
36071         _ARCH_PWR9 control).
36072         (vec_any_eq) Likewise.
36073         * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
36074         expansion for CMPNEF to remove support for xvcmpnesp instruction.
36075         (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
36076         support for xvcmpnedp instruction.
36077         (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
36078         macro expansion so that Power9 implementation of vec_all_ne does
36079         not use the AltiVec predicate framework.
36080         (VCMPNEH_P): Likewise.
36081         (VCMPNEW_P): Likewise.
36082         (VCMPNED_P): Likewise.
36083         (VCMPNEFP_P): Likewise.
36084         (VCMPNEDP_P): Likewise.
36085         (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
36086         implementation of vec_any_eq to not use AltiVec predicate
36087         framework.
36088         (VCMPAEH_P): Likewise.
36089         (VCMPAEW_P): Likewise.
36090         (VCMPAED_P): Likewise.
36091         (VCMPAEFP_P): Likewise.
36092         (VCMPAEDP_P): Likewise.
36093         (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
36094         BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
36095         not use the AltiVec predicate framework.
36096         (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
36097         of vec_any_eq to not use AltiVec predicate framework.
36098         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
36099         support for predefined __POWER9_VECTOR__ macro to indicate that
36100         Power9 instruction selection is enabled.
36101         (altivec_overloaded_builtins): Remove extraneous
36102         ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
36103         function argument types RS6000_BTI_bool_V16QI and
36104         RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
36105         entry for overloaded function argument types RS6000_BTI_bool_V4SI
36106         andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
36107         two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
36108         P9V_BUILTIN_CMPNEF to force use of instructions not specific to
36109         Power9 for implementations of vec_cmpne.  Change the signature for
36110         all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
36111         (representing vec_all_ne) to remove the previously described first
36112         argument of type RS6000_BTI_INTSI, as this was an artifact of
36113         reliance on the AltiVec predicate framework, which is no longer
36114         used in the implementation of these functions.  Add
36115         P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
36116         function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
36117         since, unlike the AltiVec predicate framework implementation, we
36118         do not share function descriptors between vec_alle and vec_anyeq.
36119         (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
36120         set of modes that receive special treatment even when
36121         TARGET_P9_VECTOR is true.  The special treatment emits code that
36122         does not depend on Power9 instructions.
36123         * config/rs6000/vector.md (vector_ne_<mode>_p): Change this
36124         define_expand to not rely on AltiVec predicate framework.
36125         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36126         function.
36127         (vector_ne_v2di_p): Change this define_expand to not rely on
36128         AltiVec predicate framework.
36129         (vector_ae_v2di_p): New define_expand to represent vec_any_eq
36130         function.
36131         (vector_ne_<mode>_p): Change this define_expand to not rely on
36132         AltiVec predicate framework.
36133         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36134         function.
36135         * config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
36136         (V16QI, V8HI, V4SI), correct a typo in the code emitted for this
36137         define_insn pattern.
36138         (*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
36139         define_insn pattern because the xvcmpne<VSs>. instruction is not
36140         supported.
36141         (vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
36142         instruction is not supported.
36143
36144 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36145
36146         * config/nvptx/nvptx.c: Include intl.h.
36147
36148 2017-03-01  Martin Jambor  <mjambor@suse.cz>
36149
36150         PR lto/78140
36151         * ipa-prop.h (ipa_bits): Removed field known.
36152         (ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
36153         to pointers.  Adjusted their comments to warn about their sharing.
36154         (ipcp_transformation_summary): Change bits to a vector of pointers.
36155         (ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
36156         (ipa_get_ipa_bits_for_value): Declare.
36157         * tree-vrp.h (value_range): Mark as GTY((for_user)).
36158         * ipa-prop.c (ipa_bit_ggc_hash_traits): New.
36159         (ipa_bits_hash_table): Likewise.
36160         (ipa_vr_ggc_hash_traits): Likewise.
36161         (ipa_vr_hash_table): Likewise.
36162         (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
36163         being pointers and vr_known being removed.
36164         (ipa_set_jf_unknown): Likewise.
36165         (ipa_get_ipa_bits_for_value): New function.
36166         (ipa_set_jfunc_bits): Likewise.
36167         (ipa_get_value_range): New overloaded functions.
36168         (ipa_set_jfunc_vr): Likewise.
36169         (ipa_compute_jump_functions_for_edge): Use the above functions to
36170         construct bits and vr parts of jump functions.
36171         (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
36172         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36173         exist.
36174         (ipcp_grow_transformations_if_necessary): Also allocate
36175         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36176         exist.
36177         (ipa_node_params_t::duplicate): Do not copy bits, just pointers to
36178         them.  Fix too long lines.
36179         (ipa_write_jump_function): Adjust for bits and m_vr being pointers and
36180         vr_known being removed.
36181         (ipa_read_jump_function): Use new setter functions to construct bits
36182         and vr parts of jump functions or set them to NULL.
36183         (write_ipcp_transformation_info): Adjust for bits being pointers.
36184         (read_ipcp_transformation_info): Likewise.
36185         (ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
36186         space.
36187         Include gt-ipa-prop.h.
36188         * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
36189         being pointers.
36190         (ipcp_store_bits_results): Likewise.
36191         (propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
36192         Do not write to existing jump functions but use a temporary instead.
36193
36194 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36195
36196         PR c++/79681
36197         * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
36198         attempt to use its first operand as BIT_FIELD_REF base.
36199
36200 2017-03-01  Richard Biener  <rguenther@suse.de>
36201
36202         PR middle-end/79721
36203         * tree-chrec.c (chrec_evaluate): Perform computation of Newtons
36204         interpolating formula in wrapping arithmetic.
36205         (chrec_apply): Convert chrec_evaluate return value to wanted type.
36206
36207 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36208
36209         PR tree-optimization/79734
36210         * tree-vect-generic.c (expand_vector_condition): Optimize
36211         AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
36212         Handle VEC_COND_EXPR where comparison has different inner width from
36213         type's inner width.
36214
36215 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
36216
36217         * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
36218         markup, and similar issues.  Remove @opindex entries for things
36219         that aren't options.  Add missing -mmpy-option entries.
36220
36221 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36222
36223         PR tree-optimization/79737
36224         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
36225         a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
36226         tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
36227         instead of byte_size.  Formatting fix.
36228         (shift_bytes_in_array_right): Formatting fix.
36229
36230 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
36231
36232         PR target/79749
36233         * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
36234         condition on optimize for the leaf function test.
36235
36236 2017-02-28  Martin Liska  <mliska@suse.cz>
36237
36238         PR lto/79625
36239         * read-rtl-function.c (function_reader::handle_unknown_directive):
36240         Bail out when one uses -flto.
36241
36242 2017-02-28  Martin Liska  <mliska@suse.cz>
36243
36244         * common.opt: Replace space with tabular for options of <number>
36245         type.
36246         * config/i386/i386.opt: Show <number> value for
36247         -mlarge-data-threshold.
36248         * opts.c (print_filtered_help): Do not display number in hexadecimal
36249         format.
36250
36251 2017-02-28  Martin Liska  <mliska@suse.cz>
36252
36253         * common.opt: Fix --help=option -Q for options which are of
36254         an enum type.
36255
36256 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
36257
36258         * config/i386/i386.c (print_reg): Error out for values
36259         of 8-bit size in invalid integer register.
36260
36261 2017-02-28  Martin Sebor  <msebor@redhat.com>
36262
36263         PR tree-optimization/79691
36264         * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
36265
36266 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36267
36268         PR target/79729
36269         * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
36270         gcc_unreachable with output_operand_lossage.
36271
36272 2017-02-28  Richard Biener  <rguenther@suse.de>
36273
36274         PR tree-optimization/79740
36275         * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
36276         inserts.
36277         (visit_nary_op): Insert the nary into the hashtable if we
36278         pattern-matched sth.
36279         * tree-ssa-pre.c (eliminate_insert): Robustify.
36280
36281 2017-02-28  Richard Biener  <rguenther@suse.de>
36282
36283         PR middle-end/79731
36284         * fold-const.c (decode_field_reference): Reject out-of-bound
36285         accesses.
36286
36287 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36288
36289         * config/i386/i386.c: Include intl.h.
36290         (ix86_option_override_internal): Use cond ? G_("...") : G_("...")
36291         instead of just cond ? "..." : "...".
36292         * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
36293         * coverage.c (read_counts_file): Likewise.
36294         * omp-offload.c: Include intl.h.
36295         (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
36296         of just cond ? "..." : "...".
36297         * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
36298         of just cond ? "..." : "...".
36299
36300 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
36301
36302         PR target/79742
36303         * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
36304         entry, if present.
36305         * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
36306         'tune for' CPU name.
36307         * config/arm/arm-cpu-data.h: Regenerated.
36308
36309 2017-02-28  Richard Biener  <rguenther@suse.de>
36310
36311         PR tree-optimization/79732
36312         * tree-inline.c (expand_call_inline): Do not shadow var.
36313
36314 2017-02-28  Richard Biener  <rguenther@suse.de>
36315
36316         PR tree-optimization/79723
36317         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
36318         address-space properly.
36319
36320 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
36321
36322         * doc/optinfo.texi (Optimization groups): Fix option used for
36323         OPTGROUP_ALL.
36324         * doc/invoke.texi (-fopt-info): Document "omp".
36325         * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
36326         (OPTGROUP_ALL): Add OPTGROUP_OMP.
36327         * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
36328         * ipa-hsa.c (pass_data_ipa_hsa): Likewise.
36329         * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
36330
36331         * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
36332         all users.
36333         * dumpfile.c (optgroup_options): Instead of "openmp", associate
36334         OPTGROUP_OMP with "omp".
36335
36336 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
36337
36338         PR target/79544
36339         * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
36340         for arithmetic shift of unsigned V2DI.
36341
36342 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
36343
36344         * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
36345         arc/linux.h headers.
36346         * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
36347         (LINK_SPEC): Likewise.
36348         (ARC_TLS_EXTRA_START_SPEC): Likewise.
36349         (EXTRA_SPECS): Likewise.
36350         (STARTFILE_SPEC): Likewise.
36351         (ENDFILE_SPEC): Likewise.
36352         (LIB_SPEC): Likewise.
36353         (TARGET_SDATA_DEFAULT): Likewise.
36354         (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
36355         (MULTILIB_DEFAULTS): Likewise.
36356         (DWARF2_UNWIND_INFO): Likewise.
36357         * config/arc/big.h: New file.
36358         * config/arc/elf.h: Likewise.
36359         * config/arc/linux.h: Likewise.
36360         * config/arc/t-uClibc: Remove.
36361
36362 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
36363
36364         PR tree-optimization/77536
36365         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
36366         (tree_transform_and_unroll_loop): Use above function to compute the
36367         estimated niter of unrolled loop and use it when scaling profile.
36368         Also use count info rather than frequency if it's non-zero.
36369         * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
36370         * tree-vect-loop.c (scale_profile_for_vect_loop): New function.
36371         (vect_transform_loop): Call above function.
36372
36373 2017-02-27  Richard Biener  <rguenther@suse.de>
36374
36375         PR tree-optimization/45397
36376         * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
36377         * tree-ssa-sccvn.c (valueized_wider_op): New helper.
36378         (visit_nary_op): Add pattern matching for CSEing sign-changed
36379         or truncated operations with wider ones.
36380
36381 2017-02-27  Richard Biener  <rguenther@suse.de>
36382
36383         PR tree-optimization/79690
36384         * tree-vect-stmts.c (vectorizable_store): Use vector type
36385         built from the DR with address-space.
36386
36387 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
36388
36389         * doc/invoke.texi (Optimize Options): Refine the description
36390         of asan-use-after-return.
36391
36392 2017-02-25  Alan Modra  <amodra@gmail.com>
36393
36394         PR rtl-optimization/79584
36395         * lra-constraints.c (base_to_reg): Reload ad->base, the entire
36396         base, not ad->base_term, the reg within base.  Remove assertion
36397         that ad->base == ad->base_term.  Replace gen_int_mode using
36398         bogus mode with const0_rtx.
36399
36400 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
36401
36402         PR middle-end/79396
36403         * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
36404         FMA_EXPR like tcc_binary or tcc_unary.
36405
36406         * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
36407
36408         PR debug/77589
36409         * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
36410         bitfield.
36411         (size_of_loc_descr): Handle DW_OP_GNU_variable_value.
36412         (output_loc_operands): Handle DW_OP_call_ref and
36413         DW_OP_GNU_variable_value.
36414         (struct variable_value_struct): New type.
36415         (struct variable_value_hasher): Likewise.
36416         (variable_value_hash): New variable.
36417         (string_types): Remove.
36418         (copy_loc_descr): New function.
36419         (add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
36420         (prepend_loc_descr_to_each): New function.
36421         (add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
36422         instead of add_loc_descr_to_each if the first argument is single
36423         location list and the second has multiple.
36424         (resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
36425         (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
36426         when looking for variable value which doesn't have other location info.
36427         (loc_list_from_tree): Formatting fix.
36428         (gen_array_type_die): Simplify DW_AT_string_length handling.
36429         (adjust_string_types): Remove.
36430         (gen_subprogram_die): Don't call adjust_string_types nor test/set
36431         string_types.  Call resolve_variable_values.
36432         (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
36433         (resolve_addr_in_expr): Likewise.  Add A argument.
36434         (copy_deref_exprloc): Remove deref argument.  Adjust for the
36435         original expression being DW_OP_GNU_variable_value with optionally
36436         DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
36437         optionally after it.
36438         (optimize_string_length): Rework for DW_OP_GNU_variable_value.
36439         (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
36440         callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
36441         (variable_value_hasher::hash, variable_value_hasher::equal): New
36442         methods.
36443         (resolve_variable_value_in_expr, resolve_variable_value,
36444         resolve_variable_values, note_variable_value_in_expr,
36445         note_variable_value): New functions.
36446         (dwarf2out_early_finish): Call note_variable_value on all toplevel
36447         DIEs.
36448
36449 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
36450
36451         PR c/79677
36452         * opts.h (handle_generated_option): Add GENERATED_P argument.
36453         * opts-common.c (handle_option): Adjust function comment.
36454         (handle_generated_option): Add GENERATED_P argument, pass it to
36455         handle_option.
36456         (control_warning_option): Pass false to handle_generated_option
36457         GENERATED_P.
36458         * opts.c (maybe_default_option): Pass true to handle_generated_option
36459         GENERATED_P.
36460         * optc-gen.awk: Likewise.
36461
36462 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36463
36464         * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
36465         a REG, look at the REG it is a SUBREG of.
36466         (splitter for cmpeqsi_t): Ditto.
36467
36468 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36469
36470         * config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
36471         the special USEs with the pattern of the insn, not the insn itself.
36472
36473 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
36474
36475         PR target/79473
36476         * doc/invoke.texi: Document -mload-store-pairs.
36477
36478 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36479             Sandra Loosemore  <sandra@codesourcery.com>
36480
36481         * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
36482         argument isn't a CONST_INT.
36483         (nios2_alternate_compare_const): Assert op is a CONST_INT.
36484         (nios2_valid_compare_const_p): Assert op is a CONST_INT.
36485         (nios2_validate_compare): Bypass alternate compare logic if *op2
36486         is not a CONST_INT.
36487         (ldstwm_operation_p): Return false if first_base is not a REG or
36488         if first_offset is not a CONST_INT.
36489
36490 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36491
36492         * config/cris/cris.md: Use correct operand in a define_peephole2.
36493
36494 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36495
36496         * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
36497
36498 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36499
36500         * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
36501         this_insn if it is an INSN or JUMP_INSN.
36502         (force_offsettable): Look at base, not at addr.
36503         * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
36504         on things that aren't necessarily CONST_INTs.
36505
36506 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
36507
36508         * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
36509         -mfpmath=sse is the default also for x86-32 targets with SSE2
36510         instruction set when @option{-ffast-math} is enabled
36511
36512 2017-02-24  Jeff Law  <law@redhat.com>
36513
36514         PR rtl-optimizatoin/79286
36515         * ira.c (update_equiv_regs): Drop may_trap_p exception to
36516         dominance test.
36517
36518 2017-02-24  Richard Biener  <rguenther@suse.de>
36519
36520         PR tree-optimization/79389
36521         * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
36522         debug insns.
36523
36524 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
36525
36526         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update
36527         function comment to reflect reality.
36528         (loop_exits_before_overflow): Fix typo in function description.
36529
36530 2017-02-24  Richard Biener  <rguenther@suse.de>
36531
36532         PR tree-optimization/79389
36533         * gimple-ssa-split-paths.c (is_feasible_trace): Verify more
36534         properly that a threading opportunity exists.  Detect conditional
36535         copy/constant propagation opportunities.
36536
36537 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
36538
36539         * config/visium/visium.md (type): Add trap.
36540         (b): New mode attribute.
36541         (*btst): Rename into...
36542         (*btst<mode>): ...this and adjust.
36543         (*cbranchsi4_btst_insn): Rename into...
36544         (*cbranch<mode>4_btst_insn): ...this and adjust.
36545         (trap): New define_insn.
36546
36547 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
36548
36549         PR tree-optimization/79389
36550         * ifcvt.c (struct noce_if_info): Add rev_cond field.
36551         (noce_reversed_cond_code): New function.
36552         (noce_emit_store_flag): Use rev_cond if non-NULL instead of
36553         reversed_comparison_code.  Formatting fix.
36554         (noce_try_store_flag): Test rev_cond != NULL in addition to
36555         reversed_comparison_code.
36556         (noce_try_store_flag_constants): Likewise.
36557         (noce_try_store_flag_mask): Likewise.
36558         (noce_try_addcc): Use rev_cond if non-NULL instead of
36559         reversed_comparison_code.
36560         (noce_try_cmove_arith): Likewise.  Formatting fixes.
36561         (noce_try_minmax, noce_try_abs): Clear rev_cond.
36562         (noce_find_if_block): Initialize rev_cond.
36563         (find_cond_trap): Call noce_get_condition with then_bb == trap_bb
36564         instead of false as last argument never attempt to reverse it
36565         afterwards.
36566
36567 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
36568
36569         PR tree-optimization/79663
36570         * tree-predcom.c (combine_chains): Process refs in reverse order
36571         only for ZERO length chains, and add explaining comment.
36572
36573 2017-02-23  Jeff Law  <law@redhat.com>
36574
36575         PR tree-optimization/79578
36576         * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
36577         in call to operand_equal_p.
36578
36579 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
36580
36581         PR target/71017
36582         * config/i386/cpuid.h: Fix another undefined behavior.
36583
36584 2017-02-23  Richard Biener  <rguenther@suse.de>
36585
36586         PR tree-optimization/79683
36587         * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
36588         vector types for data-refs.
36589
36590 2017-02-23  Martin Liska  <mliska@suse.cz>
36591
36592         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
36593
36594 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
36595
36596         PR middle-end/79665
36597         * internal-fn.c (get_range_pos_neg): Moved to ...
36598         * tree.c (get_range_pos_neg): ... here.  No longer static.
36599         * tree.h (get_range_pos_neg): New prototype.
36600         * expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
36601         are known to be in between 0 and signed maximum inclusive, try to
36602         expand both unsigned and signed divmod and use the cheaper one from
36603         those.
36604
36605 2017-02-22  Jeff Law  <law@redhat.com>
36606
36607         PR tree-optimization/79578
36608         * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
36609         to compare base operands.
36610
36611 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
36612
36613         PR target/79211
36614         * config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
36615         gpc_reg_operand instead of fpr_reg_operand.
36616
36617 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
36618
36619         * config/mips/mips.c (mips_return_in_memory): Force FP
36620         vector types to be returned in memory for o32 ABI.
36621
36622 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
36623
36624         * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
36625         instead of DW_TAG_member for static data member declarations and don't
36626         set no_linkage_name for static inline data members.
36627         (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
36628         to DW_TAG_member.
36629
36630 2017-02-22  Martin Liska  <mliska@suse.cz>
36631
36632         * doc/invoke.texi: Replace inequality signs with square brackets
36633         for -Wnormalized.
36634
36635 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
36636
36637         PR target/78660
36638         * lra-constraints.c (simplify_operand_subreg): Handle
36639         WORD_REGISTER_OPERATIONS targets.
36640
36641 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
36642
36643         PR target/70465
36644         * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
36645         and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
36646         elimination by swapping fld*.
36647
36648 2017-02-22  Richard Biener  <rguenther@suse.de>
36649
36650         PR tree-optimization/79673
36651         * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
36652         convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
36653         irrelevant address-space qualifiers and avoiding a
36654         ADDR_SPACE_CONVERT_EXPR from fold_convert.
36655
36656 2017-02-22  Richard Biener  <rguenther@suse.de>
36657
36658         PR tree-optimization/79666
36659         * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
36660         to not symbolically negate if that may introduce undefined
36661         overflow.
36662
36663 2017-02-22  Martin Liska  <mliska@suse.cz>
36664
36665         PR lto/79587
36666         * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
36667         * data-streamer-out.c (streamer_write_gcov_count_stream):
36668         Likewise.
36669         * value-prof.c (stream_out_histogram_value): Make assert more
36670         precise based on type of counter.
36671
36672 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
36673
36674         PR target/79593
36675         * config/i386/i386.md (standard_x87sse_constant_load splitter):
36676         Use nonimmediate_operand instead of memory_operand for operand 1.
36677         (float-extend standard_x87sse_constant_load splitter): Ditto.
36678
36679 2017-02-21  Jeff Law  <law@redhat.com>
36680
36681         PR tree-optimization/79621
36682         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
36683         blocks with edges to themselves.
36684
36685 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36686
36687         PR target/79633
36688         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
36689         is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
36690         Use gimple_call_builtin_p.
36691
36692         PR target/79570
36693         * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
36694         on temporarily removed DEBUG_INSNs.
36695
36696         PR tree-optimization/79649
36697         * tree-loop-distribution.c (classify_partition): Give up on
36698         non-generic address space loads/stores.
36699
36700 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
36701
36702         * doc/loop.texi (Loop manipulation): Remove nonexistent
36703         tree_ssa_loop_version from the documentation.
36704         * cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
36705
36706 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36707
36708         PR target/79494
36709         * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
36710         make_reg_eh_region_note_nothrow_nononlocal on call_insn.
36711         * config/rs6000/rs6000.c: Include except.h.
36712         (rs6000_expand_split_stack_prologue): Call
36713         make_reg_eh_region_note_nothrow_nononlocal on the call insn.
36714
36715 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36716
36717         PR lto/79579
36718         * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
36719         have been analyzed.
36720
36721 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36722
36723         * common.opt (-fipa-cp-alignment): Mark as ignored and preserved
36724         for backward compatibility only.
36725         * doc/invoke.texi (Option Summary): Remove all references to
36726         -fipa-cp-alignment.
36727
36728 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
36729
36730         PR target/78660
36731         Revert:
36732         2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36733
36734         * lra-constraints.c (curr_insn_transform): Handle
36735         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36736
36737 2017-02-21  Martin Liska  <mliska@suse.cz>
36738
36739         * config/i386/i386.opt: Replace -masm-dialect with -masm.
36740
36741 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
36742
36743         PR translation/79638
36744         * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
36745
36746 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
36747
36748         PR ada/67205
36749         * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
36750         (arm_function_ok_for_sibcall): Return false for an indirect call by
36751         descriptor if all the argument registers are used.
36752         (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
36753         alignment of the function.
36754
36755 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36756
36757         PR tree-optimization/61441
36758         * simplify-rtx.c (simplify_const_unary_operation): For
36759         -fsignaling-nans and sNaN operand, return NULL_RTX rather than
36760         the sNaN unmodified.
36761
36762 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
36763
36764         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
36765         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
36766         instead of SYSTEM_HEADER_DIR.
36767
36768 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
36769             Martin LiÅ¡ka  <mliska@suse.cz>
36770
36771         * doc/invoke.texi (use-after-scope-direct-emission-threshold):
36772         Fix typos and grammar, use active voice, and clarify.
36773
36774 2017-02-20  Marek Polacek  <polacek@redhat.com>
36775
36776         PR middle-end/79537
36777         * gimplify.c (gimplify_expr): Handle unused *&&L;.
36778
36779         PR sanitizer/79558
36780         * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
36781
36782 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
36783
36784         PR target/79568
36785         * config/i386/i386.c (ix86_expand_builtin): Handle
36786         OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
36787         ix86_builtins_isa[fcode].isa as a requirement of those
36788         flags and any other flag in the bitmask.
36789         (ix86_init_mmx_sse_builtins): Use 0 instead of
36790         ~OPTION_MASK_ISA_64BIT as mask.
36791         * config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
36792         __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
36793         __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
36794         __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
36795
36796 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36797
36798         PR target/78012
36799         * lra-constraints.c (split_reg): Check requested split mode
36800         is supported by the register.
36801
36802 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36803
36804         * lra-constraints.c (simplify_operand_subreg): Remove early
36805         return false.
36806
36807 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36808
36809         PR target/78660
36810         * lra-constraints.c (curr_insn_transform): Tighten condition
36811         for converting SUBREG reloads from OP_OUT to OP_INOUT.
36812
36813 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36814
36815         PR target/78660
36816         * lra-constraints.c (curr_insn_transform): Handle
36817         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36818
36819 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
36820
36821         Revert:
36822         2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
36823
36824         * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
36825
36826 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
36827
36828         PR c++/69523
36829         * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
36830         description.
36831
36832 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36833
36834         * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
36835         for FMA_EXPR.
36836
36837 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
36838
36839         * final.c (last_columnnum, override_columnnum): New variables.
36840         (final_start_function): Set last_columnnum, pass it to begin_prologue
36841         hook and pass 0 to dwarf2out_begin_prologue.
36842         (final_scan_insn): Update override_columnnum.  Pass last_columnnum
36843         to source_line debug hook.
36844         (notice_source_line): Compute last_columnnum and for debug_column_info
36845         return true on column changes.
36846         * debug.h (struct gcc_debug_hooks): Add column argument to
36847         source_line and begin_prologue hooks.
36848         (debug_nothing_int_charstar_int_bool): Remove prototype.
36849         (debug_nothing_int_int_charstar,
36850         debug_nothing_int_int_charstar_int_bool): New prototypes.
36851         (dwarf2out_begin_prologue): Add column argument.
36852         * debug.c (do_nothing_debug_hooks): Adjust source_line and
36853         begin_prologue hooks.
36854         (debug_nothing_int_charstar_int_bool): Remove.
36855         (debug_nothing_int_int_charstar,
36856         debug_nothing_int_int_charstar_int_bool): New functions.
36857         * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
36858         through to dwarf2out_source_line.
36859         (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
36860         (dwarf2out_source_line): Add column argument, emit it if requested.
36861         * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
36862         arguments.
36863         * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
36864         * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
36865         * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
36866         through to dwarf2out_begin_prologue.
36867         (vmsdbgout_source_line): Add column argument, pass it through to
36868         dwarf2out_source_line.
36869         * dbxout.c (dbxout_begin_prologue): Add column argument, adjust
36870         dbxout_source_line caller.
36871         (dbxout_source_line): Add column argument.
36872
36873         * common.opt (gno-column-info, gcolumn-info): New options.
36874         * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
36875         (check_die): Also test for multiple DW_AT_decl_column attributes.
36876         (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
36877         DW_AT_decl_column if requested.
36878         (gen_subprogram_die): Compare and/or add also DW_AT_decl_column
36879         if requested.
36880         (gen_variable_die): Likewise.
36881         (add_call_src_coords_attributes): Add DW_AT_call_column if requested.
36882         * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
36883
36884         PR target/79569
36885         * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
36886         * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
36887         (ix86_handle_option): Handle OPT_m3dnowa.
36888         * doc/invoke.texi (-m3dnowa): Document.
36889         * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
36890         -m3dnowa instead of -m3dnow -march=athlon.
36891
36892         PR target/79559
36893         * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
36894         instead of gcc_assert for K, r and R code checks.  Formatting fixes.
36895
36896 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36897
36898         PR target/79261
36899         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
36900         support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
36901         * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
36902         generator for vsx_xxpermdi_<mode>_be.
36903         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
36904         force big-endian semantics.
36905         (vsx_xxpermdi_<mode>_be): New define_expand with same
36906         implementation as previous version of vsx_xxpermdi_<mode>.
36907
36908 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
36909
36910         PR tree-optimization/79327
36911         * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
36912         variable, its initialization and use.
36913
36914 2017-02-17  Julia Koval  <julia.koval@intel.com>
36915
36916         * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
36917         (OPTION_MASK_ISA_PKU_UNSET): New.
36918         (ix86_handle_option): Handle -mrdpid.
36919         * config/i386/cpuid.h (bit_RDPID): New.
36920         * config/i386/driver-i386.c (host_detect_local_cpu):
36921         Detect RDPID feature.
36922         * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
36923         * config/i386/i386-c.c (ix86_target_macros_internal):
36924         Handle RDPID flag.
36925         * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
36926         (ix86_valid_target_attribute_inner_p): Add "rdpid".
36927         (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
36928         * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
36929         * config/i386/i386.md (define_insn "rdpid"): New.
36930         * config/i386/i386.opt Add -mrdpid.
36931         * config/i386/immintrin.h (_rdpid_u32): New.
36932
36933 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
36934
36935         PR rtl-optimization/79541
36936         * lra-constraints.c (curr_insn_transform): Remove wrong asm insn
36937         instead of transforming it into USE.
36938
36939 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
36940
36941         * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
36942         If HONOR_SNANS (SFmode) force the input to a register.
36943         (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
36944         (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
36945         an frsp or similar insn.
36946
36947 2017-02-17  Martin Liska  <mliska@suse.cz>
36948
36949         PR rtl-optimization/79577
36950         * params.def (selsched-max-sched-times): Increase minimum to 1.
36951
36952 2017-02-17  Martin Liska  <mliska@suse.cz>
36953
36954         PR rtl-optimization/79574
36955         * gcse.c (want_to_gcse_p): Prevent integer overflow.
36956
36957 2017-02-17  Martin Liska  <mliska@suse.cz>
36958
36959         PR tree-optimization/79529
36960         * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
36961         ssa_defined_default_def_p to handle cases which are implicitly
36962         defined.
36963         * tree-ssa.c (ssa_defined_default_def_p): New function.
36964         (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
36965         which are implicitly defined.
36966         * tree-ssa.h (ssa_defined_default_def_p): Declare.
36967
36968 2017-02-17  Richard Biener  <rguenther@suse.de>
36969
36970         PR middle-end/79576
36971         * params.def (max-ssa-name-query-depth): Limit to 10.
36972
36973 2017-02-17  Richard Biener  <rguenther@suse.de>
36974
36975         PR tree-optimization/79552
36976         * tree-ssa-structalias.c (visit_loadstore): Properly verify
36977         default defs.
36978
36979 2017-02-17  Richard Biener  <rguenther@suse.de>
36980
36981         PR bootstrap/79567
36982         * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
36983
36984 2017-02-17  Marek Polacek  <polacek@redhat.com>
36985
36986         PR middle-end/79536
36987         * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
36988         (fold_negate_expr): New wrapper.
36989
36990 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
36991
36992         * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
36993         Correct terminology and de-emphasize pre-standard behavior.
36994
36995 2017-02-16  Alan Modra  <amodra@gmail.com>
36996
36997         PR rtl-optimization/79286
36998         * ira.c (def_dominates_uses): New function.
36999         (update_equiv_regs): Don't create an equivalence for insns that
37000         may trap where the register def does not dominate the use.
37001
37002 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
37003
37004         PR rtl-optimization/78127
37005         * lra.c (lra): Call lra_eliminate before finish the loop after
37006         lra_constraint.
37007
37008 2017-02-16  Richard Biener  <rguenther@suse.de>
37009
37010         * graphite.h: Do not include isl/isl_val_gmp.h, instead include
37011         isl/isl_val.h.
37012         * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
37013         (gcc_expression_from_isl_expr_int): Use generic isl_val interface.
37014         * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
37015         (isl_val_int_from_wi): New function.
37016         (extract_affine_gmp): Rename to ...
37017         (extract_affine_wi): ... this, take a widest_int.
37018         (extract_affine_int): Just wrap extract_affine_wi.
37019         (add_param_constraints): Use isl_val_int_from_wi.
37020         (add_loop_constraints): Likewise, and extract_affine_wi.
37021
37022 2017-02-15  Jeff Law  <law@redhat.com>
37023
37024         PR middle-end/79521
37025         * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
37026         ira_init_register_move_cost_if_necessary.
37027
37028 2017-02-15  Martin Sebor  <msebor@redhat.com>
37029
37030         PR middle-end/32003
37031         * doc/invoke.texi (-fdump-final-insns): Replace option accidentally
37032         removed in a prior commit.
37033
37034 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
37035
37036         PR tree-optimization/79347
37037         * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
37038         counters during peeling.
37039
37040 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
37041
37042         * Makefile.in (site.exp): Remove "set ISLVER".
37043
37044 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
37045
37046         PR target/79487
37047         * real.c (real_from_integer): Call real_convert even for decimal.
37048
37049 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37050
37051         PR target/79421
37052         * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
37053
37054 2017-02-14  Andrew Pinski  <apinski@cavium.com>
37055
37056         * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
37057         cores and change the partno/implementer to be correct.
37058         (thunderx2t99p1): New core which replaces thunderx2t99 and still has
37059         the 'B" as the implementer.
37060         * config/aarch64/aarch64-tune.md: Regenerate.
37061
37062 2017-02-14  Carl Love  <cel@us.ibm.com>
37063
37064         * config/rs6000/rs6000.c: Add case statement entry to make the
37065         xvcvuxdsp built-in argument unsigned.
37066         * config/rs6000/vsx.md: Fix the source and return operand types so they
37067         match the instruction definitions from the ISA document.  Fix typo
37068         in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
37069         statement.
37070
37071 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
37072
37073         PR target/79282
37074         * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
37075         member early_clobber_alts.
37076         * lra-lives.c (reg_early_clobber_p): New.
37077         (process_bb_lives): Use it.
37078         * lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
37079         (debug_operand_data): Initialize early_clobber_alts.
37080         (setup_operand_alternative): Set up early_clobber_alts.
37081         (collect_non_operand_hard_regs): Ditto.  Pass early clobber
37082         alternatives to new_insn_reg.
37083         (add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
37084         it.
37085         (lra_update_insn_regno_info): Pass the new arg.
37086
37087 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37088
37089         PR middle-end/79505
37090         * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
37091         (new_oacc_loop_raw): Don't clear already cleared fields.
37092
37093         PR target/79481
37094         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
37095         _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
37096         _mm512_prefetch_i64gather_ps): New inline functions and macros.
37097
37098 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
37099
37100         PR target/79495
37101         * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
37102
37103 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
37104
37105         PR target/79498
37106         * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
37107         the extra instruction to the right place to store 128-bit constant
37108         when needed.
37109
37110 2017-02-14  Martin Sebor  <msebor@redhat.com>
37111
37112         PR middle-end/79448
37113         * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
37114           warning for strings of unknown length.
37115
37116 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
37117
37118         * config.gcc (supported_defaults) [powerpc*-*-*]: Update.
37119
37120 2017-02-14  Jeff Law  <law@redhat.com>
37121
37122         PR target/79404
37123         * ira-costs.c (scan_one_insn): Initialize register move costs
37124         for pseudos seen in USE/CLOBBER insns.
37125
37126         PR tree-optimization/79095
37127         * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
37128         if the numerator has the range ~[0,0] make the resultant range ~[0,0].
37129         (extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
37130         if the operands are known to be not equal, then the resulting range
37131         is ~[0,0].
37132         (intersect_ranges): If the new range is ~[0,0] and the old range is
37133         wide, then prefer ~[0,0].
37134         * tree-vrp.c (overflow_comparison_p_1): New function.
37135         (overflow_comparison_p): New function.
37136         * tree-vrp.c (register_edge_assert_for_2): Register additional asserts
37137         if NAME is used in an overflow test.
37138         (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
37139         overflow check that can be expressed as an equality test, then adjust
37140         ops to be that equality test.
37141
37142 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37143
37144         * config/s390/s390-builtin-types.def: Remove flags argument.
37145         * config/s390/s390.c (s390_init_builtins): Likewise.
37146
37147 2017-02-14  Martin Liska  <mliska@suse.cz>
37148
37149         * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
37150         vector.  Fix trailing white spaces.
37151
37152 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
37153
37154         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
37155         HFmode.
37156
37157 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37158
37159         PR rtl-optimization/68664
37160         * config/arm/arm.c (arm_sched_can_speculate_insn):
37161         New function.  Declare prototype.
37162         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37163
37164 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37165
37166         PR rtl-optimization/68664
37167         * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
37168         New function.
37169         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37170
37171 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
37172
37173         * config/i386/i386.c (znver1_cost): Fix the alignment for function and
37174         max skip bytes for function, loop and jump.
37175
37176 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37177
37178         * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
37179         ABS_EXPR for gimple dump.
37180
37181 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37182
37183         PR target/79462
37184         * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
37185
37186         PR tree-optimization/79408
37187         * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
37188         case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
37189         (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
37190         also if rhs1 is INTEGER_CST.
37191
37192 2017-02-14  Richard Biener  <rguenther@suse.de>
37193
37194         PR middle-end/79432
37195         * tree-into-ssa.c (insert_phi_nodes): When the function can
37196         have abnormal edges rewrite SSA names with broken use-def
37197         dominance out of SSA and register them for PHI insertion.
37198
37199 2017-02-13  Martin Sebor  <msebor@redhat.com>
37200
37201         PR middle-end/79496
37202         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
37203         clearing info.nowrite flag when snprintf size argument is a range.
37204
37205 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37206
37207         * cprop.c (cprop_jump): Add missing space in string literal.
37208         * tree-ssa-structalias.c (rewrite_constraints): Likewise.
37209         (get_constraint_for_component_ref): Likewise.
37210         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
37211         * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
37212         * lra-constraints.c (process_alt_operands): Likewise.
37213         * ipa-inline.c (inline_small_functions): Likewise.
37214         * tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
37215         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
37216         * trans-mem.c (diagnose_tm_1_op): Likewise.
37217         * omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
37218         (grid_parallel_clauses_gridifiable): Likewise.
37219
37220         * config/nvptx/mkoffload.c (process): Add space in between
37221         , and %d.
37222
37223         * config/i386/i386.h (REG_CLASS_NAMES): Add , in between
37224         "MOD4_SSE_REGS" and "ALL_REGS".
37225
37226         * spellcheck.c (test_data): Add , in between "foo" and "food".
37227
37228 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37229
37230         PR target/79449
37231         * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
37232         boundary crossing check and subsequent code generation agree.
37233
37234 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37235
37236         * config/aarch64/aarch64.c (has_memory_op): Delete.
37237         (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
37238         has_memory_op.
37239
37240 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37241
37242         PR rtl-optimization/79388
37243         PR rtl-optimization/79450
37244         * combine.c (distribute_notes): When removing TEM_INSN for which
37245         corresponding dest has last value recorded, invalidate that last
37246         value.
37247
37248 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37249
37250         * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
37251         of explicit '@'.  Add missing assembly comment marker on branch costs
37252         printout.
37253
37254 2017-02-13  Nathan Sidwell  <nathan@acm.org>
37255
37256         * gengtype-lex.l (<in_struct>): Add '/'.
37257
37258 2017-02-13  Martin Liska  <mliska@suse.cz>
37259
37260         PR c/79471
37261         * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
37262
37263 2017-02-13  Richard Biener  <rguenther@suse.de>
37264
37265         * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
37266         Remove.
37267         * configure: Re-generate.
37268         * config.in: Likewise.
37269         * graphite-dependences.c: Simplify as if
37270         HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
37271         * graphite-isl-ast-to-gimple.c: Likewise.
37272         * graphite-optimize-isl.c: Likewise.
37273         * graphite-poly.c: Likewise.
37274         * graphite-sese-to-poly.c: Likewise.
37275         * graphite.h: Likewise.
37276         * toplev.c: Include isl/version.h and use isl_version () for
37277         printing the ISL version.
37278         * doc/install.texi: Update ISL requirement.
37279
37280 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37281
37282         * doc/standards.texi (Standards): Update reference to
37283         Objective-C 2.0.
37284
37285 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37286
37287         * doc/extend.texi (Named Address Spaces): sourceware.org now
37288         defaults to https.
37289         * doc/install.texi (Binaries): Ditto.
37290         (Specific): Ditto.
37291
37292 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37293
37294         * doc/cpp.texi: Replace "stringify"/"stringification" with C
37295         standard terminology "stringize"/"stringizing" throughout.
37296         * doc/cppinternals.texi: Likewise.
37297
37298 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37299
37300         * doc/extend.texi: Fix some spelling mistakes and typos.
37301         * doc/invoke.texi: Likewise.
37302
37303 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37304
37305         PR ipa/79224
37306         * params.def (inline-min-speedup) Change from 10 to 8.
37307
37308 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37309
37310         * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
37311         4.5.
37312
37313 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37314
37315         PR ipa/79224
37316         * ipa-inline-analysis.c (get_minimal_bb): New function.
37317         (record_modified): Use it.
37318         (remap_edge_change_prob): Handle also ancestor functions.
37319
37320 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
37321
37322         * doc/contrib.texi (Contributors): Remove broken link into
37323         the Mauve CVS repository.
37324
37325 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37326
37327         PR middle-end/79454
37328         * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
37329         result computation whenever lhs doesn't have vector mode, not
37330         just when it has BLKmode.
37331
37332 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37333
37334         * doc/makefile.texi (profiledbootstrap): Refer to the
37335         installation instructions only in textual form.
37336
37337 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37338
37339         PR target/79295
37340         * config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
37341
37342 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37343
37344         * doc/install.texi (Specific): Use https for blackfin.uclinux.org.
37345         (Specific): Update mingw-w64 reference.
37346         (Binaries): Ditto.
37347         (Specific): Remove broken link to Renesas RX processor.
37348
37349 2017-02-10  Richard Biener  <rguenther@suse.de>
37350
37351         * toplev.c (process_options): Do not mention obsolete graphite
37352         options when printing sorry message about missing graphite support.
37353         Mention -floop-nest-optimize.
37354
37355 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
37356
37357         * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
37358         (vtst_p16): Likewise.
37359         (vtstq_p8): Likewise.
37360         (vtstq_p16): Likewise.
37361         (vtst_p64): New.
37362         (vtstq_p64): Likewise.
37363         * config/arm/arm_neon.h (vgetq_lane_p64): New.
37364         (vset_lane_p64): New.
37365         (vsetq_lane_p64): New.
37366
37367 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
37368
37369         PR tree-optimization/79411
37370         * tree-ssa-reassoc.c (is_reassociable_op): Return false if
37371         stmt operands are SSA_NAMEs used in abnormal phis.
37372         (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
37373         phis.
37374
37375 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37376
37377         PR ipa/70795
37378         * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
37379         flag if needed.
37380
37381 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37382
37383         * tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
37384
37385 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
37386
37387         * omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
37388         to avoid warning.
37389
37390         PR c/79413
37391         * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
37392         not arbitrary TREE_CONSTANT.
37393
37394         PR c/79431
37395         * gimplify.c (gimplify_adjust_omp_clauses): Ignore
37396         "omp declare target link" attribute unless is_global_var.
37397         * omp-offload.c (find_link_var_op): Likewise.
37398
37399 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
37400             Chung-Lin Tang  <cltang@codesourcery.com>
37401
37402         * gimplify.c (gimplify_scan_omp_clauses): No special handling for
37403         OMP_CLAUSE_TILE.
37404         (gimplify_adjust_omp_clauses): Don't delete TILE.
37405         (gimplify_omp_for): Deal with TILE.
37406         * internal-fn.c (expand_GOACC_TILE): New function.
37407         * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
37408         (GOACC_TILE): New.
37409         * omp-expand.c (struct oacc_collapse): Add tile and outer fields.
37410         (expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
37411         element fields.
37412         (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
37413         avoid DIV for outermost collapse var.
37414         (expand_oacc_for): Insert tile element loop as needed.  Adjust.
37415         Remove out of date comments, fix whitespace.
37416         * omp-general.c (omp_extract_for_data): Deal with tiling.
37417         * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
37418         adjust OLF_DIM_BASE value.
37419         (struct omp_for_data): Add tiling field.
37420         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
37421         (lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
37422         for auto loops.  Remove default auto determining, moved to
37423         oacc_loop_fixed_partitions.
37424         * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
37425         stmts, add e_mask field.
37426         (oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
37427         (oacc_thread_numbers): Use oacc_dim_call.
37428         (oacc_xform_tile): New.
37429         (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
37430         (finish_oacc_loop): Adjust for ifns vector.
37431         (oacc_loop_discover_walk): Append loop abstraction sites to list,
37432         add case for GOACC_TILE fns.
37433         (oacc_loop_xform_loop): Delete.
37434         (oacc_loop_process): Iterate over call list directly, and add
37435         handling for GOACC_TILE fns.
37436         (oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
37437         dump partitioning.
37438         (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
37439         vector partitioning to outer loops.  Assign 2 partitions to loops
37440         when available. Add TILE handling.
37441         (oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
37442         (execite_oacc_device_lower): Process GOACC_TILE fns,
37443         ignore unknown specs.
37444         * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
37445         * tree.c (omp_clause_num_ops): Adjust TILE ops.
37446         * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
37447
37448 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
37449
37450         * configure.ac (ACX_BUGURL): Update.
37451         * configure: Regenerate.
37452
37453 2017-02-09  Richard Biener  <rguenther@suse.de>
37454
37455         PR tree-optimization/69823
37456         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
37457         Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
37458
37459 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37460
37461         * config/arc/arc-c.def: Add __NPS400__ definition.
37462         * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
37463         (TARGET_NPS400): Define.
37464
37465 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37466
37467         * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
37468         file.
37469         (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
37470         pointer, arch_info.
37471         (arc_cpu_types): Fill the arch_info field with a pointer into the
37472         arc_arch_types table.
37473         (arc_selected_cpu): Declare.
37474         * config/arc/arc.c (arc_selected_cpu): Make global.
37475         (arc_selected_arch): Delete.
37476         (arc_base_cpu): Delete.
37477         (arc_override_options): Remove references to deleted variables,
37478         update access to arch information.
37479         (ARC_OPT): Update access to arch information.
37480         (ARC_OPTX): Likewise.
37481         * config/arc/arc.h (arc_base_cpu): Remove declaration.
37482         (TARGET_ARC600): Update access to arch information.
37483         (TARGET_ARC601): Likewise.
37484         (TARGET_ARC700): Likewise.
37485         (TARGET_EM): Likewise.
37486         (TARGET_HS): Likewise.
37487         * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
37488         information.
37489
37490 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
37491
37492         PR target/78604
37493         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
37494         condition/operands for integer GE/LE/GEU/LEU operations.
37495
37496 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
37497
37498         PR translation/79397
37499         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
37500         of AltiVec.
37501
37502 2017-02-08  Martin Jambor  <mjambor@suse.cz>
37503
37504         PR ipa/79375
37505         * ipa-prop.c (ipa_alloc_node_params): Make static, return bool
37506         whether allocation happened.
37507         (ipa_initialize_node_params): Do not call ipa_alloc_node_params if
37508         nothing was allocated.
37509
37510 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
37511
37512         PR tree-optimization/79408
37513         * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
37514         constant, but SSA_NAME with a known integer range, use the minimum
37515         of that range instead of op1 to determine if modulo can be replaced
37516         with its first operand.
37517
37518 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37519
37520         * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
37521
37522 2017-02-08  Richard Biener  <rguenther@suse.de>
37523
37524         PR tree-optimization/71824
37525         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
37526         Check all loops contained in the merged region.
37527
37528 2017-02-07  Andrew Pinski  <apinski@cavium.com>
37529
37530         * config/aarch64/aarch64.md (popcount<mode>2): New pattern.
37531
37532 2017-02-07  Andrew Pinski  <apinski@cavium.com>
37533
37534         * config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
37535         (thunderxt88): Likewise.
37536         (thunderxt81): Disable LSE and change v8.1 to v8.
37537         (thunderxt83): Likewise.
37538
37539 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
37540             Richard Biener  <rguenther@suse.de>
37541
37542         PR middle-end/79399
37543         * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
37544         type from int to size_t.
37545         * ira-costs.c (struct_costs_size): Change type from int to size_t.
37546
37547 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
37548
37549         PR rtl-optimization/79386
37550         * cprop.c (bypass_conditional_jumps): Initialize
37551         bypass_last_basic_block already before splitting bbs after
37552         unconditional traps...
37553         (bypass_conditional_jumps): ... rather than here.
37554
37555         PR target/79299
37556         * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
37557         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
37558         *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
37559         fix -masm=intel patterns.
37560
37561 2017-02-07  Richard Biener  <rguenther@suse.de>
37562
37563         PR tree-optimization/79256
37564         PR middle-end/79278
37565         * builtins.c (get_object_alignment_2): Use min_align_of_type
37566         to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
37567         and ADJUST_FIELD_ALIGN.
37568
37569         * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
37570         type parameter.
37571         * doc/tm.texi: Regenerate.
37572         * stor-layout.c (layout_decl): Adjust.
37573         (update_alignment_for_field): Likewise.
37574         (place_field): Likewise.
37575         (min_align_of_type): Likewise.
37576         * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
37577         * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
37578         * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
37579         * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
37580         * config/frv/frv.c (frv_adjust_field_align): Likewise.
37581         * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
37582         * config/i386/i386.c (x86_field_alignment): Likewise.
37583         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
37584         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
37585         * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
37586         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
37587         * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
37588         * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
37589          Likewise.
37590
37591         Revert
37592         2017-01-30  Richard Biener  <rguenther@suse.de>
37593
37594         PR tree-optimization/79256
37595         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
37596         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
37597         alignment on TYPE.
37598
37599 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
37600
37601         * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
37602         argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
37603         builtins to SImode and emit a zero-extend, if necessary.
37604
37605 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37606
37607         * docs/invoke.texi (RISC-V Options): Alphabetize.
37608
37609 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37610
37611         * doc/invoke.texi (RISC-V Options): Use two spaces to separate
37612         options.
37613
37614 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
37615
37616         * config/riscv/riscv.c: New file.
37617         * common/config/riscv/riscv-common.c: Likewise.
37618         * config.gcc: Likewise.
37619         * config/riscv/constraints.md: Likewise.
37620         * config/riscv/elf.h: Likewise.
37621         * config/riscv/generic.md: Likewise.
37622         * config/riscv/linux.h: Likewise.
37623         * config/riscv/multilib-generator: Likewise.
37624         * config/riscv/peephole.md: Likewise.
37625         * config/riscv/pic.md: Likewise.
37626         * config/riscv/predicates.md: Likewise.
37627         * config/riscv/riscv-builtins.c: Likewise.
37628         * config/riscv/riscv-c.c: Likewise.
37629         * config/riscv/riscv-ftypes.def: Likewise.
37630         * config/riscv/riscv-modes.def: Likewise.
37631         * config/riscv/riscv-opts.h: Likewise.
37632         * config/riscv/riscv-protos.h: Likewise.
37633         * config/riscv/riscv.h: Likewise.
37634         * config/riscv/riscv.md: Likewise.
37635         * config/riscv/riscv.opt: Likewise.
37636         * config/riscv/sync.md: Likewise.
37637         * config/riscv/t-elf-multilib: Likewise.
37638         * config/riscv/t-linux: Likewise.
37639         * config/riscv/t-linux-multilib: Likewise.
37640         * config/riscv/t-riscv: Likewise.
37641         * configure.ac: Likewise.
37642         * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
37643         Waterman as RISC-V maintainers.
37644         * doc/install.texi: Add RISC-V entries.
37645         * doc/invoke.texi: Add RISC-V options section.
37646         * doc/md.texi: Add RISC-V constraints section.
37647         * configure: Regenerated.
37648
37649 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
37650
37651         PR target/66144
37652         * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
37653         false values to be constant vectors with all 0 or all 1 bits set.
37654         (vcondu<mode><mode>): Likewise.
37655         * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
37656         predicate.
37657         (fpmask_comparison_operator): Update comment.
37658         (vecint_comparison_operator): New predicate.
37659         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
37660         vector conditionals when the true and false values are constant
37661         vectors with all 0 bits or all 1 bits set.
37662
37663 2017-02-06  Martin Sebor  <msebor@redhat.com>
37664
37665         PR  tree-optimization/79376
37666         * gimple-fold.c (get_range_strlen): Set the minimum length to zero.
37667
37668 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
37669
37670         * config/i386/sse.md (vector modes -> vec_extract* splitter): Use
37671         explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
37672         to simplify split condition.
37673
37674 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37675
37676         * omp-expand.c (oxpand_omp_atomic_fetch_op,
37677         expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
37678         false.
37679
37680 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
37681
37682         PR rtl-optimization/68664
37683         * target.def (can_speculate_insn): New hook.
37684         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
37685         * doc/tm.texi: Regenerate.
37686         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
37687         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
37688         (rs6000_sched_can_speculate_insn): New function.
37689
37690 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37691
37692         PR tree-optimization/79284
37693         * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
37694         * tree-vect-stmts.c (vect_get_vec_def_for_operand,
37695         vectorizable_mask_load_store, vectorizable_operation,
37696         vect_is_simple_cond, get_same_sized_vectype): Use it instead
37697         of comparing TREE_CODE of a type against BOOLEAN_TYPE.
37698         * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
37699         vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
37700         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
37701         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
37702         Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
37703         is_gimple_assign (stmt).  Replace another such test with
37704         is_gimple_assign (stmt).
37705
37706 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37707
37708         PR target/78883
37709         * config/avr/avr.c (rtl-iter.h): Include it.
37710         (TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
37711         (avr_legitimate_combined_insn): ...and implementation.
37712
37713 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37714
37715         * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
37716         * config/s390/s390.c (s390_const_operand_ok)
37717         (s390_canonicalize_comparison, s390_extract_part)
37718         (s390_single_part, s390_contiguous_bitmask_nowrap_p)
37719         (s390_contiguous_bitmask_p, s390_rtx_costs)
37720         (legitimize_pic_address): Likewise.
37721         * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
37722         * config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
37723         ("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
37724         ("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
37725         * config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
37726
37727 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37728
37729         * config/avr/avr.md (*addhi3_zero_extend): Add alternative where
37730         REGNO($0) == REGNO($1).
37731
37732 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37733
37734         * config/s390/linux.h(SIZE_TYPE): Add comment.
37735
37736 2017-02-06  Julian Brown  <julian@codesourcery.com>
37737             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
37738             Virendra Pathak  <virendra.pathak@broadcom.com>
37739
37740         * config/aarch64/aarch64-cores.def: Change the scheduler
37741         to Thunderx2t99.
37742         * config/aarch64/aarch64.md: Include thunderx2t99.md.
37743         * config/aarch64/thunderx2t99.md: New file.
37744
37745 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37746
37747         * doc/standards.texi (Go Language): Update link to language
37748         standard.
37749
37750 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37751
37752         * tree-eh.c (lower_resx): Sanitize profile.
37753         (cleanup_empty_eh_move_lp): Likewise.
37754
37755 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37756
37757         PR tree-ssa/79347
37758         * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
37759         ELSE_PROB.
37760         * cfgloopmanip.h (loop_version): Update prototype.
37761         * modulo-sched.c (sms_schedule): Update call of loop_version.
37762         * tree-if-conv.c(version_loop_for_if_conversion): Likewise.
37763         * tree-parloops.c (gen_parallel_loop): Likewise.
37764         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
37765         * tree-ssa-loop-split.c (split_loop): Likewise.
37766         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
37767         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
37768
37769 2017-02-05  Martin Liska  <mliska@suse.cz>
37770
37771         PR bootstrap/78985
37772         * config/s390/s390.c (s390_gimplify_va_arg): Initialize local
37773         variable to NULL.
37774         (print_operand_address): Initialize a struct to zero.
37775
37776 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37777
37778         * doc/contrib.texi (Contributors): Refer to Hans Boehm's
37779         garbage collector only in textual form.
37780
37781 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37782
37783         * doc/extend.texi (x86 specific memory model extensions for
37784         transactional memory): Simplify a phrase.
37785
37786 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
37787
37788         PR target/79353
37789         * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
37790         'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
37791         (atomic_storedi_1): Likewise.
37792
37793 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
37794
37795         PR tree-optimization/79338
37796         * tree-parloops.c (gather_scalar_reductions): Don't call
37797         vect_analyze_loop_form for loop->inner before destroying loop's
37798         loop_vinfo.
37799
37800 2017-02-03  Martin Sebor  <msebor@redhat.com>
37801
37802         PR tree-optimization/79327
37803         * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
37804         when precision has resulted in leading zeros.
37805         (format_integer): Adjust the likely counter to assume an unknown
37806         argument that may be zero is non-zero.
37807
37808 2017-02-03  Jason Merrill  <jason@redhat.com>
37809
37810         PR c++/78689
37811         * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
37812         avoid copying non-taken branch.
37813
37814 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37815
37816         PR tree-optimization/79340
37817         * tree-vect-loop.c (vectorizable_reduction): Release
37818         vec_defs elements after safe_splicing them into other vectors.
37819         Formatting fixes.
37820
37821         PR tree-optimization/79327
37822         * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
37823         true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
37824         dirtype.
37825         (format_integer): Use wide_int_to_tree instead of build_int_cst
37826         + to_?hwi.  If argmin is NULL, just set argmin and argmax to
37827         TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
37828         of shortest and longest sequence.
37829
37830 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
37831
37832         * config/i386/i386.c (dimode_scalar_chain::convert_reg):
37833         Use pextrd for TARGET_SSE4_1 when creating scalar copy.
37834
37835 2017-02-03  Walter Lee  <walt@tilera.com>
37836
37837         PR target/78862
37838         * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
37839         after initial stackframe link reg save.
37840         * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
37841
37842 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37843
37844         PR target/79354
37845         * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
37846         wu for stxssp alternative.
37847
37848 2017-02-03  Martin Sebor  <msebor@redhat.com>
37849
37850         PR tree-optimization/79352
37851         * gimple-fold.c (get_range_strlen): Add argument.
37852         (get_range_strlen): Change return type to bool.
37853         (get_maxval_strlen): Pass in a dummy argument.
37854         * gimple-fold.h (get_range_strlen): Change return type to bool.
37855         * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
37856         * tree.h (array_at_struct_end_p): Add argument.
37857         * tree.c (array_at_struct_end_p): Handle it.
37858
37859 2017-02-03  Martin Liska  <mliska@suse.cz>
37860
37861         PR lto/66295
37862         * multiple_target.c (create_dispatcher_calls): Redirect edge
37863         from a caller of a dispatcher.
37864         (expand_target_clones): Make the clones local.
37865         (ipa_target_clone): Do both target clones and resolvers.
37866         (ipa_dispatcher_calls): Remove the pass.
37867         (pass_dispatcher_calls::gate): Likewise.
37868         (make_pass_dispatcher_calls): Likewise.
37869         * passes.def (pass_target_clone): Put as very first IPA early
37870         pass.
37871
37872 2017-02-03  Martin Liska  <mliska@suse.cz>
37873
37874         * symtab.c (symtab_node::binds_to_current_def_p): Bail out
37875         in case of a function with ifunc attribute.
37876
37877 2017-02-03  Martin Liska  <mliska@suse.cz>
37878
37879         * cgraph.c (cgraph_node::dump): Dump function version info.
37880         * symtab.c (symtab_node::dump_base): Add missing new line.
37881
37882 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
37883
37884         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
37885         (ifcombine_ifandif): Use it.
37886
37887 2017-02-03  Martin Liska  <mliska@suse.cz>
37888
37889         * doc/invoke.texi: Document default value for
37890         use-after-scope-direct-emission-threshold.
37891
37892 2017-02-03  Martin Liska  <mliska@suse.cz>
37893
37894         PR tree-optimization/79339
37895         * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
37896         (format_floating): Likewise.
37897
37898 2017-02-03  Martin Liska  <mliska@suse.cz>
37899
37900         PR ipa/79337
37901         * ipa-prop.c (ipa_node_params_t::insert): Remove current
37902         implementation.
37903         (ipa_node_params_t::remove): Likewise.
37904         * ipa-prop.h (ipa_node_params::ipa_node_params): Make default
37905         initialization from removed ipa_node_params_t::insert.
37906         (ipa_node_params::~ipa_node_params): Move from removed
37907         ipa_node_params_t::release.
37908         * symbol-summary.h (symbol_summary::m_released): New member.
37909         Do not release a summary twice.  Do not allow to call finalizer
37910         for types of a summary that live in GGC memory.
37911
37912 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
37913
37914         * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
37915         cmp_branch fusion.
37916
37917 2017-02-02  Martin Sebor  <msebor@redhat.com>
37918
37919         PR middle-end/79275
37920         * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
37921         (format_string): Tighten up the range of output for non-constant
37922         strings and correct the expected range for wide non-constant strings.
37923
37924 2017-02-02  Martin Sebor  <msebor@redhat.com>
37925
37926         * doc/invoke.texi (-maccumulate-args): Fix bad grammar.
37927
37928         PR middle-end/32003
37929         * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
37930         index.
37931         (-fdump-tree-@var): Add to index and document how to come up
37932         with pass-specific option and dump file names.
37933         (-fdump-passes): Clarify where to look for output.
37934
37935 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
37936
37937         PR middle-end/77445
37938         * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
37939         statistics of the analyzed path; allow threading for speed when
37940         any of BBs along the path are optimized for speed.
37941
37942 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
37943
37944         PR middle-end/78468
37945         * emit-rtl.c (init_emit): Add ??? comment for problematic alignment
37946         settings of the virtual registers.
37947
37948         Revert again
37949         2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37950
37951         * explow.c (get_dynamic_stack_size): Take known alignment of stack
37952         pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
37953         needed.
37954
37955 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37956
37957         * config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
37958         ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
37959
37960 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37961
37962         * config/s390/s390.md: Add missing comments with the expanded
37963         mnemonics.
37964         * config/s390/vector.md: Likewise.
37965         * config/s390/vx-builtins.md: Likewise.
37966
37967 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
37968
37969         PR target/79197
37970         * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
37971         (fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
37972         conditions on a single line.
37973
37974 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37975
37976         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
37977         __S390_VX__ to __VX__.
37978
37979 2017-02-01  Andrew Pinski  <apinski@cavium.com>
37980
37981         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
37982         stmt_info to record_stmt_cost.
37983         (vect_get_known_peeling_cost): Pass stmt_info if known to
37984         record_stmt_cost.
37985         * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
37986         cpu_vector_cost field into
37987         scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
37988         field into vec_int_stmt_cost and vec_fp_stmt_cost.
37989         * config/aarch64/aarch64.c (generic_vector_cost): Update for the
37990         splitting of scalar_stmt_cost and vec_stmt_cost.
37991         (thunderx_vector_cost): Likewise.
37992         (cortexa57_vector_cost): LIkewise.
37993         (exynosm1_vector_cost): Likewise.
37994         (xgene1_vector_cost): Likewise.
37995         (thunderx2t99_vector_cost): Improve after the splitting of the two
37996         fields.
37997         (aarch64_builtin_vectorization_cost): Update for the splitting of
37998         scalar_stmt_cost and vec_stmt_cost.
37999
38000 2017-02-01  Torvald Riegel  <triegel@redhat.com>
38001             Richard Henderson  <rth@redhat.com>
38002
38003         * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
38004         conditional on existance of a fast atomic load.
38005         * optabs-query.c (can_atomic_load_p): New function.
38006         * optabs-query.h (can_atomic_load_p): Declare it.
38007         * optabs.c (expand_atomic_exchange): Always delegate to libatomic if
38008         no fast atomic load is available for the particular size of access.
38009         (expand_atomic_compare_and_swap): Likewise.
38010         (expand_atomic_load): Likewise.
38011         (expand_atomic_store): Likewise.
38012         (expand_atomic_fetch_op): Likewise.
38013         * testsuite/lib/target-supports.exp
38014         (check_effective_target_sync_int_128): Remove x86 because it provides
38015         no fast atomic load.
38016         (check_effective_target_sync_int_128_runtime): Likewise.
38017
38018 2017-02-01  Richard Biener  <rguenther@suse.de>
38019
38020         * graphite.c: Include tree-vectorizer.h for find_loop_location.
38021         (graphite_transform_loops): Provide opt-info for optimized nests.
38022         * tree-parloop.c (parallelize_loops): Provide opt-info for
38023         parallelized loops.
38024
38025 2017-02-01  Richard Biener  <rguenther@suse.de>
38026
38027         PR middle-end/79315
38028         * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
38029         was not set before.
38030
38031 2017-02-01  Richard Biener  <rguenther@suse.de>
38032
38033         PR tree-optimization/71824
38034         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38035         Verify the loops are valid in the merged SESE region.
38036         (scop_detection::can_represent_loop_1): Check analyzing the
38037         evolution of the number of iterations in the region succeeds.
38038
38039 2017-01-31  Ian Lance Taylor  <iant@golang.org>
38040
38041         * config/i386/i386.c (ix86_expand_split_stack_prologue): Add
38042         REG_ARGS_SIZE note to 32-bit push insns and call insn.
38043
38044 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
38045
38046         PR preprocessor/79210
38047         * input.c (get_substring_ranges_for_loc): Replace line_width
38048         assertion with error-handling.
38049
38050 2017-01-31  Richard Biener  <rguenther@suse.de>
38051
38052         PR tree-optimization/77318
38053         * graphite-sese-to-poly.c (extract_affine): Fix assert.
38054         (create_pw_aff_from_tree): Take loop parameter.
38055         (add_condition_to_pbb): Pass loop of the condition to
38056         create_pw_aff_from_tree.
38057
38058 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38059
38060         * config/s390/s390.c (s390_asan_shadow_offset): New function.
38061         (TARGET_ASAN_SHADOW_OFFSET): Redefine.
38062
38063 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
38064
38065         PR target/78597
38066         PR target/79038
38067         * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
38068         no longer used.
38069         (convert_int_to_float128): Likewise.
38070         * config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
38071         (convert_int_to_float128): Likewise.
38072         * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
38073         (UNSPEC_IEEE128_CONVERT): Likewise.
38074         (floatsi<mode>2, FLOAT128 iterator): Bypass calling
38075         rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
38076         Use local variables for IBM extended format.
38077         (fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
38078         (fix_trunc<mode>si2_fprs): Likewise.
38079         (fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
38080         (floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
38081         (fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
38082         to know that we can now have integers of all sizes in vector
38083         registers.
38084         (fix<uns>_<mode>di2_hw): Likewise.
38085         (float<uns>_<mode>si2_hw): Likewise.
38086         (fix_<mode>si2_hw): Likewise.
38087         (fixuns_<mode>si2_hw): Likewise.
38088         (float<uns>_<mode>di2_hw): Likewise.
38089         (float_<mode>di2_hw): Likewise.
38090         (float_<mode>si2_hw): Likewise.
38091         (floatuns_<mode>di2_hw): Likewise.
38092         (floatuns_<mode>si2_hw): Likewise.
38093         (xscvqp<su>wz_<mode>): Delete, no longer used.
38094         (xscvqp<su>dz_<mode>): Likewise.
38095         (xscv<su>dqp_<mode>): Likewise.
38096         (ieee128_mfvsrd_64bit): Likewise.
38097         (ieee128_mfvsrd_32bit): Likewise.
38098         (ieee128_mfvsrwz): Likewise.
38099         (ieee128_mtvsrw): Likewise.
38100         (ieee128_mtvsrd_64bit): Likewise.
38101         (ieee128_mtvsrd_32bit): Likewise.
38102
38103 2017-01-31  Martin Liska  <mliska@suse.cz>
38104
38105         PR ipa/79285
38106         * ipa-prop.c (ipa_free_all_node_params): Call release method
38107         instead of ~sumbol_summary to not to trigger double times
38108         dtor of hash_map.
38109
38110 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
38111
38112         PR tree-optimization/71691
38113         * bitmap.h (class auto_bitmap): New.
38114         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
38115         is_maybe_undefined instead of ssa_undefined_value_p.
38116
38117 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38118
38119         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38120         __S390_ARCH_LEVEL__ to __ARCH__.
38121
38122 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38123
38124         PR tree-optimization/79267
38125         * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
38126         if should_remove_lhs_p is true.
38127
38128 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
38129
38130         PR debug/63238
38131         * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
38132         (add_alignment_attribute): New.
38133         (base_type_die): Add alignment attribute.
38134         (subrange_type_die): Likewise.
38135         (modified_type_die): Likewise.
38136         (gen_array_type_die): Likewise.
38137         (gen_descr_array_type_die: Likewise.
38138         (gen_enumeration_type_die): Likewise.
38139         (gen_subprogram_die): Likewise.
38140         (gen_variable_die): Likewise.
38141         (gen_field_die): Likewise.
38142         (gen_ptr_to_mbr_type_die): Likewise.
38143         (gen_struct_or_union_type_die): Likewise.
38144         (gen_subroutine_type_die): Likewise.
38145         (gen_typedef_die): Likewise.
38146         (base_type_cmp): Compare alignment attribute.
38147
38148 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
38149
38150         PR target/79170
38151         * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
38152         (setb_unsigned) New pattern for setb with CCUNS.
38153         * config/rs6000/rs6000.c (expand_block_compare): Use a different
38154         subfc./subfe sequence to avoid overflow problems.  Generate a
38155         shorter sequence with cmpld/setb for power9.
38156         * config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
38157         for generating subfc. instruction.
38158         (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
38159         now uses this instruction.
38160
38161 2017-01-30  Ian Lance Taylor  <iant@google.com>
38162
38163         PR debug/79289
38164         * dwarf2out.c (gen_type_die_with_usage): When picking a variant
38165         for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
38166
38167 2017-01-30  Martin Sebor  <msebor@redhat.com>
38168
38169         * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
38170         Move constant to the right of a relational operator.
38171         (get_mpfr_format_length, format_character, format_string): Ditto.
38172         (should_warn_p, maybe_warn): Same.
38173
38174         * doc/invoke.texi (-Wformat-truncation=1): Fix typo.
38175
38176 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
38177
38178         PR lto/79061
38179         * asan.c (get_translation_unit_decl): Remove function.
38180         (asan_add_global): Force has_dynamic_init to zero in LTO mode.
38181
38182 2017-01-30  Martin Liska  <mliska@suse.cz>
38183
38184         PR gcov-profile/79259
38185         * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
38186         -fprofile-generate.
38187
38188 2017-01-30  Martin Liska  <mliska@suse.cz>
38189
38190         PR bootstrap/78985
38191         * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
38192         Initialize variables with NULL value.
38193
38194 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
38195
38196         PR target/79260
38197         * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
38198         tm_p_file.
38199         * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
38200
38201 2017-01-30  Richard Biener  <rguenther@suse.de>
38202
38203         PR tree-optimization/79276
38204         * tree-vrp.c (process_assert_insertions): Properly adjust common
38205         when removing a duplicate.
38206
38207 2017-01-30  Richard Biener  <rguenther@suse.de>
38208
38209         PR tree-optimization/79256
38210         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38211         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38212         alignment on TYPE.
38213         * tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
38214
38215 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38216
38217         PR target/79240
38218         * config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
38219         ("*r<noxa>sbg_<mode>_sll_bitmask")
38220         ("*extzv_<mode>_srl<clobbercc_or_nocc>")
38221         ("*extzv_<mode>_sll<clobbercc_or_nocc>"):
38222         Use contiguous_bitmask_nowrap_operand.
38223
38224 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38225
38226         PR target/79268
38227         * config/rs6000/altivec.h (vec_xl): Revise #define.
38228         (vec_xst): Likewise.
38229
38230 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
38231
38232         * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
38233
38234 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
38235
38236         PR rtl-optimization/79194
38237         * cprop.c (one_cprop_pass): Move deletion of code after unconditional
38238         traps before call to bypass_conditional_jumps.
38239
38240 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38241
38242         PR tree-optimization/71374
38243         * lra-constraints.c (check_conflict_input_operands): New.
38244         (match_reload): Use it.
38245
38246 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38247
38248         PR target/79131
38249         * lra-assigns.c (find_hard_regno_for_1): Take endianess for into
38250         account to calculate conflict_set.
38251
38252 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
38253
38254         PR rtl-optimization/78559
38255         * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
38256         other_insn in combine.
38257
38258 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
38259
38260         * builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
38261         uint16_type_node for BT_UINT16.
38262
38263 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
38264
38265         * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
38266         "RTL Tests" to menu.
38267         (GIMPLE Tests): New node.
38268         (RTL Tests): New node.
38269
38270 2017-01-27  Richard Biener  <rguenther@suse.de>
38271
38272         PR tree-optimization/79245
38273         * tree-loop-distribution.c (distribute_loop): Apply cost
38274         modeling also to detected patterns.
38275
38276 2017-01-27  Richard Biener  <rguenther@suse.de>
38277
38278         PR tree-optimization/71433
38279         * tree-vrp.c (register_new_assert_for): Revert earlier changes.
38280         (compare_assert_loc): New function.
38281         (process_assert_insertions): Sort and optimize assert locations
38282         to remove duplicates and push down identical assertions on
38283         edges to their destination block.
38284
38285 2017-01-27  Richard Biener  <rguenther@suse.de>
38286
38287         PR tree-optimization/79244
38288         * tree-vrp.c (remove_range_assertions): Forcefully propagate
38289         out SSA names even if abnormal.
38290
38291 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
38292
38293         * realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
38294         * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
38295         instead of MPFR_RNDN.
38296
38297 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
38298
38299         PR target/79239
38300         * arm.c (arm_option_override): Don't call build_target_option_node
38301         until after doing all option overrides.
38302         (arm_valid_target_attribute_tree): Likewise.
38303
38304 2017-01-27  Martin Liska  <mliska@suse.cz>
38305
38306         * doc/invoke.texi (-fprofile-arcs): Document profiling support
38307         for {cd}tors and C++ {cd}tors.
38308
38309 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38310
38311         * config/s390/s390.md ("*setmem_long_and")
38312         ("*setmem_long_and_31z"): Use zero_extend instead of and.
38313
38314 2017-01-26  Martin Sebor  <msebor@redhat.com>
38315
38316         * gimple-ssa-sprintf.c (format_floating): Simplify the computation
38317         of precision.
38318
38319 2017-01-26  Martin Sebor  <msebor@redhat.com>
38320
38321         * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
38322         HAVE_DFmode before using XFmode or DFmode.
38323         (parse_directive): Avoid using the z length modifier to avoid
38324         the ISO C++98 does not support the â€˜z’ gnu_printf length modifier.
38325
38326         PR middle-end/78703
38327         * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
38328         to accept adjustment as an array.
38329         (get_int_range): New function.
38330         (struct directive): Make width and prec arrays.
38331         (directive::set_width, directive::set_precision): Call get_int_range.
38332         (format_integer, format_floating): Handle width and precision ranges.
38333         (format_string, parse_directive): Same.
38334
38335 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38336
38337         PR debug/79129
38338         * dwarf2out.c (generate_skeleton_bottom_up): For children with
38339         comdat_type_p set, just clone them, but keep the children in the
38340         original DIE.
38341
38342         PR debug/78835
38343         * dwarf2out.c (prune_unused_types): Mark all functions with DIEs
38344         which have direct callers with -fvar-tracking-assignments enabled
38345         in the current TU.
38346         (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
38347         inside of type units.
38348
38349 2017-01-26  Martin Sebor  <msebor@redhat.com>
38350
38351         PR middle-end/78703
38352         * gimple-ssa-sprintf.c (struct result_range): Add likely and
38353         unlikely counters.
38354         (struct format_result): Replace number_chars, number_chars_min,
38355         and number_chars_max with a single member of struct result_range.
38356         Remove bounded.
38357         (format_result::operator+=): Adjust.
38358         (struct fmtresult): Remove bounded.  Handle likely and unlikely
38359         counters.
38360         (fmtresult::adjust_for_width_or_precision): New function.
38361         (fmtresult:type_max_digits): New function.
38362         (bytes_remaining): Handle likely and unlikely counters.
38363         (min_bytes_remaining): Remove.
38364         (format_percent): Simplify.
38365         (format_integer, format_floating): Set likely and unlikely counters.
38366         (get_string_length, format_character, format_string): Same.
38367         (format_plain, should_warn_p): New function.
38368         (maybe_warn): Call should_warn_p.  Update diagnostic messages
38369         and handle those for all directives, including plain strings.
38370         (format_directive): Handle likely and unlikely counters.
38371         Remove unnecessary quoting from diagnostics.  Add an informational
38372         note.
38373         (add_bytes): Remove.
38374         (pass_sprintf_length::compute_format_length): Simplify.
38375         (try_substitute_return_value): Handle likely and unlikely counters.
38376
38377 2017-01-26  Carl Love  <cel@us.ibm.com>
38378
38379         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
38380         bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
38381
38382 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
38383
38384         PR target/79131
38385         * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
38386         endianess for subregs into account.
38387         * lra-constraints.c (lra_constraints): Do risky transformations
38388         always on the first iteration.
38389         * lra-lives.c (check_pseudos_live_through_calls): Add arg
38390         last_call_used_reg_set.
38391         (process_bb_lives): Define and use last_call_used_reg_set.
38392         * lra.c (lra): Always continue after lra_constraints on the first
38393         iteration.
38394
38395 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
38396
38397         * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
38398         constant.
38399         * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
38400
38401 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38402
38403         * config/i386/avx512fintrin.h (_ktest_mask16_u8,
38404         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
38405         * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
38406         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
38407         * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
38408         __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
38409         OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
38410         * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
38411         (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
38412
38413 2017-01-26  Marek Polacek  <polacek@redhat.com>
38414
38415         PR c/79199
38416         * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
38417         for the third operand.
38418
38419 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38420
38421         PR middle-end/79236
38422         * omp-low.c (struct omp_context): Add simt_stmt field.
38423         (scan_omp_for): Return omp_context *.
38424         (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
38425         context to the _simt_ SIMD stmt.
38426         (lower_omp_for): For combined SIMD with sibling _simt_
38427         SIMD, make sure to use the same decls in _looptemp_
38428         clauses as in the sibling.
38429
38430 2017-01-26  David Sherwood  <david.sherwood@arm.com>
38431
38432         PR middle-end/79212
38433         * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
38434         all contexts.
38435
38436 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38437
38438         PR target/70465
38439         * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
38440         emit fld b; fld a; if possible.
38441
38442         * brig-builtins.def: Update copyright years.
38443         * config/arm/arm_acle_builtins.def: Update copyright years.
38444
38445 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
38446
38447         PR target/79179
38448         * config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
38449         constraint instead of o for the stxsd instruction.
38450
38451 2017-01-25  Carl Love  <cel@us.ibm.com>
38452
38453         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
38454         of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
38455
38456 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
38457
38458         * doc/invoke.texi (C++ Dialect Options): Fix typo.
38459
38460 2017-01-25  Richard Biener  <rguenther@suse.de>
38461
38462         PR tree-optimization/69264
38463         * target.def (vector_alignment_reachable): Improve documentation.
38464         * doc/tm.texi: Regenerate.
38465         * targhooks.c (default_builtin_vector_alignment_reachable): Simplify
38466         and add a comment.
38467         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
38468         earlier changes with respect to TYPE_USER_ALIGN.
38469         (vector_alignment_reachable_p): Likewise.  Improve dumping.
38470
38471 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38472
38473         PR target/79145
38474         * config/arm/arm.md (xordi3): Force constant operand into a register
38475         for TARGET_IWMMXT.
38476
38477 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38478
38479         * doc/invoke.texi (-fstore-merging): Correct default optimization
38480         levels at which it is enabled.
38481         (-O): Move -fstore-merging from list to...
38482         (-O2): ... Here.
38483
38484 2017-01-25  Richard Biener  <rguenther@suse.de>
38485
38486         PR debug/78363
38487         * omp-expand.c: Include debug.h.
38488         (expand_omp_taskreg): Make sure to generate early debug before
38489         outlining anything from a function.
38490         (expand_omp_target): Likewise.
38491         (grid_expand_target_grid_body): Likewise.
38492
38493 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
38494
38495         PR lto/79061
38496         * asan.c (get_translation_unit_decl): New function.
38497         (asan_add_global): Extract modules file name from globals
38498         TRANSLATION_UNIT_DECL name.
38499
38500 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
38501
38502         PR target/77439
38503         * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
38504         for long calls with APCS frame and VFP.
38505
38506 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
38507
38508         * cfg.c (original_copy_tables_initialized_p): New function.
38509         * cfg.h (original_copy_tables_initialized_p): New decl.
38510         * cfgrtl.c (relink_block_chain): Guard the call to
38511         free_original_copy_tables with a call to
38512         original_copy_tables_initialized_p.
38513         * cgraph.h (symtab_node::native_rtl_p): New decl.
38514         * cgraphunit.c (symtab_node::native_rtl_p): New function.
38515         (symtab_node::needed_p): Don't assert for early assembly output
38516         for __RTL functions.
38517         (cgraph_node::finalize_function): Set "force_output" for __RTL
38518         functions.
38519         (cgraph_node::analyze): Bail out early for __RTL functions.
38520         (analyze_functions): Update assertion to support __RTL functions.
38521         (cgraph_node::expand): Bail out early for __RTL functions.
38522         * final.c (rest_of_clean_state): Don't call delete_tree_ssa for
38523         __RTL functions.
38524         * function.h (struct function): Update comment for field
38525         "pass_startwith".
38526         * gimple-expr.c: Include "tree-pass.h".
38527         (gimple_has_body_p): Return false for __RTL functions.
38528         * Makefile.in (OBJS): Add run-rtl-passes.o.
38529         * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
38530         accessor.
38531         (gcc::pass_manager::get_clean_slate): New accessor.
38532         * passes.c: Include "insn-addr.h".
38533         (should_skip_pass_p): Add logging.  Update logic for running
38534         "expand" to be compatible with both __GIMPLE and __RTL.  Guard
38535         property-provider override so it is only done for gimple passes.
38536         Don't skip dfinit.
38537         (skip_pass): New function.
38538         (execute_one_pass): Call skip_pass when skipping passes.
38539         * read-md.c (md_reader::read_char): Support filtering
38540         the input to a subset of line numbers.
38541         (md_reader::md_reader): Initialize fields
38542         m_first_line and m_last_line.
38543         (md_reader::read_file_fragment): New function.
38544         * read-md.h (md_reader::read_file_fragment): New decl.
38545         (md_reader::m_first_line): New field.
38546         (md_reader::m_last_line): New field.
38547         * read-rtl-function.c (function_reader::create_function): Only
38548         create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
38549         curr_properties.  Set DECL_INITIAL to a dummy block.
38550         (read_rtl_function_body_from_file_range): New function.
38551         * read-rtl-function.h (read_rtl_function_body_from_file_range):
38552         New decl.
38553         * run-rtl-passes.c: New file.
38554         * run-rtl-passes.h: New file.
38555
38556 2017-01-24  Jeff Law  <law@redhat.com>
38557
38558         * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
38559         buffer size.
38560
38561 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
38562
38563         PR tree-optimization/79159
38564         * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
38565         (record_nonwrapping_iv): Improve boundary using above function if no
38566         value range information.
38567
38568 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
38569             Martin Jambor  <mjambor@suse.cz>
38570
38571         * brig-builtins.def: New file.
38572         * builtins.def (DEF_HSAIL_BUILTIN): New macro.
38573         (DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
38574         (DEF_HSAIL_SAT_BUILTIN): Likewise.
38575         (DEF_HSAIL_INTR_BUILTIN): Likewise.
38576         (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
38577         * builtin-types.def (BT_INT8): New.
38578         (BT_INT16): Likewise.
38579         (BT_UINT8): Likewise.
38580         (BT_UINT16): Likewise.
38581         (BT_FN_ULONG): Likewise.
38582         (BT_FN_UINT_INT): Likewise.
38583         (BT_FN_UINT_ULONG): Likewise.
38584         (BT_FN_UINT_LONG): Likewise.
38585         (BT_FN_UINT_PTR): Likewise.
38586         (BT_FN_ULONG_PTR): Likewise.
38587         (BT_FN_INT8_FLOAT): Likewise.
38588         (BT_FN_INT16_FLOAT): Likewise.
38589         (BT_FN_UINT32_FLOAT): Likewise.
38590         (BT_FN_UINT16_FLOAT): Likewise.
38591         (BT_FN_UINT8_FLOAT): Likewise.
38592         (BT_FN_UINT64_FLOAT): Likewise.
38593         (BT_FN_UINT16_UINT32): Likewise.
38594         (BT_FN_UINT32_UINT16): Likewise.
38595         (BT_FN_UINT16_UINT16_UINT16): Likewise.
38596         (BT_FN_INT_PTR_INT): Likewise.
38597         (BT_FN_UINT_PTR_UINT): Likewise.
38598         (BT_FN_LONG_PTR_LONG): Likewise.
38599         (BT_FN_ULONG_PTR_ULONG): Likewise.
38600         (BT_FN_VOID_UINT64_UINT64): Likewise.
38601         (BT_FN_UINT8_UINT8_UINT8): Likewise.
38602         (BT_FN_INT8_INT8_INT8): Likewise.
38603         (BT_FN_INT16_INT16_INT16): Likewise.
38604         (BT_FN_INT_INT_INT): Likewise.
38605         (BT_FN_UINT_FLOAT_UINT): Likewise.
38606         (BT_FN_FLOAT_UINT_UINT): Likewise.
38607         (BT_FN_ULONG_UINT_UINT): Likewise.
38608         (BT_FN_ULONG_UINT_PTR): Likewise.
38609         (BT_FN_ULONG_ULONG_ULONG): Likewise.
38610         (BT_FN_UINT_UINT_UINT): Likewise.
38611         (BT_FN_VOID_UINT_PTR): Likewise.
38612         (BT_FN_UINT_UINT_PTR: Likewise.
38613         (BT_FN_UINT32_UINT64_PTR): Likewise.
38614         (BT_FN_INT_INT_UINT_UINT): Likewise.
38615         (BT_FN_UINT_UINT_UINT_UINT): Likewise.
38616         (BT_FN_UINT_UINT_UINT_PTR): Likewise.
38617         (BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
38618         (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
38619         (BT_FN_LONG_LONG_UINT_UINT): Likewise.
38620         (BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
38621         (BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
38622         (BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
38623         (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
38624         (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
38625         (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
38626         * doc/frontends.texi: List BRIG FE.
38627         * doc/install.texi (Testing): Add BRIG tesring requirements.
38628         * doc/invoke.texi (Overall Options): Mention BRIG.
38629         * doc/standards.texi (Standards): Doucment BRIG HSA version.
38630
38631 2017-01-24  Richard Biener  <rguenther@suse.de>
38632
38633         PR translation/79208
38634         * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
38635
38636 2017-01-24  Martin Jambor  <mjambor@suse.cz>
38637
38638         PR bootstrap/79198
38639         * ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
38640         * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
38641         and known_contexts.
38642
38643 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
38644
38645         PR middle-end/79123
38646         * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
38647         casts from signed to unsigned really don't have a range.
38648
38649 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
38650
38651         * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
38652         GMP_RNDx for compatiblity.
38653
38654 2017-01-24  Martin Liska  <mliska@suse.cz>
38655
38656         PR bootstrap/79132
38657         * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
38658         that would prevent us to call alloca with -1 as argument.
38659
38660 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
38661
38662         * dwarf2out.c (output_compilation_unit_header, output_file_names):
38663         Avoid -Wformat-security warning.
38664
38665 2017-01-23  Andrew Pinski  <apinski@cavium.com>
38666
38667         * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
38668         cost table.
38669
38670 2017-01-23  Martin Sebor  <msebor@redhat.com>
38671
38672         PR middle-end/78703
38673         * gimple-ssa-sprintf.c (warn_level): New global.
38674         (format_integer): Use it here and throughout the rest of the file.
38675         Use the same switch to compute sign as base.
38676         (maybe_warn): New function.
38677         (format_directive): Factor out warnings into maybe_warn.
38678         Add debugging output.  Use warn_level.
38679         (add_bytes): Use warn_level.
38680         (pass_sprintf_length::compute_format_length): Add debugging output.
38681         (try_substitute_return_value): Same.
38682         (pass_sprintf_length::handle_gimple_call): Set and use warn_level.
38683
38684         PR middle-end/78703
38685         * gimple-ssa-sprintf.c (struct format_result): Remove constant member.
38686         (struct fmtresult, format_integer, format_floating): Adjust.
38687         (fmtresult::fmtresult): Set max correctly in two argument ctor.
38688         (get_string_length, format_string,format_directive): Same.
38689         (pass_sprintf_length::compute_format_length): Same.
38690         (try_substitute_return_value): Simplify slightly.
38691
38692         PR middle-end/78703
38693         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
38694         (fmtresult::operator+=): Outlined.
38695         (struct fmtresult): Add ctors.
38696         (struct conversion_spec): Rename...
38697         (struct directive): ...to this.  Add and remove data members.
38698         (directive::set_width, directive::set_precision): New functions.
38699         (format_percent): Use fmtresult ctor.
38700         (get_width_and_precision): Remove.
38701         (format_integer): Make naming changes.  Avoid computing width and
38702         precision.
38703         (format_floating): Same.  Adjust indentation.
38704         (format_character, format_none): New functions.
38705         (format_string): Moved character handling to format_character.
38706         (format_directive): Remove arguments, change return type.
38707         (parse_directive): New function.
38708         (pass_sprintf_length::compute_format_length): Move directive
38709         parsing to parse_directive.
38710
38711 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
38712
38713         * tree.h (assign_assembler_name_if_neeeded): Rename to ...
38714         (assign_assembler_name_if_needed): ... this.
38715         * tree.c (assign_assembler_name_if_neeeded): Rename to ...
38716         (assign_assembler_name_if_needed): ... this.
38717         (free_lang_data_in_cgraph): Adjust callers.
38718         * cgraphunit.c (cgraph_node::analyze): Likewise.
38719         * omp-expand.c (expand_omp_taskreg, expand_omp_target):
38720         Likewise.
38721
38722 2017-01-23  Richard Biener  <rguenther@suse.de>
38723
38724         PR tree-optimization/79088
38725         PR tree-optimization/79188
38726         * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
38727         resetting loop bounds after last path deletion.  Reset loop
38728         bounds of the target loop, make code match the comments.
38729         * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
38730         Make sure loops need no fixups.
38731
38732 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
38733
38734         * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
38735         exponent support with double type for first argument.
38736         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
38737         type returned by __builtin_vec_extract_sig,
38738         __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
38739         functions from "vector int" to "vector unsigned int" or from
38740         "vector long long int" to "vector unsigned long long int".
38741         Changed type returned by __builtin_vec_extract_exp,
38742         __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
38743         functions from "vector int" to "vector unsigned int" or from
38744         "vector long long int" to "vector unsigned long long int".
38745         Changed return type of __builtin_vec_test_data_class,
38746         __builtin_vec_test_data_class_sp, and
38747         __builtin_vec_test_data_class_dp from "vector int" to
38748         "vector bool int" or from "vector long long int" to "vector bool
38749         long long int" and changed second argument type from "unsigned
38750         int" to "int".  Added new overloaded function forms "vector float
38751         __builtin_vec_insert_exp (vector float, vector unsigned int)" and
38752         "vector float __builtin_vec_insert_exp_sp (vector float, vector
38753         unsigned int)" and "vector double __builtin_vec_insert_exp (vector
38754         double, vector unsigned long long int)" and "vector double
38755         __builtin_vec_insert_exp_dp (vector double, vector unsigned long
38756         long int)".  Changed return type of
38757         __builtin_scalar_test_data_class and
38758         __builtin_scalar_test_data_class_sp and
38759         __builtin_scalar_test_data_class_dp from "unsigned int" to "bool
38760         int" and changed second argument from "unsigned int" to "int".
38761         Changed type returned by __builtin_scalar_test_neg,
38762         __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
38763         from "int" to "bool int".  Added new overloaded function form
38764         "double __builtin_scalar_insert_exp (double, unsigned long long int)".
38765         * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
38766         exponent double-precision with floating point first argument.
38767         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
38768         documentation of scalar_test_data_class, scalar_test_neg,
38769         scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
38770         vector_extract_exp, vec_extract_sig, vec_insert_exp, and
38771         vec_test_data_class built-in functions to reflect refinements in
38772         their type signatures.
38773
38774 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
38775
38776         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
38777         size of buf.
38778         (aarch64_elf_asm_destructor): Likewise.
38779
38780 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
38781
38782         PR rtl-optimization/78634
38783         * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
38784         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
38785         * ifcvt.c (noce_try_cmove): Add missing cost check.
38786
38787         PR rtl-optimization/71724
38788         * combine.c (if_then_else_cond): Look for situations where it is
38789         beneficial to undo the work of one of the recursive calls.
38790
38791 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
38792
38793         PR tree-optimization/70754
38794         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
38795         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
38796         combined stmt before it if not NULL.
38797         (combine_chains): Process refs reversely and compute dominance point
38798         for root ref.
38799
38800 2017-01-23  Martin Liska  <mliska@suse.cz>
38801
38802         PR tree-optimization/79196
38803         * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
38804         (fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
38805         instead of memcmp.
38806         (strlen_optimize_stmt): Call the renamed function.
38807
38808 2017-01-23  Michael Matz  <matz@suse.de>
38809
38810         PR tree-optimization/78384
38811         * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
38812
38813 2017-01-23  Richard Biener  <rguenther@suse.de>
38814
38815         PR tree-optimization/79186
38816         * tree-vrp.c (register_new_assert_for): Make sure we've seen
38817         both incoming edges before moving an assert.
38818
38819 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38820
38821         * ipa-prop.c (load_from_param_1): Removed.
38822         (load_from_unmodified_param): Bits from load_from_param_1 put back
38823         here.
38824         (load_from_param): Removed.
38825         (compute_complex_assign_jump_func): Removed stmt2 and just replaced it
38826         with stmt.  Reverted back to use of load_from_unmodified_param.
38827
38828 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38829
38830         PR ipa/79108
38831         * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
38832         (ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
38833         field a pointer to garbage collected vector, mark lattices and
38834         ipcp_orig_node with GTY((skip)).
38835         (ipa_get_param_count): Adjust to descriptors being a pointer.
38836         (ipa_get_param): Likewise.
38837         (ipa_get_type): Likewise.
38838         (ipa_get_param_move_cost): Likewise.
38839         (ipa_set_param_used): Likewise.
38840         (ipa_get_controlled_uses): Likewise.
38841         (ipa_set_controlled_uses): Likewise.
38842         (ipa_is_param_used): Likewise.
38843         (ipa_node_params_t): Move into garbage collector.  New methods insert
38844         and remove.
38845         (ipa_node_params_sum): Annotate wth GTY(()).
38846         (ipa_check_create_node_params): Adjust to ipa_node_params_sum being
38847         garbage collected.
38848         (ipa_load_from_parm_agg): Adjust declaration.
38849         * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
38850         * ipa-profile.c (ipa_profile): Likewise.
38851         * ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
38852         (ipa_populate_param_decls): Make descriptors parameter garbage
38853         collected.
38854         (ipa_dump_param): Adjust to descriptors being a pointer.
38855         (ipa_alloc_node_params): Likewise.
38856         (ipa_initialize_node_params): Likewise.
38857         (load_from_param_1): Make descriptors parameter garbage collected.
38858         (load_from_unmodified_param): Likewise.
38859         (load_from_param): Likewise.
38860         (ipa_load_from_parm_agg): Likewise.
38861         (ipa_node_params::~ipa_node_params): Removed.
38862         (ipa_free_all_node_params): Remove call to delete operator.
38863         (ipa_node_params_t::insert): New.
38864         (ipa_node_params_t::remove): Likewise.
38865         (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
38866         copy known_csts and known_contexts vectors.
38867         (ipa_read_node_info): Adjust to descriptors being a pointer.
38868         (ipcp_modif_dom_walker): Make m_descriptors field garbage
38869         collected.
38870         (ipcp_transform_function): Make descriptors variable garbage
38871         collected.
38872
38873 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
38874
38875         * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
38876         * config/i386/avx512dqintrin.h: Ditto.
38877         * config/i386/avx512fintrin.h: Ditto.
38878         * config/i386/i386.c: Handle new builtins.
38879         * config/i386/i386-builtin.def: Add new builtins.
38880         * config/i386/sse.md (ktest<mode>, kortest<mode>): New.
38881         (UNSPEC_KORTEST, UNSPEC_KTEST): New.
38882
38883 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
38884             Martin Liska  <mliska@suse.cz>
38885
38886         * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
38887         * asan.c (asan_expand_poison_ifn): Support stores and use
38888         appropriate ASAN report function.
38889         * internal-fn.c (expand_ASAN_POISON_USE): New function.
38890         * internal-fn.def (ASAN_POISON_USE): Declare.
38891         * tree-into-ssa.c (maybe_add_asan_poison_write): New function.
38892         (maybe_register_def): Create ASAN_POISON_USE when sanitizing.
38893         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
38894         ASAN_POISON calls w/o LHS.
38895         * tree-ssa.c (execute_update_addresses_taken): Create clobber
38896         for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
38897         from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
38898         * gimplify.c (asan_poison_variables): Add attribute
38899         use_after_scope_memory to variables that really needs to live
38900         in memory.
38901         * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
38902         having the attribute.
38903
38904 2017-01-23  Martin Liska  <mliska@suse.cz>
38905
38906         * asan.c (create_asan_shadow_var): New function.
38907         (asan_expand_poison_ifn): Likewise.
38908         * asan.h (asan_expand_poison_ifn): New declaration.
38909         * internal-fn.c (expand_ASAN_POISON): Likewise.
38910         * internal-fn.def (ASAN_POISON): New builtin.
38911         * sanopt.c (pass_sanopt::execute): Expand
38912         asan_expand_poison_ifn.
38913         * tree-inline.c (copy_decl_for_dup_finish): Make function
38914         external.
38915         * tree-inline.h (copy_decl_for_dup_finish): Likewise.
38916         * tree-ssa.c (is_asan_mark_p): New function.
38917         (execute_update_addresses_taken): Rewrite local variables
38918         (identified just by use-after-scope as addressable) into SSA.
38919
38920 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
38921
38922         * doc/install.texi (Specific): opensource.apple.com uses https
38923         now. Remove trailing slash.
38924
38925 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
38926
38927         * README.Portability: Remove note on an Irix compatibility issue.
38928
38929 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
38930
38931         * gcov.c (INCLUDE_ALGORITHM): Define.
38932         (INCLUDE_VECTOR): Define.
38933         No longer include <vector> and <algorithm> directly.
38934
38935 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
38936
38937         * doc/extend.texi (Thread-Local): Change www.akkadia.org reference
38938         to https.
38939         * doc/invoke.texi (Code Gen Options): Ditto.
38940
38941 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
38942
38943         PR lto/78407
38944         * cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
38945
38946 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
38947
38948         rtl-optimization/79125
38949         * cprop.c (local_cprop_pass): Handle cases where we make an
38950         unconditional trap.
38951
38952 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
38953
38954         PR target/61729
38955         PR target/77850
38956         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
38957         read from, for big endian.
38958
38959 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
38960
38961         * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
38962         register pauth builtins for LP64 only.
38963
38964 2017-01-20  Marek Polacek  <polacek@redhat.com>
38965
38966         PR c/79152
38967         * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
38968         non-case labels.
38969
38970 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
38971
38972         * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
38973         of safelen status.
38974         * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
38975         * passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
38976         * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
38977
38978 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38979
38980         PR target/71270
38981         * config/arm/arm.c (neon_valid_immediate): Reject vector constants
38982         in big-endian mode when they are not a single duplicated value.
38983
38984 2017-01-20  Richard Biener  <rguenther@suse.de>
38985
38986         * BASE-VER: Bump to 7.0.1.
38987
38988 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
38989
38990         * omp-low.c (omplow_simd_context): New struct.  Use it...
38991         (lower_rec_simd_input_clauses): ...here and...
38992         (lower_rec_input_clauses): ...here to hold common data.  Adjust all
38993         references to idx, lane, max_vf, is_simt.
38994
38995 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
38996
38997         * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
38998         mcpu=nps400.
38999
39000 2017-01-20  Martin Jambor  <mjambor@suse.cz>
39001
39002         * hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
39003         * hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
39004         gt-hsa-common.h.
39005         * Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
39006         (GTFILES): Rename hsa.c to hsa-common.c.
39007         * hsa-brig.c: Change include of hsa.h to hsa-common.h.
39008         * hsa-dump.c: Likewise.
39009         * hsa-gen.c: Likewise.
39010         * hsa-regalloc.c: Likewise.
39011         * ipa-hsa.c: Likewise.
39012         * omp-expand.c: Likewise.
39013         * omp-low.c: Likewise.
39014         * toplev.c: Likewise.
39015
39016 2017-01-20  Marek Polacek  <polacek@redhat.com>
39017
39018         PR c/64279
39019         * doc/invoke.texi: Document -Wduplicated-branches.
39020         * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
39021         COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
39022         POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
39023         STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
39024         return 0 only when not OEP_LEXICOGRAPHIC.
39025         (fold_build_cleanup_point_expr): Use the expression
39026         location when building CLEANUP_POINT_EXPR.
39027         * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
39028         * tree.c (add_expr): Handle error_mark_node.
39029
39030 2017-01-20  Martin Liska  <mliska@suse.cz>
39031
39032         PR lto/69188
39033         * tree-profile.c (init_ic_make_global_vars): Do not call
39034         finalize_decl.
39035         (gimple_init_gcov_profiler): Likewise.
39036
39037 2017-01-20  Martin Liska  <mliska@suse.cz>
39038
39039         PR ipa/71190
39040         * cgraph.h (maybe_create_reference): Remove argument and
39041         update comment.
39042         * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
39043         argument.
39044         * ipa-cp.c (create_specialized_node): Likewise.
39045         * symtab.c (symtab_node::maybe_create_reference): Handle
39046         VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
39047
39048 2017-01-20  Martin Liska  <mliska@suse.cz>
39049
39050         * read-rtl-function.c (function_reader::create_function): Use
39051         build_decl instread of build_decl_stat.
39052
39053 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
39054
39055         * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
39056         * config/i386/avx512dqintrin.h: Ditto.
39057         * config/i386/avx512fintrin.h: Ditto.
39058         * config/i386/i386-builtin-types.def: Add new types.
39059         * config/i386/i386.c: Handle new types.
39060         * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
39061         (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
39062         (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
39063         (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
39064         (__builtin_ia32_kshiftridi): New.
39065         * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
39066
39067 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
39068
39069         PR target/78875
39070         PR target/79140
39071         * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
39072         define to rs6000_init_stack_protect_guard.
39073         (rs6000_init_stack_protect_guard): New function.
39074
39075 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39076             Yunqiang Su  <yunqiang.su@imgtec.com>
39077
39078         * config.gcc (supported_defaults): Add madd4.
39079         (with_madd4): Add validation.
39080         (all_defaults): Add madd4.
39081         * config/mips/mips.opt (mmadd4): New option.
39082         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39083         mmadd4.
39084         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39085         __mips_no_madd4.
39086         (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
39087         (ISA_HAS_FUSED_MADD4): Likewise.
39088         * doc/invoke.texi (-mmadd4): Document the new option.
39089         * doc/install.texi (--with-madd4): Document the new option.
39090
39091 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39092
39093         * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
39094         entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
39095         AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
39096         (aarch64_init_pauth_hint_builtins): New.
39097         (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
39098         (aarch64_expand_builtin): Expand new builtins.
39099
39100 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39101
39102         * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
39103         * combine-stack-adj.c (no_unhandled_cfa): Handle
39104         REG_CFA_TOGGLE_RA_MANGLE.
39105         * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
39106         * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
39107         info for return address signing.
39108         (aarch64_expand_epilogue): Likewise.
39109
39110 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39111
39112         * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
39113         * config/aarch64/aarch64-protos.h
39114         (aarch64_return_address_signing_enabled): New declaration.
39115         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
39116         New function.
39117         (aarch64_expand_prologue): Sign return address before it's pushed onto
39118         stack.
39119         (aarch64_expand_epilogue): Authenticate return address fetched from
39120         stack.
39121         (aarch64_override_options): Sanity check for ILP32 and ISA level.
39122         (aarch64_attributes): New function attributes for "sign-return-address".
39123         * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
39124         UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
39125         ("*do_return"): Generate combined instructions according to key index.
39126         ("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
39127         * config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
39128         iterators.
39129         (pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
39130         * config/aarch64/aarch64.opt (msign-return-address=): New.
39131         * doc/extend.texi (AArch64 Function Attributes): Documents
39132         "sign-return-address=".
39133         * doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
39134
39135 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39136
39137         * doc/invoke.texi: Add missing -mlxc1-sxc1 options to
39138         overall option summary.
39139
39140 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39141
39142         * config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
39143         * config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
39144         AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
39145         * doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
39146
39147 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
39148
39149         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
39150         -mpower9-minmax by default for -mcpu=power9.
39151         (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
39152         128-bit floating point.
39153
39154 2017-01-20  Alan Modra  <amodra@gmail.com>
39155
39156         * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
39157         optimizing for size.
39158
39159 2017-01-20  Alan Modra  <amodra@gmail.com>
39160
39161         PR target/79144
39162         * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
39163         for strcmp and strncmp from corresponding builtin decl.
39164
39165 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39166
39167         * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
39168         instead of i386/rtems-64.h.
39169         * config/i386/rtems-64.h: Remove.
39170
39171 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39172
39173         PR target/78478
39174         Revert:
39175         2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
39176
39177         * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
39178
39179 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
39180
39181         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
39182         Change int to HOST_WIDE_INT.
39183         * config/aarch64/aarch64-protos.h
39184         (aarch64_simd_gen_const_vector_dup): Likewise.
39185         * config/aarch64/aarch64-simd.md: Add copysign<mode>3.
39186
39187 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
39188
39189         * langhooks-def.h (lhd_type_for_size): New decl.
39190         (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
39191         * langhooks.c (lhd_type_for_size): New function, taken from
39192         lto_type_for_size.
39193
39194 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
39195
39196         * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
39197         define_bypass for CR latency.
39198         (power9-cracked-alu): Update bypass latency and remove power9-branch.
39199         (power9-alu2): Add define_bypass for CR latency.
39200         (power9-cmp): New.
39201         (power9-mul): Update insn latency.
39202         (power9-mul-compare): Update insn latency, bypass latency and remove
39203         power9-branch.
39204
39205 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39206
39207         * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
39208         Delete.
39209         * config/aarch64/aarch64.md
39210         (aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
39211         aarch64_nopcrelative_literal_loads.
39212         (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
39213
39214 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
39215
39216         * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
39217         TARGET_LOONGSON_3A.
39218         (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
39219
39220 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
39221
39222         PR target/78176
39223         * config.gcc (supported_defaults): Add lxc1-sxc1.
39224         (with_lxc1_sxc1): Add validation.
39225         (all_defaults): Add lxc1-sxc1.
39226         * config/mips/mips.opt (mlxc1-sxc1): New option.
39227         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39228         mlxc1-sxc1.
39229         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39230         __mips_no_lxc1_sxc1.
39231         (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
39232         * doc/invoke.texi (-mlxc1-sxc1): Document the new option.
39233         * doc/install.texi (--with-lxc1-sxc1): Document the new option.
39234
39235 2017-01-19  Richard Biener  <rguenther@suse.de>
39236
39237         PR tree-optimization/72488
39238         * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
39239         sure to restore SSA info.
39240         * tree-ssa.c (verify_ssa): Verify SSA info is not shared.
39241
39242 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
39243
39244         PR rtl-optimization/79121
39245         * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
39246         of the inner type when shifting an extended value.
39247
39248 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39249
39250         PR lto/78407
39251         * symtab.c (symtab_node::equal_address_to): Fix comparing of
39252         interposable aliases.
39253
39254 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
39255
39256         PR target/78516
39257         * config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
39258         Use the evmergelohi instruction.
39259         (mov_si<mode>_e500_subreg4_2_le): Likewise.
39260         (mov_sitf_e500_subreg8_2_be): Likewise.
39261         (mov_sitf_e500_subreg12_2_le): Likewise.
39262         (mov_si<mode>_e500_subreg0_2_le): Fix constraints.
39263         (mov_si<mode>_e500_subreg4_2_be): Likewise.
39264         (mov_sitf_e500_subreg8_2_le): Likewise.
39265         (mov_sitf_e500_subreg12_2_be): Likewise.
39266
39267 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39268
39269         * config/rs6000/altivec.md (altivec_vbpermq): Change "type"
39270         attribute from vecsimple to vecperm.
39271         (altivec_vbpermq2): Likewise.
39272
39273 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39274
39275         PR target/79040
39276         * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
39277
39278 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
39279         * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
39280         * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
39281         strcmp. Fix bug where comparison didn't stop with zero byte. Fix
39282         case where N arg is SIZE_MAX.
39283         * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
39284         (cmpstrsi): Add pattern.
39285
39286 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
39287
39288         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
39289         __builtin_vec_revb builtins.
39290         * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
39291         built-in functions to support generation of the ISA 3.0 XXBR<x>
39292         vector byte reverse instructions.
39293         (P9V_BUILTIN_XXBRQ_V1TI): Likewise.
39294         (P9V_BUILTIN_XXBRD_V2DI): Likewise.
39295         (P9V_BUILTIN_XXBRD_V2DF): Likewise.
39296         (P9V_BUILTIN_XXBGW_V4SI): Likewise.
39297         (P9V_BUILTIN_XXBGW_V4SF): Likewise.
39298         (P9V_BUILTIN_XXBGH_V8HI): Likewise.
39299         (P9V_BUILTIN_VEC_REVB): Likewise.
39300         * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
39301         generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
39302         (p9_xxbrq_v16qi): Likewise.
39303         (p9_xxbrd_<mode>, VSX_D iterator): Likewise.
39304         (p9_xxbrw_<mode>, VSX_W iterator): Likewise.
39305         (p9_xxbrh_v8hi): Likewise.
39306         * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
39307         * doc/extend.texi (RS/6000 Altivec Built-ins): Document the
39308         vec_revb built-in functions.
39309
39310 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
39311
39312         PR rtl-optimization/78952
39313         * config/i386/i386.md (any_extract): New code iterator.
39314         (*insvqi_2): Use any_extract for source operand.
39315         (*insvqi_3): Use any_shiftrt for source operand.
39316
39317 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
39318
39319         * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
39320         New function.
39321         (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
39322
39323 2017-01-18  Matthias Klose  <doko@ubuntu.com>
39324
39325         * doc/install.texi: Allow default for --with-target-bdw-gc-include.
39326
39327 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39328
39329         * config/rs6000/altivec.h (vec_bperm): Change #define.
39330         * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
39331         (altivec_vbpermq2): New define_insn.
39332         (altivec_vbpermd): Likewise.
39333         * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
39334         function interface.
39335         (VBPERMD): Likewise.
39336         (VBPERM): New polymorphic function interface.
39337         * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
39338         Add entries for P9V_BUILTIN_VEC_VBPERM.
39339         * doc/extend.texi: Add interfaces for vec_bperm.
39340
39341 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
39342
39343         * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
39344         first letter of error messages.
39345         (s390_resolve_overloaded_builtin): Likewise.
39346         * config/s390/s390.c (s390_expand_builtin): Likewise.
39347         (s390_invalid_arg_for_unprototyped_fn): Likewise.
39348         (s390_valid_target_attribute_inner_p): Likewise.
39349         * config/s390/s390.md ("tabort"): Likewise.
39350
39351 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
39352
39353         * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
39354         (ISA_AVOID_DIV_HILO): New macro.
39355         (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
39356         (ISA_HAS_DDIV): Likewise.
39357
39358 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39359
39360         * doc/invoke.texi (fabi-version): Correct number of occurrences.
39361
39362 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39363
39364         * doc/invoke.texi (fabi-version): Spelling fix.
39365
39366 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39367
39368         PR c++/70182
39369         * doc/invoke.texi (fabi-version): Mention mangling fix for
39370         operator names.
39371
39372 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39373
39374         PR c++/77489
39375         * doc/invoke.texi (fabi-version): Document discriminator mangling.
39376
39377 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
39378
39379         PR target/78875
39380         * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
39381         * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
39382         the new options.
39383         * config/rs6000/rs6000.md (stack_protect_set): Handle the new more
39384         flexible settings.
39385         (stack_protect_test): Ditto.
39386         * config/rs6000/rs6000.opt (mstack-protector-guard=,
39387         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
39388         options.
39389         * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
39390         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
39391         -mstack-protector-guard-offset=.
39392         (RS/6000 and PowerPC Options): Ditto.
39393
39394 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39395
39396         * config/i386/i386.h (MASK_CLASS_P): New define.
39397         * config/i386/i386.c (inline_secondary_memory_needed): Ensure that
39398         there are no registers from different register sets also when
39399         mask registers are used.  Update function comment.
39400         * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
39401         to (*k/*r) and (*k/*km) alternatives.
39402
39403 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
39404
39405         * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
39406         * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
39407         (EH_RETURN_HANDLER_RTX): New define.
39408         * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
39409         Force frame pointer in EH return functions.
39410         (aarch64_expand_epilogue): Add barrier for eh_return.
39411         (aarch64_final_eh_return_addr): Remove.
39412         (aarch64_eh_return_handler_rtx): New function.
39413         * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
39414         Remove.
39415         (aarch64_eh_return_handler_rtx): New prototype.
39416
39417 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39418
39419         * config/rs6000/altivec.h (vec_rlmi): New #define.
39420         (vec_vrlnm): Likewise.
39421         (vec_rlnm): Likewise.
39422         * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
39423         (UNSPEC_VRLNM): Likewise.
39424         (VIlong): New mode iterator.
39425         (altivec_vrl<VI_char>mi): New define_insn.
39426         (altivec_vrl<VI_char>nm): Likewise.
39427         * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
39428         function entry.
39429         (VRLDNM): Likewise.
39430         (RLNM): New polymorphic function entry.
39431         (VRLWMI): New monomorphic function entry.
39432         (VRLDMI): Likewise.
39433         (RLMI): New polymorphic function entry.
39434         * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
39435         new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
39436         * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
39437         vec_vrlnm.
39438
39439 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39440
39441         PR debug/78839
39442         * dwarf2out.c (field_byte_offset): Restore the
39443         PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
39444         and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
39445         (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
39446         of build2 + fold.
39447
39448 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39449
39450         PR ada/67205
39451         * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
39452
39453 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39454
39455         PR debug/71669
39456         * dwarf2out.c (add_data_member_location_attribute): For constant
39457         offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
39458         instead of DW_AT_data_member_location, DW_AT_bit_offset and
39459         DW_AT_byte_size attributes.
39460
39461 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39462
39463         * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
39464         after forcing to constant memory when the code model is medium.
39465
39466 2017-01-17  Julia Koval  <julia.koval@intel.com>
39467
39468         PR target/76731
39469         * config/i386/avx512fintrin.h
39470         (_mm512_i32gather_ps): Change __addr type to void const*.
39471         (_mm512_mask_i32gather_ps): Ditto.
39472         (_mm512_i32gather_pd): Ditto.
39473         (_mm512_mask_i32gather_pd): Ditto.
39474         (_mm512_i64gather_ps): Ditto.
39475         (_mm512_mask_i64gather_ps): Ditto.
39476         (_mm512_i64gather_pd): Ditto.
39477         (_mm512_mask_i64gather_pd): Ditto.
39478         (_mm512_i32gather_epi32): Ditto.
39479         (_mm512_mask_i32gather_epi32): Ditto.
39480         (_mm512_i32gather_epi64): Ditto.
39481         (_mm512_mask_i32gather_epi64): Ditto.
39482         (_mm512_i64gather_epi32): Ditto.
39483         (_mm512_mask_i64gather_epi32): Ditto.
39484         (_mm512_i64gather_epi64): Ditto.
39485         (_mm512_mask_i64gather_epi64): Ditto.
39486         (_mm512_i32scatter_ps): Change __addr type to void*.
39487         (_mm512_mask_i32scatter_ps): Ditto.
39488         (_mm512_i32scatter_pd): Ditto.
39489         (_mm512_mask_i32scatter_pd): Ditto.
39490         (_mm512_i64scatter_ps): Ditto.
39491         (_mm512_mask_i64scatter_ps): Ditto.
39492         (_mm512_i64scatter_pd): Ditto.
39493         (_mm512_mask_i64scatter_pd): Ditto.
39494         (_mm512_i32scatter_epi32): Ditto.
39495         (_mm512_mask_i32scatter_epi32): Ditto.
39496         (_mm512_i32scatter_epi64): Ditto.
39497         (_mm512_mask_i32scatter_epi64): Ditto.
39498         (_mm512_i64scatter_epi32): Ditto.
39499         (_mm512_mask_i64scatter_epi32): Ditto.
39500         (_mm512_i64scatter_epi64): Ditto.
39501         (_mm512_mask_i64scatter_epi64): Ditto.
39502         * config/i386/avx512pfintrin.h
39503         (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
39504         (_mm512_mask_prefetch_i32gather_ps): Ditto.
39505         (_mm512_mask_prefetch_i64gather_pd): Ditto.
39506         (_mm512_mask_prefetch_i64gather_ps): Ditto.
39507         (_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
39508         (_mm512_prefetch_i32scatter_ps): Ditto.
39509         (_mm512_mask_prefetch_i32scatter_pd): Ditto.
39510         (_mm512_mask_prefetch_i32scatter_ps): Ditto.
39511         (_mm512_prefetch_i64scatter_pd): Ditto.
39512         (_mm512_prefetch_i64scatter_ps): Ditto.
39513         (_mm512_mask_prefetch_i64scatter_pd): Ditto.
39514         (_mm512_mask_prefetch_i64scatter_ps): Ditto.
39515         * config/i386/avx512vlintrin.h
39516         (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
39517         (_mm_mmask_i32gather_ps): Ditto.
39518         (_mm256_mmask_i32gather_pd): Ditto.
39519         (_mm_mmask_i32gather_pd): Ditto.
39520         (_mm256_mmask_i64gather_ps): Ditto.
39521         (_mm_mmask_i64gather_ps): Ditto.
39522         (_mm256_mmask_i64gather_pd): Ditto.
39523         (_mm_mmask_i64gather_pd): Ditto.
39524         (_mm256_mmask_i32gather_epi32): Ditto.
39525         (_mm_mmask_i32gather_epi32): Ditto.
39526         (_mm256_mmask_i32gather_epi64): Ditto.
39527         (_mm_mmask_i32gather_epi64): Ditto.
39528         (_mm256_mmask_i64gather_epi32): Ditto.
39529         (_mm_mmask_i64gather_epi32): Ditto.
39530         (_mm256_mmask_i64gather_epi64): Ditto.
39531         (_mm_mmask_i64gather_epi64): Ditto.
39532         (_mm256_i32scatter_ps): Change __addr type to void*.
39533         (_mm256_mask_i32scatter_ps): Ditto.
39534         (_mm_i32scatter_ps): Ditto.
39535         (_mm_mask_i32scatter_ps): Ditto.
39536         (_mm256_i32scatter_pd): Ditto.
39537         (_mm256_mask_i32scatter_pd): Ditto.
39538         (_mm_i32scatter_pd): Ditto.
39539         (_mm_mask_i32scatter_pd): Ditto.
39540         (_mm256_i64scatter_ps): Ditto.
39541         (_mm256_mask_i64scatter_ps): Ditto.
39542         (_mm_i64scatter_ps): Ditto.
39543         (_mm_mask_i64scatter_ps): Ditto.
39544         (_mm256_i64scatter_pd): Ditto.
39545         (_mm256_mask_i64scatter_pd): Ditto.
39546         (_mm_i64scatter_pd): Ditto.
39547         (_mm_mask_i64scatter_pd): Ditto.
39548         (_mm256_i32scatter_epi32): Ditto.
39549         (_mm256_mask_i32scatter_epi32): Ditto.
39550         (_mm_i32scatter_epi32): Ditto.
39551         (_mm_mask_i32scatter_epi32): Ditto.
39552         (_mm256_i32scatter_epi64): Ditto.
39553         (_mm256_mask_i32scatter_epi64): Ditto.
39554         (_mm_i32scatter_epi64): Ditto.
39555         (_mm_mask_i32scatter_epi64): Ditto.
39556         (_mm256_i64scatter_epi32): Ditto.
39557         (_mm256_mask_i64scatter_epi32): Ditto.
39558         (_mm_i64scatter_epi32): Ditto.
39559         (_mm_mask_i64scatter_epi32): Ditto.
39560         (_mm256_i64scatter_epi64): Ditto.
39561         (_mm256_mask_i64scatter_epi64): Ditto.
39562         (_mm_i64scatter_epi64): Ditto.
39563         (_mm_mask_i64scatter_epi64): Ditto.
39564         * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
39565         (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
39566         (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
39567         (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
39568         (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
39569         (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
39570         (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
39571         (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
39572         (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
39573         (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
39574         (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
39575         (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
39576         (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
39577         (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
39578         (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
39579         (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
39580         (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
39581         (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
39582         (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
39583         (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
39584         (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
39585         (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
39586         (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
39587         (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
39588         (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
39589         (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
39590         (VOID_QI_V8DI_PCINT_INT_INT): Remove.
39591         (V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
39592         (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
39593         (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
39594         (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
39595         (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
39596         (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
39597         (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
39598         (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
39599         (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
39600         (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
39601         (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
39602         (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
39603         (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
39604         (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
39605         (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
39606         (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
39607         (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
39608         (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
39609         (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
39610         (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
39611         (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
39612         (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
39613         (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
39614         (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
39615         (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
39616         (VOID_QI_V8DI_PCVOID_INT_INT): Add.
39617         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
39618         definitions accordingly.
39619
39620 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
39621             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
39622
39623         PR target/79079
39624         * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
39625         gen_lowpart.
39626
39627 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
39628
39629         PR target/79058
39630         * ira-conflicts.c (ira_build_conflicts): Update total conflict
39631         hard regs for inner regno.
39632
39633 2017-01-17  Martin Liska  <mliska@suse.cz>
39634
39635         PR ipa/71207
39636         * ipa-polymorphic-call.c (contains_type_p): Fix wrong
39637         assumption and add comment.
39638
39639 2017-01-17  Nathan Sidwell  <nathan@acm.org>
39640
39641         * ipa-visibility.c (localize_node): New function, broken out of ...
39642         (function_and_variable_visibility): ... here. Call it.
39643
39644 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39645
39646         PR middle-end/77445
39647         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
39648         correctly set frequency of oudgoing edge.
39649         (duplicate_thread_path): Fix profile updating.
39650
39651 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39652
39653         PR other/79046
39654         * configure.ac: Add GCC_BASE_VER.
39655         * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
39656         version from BASE-VER file.
39657         (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
39658         (gcc.o): Depend on $(BASEVER).
39659         * common.opt (dumpfullversion): New option.
39660         * gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
39661         * doc/invoke.texi: Document -dumpfullversion.
39662         * doc/install.texi: Document --with-gcc-major-version-only.
39663         * configure: Regenerated.
39664
39665 2017-01-17  Richard Biener  <rguenther@suse.de>
39666
39667         PR tree-optimization/71433
39668         * tree-vrp.c (register_new_assert_for): Merge same asserts
39669         on all incoming edges.
39670         (process_assert_insertions_for): Handle insertions at the
39671         beginning of BBs.
39672
39673 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
39674
39675         * config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
39676         * config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
39677
39678 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
39679
39680         PR target/78633
39681         * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
39682         RTL sharing.
39683
39684 2017-01-17  Alan Modra  <amodra@gmail.com>
39685
39686         PR target/79066
39687         * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
39688         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
39689         symbolic stack limit when pic.
39690
39691 2017-01-16  Martin Sebor  <msebor@redhat.com>
39692
39693         PR tree-optimization/78608
39694         * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
39695
39696 2017-01-16  Jeff Law  <law@redhat.com>
39697
39698         Revert:
39699         2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
39700         * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
39701         for several include directories that may be relative to sysroot.
39702         * config/i386/x-mingw32 (gplus_includedir): Define.
39703         (gplus_tool_includedir, gplus_backward_include_dir): Likewise.
39704         (native_system_includedir): Likewise.
39705         * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
39706         override if TARGET_SYSTEM_ROOT is defined.
39707         (NATIVE_SYSTEM_HEADER_DIR): Likewise.
39708
39709         PR tree-optimization/79090
39710         PR tree-optimization/33562
39711         PR tree-optimization/61912
39712         PR tree-optimization/77485
39713         * tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
39714         and computed trims into the dump file.
39715
39716 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39717
39718         * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
39719
39720 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
39721
39722         PR c/79089
39723         * gimplify.c (gimplify_init_constructor): If want_value and
39724         object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
39725         fix.
39726
39727         PR target/79080
39728         * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
39729         sequence.  Formatting fixes.
39730         (doloop_optimize): Formatting fixes.
39731
39732         PR driver/49726
39733         * gcc.c (debug_level_greater_than_spec_func): New function.
39734         (static_spec_functions): Add debug-level-gt spec function.
39735         (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
39736         !g0.
39737         * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39738         * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39739         * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
39740         gpubnames, ggnu-pubnames, gno-record-gcc-switches,
39741         grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
39742         gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
39743
39744 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
39745
39746         * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
39747         QImode fixups to general and mask registers only.
39748
39749 2017-01-16  Carl Love  <cel@us.ibm.com>
39750
39751         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
39752         for built-in functions
39753         vector signed char vec_nabs (vector signed char)
39754         vector signed short vec_nabs (vector signed short)
39755         vector signed int vec_nabs (vector signed int)
39756         vector signed long long vec_nabs (vector signed long long)
39757         vector float vec_nabs (vector float)
39758         vector double vec_nabs (vector double)
39759         * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
39760         and NABS overload.
39761         * config/rs6000/altivec.md: New define_expand nabs<mode>2 types
39762         * config/rs6000/altivec.h: New define for vec_nabs built-in function.
39763         * doc/extend.texi: Update the documentation file for the new built-in
39764         functions.
39765
39766 2017-01-16  Martin Sebor  <msebor@redhat.com>
39767
39768         * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
39769         message.
39770
39771 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39772
39773         * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
39774         UNSPEC_VSX__XXSPLTD to require special splat handling.
39775
39776 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
39777
39778         PR bootstrap/78616
39779         * system.h: Poison strndup.
39780
39781 2017-01-16  Alan Modra  <amodra@gmail.com>
39782
39783         PR target/79098
39784         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
39785         use a switch.
39786
39787 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
39788
39789         * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
39790
39791 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
39792
39793         * config/i386/i386.c (ix86_legitimate_combined_insn): Do not
39794         call recog here.  Assert that INSN_CODE (insn) is non-negative.
39795
39796 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39797
39798         PR target/72749
39799         * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
39800         fallthrough.
39801         * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
39802         in the currently scheduled RTL fragment.
39803
39804 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39805
39806         PR rtl-optimization/78751
39807         * ifcvt.c (find_cond_trap): If we generated a non-existing insn,
39808         give up.
39809
39810 2017-01-14  Jeff Law  <law@redhat.com>
39811
39812         PR tree-optimization/79090
39813         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
39814         variable length stores.
39815         (compute_trims): Delete dead assignment to *trim_tail.
39816         (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
39817         zero length.
39818
39819 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
39820
39821         PR rtl-optimization/78626
39822         PR rtl-optimization/78727
39823         * cprop.c (one_cprop_pass): Collect unconditional traps in the middle
39824         of a block, and split such blocks after everything else is finished.
39825
39826 2017-01-14  Alan Modra  <amodra@gmail.com>
39827
39828         PR target/72749
39829         * combine.c (recog_for_combine_1): Set INSN_CODE before calling
39830         target legitimate_combined_insn.
39831         * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
39832         (rs6000_legitimate_combined_insn): New function.
39833         * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
39834         all uses.
39835         (ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
39836         (ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
39837         (ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
39838
39839 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
39840
39841         * doc/frontends.texi (G++ and GCC): Remove references to Java.
39842
39843 2017-01-13  Jeff Law  <law@redhat.com>
39844
39845         PR tree-optimization/33562
39846         PR tree-optimization/61912
39847         PR tree-optimization/77485
39848         * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
39849         a statement.
39850         (delete_dead_assignment): Likewise.
39851         (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
39852         statement to delete_dead_call and delete_dead_assignment.
39853
39854 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
39855
39856         PR c/78304
39857         * substring-locations.c (format_warning_va): Strengthen case 1 so
39858         that both endpoints of the substring must be within the format
39859         range for just the substring to be printed.
39860
39861 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
39862
39863         * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
39864         * config/i386/i386.c (ix86_target_string): Add missing options
39865         to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
39866         isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
39867         flags_other and ix86_target_other to flags2_other.  Display unknown
39868         isa2 options.
39869         (ix86_valid_target_attribute_inner_p): Add missing options and
39870         reorder options by implied ISAs, as in ix86_target_string.
39871
39872 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
39873
39874         * hash-table.h (hash_table::too_empty_p): New function.
39875         (hash_table::expand): Use it.
39876         (hash_table::traverse): Likewise.
39877         (hash_table::empty_slot): Use sizeof (value_type) instead of
39878         sizeof (PTR) to convert bytes to elements.  Shrink the table
39879         if the current size is excessive for the current number of
39880         elements.
39881
39882 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
39883
39884         * ira-costs.c (record_reg_classes): Break from the inner loop
39885         early once alt_fail is known to be true.  Update outer loop
39886         handling accordingly.
39887
39888 2017-01-13  Jeff Law  <law@redhat.com>
39889
39890         * tree-ssa-dse.c (decrement_count): New function.
39891         (increment_start_addr, maybe_trim_memstar_call): Likewise.
39892         (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
39893         when we know the partially dead statement is a mem* function.
39894
39895         PR tree-optimization/61912
39896         PR tree-optimization/77485
39897         * tree-ssa-dse.c: Include expr.h.
39898         (maybe_trim_constructor_store): New function.
39899         (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
39900
39901         PR tree-optimization/33562
39902         PR tree-optimization/61912
39903         PR tree-optimization/77485
39904         * doc/invoke.texi: Document new dse-max-object-size param.
39905         * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
39906         * tree-ssa-dse.c: Include params.h.
39907         (dse_store_status): New enum.
39908         (initialize_ao_ref_for_dse): New, partially extracted from
39909         dse_optimize_stmt.
39910         (valid_ao_ref_for_dse, normalize_ref): New.
39911         (setup_live_bytes_from_ref, compute_trims): Likewise.
39912         (clear_bytes_written_by, maybe_trim_complex_store): Likewise.
39913         (maybe_trim_partially_dead_store): Likewise.
39914         (maybe_trim_complex_store): Likewise.
39915         (dse_classify_store): Renamed from dse_possibly_dead_store_p.
39916         Track what bytes live from the original store.  Return tri-state
39917         for dead, partially dead or live.
39918         (dse_dom_walker): Add constructor, destructor and new private members.
39919         (delete_dead_call, delete_dead_assignment): New extracted from
39920         dse_optimize_stmt.
39921         (dse_optimize_stmt): Make a member of dse_dom_walker.
39922         Use initialize_ao_ref_for_dse.
39923
39924         PR tree-optimization/33562
39925         PR tree-optimization/61912
39926         PR tree-optimization/77485
39927         * sbitmap.h (bitmap_count_bits): Prototype.
39928         (bitmap_clear_range, bitmap_set_range): Likewise.
39929         * sbitmap.c (bitmap_clear_range): New function.
39930         (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
39931
39932 2017-01-13  Martin Liska  <mliska@suse.cz>
39933
39934         PR ipa/79043
39935         * function.c (set_cfun): Add new argument force.
39936         * function.h (set_cfun): Likewise.
39937         * ipa-inline-transform.c (inline_call): Use the function when
39938         strict alising from is dropped for function we inline to.
39939
39940 2017-01-13  Richard Biener  <rguenther@suse.de>
39941
39942         * tree-pretty-print.c (dump_generic_node): Fix inverted condition
39943         for dumping GIMPLE INTEGER_CSTs.
39944
39945 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
39946
39947         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
39948         to 201112L since C++17.
39949
39950 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
39951
39952         PR sanitizer/78887
39953         * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
39954         if -fsanitize=kernel-address is present.
39955
39956 2017-01-13  Richard Biener  <rguenther@suse.de>
39957
39958         * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
39959         as _Literal ( type ) number in case usual suffixes do not
39960         preserve all information.
39961
39962 2017-01-13  Richard Biener  <rguenther@suse.de>
39963
39964         PR tree-optimization/77283
39965         * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
39966         and ssa-iterators.h.
39967         (is_feasible_trace): Implement a cost model based on joiner
39968         PHI node uses.
39969
39970 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
39971
39972         PR target/79004
39973         * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
39974         char or short to __float128/_Float128 directly.
39975
39976 2017-01-12  Martin Sebor  <msebor@redhat.com>
39977
39978         to -Wformat-overflow.
39979         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
39980         (min_bytes_remaining): Same.
39981         (get_string_length): Same.
39982         (format_string): Same.
39983         (format_directive): Same.
39984         (add_bytes): Same.
39985         (pass_sprintf_length::handle_gimple_call): Same.
39986
39987 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
39988
39989         * gimple-ssa-sprintf.c (try_substitute_return_value): Remove
39990         info.nowrite calls with no lhs that can't throw.  Return bool
39991         whether gsi_remove has been called or not.
39992         (pass_sprintf_length::handle_gimple_call): Return bool whether
39993         try_substitute_return_value called gsi_remove.  Formatting fix.
39994         (pass_sprintf_length::execute): Don't use gsi_remove if
39995         handle_gimple_call returned true.
39996
39997         PR bootstrap/79069
39998         * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
39999         be removed due to side-effects, don't remove following barrier nor
40000         turn the successor edge into fallthru edge.
40001
40002 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40003
40004         PR target/79044
40005         * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
40006         element-reversing loads and stores as not swappable.
40007
40008 2017-01-12  Nathan Sidwell  <nathan@acm.org>
40009             Nicolai Stange  <nicstange@gmail.com>
40010
40011         * combine.c (try_combine): Don't ignore result of overlap checking
40012         loop.  Combine overlap & asm check into single loop.
40013
40014 2017-01-12  Richard Biener  <rguenther@suse.de>
40015
40016         * tree-pretty-print.c (dump_generic_node): Provide -gimple
40017         variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
40018
40019 2017-01-12  Richard Biener  <rguenther@suse.de>
40020
40021         * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
40022         and TS_TARGET_OPTION directly derive from TS_BASE.
40023         * tree-core.h (tree_optimization_option): Derive from tree_base.
40024         (tree_target_option): Likewise.
40025
40026 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
40027
40028         * config/i386/i386.c (memory_address_length): Increase len
40029         only when rip_relative_addr_p returns false.
40030
40031 2017-01-11  Julia Koval  <julia.koval@intel.com>
40032
40033         * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
40034         (OPTION_MASK_ISA_SGX_SET): New.
40035         (ix86_handle_option): Handle OPT_msgx.
40036         * config.gcc: Added sgxintrin.h.
40037         * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
40038         * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
40039         * config/i386/i386.c (ix86_target_string): Add -msgx.
40040         (PTA_SGX): New.
40041         (ix86_option_override_internal): Handle new options.
40042         (ix86_valid_target_attribute_inner_p): Add sgx.
40043         * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
40044         * config/i386/i386.opt: Add msgx.
40045         * config/i386/sgxintrin.h: New file.
40046         * config/i386/x86intrin.h: Add sgxintrin.h.
40047
40048 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40049
40050         PR c++/71537
40051         * fold-const.c (maybe_nonzero_address): Return 1 for function
40052         local objects.
40053         (tree_single_nonzero_warnv_p): Don't handle function local objects
40054         here.
40055
40056         PR c++/72813
40057         * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
40058         of c-header.
40059
40060 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
40061
40062         PR driver/78877
40063         * opts.c: Include "spellcheck.h"
40064         (struct string_fragment): New struct.
40065         (struct edit_distance_traits<const string_fragment &>): New
40066         struct.
40067         (get_closest_sanitizer_option): New function.
40068         (parse_sanitizer_options): Offer suggestions for unrecognized arguments.
40069
40070 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40071
40072         * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
40073         by 12.
40074         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
40075         DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
40076         (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
40077         (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
40078         for initial die_offset if dwarf_split_debug_info.
40079         (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
40080         initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
40081         fields.
40082         (output_skeleton_debug_sections): Formatting fix.  Use
40083         DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
40084         DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
40085
40086 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
40087
40088         * config/arm/cortex-a53.md: Add bypasses for
40089         cortex_a53_r2f_cvt.
40090         (cortex_a53_r2f): Only use for transfers.
40091         (cortex_a53_f2r): Likewise.
40092         (cortex_a53_r2f_cvt): Add reservation for conversions.
40093         (cortex_a53_f2r_cvt): Likewise.
40094
40095 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
40096
40097         * config/arm/arm_neon.h: Add __artificial__ and gnu_inline
40098         to all inlined functions, change static to extern.
40099
40100 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
40101
40102         PR target/78253
40103         * config/arm/arm.c (legitimize_pic_address): Handle reference to
40104         weak symbol.
40105         (arm_assemble_integer): Likewise.
40106
40107 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
40108
40109         * config.gcc: Use new awk script to check CPU, FPU and architecture
40110         parameters for --with-... options.
40111         * config/arm/parsecpu.awk: New file
40112         * config/arm/arm-cpus.in: New file.
40113         * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
40114         files.
40115         * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
40116         files.
40117         * config/arm/t-arm: Update dependency rules.
40118         * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
40119         of processing .def files.
40120         * config/arm/genopt.sh: Deleted.
40121         * config/arm/gentune.sh: Deleted.
40122         * config/arm/arm-cores.def: Deleted.
40123         * config/arm/arm-arches.def: Deleted.
40124         * config/arm/arm-fpus.def: Deleted.
40125         * config/arm/arm-tune.md: Regenerated.
40126         * config/arm/arm-tables.opt: Regenerated.
40127         * config/arm/arm-cpu.h: New generated file.
40128         * config/arm/arm-cpu-data.h: New generated file.
40129         * config/arm/arm-cpu-cdata.h: New generated file.
40130
40131 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
40132
40133         PR lto/79042
40134         * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
40135         bit.
40136         (input_varpool_node): Unpack dynamically_initialized bit.
40137
40138 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
40139
40140         PR rtl-optimization/79032
40141         * lra-constraints.c (simplify_operand_subreg): In the MEM case, test
40142         the alignment of the adjusted memory reference against that of MODE,
40143         instead of the alignment of the original memory reference.
40144
40145 2017-01-11  Martin Jambor  <mjambor@suse.cz>
40146
40147         * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
40148         test.
40149         * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
40150         decorated functions.
40151
40152 2017-01-11  Richard Biener  <rguenther@suse.de>
40153
40154         * tree-vrp.c (evrp_dom_walker::before_dom_children): Also
40155         set range/nonnull info for PHI results.  Do not set it on
40156         stmts marked for removal.
40157
40158 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
40159
40160         * expr.c (store_field): In the bitfield case, fetch the return value
40161         from the registers before applying a single big-endian adjustment.
40162         Always do a final load for a BLKmode value not larger than a word.
40163
40164 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
40165
40166         PR c++/77949
40167         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40168         that we correctly handle column numbers greater than
40169         LINE_MAP_MAX_COLUMN_NUMBER.
40170
40171 2017-01-10  Martin Sebor  <msebor@redhat.com>
40172
40173         PR middle-end/78245
40174         * gimple-ssa-sprintf.c (get_destination_size): Call
40175         {init,fini}object_sizes.
40176         * tree-object-size.c (addr_object_size): Adjust.
40177         (pass_through_call): Adjust.
40178         (pass_object_sizes::execute): Adjust.
40179         * tree-object-size.h (fini_object_sizes): Declare.
40180
40181 2017-01-10  Martin Sebor  <msebor@redhat.com>
40182
40183         PR tree-optimization/78775
40184         * builtins.c (get_size_range): Move...
40185         * calls.c: ...to here.
40186         (alloc_max_size): Accept zero argument.
40187         (operand_signed_p): Remove.
40188         (maybe_warn_alloc_args_overflow): Call get_size_range.
40189         * calls.h (get_size_range): Declare.
40190
40191 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
40192
40193         * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
40194         from TI's devices.csv file as of September 2016.
40195         * config/msp430/msp430.c (msp430_mcu_data): Likewise.
40196
40197 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
40198
40199         * doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
40200         * doc/invoke.texi: Likewise.
40201         * doc/md.texi: Likewise.
40202         * doc/objc.texi: Likewise.
40203
40204 2017-01-10  Joshua Conner  <joshconner@google.com>
40205
40206         * config/arm/fuchsia-elf.h: New file.
40207         * config/fuchsia.h: New file.
40208         * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
40209         (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
40210         targets.
40211         * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
40212
40213 2016-01-10  Richard Biener  <rguenther@suse.de>
40214
40215         PR tree-optimization/79034
40216         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
40217         Propagate out degenerate PHIs in the joiner.
40218
40219 2017-01-10  Martin Liska  <mliska@suse.cz>
40220
40221         * ipa-icf.c (sort_sem_items_by_decl_uid): New function.
40222         (sort_congruence_classes_by_decl_uid): Likewise.
40223         (sort_congruence_class_groups_by_decl_uid): Likewise.
40224         (sem_item_optimizer::merge_classes): Sort class, groups in these
40225         classes and members in the groups by DECL_UID of declarations.
40226         This would make merge operations stable.
40227
40228 2017-01-10  Martin Liska  <mliska@suse.cz>
40229
40230         * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
40231         usage of m_classes_vec.
40232         (sem_item_optimizer::~sem_item_optimizer):  Likewise.
40233         (sem_item_optimizer::get_group_by_hash): Likewise.
40234         (sem_item_optimizer::subdivide_classes_by_equality): Likewise.
40235         (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
40236         (sem_item_optimizer::verify_classes): Likewise.
40237         (sem_item_optimizer::process_cong_reduction): Likewise.
40238         (sem_item_optimizer::dump_cong_classes): Likewise.
40239         (sem_item_optimizer::merge_classes): Likewise.
40240         * ipa-icf.h (congruence_class_hash): Rename from
40241         congruence_class_group_hash.  Remove declaration of m_classes_vec.
40242
40243 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
40244
40245         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
40246         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
40247         * config.gcc: Add avx512vpopcntdqintrin.h.
40248         * config/i386/avx512vpopcntdqintrin.h: New.
40249         * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
40250         * config/i386/i386-builtin-types.def: Add new types.
40251         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
40252         __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
40253         __builtin_ia32_vpopcountq_v8di_mask): New.
40254         * config/i386/i386-c.c (ix86_target_macros_internal): Define
40255         __AVX512VPOPCNTDQ__.
40256         * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
40257         (PTA_AVX512VPOPCNTDQ): Define.
40258         * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
40259         TARGET_AVX512VPOPCNTDQ_P): Define.
40260         * config/i386/i386.opt: Add mavx512vpopcntdq.
40261         * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
40262         * config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
40263
40264 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40265
40266         PR middle-end/77484
40267         * predict.def (PRED_CALL): Set to 67.
40268
40269 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
40270
40271         * expr.c (store_field): In the bitfield case, if the value comes from
40272         a function call and is of an aggregate type returned in registers, do
40273         not modify the field mode; extract the value in all cases if the mode
40274         is BLKmode and the size is not larger than a word.
40275
40276 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
40277
40278         PR target/71017
40279         * config/i386/cpuid.h: Fix undefined behavior.
40280
40281 2017-01-04  Jeff Law  <law@redhat.com>
40282
40283         PR tree-optimization/79007
40284         PR tree-optimization/67955
40285         * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
40286         conservative for pt.null when flag_non_call_exceptions is on.
40287
40288 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40289
40290         PR translation/79019
40291         PR translation/79020
40292         * params.def (PARAM_INLINE_MIN_SPEEDUP,
40293         PARAM_IPA_CP_SINGLE_CALL_PENALTY,
40294         PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
40295         in descriptions.
40296         * config/avr/avr.opt (maccumulate-args): Likewise.
40297         * config/msp430/msp430.opt (mwarn-mcu): Likewise.
40298         * common.opt (freport-bug): Likewise.
40299         * cif-code.def (CIF_FINAL_ERROR): Likewise.
40300         * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
40301         * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
40302         translatable string.
40303         * config/i386/i386.c (function_value_32): Likewise.
40304         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
40305         * config/msp430/msp430.c (msp430_option_override, msp430_attr):
40306         Likewise.
40307         * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
40308         * common/config/msp430/msp430-common.c (msp430_handle_option):
40309         Likewise.
40310         * symtab.c (symtab_node::verify_base): Likewise.
40311         * opts.c (set_debug_level): Likewise.
40312         * tree.c (verify_type_variant): Likewise.  Fix typo in comment.
40313         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
40314         missing whitespace to translatable strings.
40315         * config/avr/avr.md (bswapsi2): Fix typo in comment.
40316         * config/sh/superh.h: Likewise.
40317         * config/i386/xopintrin.h: Likewise.
40318         * config/i386/znver1.md: Likewise.
40319         * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
40320         * ipa-inline-analysis.c (compute_inline_parameters): Likewise.
40321         * double-int.h (struct double_int): Likewise.
40322         * double-int.c (div_and_round_double): Likewise.
40323         * wide-int.cc: Likewise.
40324         * tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
40325         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
40326         * cfgcleanup.c (crossjumps_occured): Renamed to ...
40327         (crossjumps_occurred): ... this.
40328         (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
40329         Adjust all uses.
40330
40331         PR tree-optimization/78899
40332         * tree-if-conv.c (version_loop_for_if_conversion): Instead of
40333         returning bool return struct loop *, NULL for failure and the new
40334         loop on success.
40335         (versionable_outer_loop_p): Don't version outer loop if it has
40336         dont_vectorized bit set.
40337         (tree_if_conversion): When versioning outer loop, ensure
40338         tree_if_conversion is performed also on the inner loop of the
40339         non-vectorizable outer loop copy.
40340         * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
40341         LOOP_VECTORIZED in inner loop of the scalar outer loop and
40342         prevent vectorization of it.
40343         (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
40344         the outer loop vectorization of the non-scalar version is attempted
40345         before vectorization of the inner loop in scalar version.  If
40346         outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
40347         vectorization of its inner loop.
40348         * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
40349         has 2 inner loops, rename also on edges from bb whose single pred
40350         is outer_loop->header.  Fix typo in function comment.
40351
40352 2017-01-09  Martin Sebor  <msebor@redhat.com>
40353
40354         PR bootstrap/79033
40355         * asan.c (asan_emit_stack_protection): Increase local buffer size
40356         to avoid snprintf truncation warning.
40357
40358 2017-01-09  Andrew Pinski  <apinski@cavium.com>
40359
40360         * config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
40361         to reference thunderx2t99 for the tuning structure
40362         * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
40363         Rename to ...
40364         (thunderx2t99_extra_costs): This.
40365         * config/aarch64/aarch64-tune.md: Regenerate.
40366         * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
40367         (vulcan_addrcost_table): This.
40368         (vulcan_regmove_cost): Rename to ...
40369         (thunderx2t99_regmove_cost): This.
40370         (vulcan_vector_cost): Rename to ...
40371         (thunderx2t99_vector_cost): this.
40372         (vulcan_branch_cost): Rename to ...
40373         (thunderx2t99_branch_cost): This.
40374         (vulcan_tunings): Rename to ...
40375         (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
40376         * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
40377
40378 2017-01-09  Martin Jambor  <mjambor@suse.cz>
40379
40380         PR ipa/78365
40381         PR ipa/78599
40382         * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
40383         * ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
40384         (propagate_vr_accross_jump_function): Use the above function for all
40385         value range computations for pass-through jump functions and type
40386         converasion from explicit value range values.
40387         (ipcp_propagate_stage): Do not attempt to deduce types of formal
40388         parameters from TYPE_ARG_TYPES.
40389         * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
40390         (ipa_write_node_info): Stream type of the actual argument.
40391         (ipa_read_node_info): Likewise. Also remove trailing whitespace.
40392
40393 2017-01-09  Martin Liska  <mliska@suse.cz>
40394
40395         PR pch/78970
40396         * gcc.c (driver_handle_option): Handle OPT_E and set have_E.
40397         (lookup_compiler): Do not show error message with have_E.
40398
40399 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40400
40401         PR tree-optimization/78938
40402         * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
40403         where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
40404         BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
40405         {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
40406         fixes.
40407
40408 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40409
40410         * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
40411         is const0_rtx.
40412
40413 2017-01-09  Richard Biener  <rguenther@suse.de>
40414
40415         PR tree-optimization/78997
40416         * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
40417         name condition properly.
40418
40419 2017-01-09  Richard Biener  <rguenther@suse.de>
40420
40421         PR debug/79000
40422         * dwarf2out.c (is_cxx): New overload with context.
40423         (is_naming_typedef_decl): Use it.
40424
40425 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40426
40427         * invoke.texi (Option Summary): Correct spacing in option lists
40428         and add line breaks to fix over-long lines.
40429
40430 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40431
40432         PR middle-end/17660
40433
40434         * extend.texi (Common Variable Attributes): Add xref to GCC
40435         Internals manual to explain mode attribute keywords.
40436
40437 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40438
40439         PR other/16519
40440         * doc/invoke.texi (Option Summary): Move -pthread to Linker Options
40441         and Preprocessor Options.
40442         (Options for Linking): Document -pthread here....
40443         (RS/6000 and PowerPC Options): ...not here.
40444         (Solaris 2 Options): ...or here.
40445         * doc/cppopts.texi: Document -pthread.
40446
40447 2017-01-08  Martin Sebor  <msebor@redhat.com>
40448
40449         PR middle-end/77708
40450         * doc/invoke.texi (Warning Options): Document -Wformat-truncation.
40451         * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
40452         New member functions.
40453         (format_directive): Used them.
40454         (add_bytes): Same.
40455         (pass_sprintf_length::handle_gimple_call): Same.
40456         * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
40457         to avoid truncation for any argument.
40458         (extract_affine_mul): Same.
40459         * tree.c (get_file_function_name): Same.
40460
40461 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40462
40463         PR middle-end/77484
40464         * predict.def (PRED_INDIR_CALL): Set to 86.
40465
40466 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40467
40468         PR preprocessor/54124
40469         * doc/cppopts.texi: Reformat -d subtable to list the full name
40470         of the options.  Add cross-reference to the docs for the general
40471         compiler -d options.
40472         * doc/invoke.texi (Developer Options): Add cross-reference to the
40473         preprocessor-specific -d option documentation.
40474
40475 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40476
40477         PR preprocessor/13498
40478         * doc/cpp.texi (Search Path): Rewrite to remove obsolete and
40479         redudant material, and reflect new command-line options.
40480         (System Headers): Likewise.
40481
40482 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40483
40484         * doc/cppdiropts.texi: Merge documentation of -I, -iquote,
40485         -isystem, and -idirafter.  Copy-edit.
40486         * doc/cppopts.texi: Copy-edit.  Remove contradiction about
40487         default for -ftrack-macro-expansion.  Delete obsolete and
40488         badly-formatted implementation details about -fdebug-cpp output.
40489         * doc/cppwarnopts.texi: Copy-edit.
40490
40491 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
40492
40493         PR c++/72803
40494         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40495         that the transition from a max line width >= 1<<10 to narrower
40496         lines works correctly.
40497
40498 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
40499
40500         * doc/options.texi (PerFunction): New.
40501         * opt-functions.awk (switch_flags): Map both Optimization and
40502         PerFunction to CL_OPTIMIZATION.
40503         * opth-gen.awk: Test for PerFunction flag along with
40504         Optimization.
40505         * optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
40506         it only when the latter is present.  Skip those that don't in
40507         the hash function generator.
40508         * common.opt (fvar-tracking): Mark as PerFunction instead of
40509         Optimization.
40510         (fvar-tracking-assignments): Likewise.
40511         (fvar-tracking-assignments-toggle): Likewise.
40512         (fvar-tracking-uninit): Likewise.
40513
40514 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
40515
40516         PR translation/79018
40517         * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
40518         the and store.
40519
40520 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
40521
40522         PR target/57583
40523         * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
40524         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
40525         TARGET_LONG_JUMP_TABLE_OFFSETS.
40526         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
40527         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
40528         * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
40529         (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
40530         * config/m68k/m68k.md (tablejump expander): Likewise.
40531         (*tablejump_pcrel_hi): Renamed from unnamed insn, reject
40532         TARGET_LONG_JUMP_TABLE_OFFSETS.
40533         (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
40534         * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
40535
40536 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
40537             David Holsgrove <david.holsgrove@xilinx.com>
40538
40539         * common/config/microblaze/microblaze-common.c
40540         (TARGET_EXCEPT_UNWIND_INFO): Remove.
40541         * config/microblaze/microblaze-protos.h (microblaze_eh_return):
40542         New prototype.
40543         * config/microblaze/microblaze.c (microblaze_must_save_register)
40544         (microblaze_expand_epilogue, microblaze_return_addr): Handle
40545         calls_eh_return.
40546         (microblaze_eh_return): New function.
40547         * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
40548         (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
40549         (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
40550         * config/microblaze/microblaze.md (eh_return): New pattern.
40551
40552 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
40553
40554         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
40555         GCC_DIAGNOSTIC_STRINGIFY): Define.
40556
40557         * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
40558
40559 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40560
40561         * config/arm/arm.md (<mcrr>): New.
40562         (<mrrc>): New.
40563         * config/arm/arm.c (arm_arch5te): New.
40564         (arm_option_override): Set arm_arch5te.
40565         (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
40566         and mrrc2.
40567         * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
40568         (arm_mcrr_qualifiers): ... this. New.
40569         (MRRC_QUALIFIERS): Define to...
40570         (arm_mrrc_qualifiers): ... this. New.
40571         * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
40572         __arm_mrrc2): New.
40573         * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
40574         * config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
40575         (MRRCI, mrrc, MRRC): New.
40576         * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
40577         VUNSPEC_MRRC2): New.
40578
40579 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40580
40581         * config/arm/arm.md (<mcr>): New.
40582         (<mrc>): New.
40583         * config/arm/arm.c (arm_coproc_builtin_available): Add
40584         support for mcr, mrc, mcr2 and mrc2.
40585         * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
40586         (arm_mcr_qualifiers): ... this. New.
40587         (MRC_QUALIFIERS): Define to ...
40588         (arm_mrc_qualifiers): ... this. New.
40589         (MCR_QUALIFIERS): Define to ...
40590         (arm_mcr_qualifiers): ... this. New.
40591         * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
40592         __arm_mrc2): New.
40593         * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
40594         * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
40595         * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
40596         VUNSPEC_MRC2): New.
40597
40598 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40599
40600         * config/arm/arm.md (*ldc): New.
40601         (*stc): New.
40602         (<ldc>): New.
40603         (<stc>): New.
40604         * config/arm/arm.c (arm_coproc_builtin_available): Add
40605         support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
40606         (arm_coproc_ldc_stc_legitimate_address): New.
40607         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
40608         'qualifier_const_pointer'.
40609         (LDC_QUALIFIERS): Define to...
40610         (arm_ldc_qualifiers): ... this. New.
40611         (STC_QUALIFIERS): Define to...
40612         (arm_stc_qualifiers): ... this. New.
40613         * config/arm/arm-protos.h
40614         (arm_coproc_ldc_stc_legitimate_address): New.
40615         * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
40616         __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
40617         * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
40618         stc2, stcl, stc2l): New.
40619         * config/arm/constraints.md (Uz): New.
40620         * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
40621         * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
40622         VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
40623         VUNSPEC_STC2L): New.
40624
40625 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40626
40627         * config/arm/arm.md (<cdp>): New.
40628         * config/arm/arm.c (neon_const_bounds): Rename this ...
40629         (arm_const_bounds): ... this.
40630         (arm_coproc_builtin_available): New.
40631         * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
40632         (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
40633         (CDP_QUALIFIERS): Define to...
40634         (arm_cdp_qualifiers): ... this. New.
40635         (void_UP): Define.
40636         (arm_expand_builtin_args): Add case for 6 arguments.
40637         * config/arm/arm-protos.h (neon_const_bounds): Rename this ...
40638         (arm_const_bounds): ... this.
40639         (arm_coproc_builtin_available): New.
40640         * config/arm/arm_acle.h (__arm_cdp): New.
40641         (__arm_cdp2): New.
40642         * config/arm/arm_acle_builtins.def (cdp): New.
40643         (cdp2): New.
40644         * config/arm/iterators.md (CDPI,CDP,cdp): New.
40645         * config/arm/neon.md: Rename all 'neon_const_bounds' to
40646         'arm_const_bounds'.
40647         * config/arm/types.md (coproc): New.
40648         * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
40649         * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
40650         * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
40651         arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
40652
40653 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40654
40655         * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
40656         (UBINOP_QUALIFIERS): New.
40657         (si_UP): Define.
40658         (acle_builtin_data): New. Change comment.
40659         (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
40660         ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
40661         ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
40662         arm_acle_builtins.def.
40663         (ARM_BUILTIN_ACLE_PATTERN_START): Define.
40664         (arm_init_acle_builtins): New.
40665         (CRC32_BUILTIN): Remove.
40666         (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
40667         crc32cb, crc32ch and crc32cw.
40668         (arm_init_crc32_builtins): Remove.
40669         (arm_init_builtins): Use arm_init_acle_builtins rather
40670         than arm_init_crc32_builtins.
40671         (arm_expand_acle_builtin): New.
40672         (arm_expand_builtin): Use 'arm_expand_acle_builtin'.
40673         * config/arm/arm_acle_builtins.def: New.
40674
40675 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40676
40677         * config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
40678         (arm_builtin_datum): ... this.
40679         (arm_init_neon_builtin): Rename to ...
40680         (arm_init_builtin): ... this. Add a new parameters PREFIX
40681         and USE_SIG_IN_NAME.
40682         (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
40683         'arm_init_builtin'. Replace type 'neon_builtin_datum' with
40684         'arm_builtin_datum'.
40685         (arm_init_vfp_builtins): Likewise.
40686         (builtin_arg): Rename enum's replacing 'NEON_ARG' with
40687         'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
40688         (arm_expand_neon_args): Rename to ...
40689         (arm_expand_builtin_args): ... this. Rename builtin_arg
40690         enum values and differentiate between ARG_BUILTIN_MEMORY
40691         and ARG_BUILTIN_NEON_MEMORY.
40692         (arm_expand_neon_builtin_1): Rename to ...
40693         (arm_expand_builtin_1): ... this. Rename builtin_arg enum
40694         values, arm_expand_builtin_args and add bool parameter NEON.
40695         (arm_expand_neon_builtin): Use arm_expand_builtin_1.
40696         (arm_expand_vfp_builtin): Likewise.
40697         (NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
40698
40699 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40700
40701         PR middle-end/77484
40702         * predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
40703         * predict.c (tree_estimate_probability_bb): Reverse direction of
40704         polymorphic call predictor.
40705
40706 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
40707
40708         * passes.c (execute_one_pass): Split out pass-skipping logic into...
40709         (determine_pass_name_match): ...this new function and...
40710         (should_skip_pass_p): ...this new function.
40711
40712 2017-01-06  Nathan Sidwell  <nathan@acm.org>
40713
40714         * ipa-visibility.c (function_and_variable_visibility): Reformat
40715         comments and long lines.  Remove extrneous if.
40716         * symtab.c (symtab_node::make_decl_local): Fix code format.
40717         (symtab_node::set_section_for_node): Fix comment typo.
40718
40719 2017-01-06  Martin Liska  <mliska@suse.cz>
40720
40721         PR bootstrap/79003
40722         * lra-constraints.c: Rename invariant to lra_invariant.
40723         * predict.c (set_even_probabilities): Initialize e to NULL.
40724
40725 2017-01-05  Martin Sebor  <msebor@redhat.com>
40726
40727         PR tree-optimization/78910
40728         * gimple-ssa-sprintf.c (tree_digits): Add an argument.
40729         (format_integer): Correct off-by-one error in the handling
40730         of precision with negative numbers in signed conversions..
40731
40732 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
40733
40734         * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
40735
40736 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
40737
40738         PR tree-optimization/71016
40739         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
40740         factor_out_conditional_conversion.  Formatting fix.
40741         (factor_out_conditional_conversion): Add cond_stmt argument.
40742         If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
40743         cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
40744         Formatting fix.
40745
40746 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
40747
40748         * Makefile.in (OBJS): Add read-md.o, read-rtl.o,
40749         read-rtl-function.o, and selftest-rtl.o.
40750         * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
40751         (selftest::aarch64_test_loading_full_dump): New function.
40752         (selftest::aarch64_run_selftests): New function.
40753         (TARGET_RUN_TARGET_SELFTESTS): Wire it up to
40754         selftest::aarch64_run_selftests.
40755         * config/i386/i386.c
40756         (selftest::ix86_test_loading_dump_fragment_1): New function.
40757         (selftest::ix86_test_loading_call_insn): New function.
40758         (selftest::ix86_test_loading_full_dump): New function.
40759         (selftest::ix86_test_loading_unspec): New function.
40760         (selftest::ix86_run_selftests): Call the new functions.
40761         * emit-rtl.c (maybe_set_max_label_num): New function.
40762         * emit-rtl.h (maybe_set_max_label_num): New decl.
40763         * function.c (instantiate_decls): Guard call to
40764         instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
40765         * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
40766         "static".
40767         * gensupport.c (gen_reader::gen_reader): Pass "false"
40768         for new "compact" param of rtx_reader.
40769         * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
40770         rather than an empty string for NULL strings.
40771         * read-md.c: Potentially include config.h rather than bconfig.h.
40772         Wrap include of errors.h with #ifdef GENERATOR_FILE.
40773         (have_error): New global, copied from errors.c.
40774         (md_reader::read_name): Rename to...
40775         (md_reader::read_name_1): ...this, adding "out_loc" param,
40776         and converting "missing name or number" to returning false, rather
40777         than failing.
40778         (md_reader::read_name): Reimplement in terms of read_name_1.
40779         (md_reader::read_name_or_nil): New function.
40780         (md_reader::read_string): Handle "(nil)" by returning NULL.
40781         (md_reader::md_reader): Add new param "compact".
40782         (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
40783         (md_reader::read_file): New method.
40784         * read-md.h (md_reader::md_reader): Add new param "compact".
40785         (md_reader::read_file): New method.
40786         (md_reader::is_compact): New accessor.
40787         (md_reader::read_name): Convert return type from void to file_location.
40788         (md_reader::read_name_or_nil): New decl.
40789         (md_reader::read_name_1): New decl.
40790         (md_reader::m_compact): New field.
40791         (noop_reader::noop_reader): Pass "false" for new "compact" param
40792         of rtx_reader.
40793         (rtx_reader::rtx_reader): Add new "compact" param.
40794         (rtx_reader::read_rtx_operand): Make virtual and convert return
40795         type from void to rtx.
40796         (rtx_reader::read_until): New decl.
40797         (rtx_reader::handle_any_trailing_information): New virtual function.
40798         (rtx_reader::postprocess): New virtual function.
40799         (rtx_reader::finalize_string): New virtual function.
40800         (rtx_reader::m_in_call_function_usage): New field.
40801         (rtx_reader::m_reuse_rtx_by_id): New field.
40802         * read-rtl-function.c: New file.
40803         * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
40804         * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
40805         (selftest::verify_three_block_rtl_cfg): New decl.
40806         * read-rtl-function.h: New file.
40807         * read-rtl.c: Potentially include config.h rather than bconfig.h.
40808         For host, include function.h, memmodel.h, and emit-rtl.h.
40809         (one_time_initialization): New function.
40810         (struct compact_insn_name): New struct.
40811         (compact_insn_names): New array.
40812         (find_code): Handle insn codes in compact dumps.
40813         (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
40814         (bind_subst_iter_and_attr): Likewise.
40815         (add_condition_to_string): Likewise.
40816         (add_condition_to_rtx): Likewise.
40817         (apply_attribute_uses): Likewise.
40818         (add_current_iterators): Likewise.
40819         (apply_iterators): Likewise.
40820         (initialize_iterators): Guard usage of apply_subst_iterator with
40821         #ifdef GENERATOR_FILE.
40822         (read_conditions): Wrap with #ifdef GENERATOR_FILE.
40823         (md_reader::read_mapping): Likewise.
40824         (add_define_attr_for_define_subst): Likewise.
40825         (add_define_subst_attr): Likewise.
40826         (read_subst_mapping): Likewise.
40827         (check_code_iterator): Likewise.
40828         (rtx_reader::read_rtx): Likewise.  Move one-time initialization
40829         logic to...
40830         (one_time_initialization): New function.
40831         (rtx_reader::read_until): New method.
40832         (read_flags): New function.
40833         (parse_reg_note_name): New function.
40834         (rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
40835         Handle reuse_rtx ids.
40836         Wrap iterator lookup within #ifdef GENERATOR_FILE.
40837         Add parsing support for RTL dumps, mirroring the special-cases in
40838         print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
40839         values, and calling handle_any_trailing_information.
40840         (rtx_reader::read_rtx_operand): Convert return type from void
40841         to rtx, returning return_rtx.  Handle case 'e'.  Call
40842         finalize_string on XSTR and XTMPL fields.
40843         (rtx_reader::read_nested_rtx):  Handle dumps in which trailing
40844          "(nil)" values were omitted.  Call the postprocess vfunc on the
40845         return_rtx.
40846         (rtx_reader::rtx_reader): Add new "compact" param and pass to base
40847         class ctor.  Initialize m_in_call_function_usage.  Call
40848         one_time_initialization.
40849         * rtl-tests.c (selftest::test_uncond_jump): Call
40850         set_new_first_and_last_insn.
40851         * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
40852         * selftest-rtl.c: New file.
40853         * selftest-rtl.h (class selftest::rtl_dump_test): New class.
40854         (selftest::get_insn_by_uid): New decl.
40855         * selftest-run-tests.c (selftest::run_tests): Call
40856         read_rtl_function_c_tests.
40857         * selftest.h  (selftest::read_rtl_function_c_tests): New decl.
40858         * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
40859         dumps.
40860
40861 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
40862
40863         * config/i386/i386.md (*testqi_ext_3): No need to handle memory
40864         operands in a special way.  Assert that pos+len <= mode precision.
40865
40866 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
40867
40868         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
40869         3 argument Alias with unlimited for the negative form.
40870         (fno-vect-cost-model): Removed.
40871
40872 2017-01-05  Martin Liska  <mliska@suse.cz>
40873
40874         * hsa-gen.c (gen_hsa_divmod): New function.
40875         (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
40876
40877 2017-01-05  Martin Liska  <mliska@suse.cz>
40878
40879         PR pch/78970
40880         * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
40881         header.
40882
40883 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
40884
40885         * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
40886         small constant length operands.
40887
40888 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
40889
40890         * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
40891         between loop iterations.
40892
40893 2017-01-05  Martin Liska  <mliska@suse.cz>
40894
40895         PR sanitizer/78815
40896         * gimplify.c (gimplify_decl_expr): Compare to
40897         asan_poisoned_variables instread of checking flags.
40898         (gimplify_target_expr): Likewise.
40899         (gimplify_expr): Likewise.
40900         (gimplify_function_tree): Conditionally initialize
40901         asan_poisoned_variables.
40902
40903 2017-01-04  Jeff Law  <law@redhat.com>
40904
40905         PR tree-optimizatin/78812
40906         * rtl.h (contains_mem_rtx_p): Prototype.
40907         * ifcvt.c (containts_mem_rtx_p): Move from here to...
40908         * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
40909         * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
40910         and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
40911         through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
40912
40913 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40914
40915         * input.c (assert_char_at_range): Default-initialize actual_range.
40916
40917 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40918
40919         * df-scan.c (df_ref_create_structure): Make regno unsigned,
40920         to match the caller.
40921
40922 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40923
40924         * cfgexpand.c (expand_gimple_basic_block): Disregard debug
40925         insns after final jump in test to emit dummy move.
40926
40927 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40928
40929         * gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
40930         * tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
40931
40932 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40933
40934         * multiple_target.c (create_dispatcher_calls): Init e_next.
40935         * tree-ssa-loop-split.c (split_loop): Init border.
40936         * tree-vect-loop.c (vect_determine_vectorization_factor): Init
40937         scalar_type.
40938
40939 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
40940
40941         PR target/71977
40942         PR target/70568
40943         PR target/78823
40944         * config/rs6000/predicates.md (sf_subreg_operand): New predicate.
40945         (altivec_register_operand): Do not return true if the operand
40946         contains a SUBREG mixing SImode and SFmode.
40947         (vsx_register_operand): Likewise.
40948         (vsx_reg_sfsubreg_ok): New predicate.
40949         (vfloat_operand): Do not return true if the operand contains a
40950         SUBREG mixing SImode and SFmode.
40951         (vint_operand): Likewise.
40952         (vlogical_operand): Likewise.
40953         (gpc_reg_operand): Likewise.
40954         (int_reg_operand): Likewise.
40955         * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
40956         * config/rs6000/rs6000.c (valid_sf_si_move): New function to
40957         determine if a MOVSI or MOVSF operation contains SUBREGs that mix
40958         SImode and SFmode.
40959         (rs6000_emit_move_si_sf_subreg): New helper function.
40960         (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
40961         fixup SUBREGs involving SImode and SFmode.
40962         * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
40963         numbers for the new peephole2 optimization.
40964         (peephole2 for SFmode unions): New peephole2 to optimize cases in
40965         the GLIBC math library that do AND/IOR/XOR operations on single
40966         precision floating point.
40967         * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
40968         target macros to say whether we need to avoid SUBREGs mixing
40969         SImode and SFmode.
40970         (TARGET_ALLOW_SF_SUBREG): Likewise.
40971         * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
40972         (UNSPEC_SI_FROM_SF): Likewise.
40973         (iorxor): Change spacing.
40974         (and_ior_xor): New iterator for AND, IOR, and XOR.
40975         (movsi_from_sf): New insns for SImode/SFmode SUBREG support.
40976         (movdi_from_sf_zero_ext): Likewise.
40977         (mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
40978         instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
40979         (movsf_from_si): New insn for SImode/SFmode SUBREG support.
40980         (fma<mode>4): Use gpc_reg_operand instead of register_operand.
40981         (fms<mode>4): Likewise.
40982         (fnma<mode>4): Likewise.
40983         (fnms<mode>4): Likewise.
40984         (nfma<mode>4): Likewise.
40985         (nfms<mode>4): Likewise.
40986
40987 2017-01-04  Marek Polacek  <polacek@redhat.com>
40988
40989         PR c++/64767
40990         * doc/invoke.texi: Document -Wpointer-compare.
40991
40992 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
40993
40994         * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
40995         RejectNegative.
40996
40997         * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
40998         descriptions for -gdwarf-5 and emit them as uleb128 instead of
40999         2-byte data.
41000
41001 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
41002
41003         PR target/78056
41004         * doc/sourcebuild.texi (PowerPC-specific attributes): Add
41005         documentation of the powerpc_popcntb_ok attribute.
41006         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
41007         code to issue warning messages if a requested CPU configuration is
41008         not supported by the binary (assembler and loader) toolchain.
41009         (spe_init_builtins): Add two assertions to prevent ICE if attempt is
41010         made to define a built-in function that has been disabled.
41011         (paired_init_builtins): Add assertion to prevent ICE if attempt is
41012         made to define a built-in function that has been disabled.
41013         (altivec_init_builtins): Add comment explaining why definition
41014         of the DST built-in functions is not preceded by an assertion
41015         check.  Add assertions to prevent ICE if attempts are made to
41016         define an altivec predicate or an abs* built-in function that has
41017         been disabled.
41018         (htm_init_builtins): Add comment explaining why definition of the
41019         htm built-in functions is not preceded by an assertion check.
41020
41021 2017-01-04  Jeff Law  <law@redhat.com>
41022
41023         PR tree-optimizatin/67955
41024         * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
41025         Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
41026         the points-to solution does not include pt_null.  Use DECL_PT_UID
41027         unconditionally.
41028
41029 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
41030
41031         * config/i386/i386.md (HI/SImode test with imm to QImode splitters):
41032         Use gen_int_mode instead of gen_lopwart for const_int operands.
41033
41034 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41035
41036         PR tree-optimization/71563
41037         * match.pd: Simplify X << Y into X if Y is known to be 0 or
41038         out of range value - has low bits known to be zero.
41039
41040 2017-01-04  Alan Modra  <amodra@gmail.com>
41041
41042         * Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
41043         * configure: Regenerate.
41044         * config.in: Regenerate.
41045
41046 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41047
41048         PR bootstrap/77569
41049         * input.c (ebcdic_execution_charset::on_error): Don't use strstr for
41050         a substring of the message, but strcmp with the whole message.  Ifdef
41051         ENABLE_NLS, translate the message first using dgettext.
41052
41053 2017-01-03  Jeff Law  <law@redhat.com>
41054
41055         PR tree-optimizatin/78856
41056         * tree-ssa-threadupdate.c: Include tree-vectorizer.h.
41057         (mark_threaded_blocks): Remove code to truncate thread paths that
41058         cross multiple loop headers.  Instead invalidate the cached loop
41059         iteration information and handle case of a thread path walking
41060         into an irreducible region.
41061
41062 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
41063
41064         PR target/78900
41065         * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
41066         assertions.  Add support for doing the signbit if the IEEE 128-bit
41067         floating point value is in a GPR.
41068         * config/rs6000/rs6000.md (Fsignbit): Delete.
41069         (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
41070         Update the length attribute if the value is in a GPR.
41071         (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
41072         the sign or zero extension instruction, since the value is always 0/1.
41073         (signbit<mode>2_dm2): Delete using <Fsignbit>.
41074
41075         PR target/78953
41076         * config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
41077         extracting SImode to a GPR register so that we can generate a
41078         store, limit the vector to be in a traditional Altivec register
41079         for the vextuwrx instruction.
41080
41081 2017-01-03  Ian Lance Taylor  <iant@google.com>
41082
41083         * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
41084
41085 2017-01-03  Martin Sebor  <msebor@redhat.com>
41086
41087         PR tree-optimization/78696
41088         * gimple-ssa-sprintf.c (format_floating): Correct handling of
41089         precision.  Use MPFR for %f for greater fidelity.  Correct handling
41090         of %g.
41091         (pass_sprintf_length::compute_format_length): Set width and precision
41092         specified by asrerisk to void_node for vararg functions.
41093         (try_substitute_return_value): Adjust dump output.
41094
41095 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
41096
41097         * doc/invoke.texi (RS6000 options): LRA is enabled by default.
41098
41099 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
41100
41101         * doc/invoke.texi (SPARC options): Document -mlra as the default.
41102         * config/sparc/sparc.c (sparc_option_override): Force LRA unless
41103         -mlra/-mno-lra was passed to the compiler.
41104
41105 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
41106
41107         PR rtl-optimization/65618
41108         * emit-rtl.c (try_split): Move initialization of "before" and
41109         "after" to just before the call to emit_insn_after_setloc.
41110
41111 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
41112
41113         * doc/md.texi (Standard Names): Remove reference to Java frontend.
41114
41115 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
41116
41117         * dwarf2out.c (gen_enumeration_type_die): When
41118         -gno-strict-dwarf, add a DW_AT_encoding attribute.
41119
41120 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
41121
41122         PR tree-optimization/78965
41123         * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
41124         Change first argument from const call_info & to call_info &.  For %n
41125         set info.nowrite to false.
41126
41127         PR middle-end/78901
41128         * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
41129         possibly throwing calls.
41130
41131         * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
41132         and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
41133         and fns handling, rather than in a separate case SSA_NAME.
41134
41135 2017-01-02  Jeff Law  <law@redhat.com>
41136
41137         * config/darwin-driver.c (darwin_driver_init): Const-correctness
41138         fixes for first_period and second_period variables.
41139
41140 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
41141
41142         PR target/78967
41143         * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
41144         (*insvqi_1): New insn pattern.
41145         (*insvqi_1_mem_rex64): Ditto.
41146         (*insvqi_2): Ditto.
41147         (*insvqi_3): Rename from *insvqi.
41148
41149         (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
41150
41151 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
41152
41153         * doc/cfg.texi (Edges): Remove reference to Java.
41154         (Maintaining the CFG): Ditto.
41155
41156 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41157
41158         PR middle-end/77674
41159         * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
41160         transparent aliases.
41161
41162 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41163
41164         PR middle-end/77484
41165         * predict.def (PRED_CALL): Update hitrate.
41166         (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
41167         * predict.c (tree_estimate_probability_bb): Split CALL predictor
41168         into direct/indirect/polymorphic variants.
41169
41170 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
41171
41172         Update copyright years.
41173
41174         * gcc.c (process_command): Update copyright notice dates.
41175         * gcov-dump.c (print_version): Ditto.
41176         * gcov.c (print_version): Ditto.
41177         * gcov-tool.c (print_version): Ditto.
41178         * gengtype.c (create_file): Ditto.
41179         * doc/cpp.texi: Bump @copying's copyright year.
41180         * doc/cppinternals.texi: Ditto.
41181         * doc/gcc.texi: Ditto.
41182         * doc/gccint.texi: Ditto.
41183         * doc/gcov.texi: Ditto.
41184         * doc/install.texi: Ditto.
41185         * doc/invoke.texi: Ditto.
41186 \f
41187 Copyright (C) 2017 Free Software Foundation, Inc.
41188
41189 Copying and distribution of this file, with or without modification,
41190 are permitted in any medium without royalty provided the copyright
41191 notice and this notice are preserved.